去BAT,你應(yīng)該要看一看的面試經(jīng)驗(yàn)總結(jié)

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

公司主營業(yè)務(wù):成都做網(wǎng)站、成都網(wǎng)站建設(shè)、移動網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯(lián)是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)推出沅江免費(fèi)做網(wǎng)站回饋大家。

先交代下背景:坐標(biāo)上海,做技術(shù)開發(fā),我本人面試的職位是linux服務(wù)器開發(fā),最傾向的職位是服務(wù)器開發(fā)主程或技術(shù)經(jīng)理。我本人也是上幾家公司的面試官,因?yàn)榻酉聛韼啄昝媾R著成家,技術(shù)上也到了瓶頸期,雖然拿了不少offer,但是想綜合比對一下,于是就參加了很多的面試。我先后去了如下一些公司:騰訊、百度、餓了么、愛奇藝、360、攜程網(wǎng)、京東、華為、bilibili、上海黃金交易所、東方財(cái)富網(wǎng)、zilliz、掌門集團(tuán)(做無線×××的那一家)、喜馬拉雅聽書、峰果網(wǎng)絡(luò)、華爾街新聞、萬得財(cái)經(jīng)、匯正財(cái)經(jīng)、逗屋網(wǎng)絡(luò)、朝陽永續(xù),還有數(shù)家小規(guī)模的公司或創(chuàng)業(yè)公司吧。

為了避免引起不必要的糾紛,下面我就不說具體的公司名稱了。技術(shù)面試的細(xì)節(jié)我盡量寫的詳細(xì)一點(diǎn),希望對大家有參考價值,技術(shù)面試大致有三種情形:

1

經(jīng)驗(yàn)分享

一、以百度、愛奇藝等為代表的,以數(shù)據(jù)結(jié)構(gòu)和算法為主。

首先是簡單地了解下你之前的工作經(jīng)歷和項(xiàng)目經(jīng)驗(yàn),然后就是算法和數(shù)據(jù)結(jié)構(gòu)題目,具體涉及到以下內(nèi)容:

01

快速排序

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

02

二分查找算法

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

03

鏈表

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

04

自己實(shí)現(xiàn)一些基礎(chǔ)的函數(shù)

自己實(shí)現(xiàn)一些基礎(chǔ)的函數(shù),例如strcpy / memcpy / memmov / atoi,同樣的道理,這些必須完全無誤且高效地寫出來,比如你的實(shí)現(xiàn)中會動態(tài)分配堆內(nèi)存,那么這道題目就算答錯。

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

05

?哈希表

哈希表,對哈希表的細(xì)節(jié)要求很高,比如哈希表的沖突檢測、哈希函數(shù)常用實(shí)現(xiàn)、算法復(fù)雜度;比如百度二面就讓我寫一個哈希表插入元素算法,元素類型是任意類型。

06

AVL樹和B樹的概念、細(xì)節(jié)

AVL樹和B樹的概念、細(xì)節(jié),比如會問MySQL數(shù)據(jù)庫的索引的實(shí)現(xiàn)原理,基本上就等于問你B樹了。

07

紅黑樹

紅黑樹,這個基本上必問的一個數(shù)據(jù)結(jié)構(gòu),包括紅黑樹的概念、平均算法復(fù)雜度、最好最壞情況下的算法復(fù)雜度、、左右旋轉(zhuǎn)、顏色變換。面試官常見的算法套路有:你熟悉C++的stl嗎?你說熟悉,ok,stl的map用過吧?用過,ok,那map是如何實(shí)現(xiàn)的?紅黑樹,ok,那什么是紅黑樹?這樣提問紅黑樹就開始了。Java的也類似。

二、以餓了么、bilibli、喜馬拉雅、360、攜程等為代表的,兼顧算法數(shù)據(jù)結(jié)構(gòu)和其他開發(fā)技術(shù)。

算法和數(shù)據(jù)結(jié)構(gòu)部分上文提過了,下面提一下其他技術(shù),大致包括以下東西:

01

基礎(chǔ)的C++問題

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

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

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

02

網(wǎng)絡(luò)通信問題

