前言
程式員面試不同于一般崗位的面試,當你在羨慕程式員十幾萬美金年薪的同時,你卻不知道程式員面試時,要經歷的重重磨難和壓力,今天,我們就來總結一下程式員面試時最常見的27道問題,
HR Phone Screen
Phone Screen,一般是提交簡歷后,程式員面試開始的第一步,由公司HR負責,目的是了解一下候選人的背景,為下一步tech interview做準備,
常見問題如下:
1. 你為什么對本公司的這個職位感興趣?
這一問HR主要想考察你有沒有做好“功課”,事先研究了解過公司,
2. 你有沒有用過本公司常用的編程語言?
如果你對這種特定語言沒有太多的經驗,那就說實話,否則就算過了電話關,也過不了之后的coding關,但你也要告訴HR你自己會的語言,并表示有能力學習新的語言,
3. 你有沒有做過什么專案?
簡明扼要,直接簡潔地描述你參與過的專案和在里面扮演的角色,
4. 你有沒有領導別人的經驗?
這一題的答案不僅僅局限于技術上的領導力,如果你在學校里有過志愿者活動的領導經驗,都可以說, 盡可能地將你以前的領導經驗和你要申請的職位聯系起來,
5. 為什么你要離開現在的公司?
你可以坦率地說出你的想法,但答案不要僅僅圍繞在錢和利益上,你可以從職場文化、創意實踐,解決現實問題的滿意度等幾個角度來回答這題,
注意,跟HR的面試,并不需要你深入地探討一些技術上的問題和經驗,要做到簡明扼要,不要讓HR睡著了,
Onsite Interview
當你順利通過了HR的phone screen、或是之后的technical phone interview后,你就會進入程式員面試的下一個環節,也就是一個4-5輪的Onsite Interiew,面試官會從專案經歷、行為、文化、技術、coding等幾個角度來全方位了解你是不是他們想要的程式員,
Experiential Questions
6. 在給其他團隊成員reveiw code時,你覺得最重要的是什么?
這題的答案沒有明確的對與錯,目的是為了檢驗你的知識,以及你在面試中是否可以表達好code review的程序,回答角度可以圍繞:
- Functionality
- Readability
- Maintainability
- Security
- Simplicity
- Regulatory requirements
- Resource optimization
7. 描述一下你寫代碼的全部程序,
面試官想知道你在寫代碼時,是否有一個清晰的流程,并確保你的作業方式是有組織的,而不是雜亂無章的,
8. 你做complex algorithms的首選語言是什么?
你可以說實話,但至少要給出兩個答案,以表明自己“多才多藝”和“不鉆牛角尖”,你可以說 “XYZ是我的第一選擇,但ABC也是一個很好的選擇,” 然后告訴他們為什么,
9. 如何設計一個可以擴大規模的APP?
這個面試題測驗的是你的知識和思維程序,
10. 你做過的最滿意、最值得驕傲的專案是什么?
這是你表現自己的時刻,告訴面試官你的coding實力,并描述一個你最引以為傲的專案,一定說出理由,為什么你覺得這個專案讓你驕傲 (比如它滿足了某種需求等等),
11. 描述一個你做過的失敗的專案,
你可以清楚地說明為什么這個專案最終失敗了,你還可以說你之后花時間剖析了這個專案,并且總結了問題,從失敗中學到了經驗,并在下一次專案中,沒有再犯,
Cultural / Behavioral Questions
12. 你目前所在的公司,有什么吸引你的地方嗎?
在面試的時候,千萬不要說,“沒有,我討厭現在的公司”,可以選擇說一說目前公司和所申請公司共同的優點,如果這是你的第一份作業,你可以談談在學習或實習期間喜歡什么,
13. 描述你理想的公司文化,
在進行onsite面試之前,做好你的research,提前了解這個公司,確保說出來的理想文化,和這個公司的程式員文化相似,
14. 你的同事是怎么描述你的?
你可以通過這個問題來向面試官展示你的社交意識,你可以說通過與同事的交流協作,你了解到了自己在別人眼中的樣子,同時,你可以用這個問題來表明你是有自我認知的,你知道自己的長處和短處,以及你能給團隊帶來什么,誠實回答,不要過度自嘲,
Technical Questions
這可以說是程式員面試中最重要的一個環節之一,這一類的面試題,會根據不同候選人的不同知識背景進行考核,
常見問題舉例:
15. mutex 和 semaphore 有什么區別?
16. 什么是多執行緒編程?
17. Local Variable和Global Variable有什么區別?
18. 哈希表如何作業?
19. 給出一個真實生活中哈希表的例子,并描述一個哈希表為何是一個糟糕的資料結構選擇,
20. 假設你有一個單執行緒的C標準應用程式,它不斷崩潰,但從來不在同一個地方崩潰,你覺得可能導致它崩潰的原因是什么?
21. queue和stack之間有什么區別?
22. 什么是regression test?
Coding Questions
這個階段是所有程式員面試中最難的一關,你不僅需要在高壓的環節中展示你的知識成果,而且你還要在不熟悉的環境(白板上的手寫代碼)和時間限制下作業,每個候選人會遇到的具體問題有所不同,但以下是一些常考的經典題目:
23. Linked lists(洗掉重復,反轉鏈表,確定它是否有環)
24. 時間和空間復雜度分析
25. Tree:基本構造,遍歷和操作演算法,知道如何實作平衡二叉樹,
26. Stack(用兩個堆疊實作一個佇列)
27. 陣列和字串(反轉字串,permutations)
面試時,確保你不斷向面試官解釋你的思考程序(即使你被困住了), 嘗試著與面試官協作,并可以在遇到困難時勇敢地提問,因為這可以表明你愿意在團隊中尋求幫助、以便把作業良好地進行下去,想要了解更多的程式員面試題,趕緊掃一下下方二維碼關注了解吧,

轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/298983.html
標籤:其他
