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


本文列出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、單例模式 、二叉樹的前序中序后序遍歷、二叉樹的層序遍歷遍歷、不完全二叉樹的序列化與反序列化


免責聲明!

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



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