程式設計師面試題分享,掌握八成便可BAT一試!

highhand發表於2021-09-09

最近,筆者在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、專案經驗很重要,無論是社招還是校招,專案經驗都需要認真準備。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/810/viewspace-2802494/,如需轉載,請註明出處,否則將追究法律責任。

相關文章