C++后台開發面試考點匯總


  以下不作為C++學習路徑,只是匯總的校招C++后台開發面試考點(因為還有筆試考點,后面結合在一起給大家學習路徑),后續會為大家更新10w+字數的C++校招面試題庫,還有其他崗位的相關題庫和資料,想要什么崗位的可以留言哦~

本篇根據各個公司的面試問的問題的大數據進行總結,后面還會更新面試中考察所占比例,當然,本文只包括技術面,不包括hr面或者一些其他談人生理想的

附題目:

一、基礎知識

1、基本語言

1、說一下**static關鍵字的作用**

2、說一下C++和C的區別

3、說一下C++中static關鍵字的作用

4、請說一下static的作用

5、說一說c++中四種cast轉換

6. 請說一下C/C++ 中指針和引用的區別?

7、給定三角形ABC和一點P(x,y,z),判斷點P是否在ABC內,給出思路並手寫代碼

8、怎么判斷一個數是二的倍數,怎么求一個數中有幾個1 說一下你的思路並手寫代碼

9、請你說一下你理解的c++中的smart pointer四個智能指針:

10、請回答一下數組和指針的區別

11、請你回答一下野指針是什么?

12、請你介紹一下C++中的智能指針

13、請你回答一下**智能指針有沒有內存泄露的情況

14、請你來說一下**智能指針的內存泄漏如何解決

15、請你理解的c++中的**引用和指針

16、請你來說一下C++中的**智能指針

17、請你回答一下為什么析構函數必須是虛函數?為什么C++默認的析構函數不是虛函數

18請你來說一下函數指針

19請你來說一下**fork函數

20請你來說一下C++中析構函數的作用**

21、請你來說一下靜態函數和虛函數的區別

22、請你來說一說重載和覆蓋

23、請你來說一說static關鍵字

24.、請你說一說strcpy和strlen

25、請你說一說你理解的虛函數和多態

26、請你來回答一下++i和i++的區別

27、請你來說一說++i和i++的實現

28、請你來寫個函數在main函數執行前先運行

29、有段代碼寫成了下邊這樣,如果在只修改一個字符的前提下,使代碼輸出20個hello?

30、請你來說一下智能指針shared_ptr的實現

31、以下四行代碼的區別是什么?

32、請你來說一下C++里是怎么定義常量的?常量存放在內存的哪個位置?

33、請你來回答一下const修飾成員函數的目的是什么?

34、如果同時定義了兩個函數,一個帶const,一個不帶,會有問題嗎?

35、請你來說一說隱式類型轉換

36、說說你了解的類型轉換

37、請你來說一說C++函數棧空間的最大值

38、請你來說一說extern“C”

39、請你回答一下new/delete與malloc/free的區別是什么

40、請你說說你了解的RTTI

41、請你說說虛函數表具體是怎樣實現運行時多態的?

42、請你說說C語言是怎么進行函數調用的?

43、請你說說C語言參數壓棧順序?

44、請你說說C++如何處理返回值?

45、請你回答一下C++中拷貝賦值函數的形參能否進行值傳遞?

46、請你回答一下malloc與new區別

47、請你說一說select

48、請你說說fork,wait,exec函數

49、請你回答一下靜態函數和虛函數的區別

50、請你說一說重載和覆蓋

51、請你說一說static關鍵字

52、請你說一說strcpy和strlen

2、容器和算法

1、請你來說一下map和set有什么區別,分別又是怎么實現的

2、請你來介紹一下STL的allocaotr

3、請你來說一說STL迭代器刪除元素

4、請你說一說STL中MAP數據存放形式

5、請你講講STL有什么基本組成

6、請你說說STL中map與unordered_map

7請你說一說vector和list的區別,應用,越詳細越好**

8請你來說一下STL中迭代器的作用,有指針為何還要迭代器**

9、請你說一說epoll原理

10、請你說一說STL迭代器是怎么刪除元素的呢

11、請你說一說STL中MAP數據存放形式

12、n個整數的無序數組,找到每個元素后面比它大的第一個數,要求時間復雜度為O(N)

13、請你回答一下STL里resize和reserve的區別

14請你說一說stl里面set和map怎么實現的

3、類和數據抽象

1.請你來說一下C++**中類成員的訪問權限

2、請你來說一下C++中struct和class的區別

3、請你回答一下C++類內可以定義引用數據成員嗎?

4、面向對象與泛型編程

1、 請你回答一下**什么是右值引用,跟左值 有什么區別?

5、編譯與底層

