想僱到搞軟體開發的聰明人可不容易。萬一一不小心,就會搞到一堆低能大狒狒。我去年就碰到這種事了。你肯定不想這樣吧。聽我的,沒錯。在樹上開站立會議門都沒有。
問點有難度的問題,能幫你把聰明人跟狒狒們分開。我決定把我自己整理出來的軟體開發者面試百問發出來,希望能幫到你們的忙。
這個列表涵蓋了軟體工程知識體系中定義的大多數知識域。當然,如果你只想找出類拔萃的程式設計師,便只需涉及結構、演算法、資料結構、測試這幾個話題。如果想僱架構師,也可以只考慮需求、功能設計、技術設計這些地方。
無論如何,你都要牢記一點:這裡大多數問題的答案都沒有對錯之分!
你可以把我的這些問題作為引子,展開討論。例如下面有個問題是使用靜態方法或是單例的緣由。如果那個面試的就此展開長篇大論,那他很有可能是個聰明能幹的 傢伙!如果他一臉茫然地看著你,發出這種聲音,很明顯這就是只狒狒了。同樣,想知道乙個數是不是2的乘方也有很多方法,不過要是面試的人想用mod運算 符,嗯……你知道我的意思吧。(你不知道也沒關係,來根香蕉?)
需求
在功能設計中有哪些隱喻?t出幾個成功的例子。
如果有些功能的執行時間很長,怎麼能讓使用者感覺不到太長的等待?
如果使用者必須要在乙個很小的區域內,從乙個常常的列表中選擇多個條目,你會用什麼控制項?
有哪些方法可以保證資料項的完整?
建立系統原型有哪些技術?
應用程式怎樣建立對使用者行為的預期?給出一些例子。
如何入手設計一組數量龐大而又複雜的特性,你能舉出一些設計思路嗎?
有乙個列表,其中有10個元素,每個元素都有20個字段可以編輯,你怎樣設計這種情況?如果是1000個元素,每個元素有3個字段呢?
用不同的顏色對一段文字中的文字標記高亮,這種做法有什麼問題?
web環境和windows環境各有些什麼限制?
技術設計
什麼是低耦合和高聚合?封裝原則又是什麼意思?
在web應用中,你怎樣避免幾個人編輯同一段資料所造成的衝突?
你知道設計模式嗎?你用過哪些設計模式?在什麼場合下用的?
是否了解什麼是無狀態的業務層?長事務如何與之相適應?
在搭建乙個架構,或是技術設計時,你用過幾種圖?
在n層架構中都有哪些層?它們各自的職責是什麼?
有哪些方法可以確保架構中資料的正確和健壯?
物件導向設計和面向元件設計有哪些不同之處?
怎樣在資料庫中對使用者授權、使用者配置、許可權管理這幾項功能建模?
怎樣按照等級制度給動物王國(包括各種物種和各自的行為)建模?
程式設計
什麼是回歸測試?怎樣知道新引入的變化沒有給現有的功能造成破壞?
如果業務層和資料層之間有依賴關係,你該怎麼寫單元測試?
你用哪些工具測試**質量?
在產品部署之後,你最常碰到的是什麼型別的問題?
什麼是**覆蓋率?有多少種**覆蓋率?
功能測試和探索性測試的區別是什麼?你怎麼對**進行測試?
測試套件、測試用例、測試計畫,這三者之間的區別是什麼?你怎麼組織測試?
要對電子商務**做冒煙測試,你會做哪些型別的測試?
客戶在驗收測試中會發現不滿意的東西,怎樣減少這種情況的發生?
你去年在測試和質量保證方面學到了哪些東西?
維護
你用哪些工具在維護階段對產品進行監控?
要想對乙個正在產品環境中被使用的產品進行公升級,該注意哪些重要事項?
如果在乙個龐大的檔案中有錯誤,而**又無法逐步跟蹤,你怎麼找出錯誤?
你怎樣保證**中的變化不會影響產品的其他部分?
你怎樣為產品編寫技術文件?
你用過哪些方式保證軟體產品容易維護?
怎樣在產品執行的環境中進行系統除錯?
什麼是負載均衡?負載均衡的方式有哪些種?
為什麼在應用程式的生命週期中,軟體維護費用所佔的份額最高?
再造工程(re-engineering)和逆向工程(reverse engineering)的區別是什麼?
配置管理
軟體開發者如何提高程式設計能力?
程式設計能力是乙個比較大的概念,是利用計算機程式語言實現軟體開發的能力的統稱。這個能力主要包括邏輯思維,學習能力。程式設計能力是軟體開發者的軟實力,可以靈活應用到其他任何地方。從上向下 學習,指從計算機高階語言開始學習到底層系統以及硬體的學習路徑。從下往上 路線剛好和 從上往下 相反。其實無論從 學...
Hibernate開發者中好的軟體開發理念
飛快的版本發布。活躍的版本發布。發現使用者真正的需要。回歸測試。綜合性的test suite提高軟體的可維護性和穩定性。把乙個功能做到最好。這條特別支援!要做就一定做到最好。做不到的,扔給其他軟體去做吧。避免過度設計。不要浪費大量的時間和精力進行功能抽象和擴充靈活性。花更多的時間解決使用者面臨的實際...
開發者必看 學iOS軟體開發前景如何?
最近,乙個做 測試員的朋友找我聊天,訴說他心中的困惑,我想還有成千上萬的準工程師們也存在著這樣的問題。今年24歲的他,苦於日常工作節奏快,工作壓力比較大,付出與回報不成正比,他考慮轉行學一門技術,可是學什麼技術好呢?經朋友介紹說學ios挺不錯的,可是對於零基礎的他心裡仍存著一些顧慮。業內人士都知道,...