去BAT,你應該要看一看的面試經驗總結

2020-11-28 酷扯兒

本文轉載自【微信公眾號:小碼逆襲,ID:gh_7c5a039380a0】經微信公眾號授權轉載,如需轉載與原文作者聯繫

我去年12月份從上一家公司離職,一直到今年3月份,基本上都在面試中度過來的。

先交代下背景:坐標上海,做技術開發,我本人面試的職位是linux伺服器開發,最傾向的職位是伺服器開發主程或技術經理。我本人也是上幾家公司的面試官,因為接下來幾年面臨著成家,技術上也到了瓶頸期,雖然拿了不少offer,但是想綜合比對一下,於是就參加了很多的面試。我先後去了如下一些公司:騰訊、百度、餓了麼、愛奇藝、360、攜程網、京東、華為、bilibili、上海黃金交易所、東方財富網、zilliz、掌門集團(做無線萬能鑰匙的那一家)、喜馬拉雅聽書、峰果網絡、華爾街新聞、萬得財經、匯正財經、逗屋網絡、朝陽永續,還有數家小規模的公司或創業公司吧。

為了避免引起不必要的糾紛,下面我就不說具體的公司名稱了。技術面試的細節我儘量寫的詳細一點,希望對大家有參考價值,技術面試大致有三種情形:

1

經驗分享

一、以百度、愛奇藝等為代表的,以數據結構和算法為主。

首先是簡單地了解下你之前的工作經歷和項目經驗,然後就是算法和數據結構題目,具體涉及到以下內容:

01

快速排序

快速排序(包括算法步驟、平均算法複雜度、最好和最壞的情形),有人說校招要把算法寫出來,我是社招,所以描述一下算法步驟即可。

02

二分查找算法

寫二分查找算法,這個儘管是社招,但是一般也不難,所以要求面試者寫出來。但是很多公司,比如不會直接讓你寫算法,而是結合一個具體場景來提問,然後讓你自己聯想到二分查找,比如求一個數的平方根。

03

鍊表

鍊表,常見的面試題有寫一個鍊表中刪除一個節點的算法、單鍊表倒轉、兩個鍊表找相交的部分,這個一般必須得完全無誤的情況下寫出來。

04

自己實現一些基礎的函數

自己實現一些基礎的函數,例如strcpy / memcpy / memmov / atoi,同樣的道理,這些必須完全無誤且高效地寫出來,比如你的實現中會動態分配堆內存,那麼這道題目就算答錯。

第3點和第4點的門道一般在於考察你的代碼風格、對邊界條件的處理,比如判斷指針是否為空,千萬不要故意不考慮這種情形,即使你知道也不行,只要你不寫,一般面試官就認為你的思路不周詳,容錯率低;再比如,單鍊表的倒轉,最後的返回值肯定是倒轉後的鍊表頭結點,這樣才能引用一個鍊表,這些都是面試官想考慮的重點。

05

哈希表

哈希表,對哈希表的細節要求很高,比如哈希表的衝突檢測、哈希函數常用實現、算法複雜度;比如百度二面就讓我寫一個哈希表插入元素算法,元素類型是任意類型。

06

AVL樹和B樹的概念、細節

AVL樹和B樹的概念、細節,比如會問mysql資料庫的索引的實現原理,基本上就等於問你B樹了。

07

紅黑樹

紅黑樹,這個基本上必問的一個數據結構,包括紅黑樹的概念、平均算法複雜度、最好最壞情況下的算法複雜度、、左右旋轉、顏色變換。面試官常見的算法套路有:你熟悉C++的stl嗎?你說熟悉,ok,stl的map用過吧?用過,ok,那map是如何實現的?紅黑樹,ok,那什麼是紅黑樹?這樣提問紅黑樹就開始了。Java的也類似。

二、以餓了麼、bilibli、喜馬拉雅、360、攜程等為代表的,兼顧算法數據結構和其他開發技術。

算法和數據結構部分上文提過了,下面提一下其他技術,大致包括以下東西:

基礎的C++問題