1、 請你來說一下一個C++源文件從文本到可執行文件經歷的過程

2、 請你來回答一下include頭文件的順序以及雙引號””和尖括號的區別?

3、 請你回答一下malloc的原理另外brk系統調用和mmap系統調用的作用分別是什么?

4、 請你說一說C++的內存管理是怎樣的

5、請你來說一下C++/C的內存分配

6、請你回答一下**如何判斷內存泄漏?

7.請你來說一下什么時候會發生段錯誤

8請你來回答一下什么是memory leak也就是內存泄漏

9請你來回答一下new和malloc的區別

10請你來說一下共享內存相關api 

11、請你來說一下reactor模型組成

12、請**自己設計一下如何采用單線程的方式處理高並發

13、請你說說C++如何處理內存泄漏?

14請你說說select,epoll的區別原理,性能,限制都說

15、請你說一說C++ STL  內存優化

6、C++11

1、請問C++11有哪些新特性

2、請你詳細介紹一下C ++11中的 可變參數模板右值引用lambda這幾個新特性。

二、操作系統

1請你說一下進程與線程的概念,以及為什么要有進程線程,其中有什么區別,他們各自又是怎么同步的

2請你說一說Linux虛擬地址空間

3請你說一說操作系統中的程序的內存結構

4請你說一說操作系統中的缺頁中斷

5請你回答一下fork和vfork的區別

6請問如何修改文件最大句柄數?

7請你說一說並發(concurrency)和並行(parallelism)

8請問MySQL的端口號是多少,如何修改這個端口號

9請你說一說操作系統中的頁表尋址

 

10、請你說一說**有了進程,為什么要有線程

11請問單核機器上寫多線程程序,是否需要考慮加鎖,為什么?

12請問線程需要保存哪些上下文,SP、PC、EAX這些寄存器是干嘛用的

13請你說一說**線程間的同步方式,最好說出具體的系統調用

14請你說一下多線程和多進程的不同

15、請你說一說**進程和線程區別

16、游戲服務器應該為每個用戶開辟一個線程還是一個進程,為什么?

17、請你說一說OS缺頁置換算法

18、請你說一說**進程和線程區別

19請你說一下多進程和多線程的使用場景

20請你說一說死鎖發生的條件以及如何解決死鎖

21請問虛擬內存和物理內存怎么對應

22請你說一說操作系統中的結構體對齊,字節對齊

23請問進程間怎么通信

24、請你說一下虛擬內存置換的方式

25請你說一下多線程,線程同步的幾種方式

26請你講述一下互斥鎖(mutex)機制以及互斥鎖和讀寫鎖的區別

27請回答一下進程和線程的區別

28請你說一說進程狀態轉換圖,動態就緒,靜態就緒,動態阻塞,靜態阻塞

29、A a = new A; a->i = 10;在內核中的內存分配上發生了什么?

30、給你一個類,里面有static,virtual,之類的,來說一說這個類的內存分布

31、請你回答一下軟鏈接和硬鏈接區別

32、請問什么是大端小端以及如何判斷大端小端

33請你回答一下靜態變量什么時候初始化

34請你說一說**用戶態和內核態區別

35、請問如何設計server,使得能夠接收多個客戶端的請求

36、死循環+來連接時新建線程的方法效率有點低,怎么改進?

37、請問怎么喚醒被阻塞的socket線程?

38、請問怎樣確定當前線程是繁忙還是阻塞?

39、空閑的進程和阻塞的進程狀態會不會在喚醒的時候誤判?

40、請問就緒狀態的進程在等待什么?

41、請你說一說多線程的同步,鎖的機制

42、兩個進程訪問臨界區資源,會不會出現都獲得自旋鎖的情況?

43、假設臨界區資源釋放,如何保證只讓一個線程獲得臨界區資源而不是都獲得?

44、windows消息機制知道嗎,請說一說

45、C++的鎖你知道幾種?

46、說一說你用到的鎖

47、請你說一說死鎖產生的必要條件?

48、請你說一說什么是線程和進程,多線程和多進程通信方式

49、請你說一說**內存溢出和內存泄漏

50、進程和線程的區別,你都使用什么線程模型

51、請你來說一說協程

52、系統調用是什么,你用過哪些系統調用
53、請你來手寫一下fork調用示例

54、請你來說一說用戶態到內核態的轉化原理

55、請你說一下源碼到可執行文件的過程

56、請你來說一下微內核與宏內核
57、請你說一下僵屍進程

58、請問GDB調試用過嗎,什么是條件斷點