?網(wǎng)絡(luò)通信問題,比如協(xié)議棧的層級關(guān)系,三次握手和四次揮手的【細(xì)節(jié)】,注意我說的是細(xì)節(jié),比如CLOSE_WAIT和TIME_WAIT狀態(tài)(bilibili問了這樣一個問題,你可以感受一下:A與B建立了正常連接后,從未相互發(fā)過數(shù)據(jù),這個時候B突然機(jī)器重啟,問A此時的tcp狀態(tài)處于什么狀態(tài)?如何消除服務(wù)器程序中的這個狀態(tài)?

???萬得問過流量擁塞和控制機(jī)制、騰訊問過tcp和ip包頭常見有哪些字段),阻塞和非阻塞socket在send、recv函數(shù)上的行為表現(xiàn),異步connect函數(shù)的寫法,select函數(shù)的用法,epoll與select的區(qū)別,基本上只要問到epoll,必問epoll的水平模式和邊緣模式的區(qū)別;一些socket選項(xiàng)的用法,nagle / keepalive / linger等選項(xiàng)的區(qū)別;tcp / udp的區(qū)別和適用場景;通信協(xié)議如何設(shè)計(jì)避免粘包;http協(xié)議的get和post方法的區(qū)別(問的比較深的會讓你畫出http協(xié)議的格式,參照這篇文章中關(guān)于http協(xié)議格式的講解:http://blog.csdn.net/analogous_love/article/details/72540130);windows用戶可能會問到完成端口模型(IOCP),網(wǎng)絡(luò)通信方面的問題,我專門開了一個知乎live系統(tǒng)地總結(jié)了一下,有興趣的朋友可以看這里:https://www.zhihu.com/lives/922110858308485120 和 這里:https://www.zhihu.com/lives/902113324999778304。

總之,網(wǎng)絡(luò)通信問題能搞的多清楚就可以搞的多清楚,最起碼把tcp應(yīng)用層的各種socket API的用法細(xì)節(jié)搞清楚。

03

操作系統(tǒng)原理性的東西

比如linux下elf文件的節(jié)結(jié)構(gòu),映射到進(jìn)程地址空間后,分別對應(yīng)哪些段,相關(guān)的問題還有,全局變量、靜態(tài)存儲在進(jìn)程地址空間的哪里;堆和棧的區(qū)別,棧的結(jié)構(gòu),棧的細(xì)節(jié)一點(diǎn)要搞的特別清楚,因?yàn)橐恍夹g(shù)要求比較高的公司會問的比較深入,例如京東的一面是讓我先寫一個從1加到100的求和函數(shù),然后讓我寫出這個函數(shù)的匯編代碼(JAVA開發(fā)的同學(xué)可能會讓你試著去寫一點(diǎn)JVM的指令),如果你對棧的結(jié)構(gòu)(如函數(shù)參數(shù)入棧順序、函數(shù)局部變量在棧中的布局、棧幀指針和棧頂指針的位置)不熟悉的話,這題目就無法答對了;棧的問題,可能會以常見的函數(shù)調(diào)用方式來提問,常見的函數(shù)調(diào)用有如下cdecl/stdcall/thiscall/fastcall的區(qū)別,比如像printf這樣具有不定參數(shù)的函數(shù)為什么不能使用__stdcall;還有就是進(jìn)程和線程的聯(lián)系與區(qū)別,問的最多的就是線程之間的一些同步技術(shù),如互斥體、信號量、條件變量等(Windows上還有事件、臨界區(qū)等),這些東西你必須熟悉到具體的API函數(shù)使用的層面上來,從另外一個角度來說,這是咱們實(shí)際工作中編碼最常用的東西,如果你連這個都不能熟練使用,那么你肯定不是一個合格的開發(fā)者;這類問題還可以引申為什么是死鎖、如何避免死鎖;進(jìn)程之間通信的常用技術(shù)也需要掌握,常用的通信方式(linux下)有共享內(nèi)存、匿名和具名管道、socket、消息隊(duì)列等等,管道和socket是兩個必須深入掌握的考察點(diǎn)(與上面網(wǎng)絡(luò)通信有點(diǎn)重復(fù));linux系統(tǒng)下可能還會問什么是daemon進(jìn)程,如何產(chǎn)生daemo進(jìn)程,什么是僵尸進(jìn)程,僵尸進(jìn)程如何產(chǎn)生和消除(bilibili問過)。

? ?CAS機(jī)制(餓了么二面問過)。

04

使用過的開源技術(shù)

第四類就是一個使用過的開源技術(shù),比如代表NOSQL技術(shù)的redis;網(wǎng)絡(luò)庫libevent等等;數(shù)據(jù)庫如mysql的一些東西。這個一般不做硬性要求,但是這里必須強(qiáng)調(diào)的就是redis,熟練使用redis甚至研究過redis源碼,現(xiàn)在一般是做后臺開發(fā)的技術(shù)標(biāo)配或者說不可缺少的部分,基于redis的面試題既可以聊算法與數(shù)據(jù)結(jié)構(gòu),也可以聊網(wǎng)絡(luò)框架等等一類東西。我面試的公司中基本上百分之九十以上都問到了redis,只是深淺不一而已,比如喜馬拉雅問了redis的數(shù)據(jù)存儲結(jié)構(gòu)、rehash;bilibili問了redis的事務(wù)與集群。