以C++語言為例(不是C++開發的朋友可以跳過這一點),第一類是基礎的C++問題,常見的有C++的繼承體系中virtual關鍵字的作用(如繼承關係中析構函數為什麼要申明成virtual函數,如果不申明為virtual會有什麼影響)、在涉及到父子類時構造與析構函數的執行順序、多重繼承時類的成員列表在地址空間的排列;static關鍵字的作用,static_cast / reinterpret_cast / dynamic_cast等幾個轉換符的使用場景;問的最多的就是虛表的布局,尤其是菱形繼承(B和C繼承A,D繼承B和C)時每個對象的空間結構分布,比如問D有幾份虛表,D中B和C的成員空間排布。

另外,如果你應聘的職位使用C++開發,很多公司會問你一些C++11的東西(或者問boost庫,基本上都一樣),這個你用過就用過,沒有用過就說沒用過不要裝X,常見的C++11需要掌握的一些技術庫我也列舉一下吧(JAVA及其他語言的讀者可以忽略):

auto關鍵字、for-each循環、右值及移動構造函數 + std::forward + std::move + stl容器新增的emplace_back()方法、std::thread庫、std::chrono庫、智能指針系列(std::shared_ptr/std::unique_ptr/std::weak_ptr)(智能指針的實現原理一定要知道,最好是自己實現過)、線程庫std::thread+線程同步技術庫std::mutex/std::condition_variable/std::lock_guard等、lamda表達式(JAVA中現在也常常考察lamda表達式的作用)、std::bind/std::function庫、其他的就是一些關鍵字的用法(override、final、delete),還有就是一些細節如可以像JAVA一樣在類成員變量定義處給出初始化值。

網絡通信問題