59、請你來介紹一下5種IO模型

60、請你說一說異步編程的事件循環

61、請你回答一下操作系統為什么要分內核態和用戶態

62、請你回答一下為什么要有page ***,操作系統怎么設計的page ***

63、server端監聽端口,但還沒有客戶端連接進來,此時進程處於什么狀態?

64、請問如何設計server,使得能夠接收多個客戶端的請求

65、死循環+來連接時新建線程的方法效率有點低,怎么改進?

66、就緒狀態的進程在等待什么?

67、請你說一下多線程的同步,鎖的機制

68、兩個進程訪問臨界區資源,會不會出現都獲得自旋鎖的情況?

69、假設臨界區資源釋放,如何保證只讓一個線程獲得臨界區資源而不是都獲得?

70、請問怎么實現線程池

71、Linux下怎么得到一個文件的100到200行

72、請你來說一下awk的使用

73、請你來說一下linux內核中的Timer 定時器機制

三、計算機網絡

1.你的研究方向是無線傳感器網絡,**請問**怎么確保節點傳輸存儲的可靠性

2. 請你說一下**TCP怎么保證可靠性,並且簡述一下TCP建立連接和斷開連接的過程

3請你說一說TCP的模型,狀態轉移

4請回答一下HTTP和HTTPS的區別,以及HTTPS有什么缺點?

5、請你說一說HTTP和HTTPS的不同

6.請你說一說HTTP返回碼

7.請你說一說IP地址作用以及MAC地址作用

8、請介紹一下操作系統中的中斷

9.請回答OSI七層模型和TCP/IP四層模型,每層列舉2個協議

10請你說一說TCP的三次握手和四次揮手的過程及原因

11、搜索baidu,會用到計算機網絡中的什么層?每層是干什么的

12、請你說一說TCP擁塞控制?以及達到什么情況的時候開始減慢增長的速度?

13、請問TCP用了哪些措施保證其可靠性

14、請你說說**TCP/IP數據鏈路層的交互過程

15、請你說說傳遞到IP層怎么知道報文該給哪個應用程序,它怎么區分UDP報文還是TCP報文

16、請問你有沒有基於做過socket的開發?具體網絡層的操作該怎么做?(其實就是網絡編程的基本步驟)

17、請問server端監聽端口,但還沒有客戶端連接進來,此時進程處於什么狀態?

18、請問TCP三次握手是怎樣的?

19、請問tcp握手為什么兩次不可以?為什么不用四次?

22、請你來說一下TCP擁塞控制?

20、TCP和UDP的區別和各自適用的場景

21、請你來說一下TCP三次握手四次揮手的過程,為什么tcp連接握手需要三次, time_wait狀態

22、請你來說一說http協議

23、請你來說一下GET和POST的區別

24、請你來說一下socket編程中服務器端和客戶端主要用到哪些函數

25、請你來說一下**數字證書是什么,里面都包含那些內容

26請你來介紹一下UDP的connect函數

27、請你講述一下TCP三次握手,四次揮手,以及為什么用三次握手?

28、請你說一下阻塞,非阻塞,同步,異步

29、請你講述一下Socket編程的send() recv() accept() socket()函數?

30、請你說一下http協議會話結束標志怎么截出來?

31、請你說一說三次握手

32、請你說一說四次揮手

33、請你說一說TCP/IP數據鏈路層的交互過程

四、數據庫

1、數據庫基礎

1.請你說一下數據庫事務以及四個特性

2.請你說一說數據庫的三大范式**

3請你介紹一下數據庫的ACID特性**

4、請你說一說數據庫索引

5、請你說一說數據庫事務

6、請你說一說數據庫事務隔離

7、請你說一說inner join和left join

8、請你聊一聊**數據庫事物的一致性

9、請你說說**索引是什么多加索引一定會好嗎

10、k-v存儲中,key有哪些要求?

11、介紹數據庫中的WAL技術

2、Mysql


1.請你說一說mysql四種隔離狀態

2.請你介紹一下mysql的MVCC機制

3、請問SQL優化方法有哪些

4、請你說一下MySQL引擎和區別

3、Redis


1.請你回答一下mongodbredis區別

2.請你說一下mysql引擎以及其區別

3請你來說一說Redis的定時機制怎么實現的

4請你來說一說Redis是單線程的,但是為什么這么高效?

5請問Redis的數據類型有哪些,底層怎么實現?

6請問Redis的rehash怎么做的,為什么要漸進rehash,漸進rehash又是怎么實現的?

