前言
經(jīng)過六月到九月這幾個(gè)月的努力,九風(fēng)有幸拿到了趨勢(shì)科技、小米、美團(tuán)、網(wǎng)易互娛的offer,之前看了好多分享的面經(jīng),是時(shí)候該回饋了一波。
先介紹下九風(fēng)的基本情況:在導(dǎo)師的創(chuàng)業(yè)公司待過一年多(沒有課就去公司),做過C++圖像處理、java后臺(tái)開發(fā)、移動(dòng)web開發(fā),由于自己比較水,學(xué)的東西都不深,在7月初離開公司后就猛補(bǔ)基礎(chǔ)知識(shí)點(diǎn)。
艱辛經(jīng)歷
九風(fēng)在校招七月初就開始投簡(jiǎn)歷,沒有統(tǒng)計(jì)過投過多少家,基本把牛客網(wǎng)上的可以投的公司全部投了一遍,投了簡(jiǎn)歷的至少有60家公司;筆試也不知道做了多少了,至少有25家的筆試,最后收到的面試情況:
- 招銀網(wǎng)絡(luò)科技:電話一面掛;
- 金山WPS:電話一面過,電話二面掛;
- CVTE:現(xiàn)場(chǎng)技術(shù)一面掛;
- 美團(tuán)點(diǎn)評(píng):現(xiàn)場(chǎng)技術(shù)一、二三面、hr面拿到offer;
- 網(wǎng)易互娛:現(xiàn)場(chǎng)技術(shù)一面、二面拿到offer;
- 趨勢(shì)科技:現(xiàn)場(chǎng)技術(shù)一面、二面拿到offer;
- 小米:現(xiàn)場(chǎng)霸面技術(shù)一面、二面拿到offer;
- 騰訊:現(xiàn)場(chǎng)一面掛;
- 深信服:和騰訊面試沖突放棄;
其他公司:百度、頭條、京東等這些公司掛在筆試上了,360、搜狐、搜狗、美麗聯(lián)合等直接掛在簡(jiǎn)歷上了;
對(duì)現(xiàn)在的offer情況比較滿意,準(zhǔn)備結(jié)束秋招;先感謝給我offer的面試官,找工作真的是很看運(yùn)氣的,碰到好的面試官會(huì)一步一步引導(dǎo)你,碰到風(fēng)格不搭的面試官那就有點(diǎn)難受了;然后感謝一起找工作的小伙伴們,一起學(xué)習(xí)一起進(jìn)步,多交流面試經(jīng)驗(yàn),少走了很多坑;也謝謝很多牛友分享的面經(jīng);
準(zhǔn)備校招的還是蠻辛苦的,九風(fēng)7月份開始基本都是7:30起來刷編程題刷到8:30吃早點(diǎn)去實(shí)驗(yàn)室準(zhǔn)備其他知識(shí)點(diǎn),中午午休前半小時(shí)刷編程題,晚上回去洗澡后刷編程題到12:30左右睡覺,沒辦法,基礎(chǔ)不行只能靠努力來補(bǔ);由于智商還是不夠用,最后也只把??蜕系膌eetCode題刷完了而已,看了幾遍劍指offer,這兩個(gè)都是神一般的存在,算法題就靠這兩個(gè)。
九風(fēng)想對(duì)小伙伴們說:
心態(tài)很重要:九風(fēng)的offer可以說都在9.22號(hào)這天拿的,在這天之前,我也是一個(gè)offer也沒有,也比較難受,看著一起的小伙伴面試、拿offer,我在9.22之前就在9.18號(hào)現(xiàn)場(chǎng)面了CVTE一家(招銀科技、WPS是電話面的),還一面掛了,當(dāng)時(shí)也是很難受,但是還是要繼續(xù)學(xué)習(xí),畢竟,機(jī)會(huì)是給有準(zhǔn)備的人,如果offer還沒來,那么要么就是適合你的offer還在后面,要么就是還需要繼續(xù)學(xué)習(xí)。擺正心態(tài),厚積薄發(fā)!
多交流:九風(fēng)的實(shí)驗(yàn)在8月底就組織了一系列活動(dòng),基本每天晚上有個(gè)小伙伴來分享,而分享的內(nèi)容沒有限制,面試經(jīng)驗(yàn)、操作系統(tǒng)、hr面如何回答、網(wǎng)絡(luò)知識(shí)、排序算法、實(shí)習(xí)經(jīng)歷、大數(shù)問題解決方法、如何講項(xiàng)目等等,只要和面試有點(diǎn)相關(guān)的都可以,大家一起討論,互補(bǔ)知識(shí)點(diǎn),聽者從面試角度來提問,講者回答,討論知識(shí)點(diǎn)會(huì)從哪些角度來問等等;
補(bǔ)上盲點(diǎn):這一點(diǎn)起始是對(duì)修改簡(jiǎn)歷的建議,九風(fēng)初始版本的簡(jiǎn)歷的技能就是寫自己會(huì)哪些就寫哪些,發(fā)現(xiàn)基本都在掛在簡(jiǎn)歷上;之后看到上一屆師兄們的簡(jiǎn)歷,就專業(yè)技能方面就比我多好多項(xiàng),至少看上去高大上一些;然后九風(fēng)就去騰訊招聘C++開發(fā)工程師的要求直接粘貼到簡(jiǎn)歷上,適當(dāng)修改后感覺簡(jiǎn)歷瞬間高大上了--------好多知識(shí)點(diǎn)都不懂,然后根據(jù)簡(jiǎn)歷上寫的狂補(bǔ)。只要你補(bǔ)上了之后那就不虛了,因?yàn)閷?shí)在不懂的你可以寫個(gè)了解,如果有時(shí)間的話就深入學(xué)習(xí)。
面經(jīng)
- 金山WPS 時(shí)間九月初,具體時(shí)間忘了,
電話一面: 過了
- 如何檢測(cè)內(nèi)存泄漏
- 講講智能指針
- C++容器有哪些
- list 和 vector有什么區(qū)別
- 講講大端小端,如何檢測(cè)
- public 和 private 關(guān)鍵字,在繼承中有什么區(qū)別
- 設(shè)計(jì)一個(gè)內(nèi)存分配類---參考STL中空間配置器
- 現(xiàn)有一個(gè)程序需要申請(qǐng)的地址是要求起始地址必須是16的倍數(shù),如何設(shè)計(jì)----將申請(qǐng)大小上調(diào)至16的倍數(shù),那么最多會(huì)浪費(fèi)15byte空間,真正存儲(chǔ)從16byte倍數(shù)上開始利用。
電話二面: 9.12號(hào), 掛了。 不過這個(gè)要吐槽下,約的2.30, 等到下午5點(diǎn)才打電話過來,等得心累;
- TCP三次握手
- http狀態(tài)碼,403是什么
- http 與 https的區(qū)別
- 智能指針,shared_ptr 內(nèi)部實(shí)現(xiàn)
- IPC通信有哪些
- 多線程的死鎖,死鎖避免(講了銀行家算法額思想)
- Vistual Studio 怎么調(diào)試,如何設(shè)置條件斷點(diǎn)
- JVM 內(nèi)存回收
- 招銀科技 9.15號(hào)
電話一面: 掛了
- tcp、udp的區(qū)別
- spring 依賴注入
- 面向?qū)ο蟮奶卣?,講講多態(tài),什么是多態(tài)?
- 進(jìn)程與線程的區(qū)別
- 什么是信號(hào)量,信號(hào)量與信號(hào)的區(qū)別
- 依賴注入
- 怎么創(chuàng)建索引
- 知道哪些設(shè)計(jì)模式,工廠方法與抽象方法的區(qū)別
- 怎么統(tǒng)計(jì)char二進(jìn)制中1的個(gè)數(shù)
- sizeof 與 strlen的區(qū)別
- CVTE 9.18號(hào)
現(xiàn)場(chǎng)一面: 掛了
- 挑一個(gè)最拿手的項(xiàng)目講
- 面向?qū)ο蟮幕咎卣鳎悍庋b、繼承、多態(tài);
- 析構(gòu)函數(shù)能不能用virtual
- 引用與指針的區(qū)別
- 引用必須初始化,先在要設(shè)計(jì)在一個(gè)類中如何初始化引用:
class A{
int &a;
}
如何給a初始化? - static、const、virtual結(jié)合使用情況,以下幾種可以么:
static void fun(){};
static void fun() const {};
static virtual void fun() const {};
static virtual void fun() {};
以上四種函數(shù)可以這樣定義嚒? 為什么?
- 美團(tuán) 9.20號(hào)
現(xiàn)場(chǎng)一面: 過了
- 進(jìn)程與線程的區(qū)別
- 數(shù)據(jù)庫索引為什么用B+樹而不用B-樹
- spring mvc 的處理流程
- 訪問一個(gè)網(wǎng)頁的具體過程
- 手寫單例模式
- 手寫數(shù)組合并
- java線程安全了解么
- hashmap、hasptable、concurrenthashmap的區(qū)別,concurrenthashmap如何實(shí)現(xiàn)高并發(fā)?
- 知道哪些NoSQL,講下redis,redis的實(shí)現(xiàn)原理,redis怎么實(shí)現(xiàn)高并發(fā)?
- C++如何處理異常,異常向上拋出拋到最上層是什么情況?
- get、post的區(qū)別,什么是冪等性,put和post的區(qū)別。
現(xiàn)場(chǎng)二面: 過了
- tcp三次握手,第三次握手的時(shí)候如果直接發(fā)送數(shù)據(jù)會(huì)怎樣。
- 一個(gè)http請(qǐng)求的具體過程以及具體的協(xié)議,越詳細(xì)越好,dns的查詢過程
- 設(shè)計(jì)一個(gè)訂單,同時(shí)有多個(gè)騎手搶訂單該如何設(shè)計(jì),有多個(gè)服務(wù)器處理請(qǐng)求要怎么處理?
- select、epoll的區(qū)別,什么時(shí)候用select,什么時(shí)候用epoll
- 講項(xiàng)目
- 網(wǎng)易互娛 9.21號(hào)面試,22號(hào)晚上出結(jié)果; 到了現(xiàn)場(chǎng)先寫一個(gè)算法,不難。
現(xiàn)場(chǎng)一面:
- 講下快排
- 手寫插入排序
- 進(jìn)程與線程的區(qū)別,如何創(chuàng)建多線程、如何創(chuàng)建多進(jìn)程。
- IPC通信,會(huì)問你自己實(shí)際使用過不
- socket編程過程
- vector實(shí)現(xiàn)原理
- 如何實(shí)現(xiàn)vector 在擴(kuò)容的時(shí)候不進(jìn)行新的空間申請(qǐng),即不想有擴(kuò)容操作,該如何設(shè)計(jì)? --- 從operator new和placement new方面來講。
- 如何將一個(gè)序列均等分為兩部分,使得這兩部分之和盡量小-----沒做出來,比較尷尬。
現(xiàn)場(chǎng)二面: 過了
- 全程講項(xiàng)目
- 最后出了個(gè)題:在王者榮耀中(干嘛不說陰陽師中呢)如何統(tǒng)計(jì)全服中所有玩家阿軻這個(gè)英雄的勝場(chǎng)排名?
呀呀,到了神奇的9.22這天了
神奇的9.22號(hào)
- 9:00 美團(tuán)三面:
- 全程問項(xiàng)目
- 9:50 美團(tuán)hr面:
- 把一個(gè)項(xiàng)目用通俗易懂的語言講懂給她聽
- 如何處理同事關(guān)系
- 一個(gè)人不會(huì)在公司待一輩子,你會(huì)出去創(chuàng)業(yè)???---堅(jiān)決咬定不會(huì),美團(tuán)特別好,留在公司做貢獻(xiàn)
- 為什么來美團(tuán)?美團(tuán)的價(jià)值觀是啥
- 你選擇offer的最重要的兩個(gè)因素
24號(hào)發(fā)消息說進(jìn)入錄用池了,28號(hào)打電話詢問手里offer情況,然后定薪資, 30號(hào)打電話說薪資情況,要決定是否接offer,我說考慮一天,31號(hào)打電話回去把offer拒了,機(jī)會(huì)留給小伙伴們,小伙伴們加油。
10:50才發(fā)現(xiàn)趨勢(shì)科技也是上午面試(以為下午面試),趕緊跑過去面試現(xiàn)場(chǎng)。
- 12:00 趨勢(shì)科技 (忘記記錄,憑記憶寫咯)
現(xiàn)場(chǎng)一面:
- 根據(jù)簡(jiǎn)歷上寫的項(xiàng)目、技能來問你是熟悉還是了解,你只是自己用過而已???你不是自己從底層設(shè)計(jì)的哦,那就不用說了!?。?!
- 講下項(xiàng)目,給我項(xiàng)目中的問題看我怎么解決。
這個(gè)一面的面試體驗(yàn)比較不爽,不問里面的具體技術(shù),只問是不是只是用過,也不讓講深入一些的知識(shí)點(diǎn),感覺你要是自己設(shè)計(jì)出來一個(gè)類似的東西或者深入研究過源碼才行或者修改源碼才行一樣,給我的感覺不爽,不過還是感謝讓我過了。
12:50 現(xiàn)場(chǎng)二面
- 講項(xiàng)目
- 寫一個(gè)字符串拷貝函數(shù),你這個(gè)會(huì)出現(xiàn)異常嚒?怎么改進(jìn)?
- 簡(jiǎn)單英語口語交流
13:30 hr簽offer
當(dāng)時(shí)就問了要不要違約金,然后就簽了,當(dāng)時(shí)到手的第一個(gè)offer,其他都還沒信,心里老高興了,準(zhǔn)備好久,終于有個(gè)offer,差點(diǎn)就蹦起來了!
2:30 吃完飯后看到小伙伴有去小米霸面的,我也湊個(gè)熱鬧就去了...,第一次去霸面百度,百度沒鳥我,覺得霸面應(yīng)該沒機(jī)會(huì),不過小米還是支持霸面的,面試體驗(yàn)不錯(cuò),贊一個(gè)(小米面試的酒店要刷卡才能進(jìn)某一樓層,我上它們面試的上一層樓上,想從消防電梯走,結(jié)果進(jìn)了消防電梯到了面試樓層發(fā)現(xiàn)要刷卡才能出消防樓層....,然后尷尬的打電話給小米hr姐姐來解救我們。。。。 當(dāng)時(shí)好尷尬)。
- 6:30 小米,到了先從三道題中選一道題做,
現(xiàn)場(chǎng)一面:
- 先寫個(gè)堆排熱熱身吧?。?! 有點(diǎn)忘了,然后自己畫圖,根據(jù)自己的圖來寫過程,面試官看了兩次都說不急,你慢慢寫,我哪敢慢慢寫,趕緊寫完就給面試官了,有些錯(cuò)誤,不過總體思路是對(duì)的。
- 統(tǒng)計(jì)逆序?qū)€(gè)數(shù),我記得劍指offer上利用歸并的思想將原序列分成前后兩個(gè)序列,分別統(tǒng)計(jì)兩個(gè)序列中的逆序?qū)€(gè)數(shù),再統(tǒng)計(jì)兩個(gè)序列中的逆序?qū)€(gè)數(shù),然后再合并繼續(xù)的思路;我把思想說了之后面試官就讓我手寫代碼,寫好之后他看下了應(yīng)該是對(duì)的。
- 還手?jǐn)]了一個(gè)算法,不太記得,不過沒上面兩個(gè)難,面的不好,全程手?jǐn)]代碼,不過讓我過了,真是開心。
中間在等二面的時(shí)候跟hr姐姐聊天,漫長(zhǎng)的等待中。。。
現(xiàn)場(chǎng)二面:
- 二面面試官看了下我寫的堆排,然后讓我講了下STL中的空間配置器,問了為什么自由鏈表中的是8byte的倍數(shù)?
- 問了那個(gè)剛開始那道題: 如何在一個(gè)隊(duì)列中記錄當(dāng)前隊(duì)列的最大值,這個(gè)跟那個(gè)棧的最小值有點(diǎn)相識(shí),不過這個(gè)難一些,我用那個(gè)棧的思想說下我的解決思路,然后面試說你確定???我說我看下,然后自己發(fā)現(xiàn)了問題,就把自己發(fā)現(xiàn)的問題跟面試官講了下,然后講了我那個(gè)解決方法的思想就是那個(gè)棧的最小值演變而來的;之后面試官提示我pop、push、getmax這三個(gè)方法都是O(n*lg(n))的時(shí)間復(fù)雜度,我說用堆???他說堆插入的時(shí)間復(fù)雜度比較長(zhǎng),我思考了下說做不出來。
- 最后問了那個(gè)逆序?qū)€(gè)數(shù)的時(shí)間復(fù)雜度,讓我手推公式,我也沒推出來,然后面試官在我面前手推了一把,然后就結(jié)束了。。。。。。。
二面面完后出去跟小米hr姐姐說我掛了,然后hr姐姐說我過了,呀呀,說了謝謝就去按電梯下去了,按電梯的時(shí)候接到網(wǎng)易互娛的通知說過了, 當(dāng)時(shí)就蹦起來了。下了樓之后一看時(shí)間已經(jīng)是晚上8:30了,辛苦了這么久終于有點(diǎn)小成果了。
- 騰訊 9.24
現(xiàn)場(chǎng)一面:掛了
- 自我介紹,然后面試官說來個(gè)自我介紹,說他就問點(diǎn)基礎(chǔ)?。?!
- 寫個(gè)二分查找--這個(gè)倒是很基礎(chǔ)
- 現(xiàn)在多個(gè)活動(dòng),有多個(gè)開始和結(jié)束時(shí)間,計(jì)算出其中某個(gè)時(shí)間有最多活動(dòng)的個(gè)數(shù), 當(dāng)時(shí)腦袋發(fā)熱,這個(gè)沒想出來,我記得是做過的。
- 知道一致性hash??? 設(shè)計(jì)一個(gè)一致性hash。 我講了點(diǎn)概念,說要用到虛擬節(jié)點(diǎn),這樣可以負(fù)載均衡(自己給自己挖坑)
- 講下負(fù)載均衡吧----懵了,講了同學(xué)的cdn當(dāng)時(shí)的負(fù)載均衡項(xiàng)目,有點(diǎn)懵逼。
- 講下epoll的內(nèi)核實(shí)現(xiàn)吧----紅黑樹、就緒隊(duì)列
- 講下linux的內(nèi)存管理吧。 我:有點(diǎn)忘了,不太清楚您是要問哪方面,是虛擬地址空間還是進(jìn)程調(diào)度方面的,能提示下?。? 面試官:不行。 我:一丟丟就行了。 面試官:我們換個(gè)問題吧。
- 講講數(shù)據(jù)引擎吧, 我:有inodb,還有一個(gè)另一個(gè)忘了叫啥了,inodb是用的B+樹做索引,另一個(gè)好像用的B-樹(這里記錯(cuò)了,也是用的B+樹做索引), (我心里想,你問我B+樹、B-樹吧的區(qū)別吧,以及為什么要用B+樹之類的,然而并沒有問)
- 面試時(shí)間差不多,你有什么要問的, 我問了問常問的問題(心里:怎么不問B+、B-樹的區(qū)別)。
晚上回來一查妥妥掛了,好氣哦,說好的問基礎(chǔ),C++基礎(chǔ)知識(shí)一個(gè)沒有,感覺應(yīng)該那個(gè)活動(dòng)的編程題做出來了會(huì)好很多,當(dāng)時(shí)腦細(xì)胞轉(zhuǎn)不動(dòng),實(shí)在想不出來,還是自己掌握的不行,繼續(xù)前進(jìn)。
騰訊掛了之后,我就結(jié)束秋招了。 還在路上的小伙伴們加油,機(jī)會(huì)總是給有準(zhǔn)備的人的,如果機(jī)會(huì)還沒到你,要么就是真正的機(jī)會(huì)還留在后面,要么就是你還沒準(zhǔn)備好!
總結(jié)
九風(fēng)也是學(xué)渣,成績(jī)排名靠后,基礎(chǔ)不牢靠,都是靠這幾個(gè)月狂補(bǔ)知識(shí)點(diǎn)積累的,之前面的招銀科技、WPS、CVTE問的問題都不難,但都還是掛了,都是因?yàn)榛A(chǔ)不行,補(bǔ)補(bǔ)就好了。
對(duì)于面試:當(dāng)你面了5次以上的面試之后就會(huì)發(fā)現(xiàn),其實(shí)問來問去就那么幾個(gè)問題,所以把常問的問題搞懂搞深,尤其是要搞深,要是你也回答的比較常見的回答,那公司為什么要你而不要?jiǎng)e人? 所以對(duì)于某個(gè)問題一定需搞的深,比如問select 與 epoll的區(qū)別,別人回答文件描述符限制,需要不需要輪詢這些大家都能記住的答案,那公司怎么決定就要你呢?其實(shí)就是比別人深那么一點(diǎn),查查資料看看epoll的內(nèi)核具體如何實(shí)現(xiàn)的、ET、LT模式具體實(shí)現(xiàn)的區(qū)別,這就是公司要你的原因!
對(duì)于知識(shí)點(diǎn):這里推薦一篇學(xué)院大佬的文章,估計(jì)很多小伙伴都看過:http://www.itdecent.cn/p/a6ad23aee955 ,這里基本囊括大部分常問的知識(shí)點(diǎn)了,不過沒有C++的,下面是C++中常問的知識(shí)點(diǎn):
C++基礎(chǔ)知識(shí)點(diǎn):
- 面向?qū)ο蟮奶匦裕?/li>
- 多態(tài): 重載、虛函數(shù), override、overload;
- 繼承中的private、public; class 與 struct的區(qū)別;
- 內(nèi)聯(lián)函數(shù)與虛函數(shù);
- 指針和引用;
- static 和 const;
- 智能指針;
- 宏和const 、 inline;
- 構(gòu)造函數(shù)、析構(gòu)函數(shù)、虛函數(shù)、拷貝構(gòu)造、賦值操作符;
- new與malloc;
- 進(jìn)程地址空間內(nèi)存分配;
- strcopy、memcpy、memmove;
- 內(nèi)存對(duì)齊;
- 類型轉(zhuǎn)換;
- 單例模式:
- sizeof 與 strlen的區(qū)別;
- 深拷貝、淺拷貝;
- 靜態(tài)鏈接、動(dòng)態(tài)鏈接的區(qū)別;
C++ 進(jìn)階知識(shí)點(diǎn)
- STL 空間配置,具體實(shí)現(xiàn)過程,如果內(nèi)存自由鏈表中沒有空間會(huì)怎么處理,如果內(nèi)存池中沒有空間會(huì)怎么處理,如果heap中沒有空間會(huì)怎么處理,為什么自由鏈表中的倍數(shù)是8byte,而不是其他。
- vector 的實(shí)現(xiàn),如何實(shí)現(xiàn)不發(fā)生拷貝到新空間就只在當(dāng)前空間擴(kuò)容(new operator、operator new、placement new),vector的內(nèi)存時(shí)如何分配的(空間配置器)
- set、map的底層實(shí)現(xiàn),紅黑樹的概念,紅黑樹的插入(刪除太復(fù)雜了,能把插入搞清楚就可以了,很少問到這一層次了)
最后的最后,祝小伙伴們都拿到滿意的offer!