軟體開發者面試百問-轉載
原文:http://www.infoq.com/cn/articles/programmer-interview;jsessionid=477CC6B0D1A4DA1C82D632BBFF20265B
1月13日,著名部落格作者Jurgen Appelo寫了一篇博文:“軟體開發者面試百問”。該文甚受讀者歡迎,15日便登上了delicious,Popurls.com,Reddit的首頁。InfoQ中文站在得到作者許可之後,將其全文翻譯為中文,希望可以對國內讀者有所助益。
1月13日,著名部落格作者Jurgen Appelo寫了一篇博文:“軟體開發者面試百問”。該文甚受讀者歡迎,15日便登上了delicious,Popurls.com,Reddit的首頁。InfoQ中文站在得到作者許可之後,將其全文翻譯為中文,希望可以對國內讀者有所助益。
想僱到搞軟體開發的聰明人可不容易。萬一一不小心,就會搞到一堆低能大狒狒。我去年就碰到這種事了。你肯定不想這樣吧。聽我的,沒錯。在樹上開站立會議門都沒有。
問點有難度的問題能幫你把聰明人跟狒狒們分開。我決定把我自己整理出來的軟體開發者面試百問發出來,希望能幫到你們的忙。
這個列表涵蓋了軟體工程知識體系中定義的大多數知識域。當然,如果你只想找出類拔萃的程式設計師,便只需涉及結構、演算法、資料結構、測試這幾個話題。如果想僱架構師,也可以只考慮需求、功能設計、技術設計這些地方。不過不管你怎麼做,都要牢記一點:
這裡大多數問題的答案都沒有對錯之分!
你可以把我的這些問題作為引子,展開討論。例如下面有個問題是使用靜態方法或是單例的緣由。如果那個面試的就此展開長篇大論,那他很有可能是個聰明能幹的傢伙!如果他一臉茫然的看著你,發出這種聲音,很明顯這就是隻狒狒了。同樣,想知道一個數是不是2的乘方也有很多方法,不過要是面試的人想用mod運算子,嗯……你知道我的意思吧。(你不知道也沒關係,來根香蕉?)
需求
- 你能給出一些非功能性(或者質量)需求的例子麼?
- 如果客戶需要高效能、使用極其方便而又高度安全,你會給他什麼建議?
- 你能給出一些用來描述需求的不同技術麼?它們各自適用於什麼場景?
- 需求跟蹤是什麼意思?什麼是向前追溯,什麼是向後追溯?
- 你喜歡用什麼工具跟蹤需求?
- 你怎麼看待需求變化?它是好是壞?給出你的理由。
- 你怎樣研究需求,發現需求?有哪些資源可以用到?
- 你怎麼給需求制定優先順序?有哪些技術?
- 在需求過程中,使用者、客戶、開發人員各自的職責是什麼?
- 你怎麼對待不完整或是令人費解的需求?
功能設計
- 在功能設計中有哪些隱喻?給出幾個成功的例子。
- 如果有些功能的執行時間很長,怎麼能讓使用者感覺不到太長的等待?
- 如果使用者必須要在一個很小的區域內,從一個常常的列表中選擇多個條目,你會用什麼控制元件?
- 有哪些方法可以保證資料項的完整?
- 建立系統原型有哪些技術?
- 應用程式怎樣建立對使用者行為的預期?給出一些例子。
- 如何入手設計一組數量龐大而又複雜的特性,你能舉出一些設計思路嗎?
- 有一個列表,其中有10個元素,每個元素都有20個欄位可以編輯,你怎樣設計這種情況?如果是1000個元素,每個元素有3個欄位呢?
- 用不同的顏色對一段文字中的文字標記高亮,這種做法有什麼問題?
- Web環境和Windows環境各有些什麼限制?
技術設計
- 什麼是低耦合和高聚合?封裝原則又是什麼意思?
- 在Web應用中,你怎樣避免幾個人編輯同一段資料所造成的衝突?
- 你知道設計模式嗎?你用過哪些設計模式?在什麼場合下用的?
- 是否瞭解什麼是無狀態的業務層?長事務如何與之相適應?
- 在搭建一個架構,或是技術設計時,你用過幾種圖?
- 在N層架構中都有哪些層?它們各自的職責是什麼?
- 有哪些方法可以確保架構中資料的正確和健壯?
- 物件導向設計和麵向元件設計有哪些不同之處?
- 怎樣在資料庫中對使用者授權、使用者配置、許可權管理這幾項功能建模?
- 怎樣按照等級制度給動物王國(包括各種物種和各自的行為)建模?
程式設計
- 你怎樣保證你的程式碼可以處理各種錯誤事件?
- 解釋一下什麼是測試驅動開發,舉出極限程式設計中的一些原則。
- 看別人程式碼的時候,你最關心什麼地方?
- 什麼時候使用抽象類,什麼時候使用介面?
- 除了IDE以外,你還喜歡哪些必不可少的工具?
- 你怎麼保證程式碼執行速度快,而又不出問題?
- 什麼時候用多型,什麼時候用委派?
- 什麼時候使用帶有靜態成員的類,什麼時候使用單例?
- 你在程式碼裡面怎麼提前處理需求的變化?給一些例子。
- 描述一下實現一段程式碼的過程,從需求到最終交付。
演算法
- 怎樣知道一個數字是不是2的乘方?怎樣判斷一個數是不是奇數?
- 怎樣找出連結串列中間的元素?
- 怎樣改變10,000個靜態HTML頁面中所有電話號碼的格式?
- 舉出一個你所用過的遞迴的例子。
- 在雜湊表和排序後的列表中找一個元素,哪個查詢速度最快?
- 不管是書、雜誌還是網路,你從中所學到的最後一點演算法知識是什麼?
- 怎樣把字串反轉?你能不用臨時的字串麼?
- 你願意用什麼型別的語言來編寫複雜的演算法?
- 有一個陣列,裡面是從1到1,000,0的整數,其中有一個數字出現了兩次,怎麼找出那個重複的數字?
- 你知道“旅行商問題(Traveling Salesman Problem)”麼?
資料結構
- 怎樣在記憶體中實現倫敦地鐵的結構?
- 怎樣以最有效的方式在資料庫中儲存顏色值?
- 佇列和堆疊區別是什麼?
- 用堆或者棧儲存資料的區別是什麼?
- 怎樣在資料庫中儲存N維向量?
- 你傾向於用哪種型別的語言編寫複雜的資料結構?
- 21的二進位制值是什麼?十六制值呢?
- 不管是書、雜誌還是網路,你從中所學到的最後一點資料結構的知識是什麼?
- 怎樣在XML文件中儲存足球比賽結果(包括隊伍和比分)?
- 有哪些文字格式可以儲存Unicode字元?
測試
- 什麼是迴歸測試?怎樣知道新引入的變化沒有給現有的功能造成破壞?
- 如果業務層和資料層之間有依賴關係,你該怎麼寫單元測試?
- 你用哪些工具測試程式碼質量?
- 在產品部署之後,你最常碰到的是什麼型別的問題?
- 什麼是程式碼覆蓋率?有多少種程式碼覆蓋率?
- 功能測試和探索性測試的區別是什麼?你怎麼對網站進行測試?
- 測試套件、測試用例、測試計劃,這三者之間的區別是什麼?你怎麼組織測試?
- 要對電子商務網站做冒煙測試,你會做哪些型別的測試?
- 客戶在驗收測試中會發現不滿意的東西,怎樣減少這種情況的發生?
- 你去年在測試和質量保證方面學到了哪些東西?
維護
- 你用哪些工具在維護階段對產品進行監控?
- 要想對一個正在產品環境中被使用的產品進行升級,該注意哪些重要事項?
- 如果在一個龐大的檔案中有錯誤,而程式碼又無法逐步跟蹤,你怎麼找出錯誤?
- 你怎樣保證程式碼中的變化不會影響產品的其他部分?
- 你怎樣為產品編寫技術文件?
- 你用過哪些方式保證軟體產品容易維護?
- 怎樣在產品執行的環境中進行系統除錯?
- 什麼是負載均衡?負載均衡的方式有哪些種?
- 為什麼在應用程式的生命週期中,軟體維護費用所佔的份額最高?
- 再造工程(re-engineering)和逆向工程(reverse engineering)的區別是什麼?
配置管理
- 你知道配置管理中基線的含義麼?怎樣把專案中某個重要的時刻凍結?
- 你一般會把哪些東西納入版本控制?
- 怎樣可以保證團隊中每個人都知道誰改變了哪些東西?
- Tag和Branch的區別是什麼?在什麼情況下該使用tag,什麼時候用branch?
- 怎樣管理技術文件
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/15027599/viewspace-544555/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 百度網盤vip下載-軟體
- 前端面試百問前端面試
- 軟體測試面試問題(一)面試
- 軟體測試面試常見問題面試
- 軟體架構分類(轉載)架構
- 初級軟體測試必問面試題面試題
- 軟體測試面試之問——角色扮演面試
- 軟體開發者六要
- GXG全渠道轉型信賴百勝軟體
- Linux開發者掀起自由軟體界軒然大波(轉)Linux
- 【轉載】軟體開發模式簡介模式
- 軟體測試面試問題_介面測試(二)面試
- 我問每個面試官的兩個問題,把工程流程用到軟體面試面試
- 軟體開發者應有素養
- 成功軟體開發者的9種程式設計習慣 (轉)程式設計
- Word軟體疑難故障問答(轉)
- [轉載]軟體測試從零開始
- OS面試題(轉載)面試題
- MQ訊息中介軟體,面試能問些什麼?MQ面試
- 成功軟體開發者的9種程式設計習慣 7 (轉)程式設計
- 成功軟體開發者的9種程式設計習慣 1 (轉)程式設計
- 成功軟體開發者的9種程式設計習慣 2 (轉)程式設計
- 成功軟體開發者的9種程式設計習慣 3 (轉)程式設計
- 成功軟體開發者的9種程式設計習慣 4 (轉)程式設計
- 成功軟體開發者的9種程式設計習慣 6 (轉)程式設計
- 成功軟體開發者的9種程式設計習慣 5 (轉)程式設計
- 軟體、軟體危機、軟體工程 (轉)軟體工程
- 軟體下載
- 軟體專案的過程評審(轉載)
- 軟體行業的---中國國家地理【轉載】行業
- 小軟體專案的管理(經典轉載)
- 20個設計模式和軟體設計面試問題設計模式面試
- Android面試題(轉載)Android面試題
- 怎樣才能成為一名優秀的軟體開發者 (轉)
- Flutter開發者必備面試問題與答案05Flutter面試
- 軟體開發者如何準備未來?
- 全球軟體開發者薪資瑞士最高
- 我是一個壞軟體開發者