7請你來說一下Redis和mem***d的區別

8、請問Redis怎么實現的定期刪除功能

9、請你說一說**Redis對應的命令和數據類型...

五、算法與數據結構

1、樹

1.請你來說一說紅黑樹和AVL樹的定義,特點,以及二者區別

2、請你聊一聊哈夫曼編碼

3請你回答一下map底層為什么用紅黑樹實現

4、請你介紹一下B+

5、請你說一說map和unordered_map底層實現

6、請你回答一下map和unordered_map優點和缺點

7、請你回答一下epoll怎么實現的

8、請你說一說C++兩種map

9、請問紅黑樹了解嗎

10、請你說一說紅黑樹的性質還有左右旋轉

11、請你說一說**紅黑樹的原理以及erase以后迭代器的具體分布情況?

12、請你實現二叉樹的層序遍歷並輸出

13、手寫代碼:二叉樹序列化反序列化

2、堆與棧

1請說一說你理解的stack overflow,並舉個簡單例子導致棧溢出

2、請你回答一下棧和堆的區別,以及為什么棧要快

3、手寫代碼:兩個棧實現一個隊列

4請你來說一下堆和棧的區別

5、請你說一說小根堆特點

3、數組

1、請你回答一下**Array&List, 數組和鏈表的區別

2.一個長度為N的整形數組,數組中每個元素的取值范圍是[0,n-1],判斷該數組否有重復的數,請說一下你的思路並手寫代碼

4、排序

1、請你來手寫一下**快排**的代碼

2、請你手寫一下**快排**的代碼

3.請問求第k大的數的方法以及各自的復雜度是怎樣的,另外追問一下,當有相同元素時,還可以使用什么不同的方法求第k大的元素

4請你來介紹一下各種排序算法及時間復雜度

5、請你說一說你知道的**排序算法及其復雜度

6、請問海量數據如何去取最大的k個

 

7請你說一說Top(K)問題

8、請問快排的時間復雜度最差是多少?什么時候時間最差

9、請問穩定排序哪幾種?

10、請你介紹一下快排算法;以及什么是穩定性排序,快排是穩定性的嗎;快排算法最差情況推導公式


5、哈希

1、請你來說一說hash表的實現,包括STL中的哈希桶長度常數。

2請你回答一下hash表如何rehash,以及怎么處理其中保存的資源

3、請你說一下哈希表的桶個數為什么是質數,合數有何不妥?

4、請你說一下解決hash沖突的方法

5、請你說一說哈希沖突的解決方法

6、動態規划

1、請你手寫代碼:最長公共連續子序列

2、手寫代碼:求一個字符串最長回文子串

3、手寫代碼:查找最長回文子串

7、鏈表

1.請你手寫代碼,如何合並兩個有序鏈表

2、手寫代碼:反轉鏈表

3、判斷一個鏈表是否為回文鏈表說出你的思路並手寫代碼

4、請你手寫鏈表反轉

5、什么是單向鏈表,如何判斷兩個單向鏈表是否相交

7、高級算法

1如果讓做自然語言理解(NLU),在處理語言規則的時候大概會用到什么算法

2、請問加密方法都有哪些

3、什么是LRU緩存

4、請你說一說洗牌算法

8、字符串

1、給你一個字符串,找出第一個不重復的字符,如“abbbabcd”,則第一個不重復就是c

六、項目相關

1、請你回答一下git中Merge和rebase區別

七、設計模式

1、請問你用過哪些設計模式,介紹一下單例模式的多線程安全問題

2、請問你了解哪些設計模式?

3、請問如何保證單例模式只有唯一實例?你知道的都有哪些方法?

4請你說一說OOP的設計模式五項原則

5、請你說說**工廠模式的優點?

6、請你說一下觀察者模式

7、請你介紹一下單例模式

8、單例模式中的懶漢加載,如果並發訪問該怎么做?

9、裝飾器模式和單例模式,使用單例模式應該注意什么

八、場景題

1、給你兩個球,100層樓,每個球在一定高度扔下去會碎,怎么用最少的次數給判斷是幾層樓能把求摔碎?

九、分布式與架構

1、分布式緩存和分布式存儲的設計
 
以上統統不重要,點擊右邊看答案https://www.nowcoder.com/tutorial/93/a88b64c6d7b14a59aad2061b9fd15ac2
 
來源很重要,面試題答案以及后續更新請轉到原鏈接
作者:牛妹
鏈接: https://www.nowcoder.com/discuss/164721?type=2
來源:牛客網
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM