騰訊C++第一輪面試題目:
不會做彆着急 ,文末有答案
1、自我介紹(自由發揮)
2、301和302的區別?
3、紅黑樹是什麼樣的數據結構?紅黑樹和B數的區別?
4、堆和棧的區別?
5、談一下對樂觀鎖和悲觀鎖的認識
6、結構體struct和聯合體union的區別
7、三次握手的具體實現,time_wait原理?
8、C和C++的特點與區別
9、計算機網絡中不同層有用到哪些協議?
如果這上面這些問題你只會一半,你第一輪就要被淘汰,接下來你就要繼續死磕C++啦!
騰訊T3C++開發工程師面試總結
c/c++ 面試題庫 v1.0
- 基礎部分
1.1. 語言
一、 C 和 C++的特點與區別?
二、 闡述 C++的多態
三、 闡釋 c++虛函數的實現
四、 C 和 C++內存分配問題
- 高級部分
2.1. 網絡
五、 畫出三次握手和四次揮手流程圖
六、 請闡釋 https 建立連接過程
七、 畫出 OSI 和 TCP/IP 協議棧的對應關係
八、 請闡釋 ARQ 協議的原理和過程
九、 請闡釋滑動窗口協議原理和過程
操作系統.
十、 進程通信方式有哪些?哪種效率最高?
十一、 線程間的通信方式
十二、 請分別闡釋進程和線程的概念,並分析異同?
數據庫
十三、 MySQL 中 myisam 與 innodb 的區別
十四、 innodb 引擎的 4 大特性
十五、 MyISAM 和 InnoDB selectcount(*)哪個更快,爲什麼
十六、 Redis 支持的數據類型?
十七、 什麼是 Redis 持久化?Redis 有哪幾種持久化方式?優缺點是什麼?
十八、 redis 通訊協議(RESP ),能解釋下什麼是 RESP?有什麼特點?…
十九、 Redis 有哪些架構模式?講講各自的特點
數據結構
二十、 線性表
二十一、 二叉樹 .
二十二、 紅黑樹
二十三、 平衡樹
二十四、 Radix 樹
二十五、 八叉樹
二十六、 梅克爾樹
算法
二十七、 排序算法
選擇/冒泡/快速/堆排等
二十八、 一致性哈希算法
二十九、 paxos 算法
三十、 raft 算法
答案部分
- 基礎部分
1.1.語言
一、 C 和 C++的特點與區別?
參考答案:
答:(1)C 語言特點:
-
作爲一種面向過程的結構化語言,易於調試和維護;
-
表現能力和處理能力極強,可以直接訪問內存的物理地址;
-
C 語言實現了對硬件的編程操作,也適合於應用軟件的開發;
-
C 語言還具有效率高,可移植性強等特點。
(2)C++語言特點:
- 在 C 語言的基礎上進行擴充和完善,使 C++兼容了 C 語言的面向過程特點,又成爲了
一種面向對象的程序設計語言;
-
可以使用抽象數據類型進行基於對象的編程;
-
可以使用多繼承、多態進行面向對象的編程;
-
可以擔負起以模版爲特徵的泛型化編程。
二、 闡述 C++的多態
參考答案:
編譯時多態:主要指泛型編程
運行時多態:
C++的多態性用一句話概括:在基類的函數前加上 virtual 關鍵字,在派生類中重寫該函數,
運行時將會根據對象的實際類型來調用相應的函數。如果對象類型是派生類,就調用派生
類的函數;如果對象類型是基類,就調用基類的函數。
-
用 virtual 關鍵字申明的函數叫做虛函數,虛函數肯定是類的成員函數;
-
存在虛函數的類都有一個一維的虛函數表叫做虛表,類的對象有一個指向虛表開始的
虛指針。虛表是和類對應的,虛表指針是和對象對應的;
-
多態性是一個接口多種實現,是面向對象的核心,分爲類的多態性和函數的多態性。;
-
多態用虛函數來實現,結合動態綁定.;
-
純虛函數是虛函數再加上 = 0;
-
抽象類是指包括至少一個純虛函數的類;
純虛函數:virtual void fun()=0;即抽象類,必須在子類實現這個函數,即先有名稱,沒
有內容,在派生類實現內容。
三、 闡釋 c++虛函數的實現
參考答案:
簡單地說,每一個含有虛函數(無論是其本身的,還是繼承而來的)的類都至少有一個與
之對應的虛函數表,其中存放着該類所有的虛函數對應的函數指針。
例:
其中:
B 的虛函數表中存放着 B::foo 和 B::bar 兩個函數指針。
D 的虛函數表中存放的既有繼承自 B 的虛函數 B::foo,又有重寫(override)了基類虛函
數 B::bar 的 D::bar,還有新增的虛函數 D::quz。
虛函數表構造過程:
從編譯器的角度來說,B 的虛函數表很好構造,D 的虛函數表構造過程相對複雜。下面給出
了構造 D 的虛函數表的一種方式(僅供參考):
虛函數調用過程
以下面的程序爲例:
由於答案部分太多了,就不一一表現出來了,大家如果想要獲取此份騰訊T2.3級面經的PDF答案,可以私信我“面試”即可獲取
已整理到PDF文檔,面試題+答案
資料獲取方式:私信我資料免費獲取