1. 程式人生 > >C++開發 面經 總結

C++開發 面經 總結

秋招差不多結束了,總結一下自己在西安秋招的辛酸經歷。

面經主要是和C++開發相關的,有總結的不好的地方還請大佬輕拍。

問題主要分為以下幾個方面:

【C++基礎】C++的記憶體分配方式,程式碼段、資料段、堆疊段。static、virtual、volatile等關鍵字的一些用法。C++多型。建構函式、拷貝建構函式、解構函式等。new、malloc區別(這裡有一個面試官給提醒的一個,在C++的類中,new建立的物件是會呼叫建構函式的...一直沒有想起來有這麼一個區別。相對的,delete的物件會呼叫解構函式)。C++記憶體洩漏(發生記憶體洩漏的方式以及處理方法)。

問題中的一些小知識點:static在區域性變數、全域性變數、類成員變數、類成員函式等中的應用。virtual在類成員函式、解構函式等中的應用,解構函式有無virtual關鍵字修飾在繼承時,會出現什麼情況,主要是子類的物件析構時,若父類的解構函式沒有virtual 關鍵字修飾的話,就不會呼叫父類的解構函式,造成記憶體釋放不乾淨,存在記憶體洩漏的風險。volatile關鍵字主要應用在嵌入式程式的開發中。new和malloc的區別還是比較多的,不詳述了。C++記憶體洩漏是在百度二面的時候問到的,答的很差,只知道用工具軟體來處理記憶體洩漏,並不知道有哪些軟體。

【計算機基礎】對稱加密和非對稱加密。http請求中,get和post區別。http請求中,伺服器識別不同客戶端的方式(通過cookie)。

【資料結構】資料結構是面試中問到最多的,也是最能體現一個人的程式碼能力的,這一部分被問到的問題比較多,我這裡大概總結一下。陣列、連結串列、棧、佇列、二叉樹、二叉查詢樹等,STL裡面的queue、stack、vector、map等,dfs、wfs,dp,氣泡排序、選擇排序、歸併排序、快速排序、推排序、希爾排序等排序方式。題目如:判斷連結串列是否有環。判斷兩個連結串列是否有重疊。用佇列模擬棧。用棧模擬佇列。二叉樹的前中後序遍歷、層次遍歷(重在具體問題具體應用)。queue、stack、vector等實現的函式、各自區別,尤其vector的reverse函式和capacity函式。深搜、廣搜和動態規劃是屬於圖裡面的,是屬於難度比較大的。深搜類似二叉樹裡面的先序遍歷,廣搜類似層次遍歷。

【實現函式庫中的函式】實現函式庫中的一些函式,如:strcpy、memcpy、memmove等。

【網路】tcp協議的建立、斷開詳細過程。OSI網路7層協議。tcp、udp區別。

【資料庫】我的資料庫基本是屬於不會的,面試官問我,我都是說不會資料庫(⊙o⊙)…,有被問到過資料庫的簡單增刪改查操作。

【作業系統】程序和執行緒的區別,程序間(執行緒間)通訊方式、排程方式、狀態轉移等。記憶體管理方式(首次適應、最差適應、段式、頁式、段頁式等)。Linux系統的掌握情況,這個就看過私房菜,現在都忘的差不多 了,就記得一些最簡單的命令了(如一些常用的命令:cat、tac、top、chmod、ls、mv、cp、rm等)。

【一些面試心得】來看問題的,看到這兒就可以結束了,後面是我面試過程中對自己弱渣的一些吐槽。秋招季開始之前我並沒有做準備,也沒有像大佬一樣在LeetCode上面刷題,我大概就是踩一顆雷補一點知識吧。第一次面試機會是華為的,華為的一面就不想說了,你能想象得到的最渣。然後第一次二面是遇到百度...,說到百度,真是心酸啊→_→,現在百度再給我一次面試的機會,感覺自己肯定可以把握住的!由於華為一面弱渣的表現,自己反思了一些問題,在百度一面的時候表現就比較正常了。奈何不知道二面是啥樣的,也就涼在了百度二面,二面中問到的很多問題還是比較簡單的,但是我當時都不會...在這之後,我就又查漏補缺,把C++的基礎知識基本上都撿起來了。在資料結構方面,我也把stl和二叉樹的遍歷等加深了一下。網路方面,又重新把tcp的知識撿起來了。資料庫的話,因為我一直對資料庫的瞭解比較少,屬於不會的那種,也就破罐子破摔了。作業系統方面主要是把程序、執行緒一塊鞏固了一下。感覺自己還是距離大佬的水平差距很大。經歷了面試的低谷之後,也漸漸的收到了offer,也有公司要我了,我也不會失業了,太激動了。個人沒有開發的專案經驗,資料庫還基本不會(⊙o⊙)…,這大概也是面試中被刷的一個很重要原因吧。能找到工作大概是C++的基礎和資料結構掌握的還算可以。

面試中問題的話大概就是這些,具體答案有時間我再補充。