軟件工程師應該解決的五個問題
每次我為一個軟件工程師職位發布崗位要求的時候,許多申請人就開始快速涌入。但讓我煩惱的是,有一些人總是無法理解『編程』的真正含義。
當然,他們對此有不同的想法。
我覺得,如果你僅僅了解 jQuery,你最好申請一個前端工程師的崗位。你難道認為『軟件工程師』就只是意味著 HTML、JavaScript 和 CSS 技能嗎?
(我喜歡那些人 - 他們一旦談起 XML、JSON、XSLT、SOAP、HTTP、REST、SSL 等首字母縮略語總是滔滔不絕,如果他們還能區分整數與浮點數據類型的話,那就更好了。)
你真的可以編程嗎?
對于軟件工程師這個崗位,我的意思是指,你能夠用代碼編寫出一些東西。我在這里談論的是真正的編程:我給你一個問題,你可以使用任何你喜愛的編程語言構建出一個相應的解決方案。
你能夠完成這項任務嗎?
好吧,我們來做個約定:如果你無法在一個小時之內分別解決以下五個問題,你或許應該重新審視一下你的簡歷。在你目前的工作崗位上,你很可能干得相當地不錯,但是你(暫時)還不能稱自己為『軟件工程師』(或者『程序員』或者『計算機專家』或者『軟件開發者』。)你或許應該坦白地面對自己,并且情愿花費一些兒時間再一次加固一下自己的專長和技能。
五個問題
(以下問題表面看起來都非常簡單,但是你很快就會發現,這些問題實際上還挺有難度,一開始你恐怕對此毫無頭緒。我沒有開玩笑噢!)
問題一
編寫三個函數,分別使用一個 for 循環,一個 while 循環,以及一個遞歸,計算一個數值列表中的數值總和。
問題二
編寫一個函數,通過交叉接受列表中的元素合并這兩個列表。例如:兩個列表 [a, b, c] 和 [1, 2, 3],函數應該返回列表 [a, 1, b, 2, c, 3]。
問題三
編寫一個函數,計算斐波那契數列的前一百位。根據定義,斐波那契數列的前兩位數分別為 0 和 1,每個序列數是前兩個數的和。例如,斐波那契數列的前十位是: 0, 1, 1, 2, 3, 5, 8, 13, 21, 以及 34。
問題四
編寫一個函數,接受一個非負整數列表,并將其重新組合為一個最大的數。例如,一個數值列表 [50, 2, 1, 9],其可組合的最大數為 95021。
問題五
編寫一個程序,輸出符合以下條件的所有可能的數值組合:接受一個 1, 2, ..., 9 數列,然后利用加、減或者無操作使其結果總是等于 100。例如:1 + 2 + 34 – 5 + 67 – 8 + 9 = 100。
作者: Santiago L. Valdarrama ,自 1994 年開始編寫軟件,現在 Levatas 就職。
原文: Five programming problems every Software Engineer should be able to solve in less than 1 hour
感謝:Qingniu 幫助審閱并完成校對。
來自: http://blog.fujiji.com/five-programming-problems/