? ? 能拿到這個offer精绎,運氣占了不少比例递宅,感謝一路上幫助過我的朋友和同學(xué)任斋。面試的戰(zhàn)線拉得比較長,在此簡單記錄一下露筒。
面試部門:螞蟻金服——人工智能
面試崗位:C/C++研發(fā)工程師
共計5輪面試呐伞,其中前面4輪技術(shù)面,最后一面為HR面
一面:2017-04-05慎式,40分鐘電面
1.自我介紹伶氢,項目相關(guān)
2.項目里面說到有開發(fā)過驅(qū)動,那么比如讀寫一個文件瘪吏,在用戶態(tài)調(diào)用系統(tǒng)的接口函數(shù)癣防,如read和write函數(shù),直至操作到磁盤上掌眠,是怎樣的一個流程
3.驅(qū)動里面有沒有用到過內(nèi)存分配蕾盯,使用哪些函數(shù)(這題應(yīng)該是問,用戶態(tài)調(diào)用malloc這類函數(shù)蓝丙,操作系統(tǒng)內(nèi)部是怎么分配內(nèi)存的)
4.伙伴系統(tǒng)相關(guān)
5.操作系統(tǒng)是如何對內(nèi)存進(jìn)行管理
6.說說內(nèi)存碎片
7.STL里的map如何實現(xiàn)
8.談?wù)劶t黑樹
9.談?wù)劽芭莺蜌w并算法
10.談?wù)剬焖倥判蛩惴ǖ膶崿F(xiàn)级遭,你是如何理解這個算法
? ? 總結(jié):面試官比較nice望拖,聊起來比較放松。問題偏向于底層挫鸽,跟系統(tǒng)關(guān)系很大说敏,對于操作系統(tǒng)這塊的學(xué)習(xí)和理解還需要加強(qiáng)!而且問題也比較深入丢郊,會根據(jù)你的回答盔沫,進(jìn)行更進(jìn)一步的追問、拓展枫匾。C++基礎(chǔ)問的不多(這可能是因為面試官側(cè)重于Java)架诞,數(shù)據(jù)結(jié)構(gòu)與算法中比較經(jīng)典的還是容易作為考點,一定要深入理解婿牍,最好還能形成一定的自己的想法侈贷。
二面:2017-04-10 25分鐘電面+20分鐘在線編程
1.說說在碩士期間主要做了哪些事情,實驗室主要研究方向等脂;談?wù)勛鲞^的項目(主要是自己負(fù)責(zé)的部分)
2.操作系統(tǒng)核心主要分為哪幾個部分俏蛮?
3.操作系統(tǒng)的內(nèi)核主要承擔(dān)怎樣的工作?
4.你們的項目(狀態(tài)監(jiān)測系統(tǒng))上遥,如果一個進(jìn)程或者腳本運行出錯搏屑,有沒有什么措施避免系統(tǒng)出錯?
5.操作系統(tǒng)內(nèi)核中粉楚,常常以模塊的形式進(jìn)行加載和卸載(比如驅(qū)動)辣恋,這樣做有什么好處?
6.操作系統(tǒng)如何確定安全的卸載了模塊模软?
? ? 這題剛開始不理解伟骨,扯了半天(模塊加載之后就是在系統(tǒng)里面,使用時先open燃异、再read/write携狭、不用時close即可;要想卸載驅(qū)動回俐,直接卸載即可)逛腿;面試官提醒:引用計數(shù)。反應(yīng)過來理解錯題意了仅颇,借用OS的文件系統(tǒng)是如何管理打開的文件進(jìn)行回答(系統(tǒng)的文件打開表单默,保存引用計數(shù),多個進(jìn)程或線程同時使用文件或設(shè)備時忘瓦,引用計數(shù)相應(yīng)的增加搁廓,當(dāng)最后一個進(jìn)程關(guān)閉文件時,OS才真正的把引用計數(shù)清0,關(guān)閉文件)枚抵。
7.你們的項目中线欲,前端以及服務(wù)器使用了什么技術(shù)明场?
? ? 由于本人沒有負(fù)責(zé)這一塊汽摹,回答說不太了解。
在線編程部分:
1).二叉樹的DFS和BFS遍歷
2).給定一個有序數(shù)組A[]苦锨,以及待查值target逼泣,查找數(shù)組A[]中是否存在target。存在舟舒,返回其下標(biāo)拉庶;不存在,返回應(yīng)該插入的下標(biāo)(保持?jǐn)?shù)組仍然有序)秃励;分析所寫算法的復(fù)雜度氏仗。
三面:2017-04-17 20分鐘電面
1.自我介紹
2.C++中,你覺得哪些關(guān)鍵字比較有意思
? ? 一時不知道怎么回答夺鲜,說了C++中增加的bool關(guān)鍵字皆尔。然后面試官追問為什么C++中增加了這個關(guān)鍵字。
3.宏定義#define與const常量有什么區(qū)別
4.在GDB等調(diào)試過程中币励,宏和常量有什么區(qū)別
5.static關(guān)鍵字有什么作用
6.三個連續(xù)的整數(shù)慷蠕,比如a,a+1,a+2,相乘之后能否整除6食呻,即a*(a+1)*(a+2)能否整除6
7.計算機(jī)硬件中流炕,32bit與64bit的機(jī)器有什么區(qū)別
8.在32bit系統(tǒng)中,整形變量所能表示的最大值是多少
9.如何計算出一個整數(shù)的二進(jìn)制表示中仅胞,有多少個bit的值等于1
四面:2017-04-18 25分鐘電面+20分鐘在線編程
1.首先還是自我介紹
2.詳細(xì)介紹了項目每辟,以及在項目中做了哪些工作
3.Linux下,如何創(chuàng)建一個進(jìn)程
? ? 回答在程序中干旧,可以調(diào)用fork()創(chuàng)建子進(jìn)程渠欺。
4.承上,fork()函數(shù)的返回值是怎樣
? ? 父進(jìn)程返回子進(jìn)程的pid莱革,子進(jìn)程返回0峻堰。
5.承上,假如父進(jìn)程返回0盅视,子進(jìn)程返回自己的pid能行嗎捐名?當(dāng)前系統(tǒng)為什么不這樣設(shè)計,而是父返回子pid闹击,子返回0镶蹋?
? ? 回答了父進(jìn)程返回子進(jìn)程的pid,主要原因在于父進(jìn)程往往需要知道子進(jìn)程的運行狀態(tài)以及結(jié)果。比如父進(jìn)程可以調(diào)用wait()贺归,捕捉子進(jìn)程的返回信息淆两,因此需要知道子進(jìn)程的pid。
6.linux下拂酣,程序的內(nèi)存布局是分段的秋冰,大概是如何分布?
? ? 32位系統(tǒng)婶熬,進(jìn)程獨立擁有4G虛擬內(nèi)存空間剑勾,1G用于內(nèi)核,余下3G按照棧赵颅、MAP虽另、堆、BSS饺谬、DATA捂刺、TEXT分布;64位系統(tǒng)募寨,擁有256G空間族展,內(nèi)核128G,用戶128G绪商,布局類似苛谷。
7.看你簡歷里面寫了解典型網(wǎng)絡(luò)模型,簡單說說有哪些
8.TCP的四次握手關(guān)閉鏈接過程
9.TIME_WAIT狀態(tài)的作用與意義
10.簡單說說TCP客戶端/服務(wù)器開發(fā)時格郁,用到的系統(tǒng)調(diào)用函數(shù)
11.select()系統(tǒng)調(diào)用有什么作用
12.STL下sort()的內(nèi)部實現(xiàn)腹殿,stable_sort()內(nèi)部實現(xiàn),nth_element()內(nèi)部實現(xiàn)例书,lower_bound()內(nèi)部實現(xiàn)锣尉。
在線編程部分:
1).給定一個字符串,比如" ?abc cba ? ? "决采,要求去掉首尾的前導(dǎo)0自沧,即把字符串處理成"abc cba",返回處理后的字符串树瞭。
HR面:2017-04-27 20分鐘電面
? ? 在此首先給出一個建議:不要輕視HR面試拇厢。很多同學(xué)(自己也是),特別是技術(shù)崗位的晒喷,往往會認(rèn)為HR面試沒有什么好準(zhǔn)備的孝偎,就聊天嘛。其實不是的凉敲,一些比較常見衣盾,比較經(jīng)典的問題寺旺,如果有提前準(zhǔn)備、組織語言的話势决,總歸好過臨時回答時的磕磕絆絆阻塑。還有就是一定要針對面試的公司,提前做一番全面的了解果复,這會是個加分項陈莽。其他的在此就不再贅述了。