標籤:應該 地址 tcp/ip 平衡二叉樹 四次揮手 特性 omd 為什麼 許可權
百度2017實習生軟體開發(cpp方向)
首先說一下崗位。分為軟體開發,開發測試,前端,機器學習資料採礦,移動開發,據我觀察,報的人數來看,軟體開發最多,移動開發和開發測試較少。百度前台還準備了吃的喝的,真的是白吃白喝,但是哪裡有心情,第一次還是有些緊張。面試地點應該是百度的一餐廳吧,進去後我就驚呆了,沒見過大場面啊,人真多。裡邊全是一對一的,每個面試官都標配mac,真心羨慕。
上來先自我介紹,面試官大概先看了一眼簡曆,瞭解了我是非電腦專業的後就問我擅長哪個方面,然後就開幹C++,很奇怪為甚麼沒問我STL的內容和資料庫,之後C++完了就問了一些資料結構和演算法的問題,問我了不瞭解作業系統,我就很實在的講只瞭解一點點,然後就是電腦網路,再然後就是對linux C熟不熟悉,常用的一些命令。最後又看我簡曆,指出來簡曆的問題,真心挺好,問我寫的那幾個破比賽的情況,接著就完了。搞了一個多小時,問的我都懵逼了,可能面試官覺得我欠缺的知識挺多的吧,雖然讓寫的幾個程式也絆絆磕磕的寫出來了,也沒有拿得出手的項目做支撐,所以直接就讓我走了。
具體問題:
- 物件導向的幾個特性?
封裝、繼承、多態
- 寫一個繼承的例子?
比如:類B繼承類A,(我就簡單寫了寫,還把繼承的符號寫錯了,當時有點緊張)
- Public和private的區別以及衍生類別的存取權限問題
- 多態是怎麼實現的?(我說通過虛函數)
- 接著在上邊的例子裡寫一個虛函數
- 基類和衍生類別中的虛函數的重寫(覆蓋問題)
- 重載和重寫的區別?
- 實現Swap(a,b)對不同類型資料都能處理的話,除了重載,還有哪種方式?(我說函數模板)
- 函數模板寫出來實現一下上邊的問題
- 實現Swap(a,b),如果不用第三個變數temp的話怎麼實現?(記得看過,當時懵逼想不起來了,也沒想著分析分析就說不會了,感覺不應該這樣)
- 純虛函數怎麼定義的
- 包含純虛函數的類是什麼情況?(抽象類別)
- 抽象類別的用法
- 命名空間是怎麼回事?有什麼作用
- 函數指標和指標函數是什嗎?
- 指標常量和常量指標的區別(我當時弄混了,一時懵逼,面試官給我講清楚了)
- 棧區和堆區的問題 以及記憶體流失問題
- 數組和鏈表的區別,訪問和刪除、插入的複雜度及為什麼(這個我挺明白,但是沒表述清楚,他又給我講了一遍)
- 二叉樹的幾種遍曆方式?
- 層序遍曆是怎麼實現的,是dfs還是bfs?
- 寫一下二叉樹中序遍曆的代碼,提示我說要自己定義節點(我問了可以寫遞迴麼,他說可以),問複雜度,我說不知道啊。
- 知道平衡二叉樹嗎,怎麼定義的。
- 二分尋找寫代碼(我當時忘了寫查不到的情況,真尷尬)我寫的版本有一個移位,然後他就問為啥移位(編程一定注意細節,說寫的這編譯肯定出問題啊)
- 瞭解哪些排序演算法,寫一個吧,我說幾個,然後說能寫冒泡麼,後來他又想了想說就說思路吧,我就講了冒泡的思路,又問複雜度是多少,怎麼算的。
- 快排寫代碼,我說要寫嗎?,然後他就說講講思路吧,我就大致講了講,問平均複雜度,最好的複雜度,最壞的複雜度
- 插入排序的思路
- 問我這些基本的演算法自己有沒有實現過
- 聊簡曆上寫的本科時的項目和比賽,怎麼實現的,技術痛點,什麼平台,數學建模裡邊主要負責啥(這些都和軟體開發沒啥關係)
- 說獎學金挺多,看來學習一定很好(我說很渣)
- 看我研究生課程有資料採礦和神經網路,問我為啥沒去報機器學習崗
- 問我的優勢是啥,對於軟體研發這個崗位來說,我說就C++吧,他說這掌握的還不夠呐。
- 自學能力怎麼樣?數學怎麼樣?
- 問我瞭解作業系統麼,我說就一點點。問並發和並行是啥?(我直接按自己理解說了其實不懂,然後他就跟我講了一通)
- 進程和線程的區別
- 處理序間通訊的幾種方式?(我沒答全),然後問我管道是全雙工系統的嗎?,線程間記憶體是共用的嗎?再問其他的了,我就直接表示不會了。(作業系統確實是軟肋)
- Osi七層模型(差一個忘了),然後五層的那個。
- 應用程式層的有哪些協議:我說http,ftp,telnet,smtp(沒說DNS)
- 然後問我DNS是啥(現在想想都是套路啊,當時沒反應過來)
- http和https的區別,ssl底層實現瞭解麼,密碼編譯演算法瞭解麼
- TCP協議和UDP協議
- 畫出tcp/ip建立串連和中斷連線的,(我就畫了個建立串連的,四次揮手忘了),還問我伺服器端最開始要怎麼做?(好像是保持監聽轉態)
- IP地址中子網路遮罩的作用,IP地址分為哪幾部分
- IP地址分為幾類
- 熟悉linux C麼,(不熟悉)
- 熟悉的Linux 命令,mkdir, ls, rm, chomd,是啥意思,awk, grep(剛看了就忘了)
- 宿主目錄(直接懵逼),根目錄下,怎麼尋找一個檔案
- 瞭解設計模式麼,我說就知道一個模式(觀察者模式),沒敢說單例模式,怕他讓寫單例模式的代碼,這個單例模式還不是很熟悉。讓我畫出觀察者模式的,我說了個依賴關係,其實也是自己沒理解到位,他就揪著 依賴 不放了,跟我使勁講清楚了,還畫圖,我只能連連點頭。
- 應該還有沒想起來的。待更新、、、、
教訓總結:
- 基礎知識掌握的不夠細緻,關鍵細節搞不清楚。
- 作業系統和linux,設計模式不會是硬傷
- 簡曆寫的有問題
- 沒令人信服的項目支撐
- 編程細節問題。
- 面試太套路,多總結,面經很有用,問的知識都是很基礎的。
- 期間有時候太著急完成回答,沒有認真想清楚,一定想清楚再回答。
百度軟體開發實習生c++方向面經(一面)