三、只問一些做過的業(yè)務(wù)或者項(xiàng)目經(jīng)驗(yàn)。

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

四、不靠譜型公司。

我遇到的大致有四類:

01

裝X忽悠型

第一類:裝X忽悠型

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

02

佛性公司

第二類:佛性公司

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

03

老奶奶裹腳布型公司

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

其特點(diǎn)是面試周期長,往往第一輪面試通知你過了,讓你回去等上十天半個月后,給你打電話通知你來第二輪面試,面試要求穿正裝,帶好各種證件,面試前必須先查驗(yàn)?zāi)愕摹痢痢痢W(xué)歷證學(xué)位證,甚至是四六級證等等,麻煩至極,即使你一路過關(guān)斬將過了終面,薪資也給不了多少。大家都是要養(yǎng)家糊口的,都是忙著找工作,誰有時間和你耗上十天半個月呢?

04

不尊重人類型公司

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

我這里說的不尊重人,不是指的是面試過程中對你人身×××,而是不根據(jù)你的工作年限和經(jīng)驗(yàn)隨意安排面試官,舉個例子,比如你工作十年,你去面試一個技術(shù)總監(jiān)的職位,對方公司安排一個工作不滿兩年的部門職員作為面試官,這個面試官如果是走過場可以理解,但是非要和你糾結(jié)一個如二進(jìn)制位移、現(xiàn)代編譯器要不要在子類析構(gòu)函數(shù)前加virtual關(guān)鍵字這些技術(shù)細(xì)節(jié)就沒必要了。還有一類就是故意問一些刁鉆的問題,或者全場都心不在焉、玩手機(jī)、漫不經(jīng)心的面試官,比如問你tcp協(xié)議頭有多少個字段,每個字段是干啥的。遇到這一類面試官我的經(jīng)驗(yàn)就是要么婉拒,要么直接懟回去。

2

注意細(xì)節(jié)

下面再說下面試中需要注意的一些細(xì)節(jié):

01

把目光放長遠(yuǎn)一點(diǎn)

第一,如果你的工作年限不長,尤其是渴望在技術(shù)方面有一定的造詣,那么你首先考慮的應(yīng)該是新的單位是否能有利于你技術(shù)上的成長,而不是兩份同樣的工作,薪資上的上下相差的三五千、五六千。如果想轉(zhuǎn)行的同學(xué)(比如從客戶端轉(zhuǎn)服務(wù)器,從C++轉(zhuǎn)JAVA),不要因?yàn)樾劫Y突然變低而拒絕這種陣痛,要把目光放長遠(yuǎn)一點(diǎn)。

02

可能最終會因?yàn)樾劫Y達(dá)不到不被錄取

第二,一些公司雖然招聘信息上寫了最多能給到多少多少,但實(shí)際即使你全程面試下來都很完美,可能最終你也會因?yàn)樾劫Y達(dá)不到不被錄取。

03

多面試積累經(jīng)驗(yàn)

第三,一些根本不想去的公司,如果你有時間的話,去面試積累下經(jīng)驗(yàn)也不是什么壞事。

04

警惕技術(shù)天花板

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

05

聊清楚將來的職位內(nèi)容

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

06

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

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

07

不要輕視筆試中的數(shù)學(xué)智力題

第七,不要輕視筆試中的一些數(shù)學(xué)智力題目,認(rèn)真作答,試問算法不也是數(shù)學(xué)智力題嗎?

08

自信點(diǎn)

第八,自信一點(diǎn),每個人的經(jīng)歷和經(jīng)驗(yàn)都是獨(dú)一無二的,面試的時候,一些特定領(lǐng)域的問題,回答不出來也不要太在意。

?希望對閱讀的朋友有所幫助。因?yàn)閭€人經(jīng)驗(yàn)?zāi)芰τ邢?,所說的也可能只是一家之言,說的不妥當(dāng)?shù)牡胤竭€請溫和地提出建議。

歡迎關(guān)注公眾號『easyserverdev』。如果有任何技術(shù)或者職業(yè)方面的問題需要我提供幫助,可通過這個公眾號與我取得聯(lián)系,此公眾號不僅分享高性能服務(wù)器開發(fā)經(jīng)驗(yàn)和故事,同時也免費(fèi)為廣大技術(shù)朋友提供技術(shù)答疑和職業(yè)解惑,您有任何問題都可以在微信公眾號直接留言,我會盡快回復(fù)您。

文章名稱:去BAT,你應(yīng)該要看一看的面試經(jīng)驗(yàn)總結(jié)
文章位置:http://bm7419.com/article42/goehhc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站設(shè)計(jì)、網(wǎng)站排名、、建站公司網(wǎng)站設(shè)計(jì)公司、定制網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作