實習面試基本情況
先說一下樓主面試的情況,參與面試的公司:CVTE、搜狐、東方財富、美團、騰訊、位元組跳動、阿里巴巴
CVTE:筆試-技術面1-技術面2-hr面-offer(第一次面試,蠻順利的)
阿里巴巴提前批:技術面1-掛(當時沒復習,問啥啥不會,其實阿里面的真不難)
東方財富:技術面1-HR面-掛(HR面把我掛了,看不懂)
美團:技術面1-掛(覺得體驗最差的一次面試,看我面經就知道)
位元組跳動:技術面1-技術面2-技術面3-hr面-offer(位元組3面面試官拖了我快兩星期才面,當時心態很差,同學都拿了大廠offer)
百度:技術面1-技術面2-技術面3(一個下午面完的,但是4.2上午出去接了水,百度打過來的2個電話沒接到,然后就沒了)
騰訊:技術面1-技術面2-技術面3-hr面(剛面完,不知道發不發offer)
后面其他公司筆試面試邀請都拒了,
學習路線及推薦學習時間
一、C++基礎(3個月)
1、面向物件的三大特性:封裝、繼承、多型
2、類的訪問權限:private、protected、public
3、類的建構式、解構式、賦值函式、拷貝函式
4、移動建構式與拷貝建構式對比
5、深拷貝與淺拷貝的區別
6、空類有哪些函式?空類的大小?
7、記憶體磁區:全域區、堆區、堆疊區、常量區、代碼區
8、C++與C的區別
9、struct與class的區別
10、struct記憶體對齊
11、new/delete與malloc/free的區別
12、記憶體泄露的情況
13、sizeof與strlen對比
14、指標與參考的區別
15、野指標產生與避免
16、多型:動態多型、靜態多型
17、虛函式實作動態多型的原理、虛函式與純虛函式的區別
18、繼承時,父類的解構式是否為虛函式?建構式能不能為虛函式?為什么?
19、靜態多型:重寫、多載、模板
20、static關鍵字:修飾區域變數、全域變數、類中成員變數、類中成員函式
21、const關鍵字:修飾變數、指標、類物件、類中成員函式
22、extern關鍵字:修飾全域變數
23、volatile關鍵字:避免編譯器指令優化
24、四種型別轉換:static_cast、dynamic_cast、const_cast、reinterpret_cast
25、右值參考
26、std::move函式
27、四種智能指標及底層實作:auto_ptr、unique_ptr、shared_ptr、weak_ptr
28、shared_ptr中的回圈參考怎么解決?(weak_ptr)
29、vector與list比較
30、vector迭代器失效的情況
31、map與unordered_map對比
32、set與unordered_set對比
33、STL容器空間配置器
參考書籍:《C++ Primer》(第5版)、《STL原始碼剖析》、《深度探索C++物件模型》
二、計算機網路(1個月)
1、OSI7層網路模型:應用層、表示層、會話層、運輸層、網路層、鏈路層、物理層
2、TCP/IP四層網路模型:應用層、運輸層、網際層、介面層
綜合OSI與TCP/IP模型,學習五層網路模型:
從上向下架構:應用層、運輸層、網路層、鏈路層、物理層
鏈路層:
3、MTU
4、MAC地址
網路層:
5、地址決議協議
6、為啥有IP地址還需要MAC地址?同理,為啥有了MAC地址還需要IP地址?
7、網路層轉發資料報的流程
8、子網劃分、子網掩碼
9、網路控制報文協議ICMP
10、ICMP應用舉例:PING、traceroute
運輸層:
11、TCP與UDP的區別及應用場景
12、TCP首部報文格式(SYN、ACK、FIN、RST必須知道)
13、TCP滑動視窗原理
14、TCP超時重傳時間選擇
15、TCP流程控制
16、TCP擁塞控制(一定要弄清楚與流量控制的區別)
17、TCP三次握手及狀態變化,為啥不是兩次握手?
18、TCP四次揮手及狀態變化,為啥不是三次揮手?
19、TCP連接釋放中TIME_WAIT狀態的作用
20、SYN泛洪攻擊,如何解決?
21、TCP粘包
22、TCP心跳包
23、路由器與交換機的區別
24、UDP如何實作可靠傳輸
應用層:
25、DNS域名系統,采用TCP還是UDP協議?為什么?
26、FTP協議(了解)
27、HTTP請求報文與回應報文首部結構
28、HTTP1.0、HTTP1.1、HTTP2.0對比
29、HTTP與HTTPS對比
30、HTTPS加密流程
31、方法:GET、HEAD、POST、PUT、DELETE
32、狀態碼:1**、2**、3**、4**、5**
33、cookie與session區別
34、輸入一個URL到顯示頁面的流程(越詳細越好,搞明白這個,網路這塊就差不多了)
參考書籍:《計算機網路》(第5版)、《TCP/IP詳解卷1:協議》、《圖解HTTP》
三、作業系統(1個月)
1、行程與執行緒區別
2、執行緒同步的方式:互斥鎖、自旋鎖、讀寫鎖、條件變數
3、互斥鎖與自旋鎖的底層區別
4、孤兒行程與僵尸行程
5、死鎖及避免
6、多執行緒與多行程比較
7、行程間通信:PIPE、FIFO、訊息佇列、信號量、共享記憶體、socket
8、管道與訊息佇列對比
9、fork行程的底層:讀時共享,寫時復制
10、執行緒背景關系切換的流程
11、行程背景關系切換的流程
12、行程的調度演算法
13、阻塞IO與非阻塞IO
14、同步與異步的概念
15、靜態鏈接與動態鏈接的程序
16、虛擬記憶體概念(非常重要)
17、MMU地址翻譯的具體流程
18、缺頁處理程序
19、缺頁置換演算法:最久未使用演算法、先進先出演算法、最佳置換演算法
參考書籍:《Unix環境高級編程》、《Linux多執行緒服務器端編程》
ps:作業系統的內容看起來不是很多,實際上每個問題答案的底層原理要弄懂還是很考驗基本功的,比如:互斥鎖與自旋鎖的區別,實際上涉及到阻塞時執行緒的狀態是不一樣的,互斥鎖阻塞的執行緒是掛起的,此時系統會優先執行其它可執行的執行緒,就會將阻塞的執行緒切換到可執行執行緒,而當臨界區執行的時間非常短時,此時執行緒切換頻繁、開銷較大,此時就會采用自旋鎖的方式,讓阻塞的執行緒處于忙等狀態,
四、網路編程(1個月)
1、IO多路復用:select、poll、epoll的區別(非常重要,幾乎必問,回答得越底層越好,要會使用)
2、手撕一個最簡單的server端服務器(socket、bind、listen、accept這四個API一定要非常熟練)
3、執行緒池
4、基于事件驅動的reactor模式
5、邊沿觸發與水平觸發的區別
6、非阻塞IO與阻塞IO區別
參考書籍:《Unix網路編程》
ps:網路編程掌握以上幾點就夠了,要搞明白還是要花很久時間的,
五、資料結構與演算法及刷題(2個月)
1、陣列
2、鏈表
3、堆疊
4、佇列
5、堆
6、二叉樹:二叉搜索樹、平衡樹、紅黑樹
7、B樹、B+樹
8、哈希表及哈希沖突
9、排序演算法:冒泡排序、簡單選擇排序、插入排序、希爾排序、歸并排序、堆排序、快速排序
(要求能夠面試時手寫出堆排序和快速排序)
10、二分法:旋轉陣列找target
11、回溯法:全排列、復原IP地址
12、動態規劃(掌味訓本的動態規劃的幾個題其實就夠了,如:斐波那契數列、接雨水、股票的最佳買入時機)
參考書籍:《大話資料結構》
ps:建議刷題與資料結構演算法同時進行,這樣理解得更深入,刷題網站leetcode,刷完《劍指offer》其實就能解決大部分面試手撕了,
五、mySQL資料庫(7天~15天)
1、資料存盤引擎:InnoDB、myISAM、Memory
2、資料庫索引型別及原理:B+樹索引、哈希表索引
3、鎖:悲觀鎖、樂觀鎖
4、事務:事務的四大特性(ACID)、事務并發的三大問題、事務隔離級別及實作原理
5、多版本并發控制實作機制(MCVV)原理
參考書籍:《高性能MySQL》
ps:這里也可以參考本人寫的博客:mysql知識點總結,
六、專案(2個月)
如果時間夠的話就可以寫一個專案,當然大部分人寫的專案都是一個爛大街的專案,也就是“web高性能服務器”,其實就是根據陳碩大神寫的《Linux高性能服務器編程:使用muduo C++網路庫》進行改編,當然啦,讀懂這本書還是很耗時的,學習其中的思想也會受益匪淺的,
總結
按照上面推薦的內容來學習的話,要學習得深入一點的話1年的時間肯定需要的,甚至2年也不足為其,當然對于非科班的學生來說,大部分都沒有充足的時間的,這時候建議盡量把C++基礎、計算機網路、作業系統、網路編程、資料結構與演算法這五個部分的內容學得很扎實,大概6個月的時間,
然后說一下我本人的學習情況:
2020年3~8月:疫情在家大概3月份開始準備學習C++,因為在家效率極低,玩三天學一天,到7、8月份也只是會用C++,然后寫了個MFC的小專案練了練手,
2020年9月:前半個月學習計算機網路,后半個月學習深入理解計算機系統(當然第一遍只看懂個大概)
2020年10月-12月:寫多執行緒服務器專案(即改編muduo),這個程序中伴隨學習網路編程、作業系統、C++各種知識(之前C++只學了皮毛)
2021年1月-2月:學習資料結構與演算法并刷題,刷了不到200題,(其中寒假在家玩了半個月)
2021年3月:開啟海投模式,先投了一批小公司,基本都簡歷掛,總算有幾個小廠給了面試機會,邊面試邊復習,3月中旬開始投大廠,除了美團一面掛,位元組、騰訊、百度面試都很順利,沒掛過,清明之前拿到了位元組的口頭offer,
2021年4月:位元組的正式offer郵件,
(說實話我的學習效率不是很高,因為我喜歡睡懶覺,)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/275475.html
標籤:其他
上一篇:行程間通信(管道與共享記憶體)
下一篇:湖南大學計科專業分流個人建議
