C++常見的面試題目整理

程式設計師白二呀發表於2020-11-12

本文列出C++面試中經常遇到的一些問題,都是一些常見的面試考點,如果後續遇到其他常見面試問題還會再次更新。希望對近期參加面試的同學有一些幫助。先後順序與問題的重要性無關,檢視的時候,最好是全面瞭解一下。
C++語言基礎、語言特性、資料結構、作業系統知識甚至是一些核心相關的知識、網路相關知識、資料庫操作、多執行緒多程式資料同步互斥、記憶體相關知識等等。
1、關鍵字及基本問題
const的作用,const怎麼使用,有哪些應用場景?
static的作用,static類成員變數怎麼初始化?static成員可以呼叫哪些成員函式,非static成員函式可以呼叫哪些成員函式?
static成員函式怎麼使用,與普通成員函式有什麼區別?
指標和引用的區別?
new和malloc的區別?
程式的記憶體分佈?堆疊的生長方向?為什麼是相反的生長方向?
瞭解哪些建立堆的函式?

2、類相關的題目
為什麼要進行封裝?
什麼是多型,多型是怎麼實現的?多型的應用場景?
虛擬函式表是屬於類的還是屬於成員的?虛指標呢?
虛擬函式,純虛擬函式?什麼時候使用虛擬函式,什麼時候使用純虛擬函式?有了虛擬函式為什麼還要用純虛擬函式,可以用虛擬函式替代純虛擬函式嗎?
類的建構函式可以定義為虛擬函式嗎?解構函式呢?
基類的解構函式為什麼通常需要定義為虛擬函式?如果不定義為虛擬函式會有什麼問題?什麼場景下會產生這種問題?
定義拷貝建構函式的時候引數有什麼要求?為什麼要將引數定義為引用,如果不定義為引用會產生什麼問題?
什麼是深拷貝?怎麼實現深拷貝?
建構函式的成員初始化列表的使用場景?什麼時候必須使用初始化列表?

3、C++11+的新特性
你瞭解哪些C++11新的特性?
static_cast 與dynamic_cast有什麼區別?分別是基於什麼原理實現?為什麼要使用他們而不是使用之前標準裡面的強制型別轉換?
nullptr的作用?為什麼要引入nullptr而不使用NULL?
你瞭解哪些智慧指標?
智慧指標的內部是怎麼實現的?
左值右值,左值引用與右值引用?

4、STL及資料結構(注意效率與複雜度)
vector和list的內部實現是什麼?分別適用於什麼應用場景?
vector隨機訪問的時間複雜度是多少?怎麼優化vector的查詢速度?
vector擴容的過程?
怎麼徹底清空vector?
vector怎麼查詢元素?如果是一個結構怎麼查詢一個vector結構中的指定元素?(find find_if)
map查詢的複雜度?
map的底層是怎麼實現的?map與hashmap的區別?什麼時候應該使用map什麼時候應該使用hashmap?
常見排序演算法及其時間和空間複雜度?桶排序有了解的嗎?
給定一個場景,選擇一種合適的容器?
怎麼定義一個環形佇列?怎麼判斷環形佇列的空與滿?

C/C++的學習裙【105+302+9869】,無論你是小白還是進階者,是想轉行還是想入行都可以來了解一起

進步一起學習!裙內有開發工具,很多幹貨和技術資料分享!

5、計算機網路
三次握手與四次揮手的過程及狀態的轉變?
為什麼是三次握手而不是兩次握手?
為什麼是需要四次揮手?
soket通訊實現的基本過程?
使用原生的socket不使用網路庫的時候,怎麼防止粘包,需要怎麼定義相關請求的結構?
介面的冪等性?
http協議是長連線還是短連結,怎麼改為長連結?
http請求頭包含哪些內容?一個http請求包含哪些內容?

6、多執行緒與多程式
windows下怎麼建立執行緒?使用哪些執行緒函式?為什麼建議使用_beginthreadex與endthreadex而不是createthread與endthread?
執行緒間同步互斥的方法有哪些?
程式間通訊程式間同步的方法有哪些?
互斥、事件、臨界區、訊號量之間區別?(臨界區控制同步的時候不需要進入核心態,其他的都需要進入核心態)
說一說臨界區的使用?CRITICAL_SECTION InitializeCriticalSection EnterCriticalSection LeaveCriticalSection
同一執行緒可以多次進入臨界區嗎?
什麼是死鎖,什麼情況下會產生死鎖,怎麼避免產生死鎖,如果產生了死鎖該怎麼除錯?
多執行緒情況下,怎麼只讓某個執行緒呼叫指定的函式?

7、資料庫
mysql資料庫中的左連線 右連結 內連線的區別?
關係型資料庫與非關係型資料庫的區別?
儲存過程?
瞭解redis嗎?

8、設計模式
你瞭解哪些設計模式?
怎麼實現一個懶漢式的執行緒安全的單例模式?

9、git使用的問題
git pull 與git rebase

10、windows相關問題
說說windows的訊息機制?有哪些相關的函式?
MFC窗體的生命週期,涉及到哪些函式?
模態對話方塊與非模態對話方塊的區別?
怎麼產生一個dump檔案?dump分析工具你知道哪些?windbg
windows下你瞭解哪些定時器類?自己怎麼實現一個定時器類?
什麼時候會產生記憶體洩漏?怎麼除錯記憶體洩漏?用到哪些記憶體洩漏的除錯方式?
說一說windwos的訊息對映機制?
一個dll大入口函式是什麼?mfc程式的入口函式是什麼?
執行緒切換的時候作業系統做了哪些事情?
sendmessage與postmessage的區別是什麼?什麼是同步訊息什麼是非同步訊息?

11、程式碼實現(手寫程式碼)
strcpy、memcpy、單例模式 、二叉樹的前序中序後序遍歷、二叉樹的層序遍歷遍歷、不完全二叉樹的序列化與反序列化

相關文章