- 相關推薦
程序員常遇到的面試試題
對于算法面試問題是否有效一直飽受爭議。然而,代碼編寫問題有時候能夠很好篩選人才。在我們的例子中:
這些問題是“CS101”水平的;
我們相信一個優秀的開發者需要能夠做出好的決定,并且這種好的決定是基于對有多少個復雜系統在交互的深刻理解上。如果一個開發者不能反轉一個字符串,那么他們又怎么可能理解大型客戶端面臨軟件的性能含義?
誠然,參與我們CS02課程的中學生都很聰明(其中一個還是美國計算機奧林匹克對隊員)。然而,在對大型軟件公司(如微軟、亞馬遜、谷歌等)的多年采訪后,我們發現專業的開發者們并沒有比我們的職業顧問人員牛多少。
問題如下:
問題解決的步驟和錯誤:
1. 解析問題,手工“解決”
對于孩子和成年人而言,這一步對前者來說更困難
然而,如果要求誤解了問題的學生來重讀這個問題,孩子們的表現會超過成年人
2. 想出一個偽代碼算法
在這一步,學生的表現比成年人要好。
讓人震驚的是,很多成年人不知道如何用他們偏好的編程語言從一個字符串中抽取一個字符。
3. 將算法轉換為代碼
我們有一些C++程序員,他們不知道方括號以及一些C程序員,他們采用指針運算,但是卻失敗了。
更讓人吃驚的是,當他們允許查閱java API 文檔 或者使用參考書,很多成年人無法找到合適的文檔來幫助解決問題。
的確,一些中學生已經忘了如何使用棧或者實例化一個隊列,但是,所有人都能夠在適當的時間內通過查閱找到解決辦法。
會寫代碼的成年人(曾經會)經常會超過時間限制。
有很多糟糕的代碼編寫者,即便你也是其中一個,也別不要害怕
下面的方法并不是為了讓求職者參加一個“完整的堆棧訓練營”。相反,如果你是一個正在努力和“編程謎題”做斗爭的成年人:
1. 不停練習,直到你能快速且正確地寫出小的代碼片段。沒有任何理由用自己喜歡的語言寫不出一個雙循環。找一些帶有例子的小的代碼智力題,你能在一分鐘以內理解這些問題。對這類問題做成百上千遍的練習(不僅僅是幾十遍,切記!)。
2. 為課本上的每個算法寫一個用例列表。一個共同的錯誤就是僅僅記住計算復雜度表。但是看一些算法的使用例子,例如 A*搜索在哪些地方使用,這比學習代碼本身要有用的多。
3. 至少做一個能逼迫你使用與工作相關的接口/用例的大型項目。語言通常不是很重要,而且獨自寫一個大型工程能夠強迫你去學新的設計模式以及遠離遺留代碼維護。代碼面試是智利測試。所以它們很少關注具體的體系。
4. 讓自己接觸更優秀的程序員。隨著 CS 崗位的快速增長,應對“檸檬市場”的當前解決辦法就是技術面試。但是同樣也有其他的方式來反映被面試者的信息。例如,對熱點話題、博客、技術的知識可以反映出對重要問題的意識。類似地,對恐怖故事采用幽默的代碼書寫方式,可以反映出經驗和處理新問題的能力。幸運的是,在線代碼編寫社區隨處可見,所以唯一地障礙就是是否肯花時間和保持謙虛。
編注:市場上產品質量等級不同,質量的差異與不確定存在于很多市場,而買賣雙方的信息不對稱,產品的賣方對產品的質量擁有比買方更多的信息,這種信息不對稱情況下的市場可能導致某市場萎縮甚至消失,也就是所謂的檸檬市場。
【程序員常遇到的面試試題】相關文章:
華為常考面試題09-25
辦理英國簽證要求面試常遇到的問題08-09
程序員面試試題09-25
程序員面試題09-25
幼兒教師面試常遇到的問題08-08
Google的20道常考面試題08-06
置業顧問常考面試題目08-10
.net程序員面試試題09-26
Java程序員面試試題09-25
你沒遇到過的面試題目08-07