百度2017實習生軟件開發(cpp方向)前端
首先說一下崗位。分爲軟件開發,開發測試,前端,機器學習數據挖掘,移動開發,據我觀察,報的人數來看,軟件開發最多,移動開發和開發測試較少。百度前臺還準備了吃的喝的,真的是白吃白喝,可是哪裏有心情,第一次仍是有些緊張。面試地點應該是百度的一餐廳吧,進去後我就驚呆了,沒見過大場面啊,人真多。裏邊全是一對一的,每一個面試官都標配mac,真心羨慕。linux
上來先自我介紹,面試官大概先看了一眼簡歷,瞭解了我是非計算機專業的後就問我擅長哪一個方面,而後就開幹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(剛看了就忘了)
- 宿主目錄(直接懵逼),根目錄下,怎麼查找一個文件
- 瞭解設計模式麼,我說就知道一個模式(觀察者模式),沒敢說單例模式,怕他讓寫單例模式的代碼,這個單例模式還不是很熟悉。讓我畫出觀察者模式的示意圖,我說了個依賴關係,其實也是本身沒理解到位,他就揪着 依賴 不放了,跟我使勁講清楚了,還畫圖,我只能連連點頭。
- 應該還有沒想起來的。待更新、、、、
- 補充幾個常考的算法題(寫代碼):二分查找及其變種,循環數組查找、快排變種、歸併排序、後綴表達式、hashmap、LRU
教訓總結:設計模式
- 基礎知識掌握的不夠細緻,關鍵細節搞不清楚。
- 操做系統和linux,設計模式不會是硬傷
- 簡歷寫的有問題
- 沒有說服力的項目支撐
- 編程細節問題。
- 面試太套路,多總結,面經頗有用,問的知識都是很基礎的。
- 期間有時候太着急完成回答,沒有認真想清楚,必定想清楚再回答。