程序員面試題和技巧分享,掌握八成便可去BAT一試!
最近,筆者在Github上看到了一個非常有趣的項目,來自一位谷歌軟體開發工程師的分享,主要講述了他是如何從一名web開發者蛻變為谷歌軟體開發工程師的,這一路走來,他都看了哪些書籍,哪些視頻和哪些面試題,只可惜雖然作者給了鏈接,但部分內容在國內還是無法訪問。
(由於此處不便分享鏈接,所以對該項目感興趣的可以在Github上搜索coding-interview-university,然後選擇中文版本進行閱讀)
看完,筆者也有了興緻,便在網上搜集了一些國內一線互聯網公司的面試題和面試技巧,特此整理分享給需要的技術人員,看你和BAT之間差了多少!
阿里巴巴
根據部分網友的反饋,阿里的面試共分為五輪,前兩輪均為電面(電話和視頻),四輪技術一輪HR,大部分網友止步於二面。
技術面試部分,所掌握的編程語言和謀職的部門不同,問題自然也會不同。但是,主編程語言和項目經驗是必備基礎面試題。
首先是主編程語言,主要指開發者最拿手的,工作中使用的編程語言,不要和面試官說自己沒有主編程語言但是會N多種編程語言,甚至是精通N多種語言,這樣可能連一面都活不過去。
此外,如果你的主編程語言是確定的,那麼接下來一半的問題會圍繞主編程語言的高級特性展開,這些相關問題是比較容易在面試中被問到的。
在面試中,Hashmap、Arraylist、各類排序演算法、紅黑樹、線程、消息隊列、分散式、Forward和redirect都是常被問到的概念,每個概念又可以展開無數個問題。其中,螞蟻金服(上海)會更重視資料庫和開源相關技術。
HR面試的問題都是一些常見問題,比如期望的薪資、上一家公司的離職原因、為什麼選擇阿里、最有成就感的事情、項目中遇到的最大挑戰以及如何評價自己等,阿里是一家非常有情懷的企業,千萬不要小看HR詢問的這幾個看似常規的問題,或許就可以決定你最終是否被錄取。一定要認真、積極、讓HR感覺到你對阿里的熱情。
百度
百度是一家技術基因的公司,非常注重研發人員的代碼能力和對演算法的了解程度,如果想入職百度研發崗,建議各位技術人先考察一下自身的能力再說,不然會被虐的很慘。
百度技術面共三輪,第一輪需要自我介紹,手寫一些簡單的演算法,比如單例模式,快速排序等,穿插著Hashmap、Object類、Finalize、JVM等概念性問題,最後一題可能需要設計一個大型管理系統,比如圖書管理系統之類的。
二面首先會問一些項目經歷,然後手撕各類演算法,比如某網友分享的試題中,提到了反轉單鏈表、爬樓梯,狀態轉移方程等,最後一道試題會考察程序員的智力,比如時針和分針什麼時候重合。
三面除了進一步了解項目經歷之外,會出現一些比較大型的手撕演算法題,比如給出一些基本條件,讓你求某兩點之間的最短路徑,之後在這個問題上繼續擴展,設計完成還需要運用不同方法求解,講出其中的設計原理等。
三輪面試的面試官使用的語言很可能不同,並且即便代碼思路清晰,下筆也還是要快一點,不然面試官一催,很可能就慌了。
騰訊
騰訊的筆試通過率還是比較高的,前兩輪面試除了基本的自我介紹和項目介紹以外,主要會考察的知識點有Hibernate、mysql資料庫、Redis、memcache以及Java的full gc,手撕演算法和場景題同樣很重要。
這裡對演算法題就不舉例了,無非是常見的一些知識。網友提供的場景題示例為:千萬用戶搶購,如何處理高並發,並且有一個鏈接,指向前一天搶購成功的用戶,如何設計整個系統和資料庫。
網易
網易十分看中研發者的過往項目經驗,對項目介紹和項目開發過程中遇到的難點一定要提前梳理清楚,否則現場一定會被面試官懟得體無完膚。面試網易之前,可以多看看分散式事務方面的概念,網易也有自己的一些場景題,比如,設計一個下單系統,下單成功後可以給用戶發放優惠券。
今日頭條
今日頭條對手寫演算法的能力同樣很看重,根據反饋,今日頭條在面試中主要考查了資料庫優化、索引(聯合索引)、Java虛擬機、設計模式(單例模式)、nio、Linux命令(隨機問某一個)、http協議和狀態碼、301和302的區別、502和503的區別、Redis數據結構、MySQL集群數據等概念,每輪面試基本都會有手寫代碼的題,演算法邏輯不會很難,但想寫好還是需要注意很多細節。
華為
華為對學歷是有一定門檻的,參加招聘之前,需要認真閱讀華為的招聘簡章,這一點非常重要。其次,面試之前務必認真梳理自己曾經參與過的完整項目流程,包括項目介紹、項目架構、完整執行流程、項目優化等,這些基本就是每輪面試的主要問題了,整體來講,華為的面試還是比較輕鬆的,如果你學歷達標的話。
美團
面試之前多刷刷網上的面試題,尤其是出現概率比較高的題是很有幫助的。面試中主要涉及的知識點有Redis(源碼、集群和持久化)、Hashmap(原理和容量)、Hashset的源碼、Object類、hashcode和equals、排序演算法(快速排序等)、隔離(概念,Mysql的隔離級別)、線程池、Java(內存模型、垃圾回收)、資料庫索引......
如果之前刷過題,手寫演算法題應該問題不大,如果之前沒有刷過題,那演算法題也不是那種在現場馬上就可以很快寫出來的。所以,要重視面試前準備。回答面試官問題時,可以適當延伸將自己會的東西表現出來。
結語
1、自己確實會的知識可以多說說,適當延展;自己不是很擅長的也要第一時間大方承認,否則後面一定會跟著無休止的問題。
2、計算機系統原理知識、網路通信協議、數據結構與演算法這些基本知識是所有大廠面試必不可少的基本技能。
3、如果你貢獻過某個不錯的開源項目或者有自己的博客將是很棒的加分項。
4、項目經驗很重要,無論是社招還是校招,項目經驗都需要認真準備。
※思科收購超融合基礎設施公司Skyport系統
※2018年應用交付控制器市場將發生重大變化
TAG:IT168企業級 |