C++面試題-收集自<程序喵大人>

C語言

  • const的做用有哪些,談一談你對const的理解?
  • 描述char、const char、char const、const char const的區別?
  • 指針常量和常量指針有什麼區別?
  • static的做用是什麼,什麼狀況下用到static?
  • 全局變量與局部變量的區別?
  • 宏定義的做用是什麼?
  • 內存對齊的概念?爲何會有內存對齊?
  • inline 內聯函數的特色有哪些?它的優缺點是什麼?
  • 如何用C 實現 C++ 的面向對象特性(封裝、繼承、多態)
  • memcpy怎麼實現讓它效率更高?
  • typedef和define有什麼區別?
  • extern有什麼做用,extern C有什麼做用?
  • 如何避免野指針?
  • 如何計算結構體長度?
  • sizeof和strlen有什麼區別?
  • 知道條件變量嗎?條件變量爲何要和鎖配合使用?

C++基礎

C語言和C++有什麼區別?
struct和class有什麼區別?
extern "C"的做用?
函數重載和覆蓋有什麼區別?
談一談你對多態的理解,運行時多態的實現原理是什麼?
對虛函數機制的理解,單繼承、多繼承、虛繼承條件下虛函數表的結構
若是虛函數是有效的,那爲何不把全部函數設爲虛函數?
構造函數能夠是虛函數嗎?析構函數能夠是虛函數嗎?
面試系列之C++的對象佈局【建議收藏】
什麼場景須要用到純虛函數?純虛函數的做用是什麼?
瞭解RAII嗎?介紹一下?
RAII妙用之計算函數耗時
RAII妙用之ScopeExit
類的大小怎麼計算?
volatile關鍵字的做用?何時須要使用volatile關鍵字
如何實現一個線程池?C++線程池的實現之格式修訂版
瞭解各類強制類型轉換的原理及使用?
指針和引用有什麼區別?什麼狀況下用指針,什麼狀況下用引用?
通常什麼狀況下會出現內存泄漏?怎麼用C++在編碼層面儘可能避免內存泄漏。
unique_ptr如何轉換全部權?
談一談你對面向對象的理解
什麼場景下使用繼承方式,什麼場景下使用組合?c++

new和malloc有什麼區別?
malloc的內存能夠用delete釋放嗎?面試

malloc出來20字節內存,爲何free不須要傳入20呢,不會產生內存泄漏嗎?設計模式

new[]和delete[]必定要配對使用嗎?new[]和delete[]爲什麼要配對使用?數組

  1. C++11新特性你都瞭解多少?

瞭解auto和decltype嗎?一文吃透C++11中auto和decltype知識點安全

談一談你對左值和右值的瞭解,瞭解左值引用和右值引用嗎?數據結構

瞭解移動語義和完美轉發嗎?左值引用、右值引用、移動語義、完美轉發,你知道的不知道的都在這裏函數

瞭解列表初始化嗎?學會C++11列表初始化源碼分析

平時會用到function、bind、lambda嗎,都什麼場景下會用到?搞定c++11新特性std::function和lambda表達式佈局

對C++11的mutex和RAII lock有過了解嗎?c++11新特性之線程相關全部知識點性能

對C++11的智能指針瞭解多少,能夠本身實現一個智能指針嗎?c++11新特性之智能指針 源碼分析shared_ptr實現之修訂版

enum 和 enum class有什麼區別?

  1. STL
    C++直接使用數組好仍是使用std::array好?std::array是怎麼實現的?

std::vector最大的特色是什麼?它的內部是怎麼實現的?resize和reserve的區別是什麼?clear是怎麼實現的?

deque的底層數據結構是什麼?它的內部是怎麼實現的?

map和unordered_map有什麼區別?分別在什麼場景下使用?

list的使用場景?std::find能夠傳入list對應的迭代器嗎?

string的經常使用函數

設計模式

分別寫出餓漢和懶漢線程安全的單例模式
說出觀察者模式類關係和優勢
說出代理模式類關係和優勢
說出工廠模式概念和優勢
說出構造者模式概念
說出適配器模式概念

操做系統

進程和線程的區別?深度好文|面試官:進程和線程,我只問這19個問題
操做系統是怎麼進行進程管理的?
操做系統是如何作到進程阻塞的?
進程之間的通訊方式有哪些?
什麼是上下文切換,操做系統是怎麼作的上下文切換?
線程是如何實現的?
線程之間私有和共享的資源有哪些?
通常應用程序內存空間的堆和棧的區別是什麼?
進程虛擬空間是怎麼佈局的?10張圖22段代碼,萬字長文帶你搞懂虛擬內存模型和malloc內部原理
虛擬內存是如何映射到物理內存的?瞭解分頁內存管理嗎?操做系統內存管理,你能回答這8個問題嗎?
產生死鎖的必要條件有哪些?如何避免死鎖?
什麼是大端字節,什麼是小端字節?如何轉換字節序?
信號和信號量的區別是什麼?
鎖的性能開銷,鎖的實現原理?
瞭解CPU的Cache嗎?如何寫一個高效的多維矩陣乘法?如何利用CPU Cache寫出高性能代碼,看這些圖就夠了!

編譯原理

gcc hello.c 這行命令具體的執行過程,內部究竟作了什麼?gcc a.c 究竟經歷了什麼?程序必定會從main函數開始運行嗎?如何肯定某個函數有被編譯輸出?動態連接庫和靜態連接庫的區別是什麼?Linux 爲何要動態連接?與靜態連接的區別是什麼?

相關文章
相關標籤/搜索