網絡通信問題,比如協議棧的層級關係,三次握手和四次揮手的【細節】,注意我說的是細節,比如CLOSE_WAIT和TIME_WAIT狀態(bilibili問了這樣一個問題,你可以感受一下:A與B建立了正常連接後,從未相互發過數據,這個時候B突然機器重啟,問A此時的tcp狀態處於什麼狀態?如何消除伺服器程序中的這個狀態?

萬得問過流量擁塞和控制機制、騰訊問過tcp和ip包頭常見有哪些欄位),阻塞和非阻塞socket在send、recv函數上的行為表現,異步connect函數的寫法,select函數的用法,epoll與select的區別,基本上只要問到epoll,必問epoll的水平模式和邊緣模式的區別;一些socket選項的用法,nagle / keepalive / linger等選項的區別;tcp / udp的區別和適用場景;通信協議如何設計避免粘包;http協議的get和post方法的區別(問的比較深的會讓你畫出http協議的格式,參照這篇文章中關於http協議格式的講解:http://blog.csdn.net/analogous_love/article/details/72540130);windows用戶可能會問到完成埠模型(IOCP),網絡通信方面的問題。推薦兩個live:

總之,網絡通信問題能搞的多清楚就可以搞的多清楚,最起碼把tcp應用層的各種socket API的用法細節搞清楚。

作業系統原理性的東西

比如linux下elf文件的節結構,映射到進程地址空間後,分別對應哪些段,相關的問題還有,全局變量、靜態存儲在進程地址空間的哪裡;堆和棧的區別,棧的結構,棧的細節一點要搞的特別清楚,因為一些對技術要求比較高的公司會問的比較深入,例如京東的一面是讓我先寫一個從1加到100的求和函數,然後讓我寫出這個函數的彙編代碼(JAVA開發的同學可能會讓你試著去寫一點JVM的指令),如果你對棧的結構(如函數參數入棧順序、函數局部變量在棧中的布局、棧幀指針和棧頂指針的位置)不熟悉的話,這題目就無法答對了;棧的問題,可能會以常見的函數調用方式來提問常見的函數調用有如下__cdecl/__stdcall/__thiscall/__fastcall的區別,比如像printf這樣具有不定參數的函數為什麼不能使用__stdcall;還有就是進程和線程的聯繫與區別,問的最多的就是線程之間的一些同步技術,如互斥體、信號量、條件變量等(Windows上還有事件、臨界區等),這些東西你必須熟悉到具體的API函數使用的層面上來,從另外一個角度來說,這是咱們實際工作中編碼最常用的東西,如果你連這個都不能熟練使用,那麼你肯定不是一個合格的開發者;這類問題還可以引申為什麼是死鎖、如何避免死鎖進程之間通信的常用技術也需要掌握,常用的通信方式(linux下)有共享內存、匿名和具名管道、socket、消息隊列等等,管道和socket是兩個必須深入掌握的考察點(與上面網絡通信有點重複);linux系統下可能還會問什麼是daemon進程,如何產生daemo進程,什麼是殭屍進程,殭屍進程如何產生和消除(bilibili問過)。

CAS機制(餓了麼二面問過)。

使用過的開源技術

第四類就是一個使用過的開源技術,比如代表nosql技術的redis;網絡庫libevent等等;資料庫如mysql的一些東西。這個一般不做硬性要求,但是這裡必須強調的就是redis,熟練使用redis甚至研究過redis源碼,現在一般是做後臺開發的技術標配或者說不可缺少的部分,基於redis的面試題既可以聊算法與數據結構,也可以聊網絡框架等等一類東西。我面試的公司中基本上百分之九十以上都問到了redis,只是深淺不一而已,比如喜馬拉雅問了redis的數據存儲結構、rehash;bilibili問了redis的事務與集群。

三、只問一些做過的業務或者項目經驗。

這類公司他們招人其實對技術要求不高(資深及主管級開發除外),只要你過往的項目與當前應聘職位匹配,可以過來直接上手幹活就可以了,當然薪資也就不會給很多。比如遊戲公司會關心你是否有某某類型的遊戲開發經驗、股票類公司會關心你是否有過證券或者交易系統的開發經驗等。我的經驗就是這類公司,能去的話可以去,不能去的話就當積累面試經驗。業務開發哪裡都能找到,真正的重視技術的公司,應該是廣大做技術尤其是初中級開發的朋友應該值得關心的事情。

四、不靠譜型公司。

我遇到的大致有四類:

裝X忽悠型

第一類:裝X忽悠型

面試過程冗長繁瑣,比如號稱每一百份簡歷中才發一個面試邀請,號稱每一百個面試者發一個offer,號稱矽谷風格,我面試的有一家公司就是這個樣子,先是一輪長長的電話面試,然後是五輪技術面試,前三輪是刷leetcode上原題,然後後幾輪面試,面試官從基本的作業系統的中斷、GDT、LDT、分表分頁機制問到上層高並發海量數據的架構,說的不好聽,真是從外太空聊到內子宮,最後問具體職位做什麼時,要麼遮遮掩掩要麼原型畢露;或者討論薪資時,要麼面露難色要麼各種畫餅,但是實際就給不了多少薪水的。

佛性公司

第二類:佛性公司

面試下來,全程面試官面帶微笑,問你的問題你回答的面試官也很贊同,但最後你就沒通過,我猜測要麼公司不是很缺人,想觀望一下是否有合適的人才;要麼招聘信息上開的薪資給不到。

老奶奶裹腳布型公司

第三類:老奶奶裹腳布型公司

其特點是面試周期長,往往第一輪面試通知你過了,讓你回去等上十天半個月後,給你打電話通知你來第二輪面試,面試要求穿正裝,帶好各種證件,面試前必須先查驗你的身份證、學歷證學位證,甚至是四六級考試證等等,麻煩至極,即使你一路過關斬將過了終面,薪資也給不了多少。大家都是要養家餬口的,都是忙著找工作,誰有時間和你耗上十天半個月呢?

不尊重人類型公司

第四類:不尊重人類型公司

我這裡說的不尊重人,不是指的是面試過程中對你人身攻擊,而是不根據你的工作年限和經驗隨意安排面試官,舉個例子,比如你工作十年,你去面試一個技術總監的職位,對方公司安排一個工作不滿兩年的部門職員作為面試官,這個面試官如果是走過場可以理解,但是非要和你糾結一個如二進位位移、現代編譯器要不要在子類析構函數前加virtual關鍵字這些技術細節就沒必要了。還有一類就是故意問一些刁鑽的問題,或者全場都心不在焉、玩手機、漫不經心的面試官,比如問你tcp協議頭有多少個欄位,每個欄位是幹啥的。遇到這一類面試官我的經驗就是要麼婉拒,要麼直接懟回去。

2

注意細節

下面再說下面試中需要注意的一些細節:

把目光放長遠一點

第一,如果你的工作年限不長,尤其是渴望在技術方面有一定的造詣,那麼你首先考慮的應該是新的單位是否能有利於你技術上的成長,而不是兩份同樣的工作,薪資上的上下相差的三五千、五六千。如果想轉行的同學(比如從客戶端轉伺服器,從C++轉JAVA),不要因為薪資突然變低而拒絕這種陣痛,要把目光放長遠一點。

可能最終會因為薪資達不到不被錄取

第二,一些公司雖然招聘信息上寫了最多能給到多少多少,但實際即使你全程面試下來都很完美,可能最終你也會因為薪資達不到不被錄取。

多面試積累經驗

第三,一些根本不想去的公司,如果你有時間的話,去面試積累下經驗也不是什麼壞事。

警惕技術天花板

第四,面試的時候,同時也是你在考察面試官,一般面試官問你的問題,你能回答出來的在百分之八十左右,這樣的公司可以考慮去入職,你進去的話可能才會在技術上有一些提升。如果你全場秒殺面試官的題目,你的技術天花板可能也在那裡。

聊清楚將來的職位內容

第五,面試的時候聊清楚你將來的職位內容,避免進去客串一些不想做的工作。

不會的面試題嘗試去和面試官溝通

第六,遇到不會的面試題,不要直接就否定自己,可以嘗試著去和面試官溝通一下,或者要求給點提示或者思路。

不要輕視筆試中的數學智力題

第七,不要輕視筆試中的一些數學智力題目,認真作答,試問算法不也是數學智力題嗎?

08

自信點

第八,自信一點,每個人的經歷和經驗都是獨一無二的,面試的時候,一些特定領域的問題,回答不出來也不要太在意。

相關焦點

  • 你學的公考面試技巧可能是錯的,實戰面試90分大牛分享面試經驗
    什麼樣的機構和培訓班適合你呢?每個培訓機構都有他的一套完整的培訓方法,側重的受眾也是不一樣的,比如華圖重小技巧,中公重思維,小機構也有自己的私人小妙招,如果你不清楚自己的弱項在哪裡,不會甄別哪些技巧和理論有用,最後的結果很可能是明年重新再考或者稀裡糊塗地好運氣就通過考試了,但願你的運氣很好。真正的安心應該是你清楚地知道你能上岸,而不是迷信幾萬塊錢的保過班。
  • 面試時,面試官問你有什麼優點和缺點?應該如何巧妙地回答?
    5) 印證你的前面面試的回答優點缺點是對於你的能力,性格特點的總結,當你說完,相當於對於你自己之前回答的一個總結,這樣可以驗證你之前的回答。有些人覺得要誠實, 說了一堆缺點,雖然從品質上看,是要誠實, 不能說謊,但是你說了一堆缺點,別人肯定不敢要你。還有跟過分的是,這些優缺點是跟跟崗位沒有關係。
  • 當面試官提出假設性的問題時,我們應該怎樣回答
    面試中總會出現這樣或者那樣的問題,通常沒有準備的朋友們真的會被這些問題難倒,所以對於那些即將面試的朋友們來說,做好面試前的準備工作相當的重要。那麼針對這一話題,接下來小編就和大家分享一個常見的面試問題,這個問題就是:假如你被錄用,將如何開展工作?
  • 考研面試怎麼準備?英語面試?怎麼聯繫導師……看看他們的成功經驗!
    往年的複試真題要全部弄會,把本科關於遺傳的筆記看一看,重要的知識要理解、背會,如果有同學初試考遺傳的話,可以借一下他們的參考書看一看。(二)專業面試專業面試先進行自我介紹,而後老師進行提問。自我介紹沒有嚴格的時間規定,但最好不要太長,要有實質性的內容,不要從網上隨便找些模板,很空洞。我當時準備的自我介紹是2~3分鐘。
  • HR面試419名醫學類畢業生後總結出10個常見問題,你中了幾個?
    小編跟隨領導近幾年也參加了不少醫學院校的校招,對其中參加面試後落選的400多個應屆畢業生所存在的共性問題,進行了分析整理,總結出10個常見問題,真心希望對正在求職路上的你有所幫助。還有的簡歷內容通篇都是記流水帳式羅列一些與應聘崗位無關的經歷,如參加了幾次演講比賽、組織了幾次重要校園文化活動,獲得了幾次獎學金,乍一看全部都是「優秀事跡」,但我們從中完全看不出這個求職者從這些經歷中到底獲得了什麼經驗和能力,也看不出這些經歷與應聘的崗位有什麼關聯、對今後從事工作有什麼作用。
  • 面試數據分析崗,怎麼提升一倍成功率?讓過來人給你支支招
    最近很多加了我個人號的朋友給我留言關於求職數據分析師崗位的問題,大概總結了一下,有這樣幾類:應屆生找工作簡歷應該怎麼凸顯能力?面試會遇到哪些問題?零基礎想轉行數據分析,沒有相關經驗,簡歷、面試總是不通過怎麼辦?有數據分析經驗了想跳槽更好的崗位,但面試總被刷是為什麼?
  • EMBL面試經驗分享
    對比我經歷的其他面試,EMBL的層層遞進的幾輪面試我覺得是又全面又有深度😈。傳聞申請者如果不是來自EMBL成立理事國的話,申請難度會提高(涉及到經費問題)。我在海德堡總部,屬於Developmental Biology (DB) unit。看到網絡上EMBL面試求助貼比較多但是經驗貼比較少,所以想跟大家分享一下我的面試心得。
  • 香港理工大學面試考什麼?歷年總結看這裡!
    香港理工大學作為香港高校的招生主力之一,每年處理的申請信都不計其數,在材料審核過後還有面試這一個內地學生普遍頭疼的問題。為了在面試中有更好的表現,一般在面試前要認真準備很久,把以前學校面試官問的問題都收集起來研究,下面我們來看歷年面試總結。
  • 看一看雲,看一看天,去擁抱大自然。
    白雲和藍天(1)走出房門去看一看吧走出房門去看看吧!別怕山高路險,拋去煩惱走向田野、山川。穿翻過一道道溝溝坎坎,放眼四方,去看看那山中的花草和飛來到春燕。走出去看一看吧!把心中的煩惱拋向一邊,找個地方坐下來,抬起頭看一看那高高的白雲和藍天。去遙望遠處的大山,讓春天的暖風扶摸你的臉,它讓我們回到了春姑娘的身邊。
  • 教師資格證英語學科面試——你必須要看的實用備考乾貨
    教師資格證英語學科面試——你必須要看的實用備考乾貨 http://www.hteacher.net 2019-04-15 13:40 中國教師資格網 [您的教師考試網]
  • 當面試官問到「你的優點/缺點是什麼」,該如何完美地回答?
    在了解公司對於招聘崗位人才要求的基礎上,考慮自己是否匹配這個位置,並且在面試中有意的去展現你匹配這些素質,這也是面試的最終目標。你的優點是什麼在面試時碰到說說你的優點這類問題,乍一看是個送分題,但很多同學回答得不如人意。
  • 四象限選拔法:從面試官角度,看數據產品經理的面試和選拔
    我總結了一套四象限選拔方法,作為每次提問和評估的提綱,與候選人進行面試溝通。今天分享給同行面試官做一些參考,也分享給想轉行和應聘數據產品經理的同學,看看面試官可能提哪些問題,提前做好面試準備。
  • 面試官問你的缺點是什麼,應該如何回答?
    面試官問你缺點,其實考核的智商和情商,不是真的要答案。你要給予,別人需要的。提供一個萬能公式:缺點=正能量+自嗨缺點+幽默赤裸裸的回答,缺點是愛睡懶覺。一看就是傻白甜,智商低,不懂腦迴路。好歹這樣說:我周末喜歡睡懶覺,在平日忙碌的工作中,難得偷個懶,好繼續新一周的奮鬥。這樣的回答,面試官樂呵了,感覺你挺幽默,給你加雞腿。換種套路,肯定明智很多,情商瞬間炸裂。以此此類推,參考回答的缺點,不懂拒絕、喜歡較真。
  • 面試官:「你的缺點是什麼」,聰明人回答掌握三點,讓你反敗為勝
    面試官要的就是出其不意打你個措手不及,你還真往下跳?面試不容易,且答且珍惜啊。2、面試官背後的套路是什麼面試官的提問,讓你暴露缺點不說還要自評,你就要知道這個問題背後不簡單。其實面試官並不想知道你的缺點是「五音不全、長得不好看」等這種無關痛癢的問題,她們更想透過你的回答看本質:(1)考驗你臨場反應能力一般面試官問這種問題都是在面試快結束的時候,在你放鬆警惕的時候投入一個深水炸彈,打得你猝不及防,這就是在考驗你的臨場應變能力。
  • 裸體面試和普通面試有什麼區別?掌握這一點將有助於你保持面試的
    裸體面試應該坦誠嗎?我的回答也是肯定的,對你的面試官說你是赤裸裸的辭職,這不僅能增加面試官對你的好感,也能讓你隨大流面試者脫穎而出。裸詞的原因是可以使用一些處理元素。換言之,除了我自己或公司之外,我辭職的原因是什麼。這個答案的模板可以在HR中加中評分。能力裸辭-指那些能力很強但選擇辭職的人。我覺得能裸辭的人是最符合實際情況,不必為下一家公司操心的人。
  • 看霸道總裁如何面試?奇葩問題難倒面試者,五秒鐘被趕出門
    這家公司的趙總對招聘工作很重視,臨時出現在招聘現象,從此出現了一場霸道總裁面試的盛況。 第一位男求職者,一上來就被趙面試官提問,「我每天面對很多人開會,心情很煩躁,很想出去度假,請你現在策劃一個方案,看能不能打動我,讓我選擇你。」
  • 2021年蘇州大學出版專碩考研經驗
    首先,我個人的經驗是,我極度不推薦朱偉的《戀戀有詞》,並不是說朱偉沒有乾貨,而是說他的廢話真的太多了,一節網課幾乎70%都是他在說一些亂七八糟的題外話,你與其看完這麼久的網課,不如拿著單詞書去背,我認為在背單詞的問題上,沒有捷徑可以走,任何方法也只能是一種輔助,死記硬背才是王道。
  • 德勤、農業發展銀行、滙豐等名企筆面試經驗分享
    在場有兩個主要面試官和一個hr小姐姐。案例就和一般的那兩個case差不多在此就不多說啦。3min材料導讀, 8min個人默讀, 2min個人pre(hr會問有誰願意第一個講嗎,我們組沒有hh,隨後隨機選了個人然後按順序說), 20min小組討論(時間過的超級快,不過感覺每個人都會有發言的機會,大家也要把握住哦!)
  • 青聽| 記錄一次「彩虹」面試:你到底想成為什麼樣的人?
    我聽了沒繃住也笑了出來,立馬被化妝師制止,「你不需要笑得這麼開」。之前她問了我的工作意向是公務員和媒體,特地為我挑選了西服正裝,扣住白襯衫最上面的扣子,背後用夾子夾住寬鬆的衣領。化妝師們和攝影師們都非常有經驗,先問你的工作需求,再為你定製微笑。
  • 3個月海投結果1個面試都沒有,簡歷到底怎麼寫才能打動面試官?
    眼看著同學們都陸續入職實習,而自己卻連面試都很難做到,她急需知道問題出在哪裡。既然都說簡歷是職場敲門磚,那麼第一步沒能得到面試通知,那問題應該就出在簡歷上。想要在層層篩選中獲得面試機會,簡歷的設計就很重要。現在一些人為了體現自己的設計水平或者想體現自己的用心程度,總是將簡歷做得很華麗。