阿里2017暑期實習生

? ? 能拿到這個offer,運氣占了不少比例,感謝一路上幫助過我的朋友和同學。面試的戰(zhàn)線拉得比較長,在此簡單記錄一下。

面試部門:螞蟻金服——人工智能

面試崗位:C/C++研發(fā)工程師

共計5輪面試,其中前面4輪技術面,最后一面為HR面



一面:2017-04-05,40分鐘電面

1.自我介紹,項目相關

2.項目里面說到有開發(fā)過驅(qū)動,那么比如讀寫一個文件,在用戶態(tài)調(diào)用系統(tǒng)的接口函數(shù),如read和write函數(shù),直至操作到磁盤上,是怎樣的一個流程

3.驅(qū)動里面有沒有用到過內(nèi)存分配,使用哪些函數(shù)(這題應該是問,用戶態(tài)調(diào)用malloc這類函數(shù),操作系統(tǒng)內(nèi)部是怎么分配內(nèi)存的)

4.伙伴系統(tǒng)相關

5.操作系統(tǒng)是如何對內(nèi)存進行管理

6.說說內(nèi)存碎片

7.STL里的map如何實現(xiàn)

8.談談紅黑樹

9.談談冒泡和歸并算法

10.談談對快速排序算法的實現(xiàn),你是如何理解這個算法

? ? 總結:面試官比較nice,聊起來比較放松。問題偏向于底層,跟系統(tǒng)關系很大,對于操作系統(tǒng)這塊的學習和理解還需要加強!而且問題也比較深入,會根據(jù)你的回答,進行更進一步的追問、拓展。C++基礎問的不多(這可能是因為面試官側重于Java),數(shù)據(jù)結構與算法中比較經(jīng)典的還是容易作為考點,一定要深入理解,最好還能形成一定的自己的想法。



二面:2017-04-10 25分鐘電面+20分鐘在線編程

1.說說在碩士期間主要做了哪些事情,實驗室主要研究方向;談談做過的項目(主要是自己負責的部分)

2.操作系統(tǒng)核心主要分為哪幾個部分?

3.操作系統(tǒng)的內(nèi)核主要承擔怎樣的工作?

4.你們的項目(狀態(tài)監(jiān)測系統(tǒng)),如果一個進程或者腳本運行出錯,有沒有什么措施避免系統(tǒng)出錯?

5.操作系統(tǒng)內(nèi)核中,常常以模塊的形式進行加載和卸載(比如驅(qū)動),這樣做有什么好處?

6.操作系統(tǒng)如何確定安全的卸載了模塊?

? ? 這題剛開始不理解,扯了半天(模塊加載之后就是在系統(tǒng)里面,使用時先open、再read/write、不用時close即可;要想卸載驅(qū)動,直接卸載即可);面試官提醒:引用計數(shù)。反應過來理解錯題意了,借用OS的文件系統(tǒng)是如何管理打開的文件進行回答(系統(tǒng)的文件打開表,保存引用計數(shù),多個進程或線程同時使用文件或設備時,引用計數(shù)相應的增加,當最后一個進程關閉文件時,OS才真正的把引用計數(shù)清0,關閉文件)。

7.你們的項目中,前端以及服務器使用了什么技術?

? ? 由于本人沒有負責這一塊,回答說不太了解。

在線編程部分:

1).二叉樹的DFS和BFS遍歷

2).給定一個有序數(shù)組A[],以及待查值target,查找數(shù)組A[]中是否存在target。存在,返回其下標;不存在,返回應該插入的下標(保持數(shù)組仍然有序);分析所寫算法的復雜度。



三面:2017-04-17 20分鐘電面

1.自我介紹

2.C++中,你覺得哪些關鍵字比較有意思

? ? 一時不知道怎么回答,說了C++中增加的bool關鍵字。然后面試官追問為什么C++中增加了這個關鍵字。

3.宏定義#define與const常量有什么區(qū)別

4.在GDB等調(diào)試過程中,宏和常量有什么區(qū)別

5.static關鍵字有什么作用

6.三個連續(xù)的整數(shù),比如a,a+1,a+2,相乘之后能否整除6,即a*(a+1)*(a+2)能否整除6

7.計算機硬件中,32bit與64bit的機器有什么區(qū)別

8.在32bit系統(tǒng)中,整形變量所能表示的最大值是多少

9.如何計算出一個整數(shù)的二進制表示中,有多少個bit的值等于1



四面:2017-04-18 25分鐘電面+20分鐘在線編程

1.首先還是自我介紹

2.詳細介紹了項目,以及在項目中做了哪些工作

3.Linux下,如何創(chuàng)建一個進程

? ? 回答在程序中,可以調(diào)用fork()創(chuàng)建子進程。

4.承上,fork()函數(shù)的返回值是怎樣

? ? 父進程返回子進程的pid,子進程返回0。

5.承上,假如父進程返回0,子進程返回自己的pid能行嗎?當前系統(tǒng)為什么不這樣設計,而是父返回子pid,子返回0?

? ? 回答了父進程返回子進程的pid,主要原因在于父進程往往需要知道子進程的運行狀態(tài)以及結果。比如父進程可以調(diào)用wait(),捕捉子進程的返回信息,因此需要知道子進程的pid。

6.linux下,程序的內(nèi)存布局是分段的,大概是如何分布?

? ? 32位系統(tǒng),進程獨立擁有4G虛擬內(nèi)存空間,1G用于內(nèi)核,余下3G按照棧、MAP、堆、BSS、DATA、TEXT分布;64位系統(tǒng),擁有256G空間,內(nèi)核128G,用戶128G,布局類似。

7.看你簡歷里面寫了解典型網(wǎng)絡模型,簡單說說有哪些

8.TCP的四次握手關閉鏈接過程

9.TIME_WAIT狀態(tài)的作用與意義

10.簡單說說TCP客戶端/服務器開發(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 ? ? ",要求去掉首尾的前導0,即把字符串處理成"abc cba",返回處理后的字符串。



HR面:2017-04-27 20分鐘電面

? ? 在此首先給出一個建議:不要輕視HR面試。很多同學(自己也是),特別是技術崗位的,往往會認為HR面試沒有什么好準備的,就聊天嘛。其實不是的,一些比較常見,比較經(jīng)典的問題,如果有提前準備、組織語言的話,總歸好過臨時回答時的磕磕絆絆。還有就是一定要針對面試的公司,提前做一番全面的了解,這會是個加分項。其他的在此就不再贅述了。

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,001評論 25 709
  • 又來到了一個老生常談的問題,應用層軟件開發(fā)的程序員要不要了解和深入學習操作系統(tǒng)呢? 今天就這個問題開始,來談談操...
    tangsl閱讀 4,317評論 0 23
  • (秋)曾爭一季報春花,滿地金秋葉分離。也曾好奇爭嬌艷,也曾悲傷暗悄淚。落葉紛飛不負累,只是為明更強大。待到冬去春日...
    甘朝武閱讀 228評論 0 0
  • 一覺睡到九點鐘,腰酸背痛,自從開始運動后,極少睡覺超過早晨八點,工作日是自不肖說,要在周末,這個點已經(jīng)在晨跑回來的...
    wwling2001閱讀 180評論 1 1
  • 依蘭英文俗名:Ylang Ylang拉丁學名:Cananga odorata其它俗名:香水樹植物科屬:番荔枝科香水...
    曦曦格格閱讀 1,617評論 0 0

友情鏈接更多精彩內(nèi)容