[原文發表地址]
New Interview Questions for Senior Software Engineers
[原文發表時間] 11-02-17 11:27
我在幫一位失業的朋友匯總一些面試練習問題。親愛的讀者,我想如果能從你們那裡收集一些問題的話會比較有用。
這些問題應該更多注重軟體設計,而不太像我之前的兩個面試問題列表那樣關注技術細節。
偉大的.NET開發人員應該知道些什麼(更多面試問題)
ASP.NET面試問題(你能相信嗎?7年以前發表的)
更新:我想我們都贊同假如你明天要去面試,看著桌子對面的面試官簡單地將這份列表列印出來照著念,那麼你就應該找個借口馬上跑開。這既不是一個“如何面試的指南”,對我來說也不是一份“針對工程師的最佳實務”列表。
它僅僅是在軟體開發行業為了薪水工作了差不多十年左右的人頭腦裡面應該比較熟悉的一些知識的集合。當然,假設面試官能夠對BS明察。 這不是,也不應該是一個小型測試。如果你要去求職(或在僱人),歸根結底更重要的還是明白對方是能解決問題的亦或是頭腦僵化的。朋友們,請記住持保留態度吧,畢竟你們是在網上找到的。-
@shanselman
下面是我目前所知道的。
在你作為一個開發人員的職業生涯中,什麼是你所做過的能協助你進步的實質性的東西?
你會稱自己為軟體開發人員嗎?那個詞對你意味著什嗎?
在紙|白板|記事本上用<某種語言>實現一個<基本的資料結構>
什麼是SOLID?
“單一職責原則”為什麼重要?
什麼是控制反轉?那和依賴注入有什麼關係?
三層應用程式和兩層應用程式有什麼區別?
介面為什麼重要?
什麼是存放庫模式?原廠模式?模式為什麼重要?
反模式的樣本?設計模式的四人組包括哪些人?你為什麼需要關心這個?
MVP、MVC、MVVM模式之間有什麼關係?它們什麼時候適用?
解釋關注點分離的概念及其利弊
說出物件導向模式的三個主要屬性。描述他們的含義並解釋其為何重要。
敘述一個非原廠模式的模式?它是如何使用的?適用於什麼時候?
你剛被授權管理一個有維護問題的遺留代碼項目。 你會做些什麼改進的事情來使項目的基礎穩固?
給我展示你曾經做過的所有應用程式,並告訴我你在他們的設計中做了些什麼。
除了關聯式資料庫,有些什麼別的替代方法來儲存資料?為什麼要那樣做,你是怎樣權衡利弊的?
解釋慣例優先原則的概念,給出你在實際工作中見過的慣例優先原則的執行個體。
解釋無狀態系統(stateless system)和有狀態(stateful
systems)系統之間的差異,以及對並行狀態的影響。
討論Mocks和Stubs/Fakes之間的區別,以及你什麼時候可能用到它們(在這裡答案並不是那麼重要,重要的僅僅是它所帶來的討論)。
討論YAGNI的概念,解釋最近你做過的和這個實踐相關的事情。
解釋沙箱(sandbox)的含義,以及你為什麼要使用,並給出在實際工作中的例子。
並發
l
鎖定和無鎖(樂觀和悲觀)並行存取模型的區別是什嗎?
l
用鎖定模型你會遇到些什麼問題? 用無鎖模型呢?
l
你需要為資源爭奪做些什麼權衡?
l
基於任務的模型和執行緒模式的區別是什嗎?
l
非同步與並發的區別是什嗎?
你仍然在寫代碼嗎?喜歡嗎?你剛剛被分配到一個會用到新技術的項目,你會怎麼開始呢?
面向服務的增補是如何改變系統的? 適合在什麼時候使用?
你怎麼與最新的技術和工具保持同步?
“集合”邏輯和“過程”邏輯的區別是什嗎? 你會在什麼時候用到其中一個?為什嗎?
你用的是什麼原始碼控制系統?
什麼是持續整合? 你用過嗎?它為什麼重要?
描述你曾經管理過的一種軟體開發生命週期
對批評你的代碼/文檔的人你是什麼反應?
你會關注誰的部落格或播客?
你也發布自己的部落格或播客嗎?
告訴我一些你業餘時間寫的興趣項目。
你最近看的編程書是什嗎?
儘可能詳細地、深入地形容在瀏覽器裡輸入“cnn.com”點擊“轉至”之後會發生的事情。
形容一下設計文檔的結構和內容,或針對多層Web應用程式的一系列設計文檔。
<當代超酷的Web技術
>憑什麼那麼酷?
怎麼防止資料庫管理員竊走使用者密碼列表?
被一個解決不了的問題卡住了的時候你會做什嗎?
如果你的資料庫效能很差,你會首先考慮做那幾件事情來使它加速?
什麼是SQL注入?
單元測試和整合測試的區別是什嗎?
告訴我你三次失敗的經曆。
什麼是重構?你用過它嗎?它重要嗎?說出三種常見重構。
你有兩台電腦,希望從一台往另一台擷取資料。你會怎麼做?
只有你自己的裝置,你會建立什嗎?
有時間、成本、客戶滿意度和最佳實務,你會怎麼在你開發的項目中區分它們的優先次序?
解釋原因。
Web server、web farm和web garden的區別是什嗎?針對其中任何一個,你的web應用程式需要做些什麼改動?
對項目來說,每日一個版本、自動化測試和同儕審查的價值是什嗎?有什麼缺點?物件導向設計的什麼要素是最容易被濫用的?你怎麼解決那個問題?
你知道什麼時候你的代碼為生產做好了準備?
什麼是YAGNI(You
Aren't Going to Need It)?
這個問題清單是例子嗎?
形容一下你最近讀過或使用過過的一些不好的代碼。
你的想法呢? 我會每天從評論中挑選一些好的問題添加進來。