大家好。
昨天一位讀者分享了自己的 C++ 面試經歷。簡單溝通后,讀者雙非本碩,自嘲校招準備注定就是煉獄模式。50 家公司的 C++ 面經也整理好了。本次就分享下面經。以后分享學習路線和心得。
讀者情況:雙非本碩,本科機械,碩士做的軟件開發課題。
學過C++ 偏基礎,但是面試前連多態都不會寫。研三經歷煉獄校招,從零開始學習,數據結構和算法也是從零開始。
時間:2020 年 10 月- 2021 年 4 月
結果:幾乎面試了所有大廠,收到了 13 份 offer。雖然沒有進大廠,但是拿到音視頻開發 offer,音視頻開發是理想崗位,待遇也比較滿意。
1.六方云(10-21)自我介紹C++ 語法左值引用與右值引用有什么區別,左值引用和右值引用的目的是什么虛函數問了好多什么是多態虛函數和純虛函數構造函數和析構函數能不能是虛函數std::move 是什么計算機網絡TCP/IP 的連接和斷開過程 是什么I/O 多路復用是什么http 接口的函數用過嗎操作系統什么是線程、進程多線程和多進程的優缺點項目Qt信號與槽實現的機制項目用的多線程是怎么實現的怎么實現通信2.萬集集團(10-22)自我介紹項目:有做過嵌入式項目嗎總結:應該是 KPI貪心算法 背包問題 c語言,他想找做嵌入式的多點3.醫科達——電話面(10-23)自我介紹項目多線程網絡編程:連接方式算法:快速排序面向對象三大思想設計模式,列舉一個單例模式怎么處理多線程4.聯影——電話面(10-24)自我介紹項目介紹說說項目的原理面向對象設計模式非智力問題:5.萬興科技(10-24)自我介紹看過哪些 C++ 的書多線程,怎么判斷線程結束 中迭代器失效的情況虛析構函數 中對視頻和音頻的同步方法map 的內部rtmp 協議6.網易實習一面(10-28)(PASS1)引用和指針的區別靜態鏈接庫與動態鏈接庫的區別程序生成的過程計算機圖形學:怎么對圖像進行變換,變換矩陣是什么還有其他簡單的 問題其他忘了,,,,二面(11-2)怎么自己實現 Qt 的信號與槽?多態TCP 和 UDP 的區別計算機圖像學其他忘了,面試官脾氣不是很好,,7.中望軟件(10-31)(PASS2)聊一下項目CAD 軟件怎么使用會不會 QT、MFC、STL介紹中望公司的情況
(終于拿到第一份 offer!)
8.金山 WPS電話一面(11-2)(PASS3)假如定義了一個指針,后面接著一個循環并 ,會造成什么后果?(內存泄漏)其他忘了(沒有問項目)電話二面(11-5)知不知道 Qt5 對 有個支持性問題音視頻切換的多線程怎么處理幀切換的問題大數據處理題:建立一個數據結構,存儲 1 到 10 億的數,要能夠去重和插入(答案:用兩個數組,建立二維表格)找出一個 RGB 文件中出現最多的前十種顏色9.傳音控股電話面(11-7)直接問項目的 怎么繪制視頻,結果回答不好被嫌棄了;死鎖怎么產生的?有沒有遇到過死鎖問題?(多線程不是一般般的重要!)10.網易互娛樂(11-12)先做算法題:找出數組中次數最多的前 k 個數說下 C++ 新特性 auto變量的使用注意事項 的著色器在每個渲染步驟是怎樣的?設計模式、單例模式的線程安全問題11.斗魚直播(11-12)qt 的消息傳遞機制HTTP 網絡協議好多內容怎么實現 map 的(key 是自定義類型)單例模式還有好多問題,幾乎把計算機基礎的難點都問了12.富士康電話面(11-13)(PASS4)
做富士康的工業互聯網。看簡歷,沒問技術基礎。給了 offer,但是只有 7K,其他補貼加起來只有 10K,難怪沒人去
13.卡萊特電話面(11-17)(PASS5)
1.C 和 C++ 的區別2.棧和堆的區別3.雙鏈表和單鏈表的優缺點4.面向對象三大特性:封裝、繼承、多態,繼承的作用是什么5.了解 Qt 和 MFC 嗎6.工作地點7.對薪資有什么要求
14.聯想面試(11-27)C++ 和 java 的區別描述 STL; 和 list 的區別最近的項目——視頻播放器設計 存放數據的注意視頻與音頻同步多線程同步設計模式、工廠模式文件斷點續傳用英語簡單描述自己的項目15.新浪微博(12-1)OOP 三大特性、繼承中三個修飾符的用法C++ 的 關鍵字TCP 連接過程中客戶端與服務端使用什么函數實現連接智能指針, 能夠破壞環型引用的原理(引用計數的原理)用兩個棧實現一個隊列
(禿頭架構師面試,態度很好,叫我不要緊張。我印象深刻的一場面試之一)
16.廣和通電話面(12-1)(PASS6)聊一下項目說下項目解決過程你有沒有請教別人說下最難忘的項目經歷17.匯川技術一面(12-1)(PASS7)項目簡介STL、 與 的區別(QML 從 2.0 版本開始向移動端靠攏)信號與槽機制、信號與槽與函數指針的比較多線程下用信號與槽的優缺點(函數的第五個參數實際上是用在多線程的情況下的) 的 TCP 的客戶端與服務端怎么保證客戶端與服務端在突然斷網的情況下保證另一端知道?(飽和機制、心跳機制、看門狗機制)說說你的項目的亮點auto 關鍵字(不能定義數組)Qt 的事件過濾器(事件的傳遞是由子類往父類上傳的)開放性問題:大量數據無序輸入,怎么有序輸出?(使用最大堆最小堆)(一面的面試官是個態度很好的年輕小哥)匯川技術二面(12-4)(PASS8)介紹項目組成- 濾波器的類型- 怎么確定使用什么濾波算法比賽過程中的團隊合作事情數學建模比賽的收獲上學期間最有成就感的事情Linux 中的互斥鎖和 XX 鎖簡述 STL常用的排序算法以太網了解嗎?網絡編程職業規劃家庭背景18.聲網測試(12-2)介紹音視頻測評崗位的工作內容用的什么協議視頻播放器、直播推流協議文件傳輸、視頻協議相關工作講解下用了音視頻庫的什么模塊19.不知名的公司的音視頻開發崗(12-4)做兩道編程題:深拷貝與淺拷貝區別C++ OOP 三大特性多態的用法項目:視頻播放器用到 哪些庫H264 編解碼原理 視頻解析工具的使用直播工具使用了什么服務器
(地點在武漢,印象最深的一場面試,面試官很友好,給我講了半小時的音視頻崗位的優勢。從此便決定了一定要做音視頻開發)
20.騰訊會議客戶端(12-4)項目——視頻播放器的功能課題中的難點C++ 智能指針C++ 內存管理 系統怎么預防死鎖怎么解決程序 問題對音視頻編碼的了解有幾種 NAL,如果在視頻中存放信息存放在哪個幀怎么設置壓縮碼率?21.恒生電子一面(12-9)(PASS9)C++11 什么新特性好用多線程用隊列處理數據有什么好處?用過什么數據庫?多線程與多進程的區別?你認為你的優缺點是什么?二面(12-10)22.新思科技一面(12-14)() 在 C 和 C++ 的用法 與析構函數Linux 中用什么命令查找文件在項目中使用過多態嗎用英文介紹自己的愛好二面(12-18)項目STL長二進制反轉 析構函數寫一個多態,展示內存泄漏23.浩鯨科技(12-15)操作系統:消息隊列、進程消息 和 的區別多態具體怎么定義指針、引用怎么在多態里面用的24.映客直播一面(12-17)()學過什么課程指針和引用的區別局部 變量與全局變量內存的分類OOP 三大特性Linux 常用命令簡單聊聊直播推流工具邊下邊播用什么協議數據庫的事務進程和線程、進程的通信方式、線程的安全問題TCP 和 UDP 的區別HTTP 的返回碼怎么用兩個棧實現一個隊列怎么獲取二叉樹的高度二面(12-22)除了 C++,學過其他語言嗎MP4 包含了什么協議抖音、直播分別用什么協議TS 流有什么內容怎么傳遞視頻信息怎么解決視頻卡頓問題內存泄漏怎么排查安卓的生命周期設計模式有哪幾種?單例模式有幾種創建方式?Linux 的常用命令用過 shell 嗎怎么通過 shell 獲取 MD5 碼?Linux 獲取字符串的方式?建議:多了解前沿的流媒體格式!25.百富計算機(12-22)()多進程多線程用過嗎?Linux 命令了解嗎? 編譯過嗎?音視頻解碼過程的格式視頻播放器開發的過程 使用的過程頂點著色器與片元著色器的不同VBO、FBO畫面閃爍是什么原因造成26.埃森哲面試(12-24)群面,3 個候選人 1 個面試官公司介紹:世界 500 強 咨詢公司 外企遇到難題以及解決方法在實習、項目中,怎么處理不屬于自己工作范圍內的工作職業方向規劃?技術專家還是項目管理27.孩子王一面(12-29)()C++ 有幾種構造函數STL 的迭代器失效,怎么解決C++ 與其他語言的區別?(指針、回收)智能指針的用法智能指針的使用場景:連接數據庫STL 是復制性還是侵入性紅黑樹比AVL的優勢,為何用紅黑樹紅黑樹的高度數據庫的鎖、事務、引擎場景題:I/O 多路復用的理解動態規劃與貪心算法的區別(背包問題分析)二面(1-8)多線程的使用場景多線程的鎖數據庫為何用 進程間的數據共享怎么實現音視頻同步多線程和多進程的區別Linux 常用命令?崗位必備技能是:C++ 基礎、網絡、數據庫。
是電商中臺28.富途證券后臺開發(1-4)先做幾道題說說從瀏覽器輸入網站用到的協議auto addr = (type) (size); (addr,"apple");操作系統滿的時候會發生什么?MySQL 加快查詢的方式29.CETV(1-5)Qt 信號與槽的機制為什么 new 不需要 的內部機制編譯過程虛函數表原理,虛表編譯的過程new 和 的區別智能指針內部原理多線程TCP、UDP 的區別TCP 怎么保證可靠傳輸在一個局域網中怎么連接兩臺電腦?平時怎么學 C++30.商湯科技(1-6)簡單介紹項目—— 怎么 粘包、丟包進程的通信內存泄漏智能指針Qt 實現多線程QSS 屬于第幾個版本視頻播放器怎么音視頻同步設計模式Qt 的 和 Table View 的區別做題31.科曼醫療(1-7)()介紹碩士課題項目Qt 自定義控件方法視頻播放器Qt 多國語言QSS 主題樣式設計模式信號與槽、和事件的區別視頻與音頻怎么同步介紹公司的研發方向:32.思謀科技(1-11)多態及其用處靜態多態包含什么類型純虛函數虛析構函數重載與重寫的區別 "C"{}const 的作用指針和引用的區別C++11 新特性強制類型轉換Qt 的優點、缺點Qt 的核心機制Qt Graph信號與槽的優點和缺點是什么Qt 函數的連接方式TCP 三次握手的過程手寫代碼:自定義 類(真的要每天都復習八股文)33.華陽國際設計(1-20)()實習的時候做什么工作指針和引用的區別空指針、懸垂指針TCP 的三次握手部門分工:34.中軟國際(外包公司)一面(1-25)()多態、虛析構函數強制類型轉換類能否嵌套 改變容量時要注意什么對象移動 智能指針C++11 多線程GDB 怎么調試段錯誤,怎么查看棧Linux 怎么處理 core 文件Git 用過嗎?二面(1-28)()多態的定義代碼的處理過程、匯編的作用new 和 的區別內存的分類 用過什么指令項目都是自己做的?Qt 多線程用什么函數計網用過什么協議智能指針快速排序的思路MFC 用過嗎設計模式、單例模式場景題:找出前 K 個最大元素的值(最大堆、最小堆的用法)三面(1-28)——經典好問題,必須好好分析()寫代碼:找出數組中數量超過一半的元素
int?GetNum(int?*array,int?length)?{
?unordered_map<int,int>?mp;
?for(int?i?=?0;i-1;++i){
??++mp[array[i]];
?}
?for(int?i?=?0;i-1;++i){
??if(mp[array[i]]?>?length?/?2){
???return?array[i];
??}
?}
?return?-1;//沒有的話返回-1
?//加入數據很大怎么辦?——先排序
?sort(array);//sort的原理是什么
?return(array[length?/?2]);
C++的 sort 函數是怎么實現的?音視頻:YUV 格式與 RGB 格式的區別怎么實現一個服務端連接多個客戶端?auto 的類型判斷發生在什么階段(編譯期)如果是在運行期的話會發生什么問題多態的分類類型轉換智能指針鎖的類型,自旋鎖的原理GDB 的常用命令內存的分類一個棧多大?35.中國電子系統(1-26)實習的時候做的項目,舉例做過的工作做的軟件項目的流程單例模式的實現方法觀察者模式哈希表的原理以及作用、怎么查找值計網線程和進程快速排序的思路、復雜度.樂鑫嵌入式(1-27)介紹視頻播放器介紹研究生課題代碼題:十進制字符串轉十六進制字符串選幾個關鍵字描述自己你的優點和缺點你期望的工作
(應該是KPI)
37.中元匯吉(1-27)()OOP 特性、虛函數內存泄漏、智能指針STL學過什么數據結構、舉例二叉樹的用法QT 信號與槽工廠模式、單例模式原理和用法鎖要注意什么GDB 用過嗎項目中要怎么調試代碼MySQL 索引是什么了解軟件架構嗎?MVC 模式了解嗎?怎么使用軟件設計思維?是正向還是逆向?38.(1-28)()視頻播放器 與 的區別 表達式、怎么捕獲外部變量 析構函數多繼承的問題多線程與多進程的區別多進程的鎖 阻塞和非阻塞的區別TCP 中間連接的時候斷開會發生什么(重傳、超時、等待狀態、TCP 可靠連接原理)進程內部的棧內存、堆內存、各自的增長方式雙鏈表怎么查找倒數第二個結點 常見的坐標系的變換順序39.wind金融(2-3)第 1 個面試官第 2 個面試官40.CVTE一面(2-22)()二面(2-23)41.騰訊企業微信客戶端(2-26)一面(2-26)()1 小時內做 3 到算法題講解題目(做的不好,分析復雜度)描述 Qt 的消息傳遞機制 消息機制有哪些做題二面(3-5)()信號與槽的底層原理;信號與槽怎么做到性能優化哈希表與紅黑樹的對比:結構、查找Q t的多線程的信號與槽虛函數表原理構造函數調用虛函數可以嗎?會發生什么?YUV 與 RGB 的區別音視頻同步的方法數據庫有幾種范式HTTP 的底層模型用什么實現(TCP)網絡的七層模型,作用、傳輸單位分別是什么TCP 的三次握手寫一個快排;能否用非遞歸方式實現;什么時候復雜度最大?三面(3-11)()繼承、多態的定義聽過多用組合,少用繼承嗎Qt 的信號與槽原理,怎么了解這個原理的?進程、線程的區別,對 OS 而言有什么目的對 I、B、P 幀的了解、MOOV 的格式了解音視頻的了解PTS、DTS的區別YUV 與 RGB 的區別音視頻同步的方法講下視頻播放器畢業課題實習平時怎么學習四面(3-11)給出一個二維 表示點到原點的距離。一個五個點,5X5 的二維 。求從原點出發,再回到原點的最短路徑,要求必須打印輸出結果(條件概率)已知城市中藍色:綠色車的比例是 15:85,目擊者稱看到藍色車肇事逃逸,但是人區別藍色和綠色的正確率是 80%。求真的是藍色車肇事逃逸的概率
(三面、四面在同一天進行。據說有的人騰訊面了六面。我止步于吃已經很滿足。代碼確實不會寫)
42.萬興科技一面(3-2)()Qt、C++ 分別用過多久?代碼量多少比賽中你負責什么角色 了解的深度、在 QT 中的用法 的了解Qt 用過多線程、網絡嗎Qt 3D 了解嗎實習過程中學會什么C++11 新特性;解釋右值引用是為了解決什么問題?(移動語義)淺拷貝和深拷貝的區別OOP 設計原則博客有多少篇喜歡看什么書HR面(3-5)(PASS)綜合面(3-9)對 的使用對音視頻的了解對 C++ 的了解用過 C++ 的閉包嗎? 的了解其他 offer對公司文化的了解你目前的學習方式是什么?43.元戎啟行一面(3-10)()介紹一些康復器械項目C++11 的新特性進程與線程OSI 七層模型要了解 MySQL紅黑樹的定義手撕代碼:把有序鏈表轉為平衡二叉樹二面(3-15)虛函數鉆石繼承為何不能出現智能指針多線程的原子類型auto 關鍵字能給數組賦值,但是不能定義用過 Qt 的什么模塊44.VIVO一面(3-12)()講一下對 OOP 的理解講一下單例模式數據庫HR面(3-19)介紹家庭情況對 IT 工程師的理解實現過程的收獲舉例壓力大的實例,壓力大的時候怎么解決收了什么 offer,為什么拒了你認為手機會怎么發展舉例說明你說服別人接收自己觀點的一個例子45.富途客戶端開發一面(3-16)()虛表是怎么使用的?虛表指針存放在哪里?構造函數能否為 ,能否調用虛函數?:兩數之和,非有序: ——給定鏈表,按照某個規定旋轉鏈表邏輯題:有 10 箱金子,,,,,,網絡:OS:怎么避免死鎖?二面(3-19)()下面是有一個全局變量 a 和兩個線程,這兩個線程同時開始并發執行各自的代碼,在兩個線程都執行結束后,請問 a 的值為
int a = 0;已知公司 OA 數據庫有一個員工信息表,包含員工 ID,員工姓名,入職時間,和離職時間。財務審核時發現 到 這 6 個月,當時所有在職員工都少發了工資,現在老板需要了解有多少人受影響需要獲得補償。請寫出查詢語句。
select?ID??where?entryTime?>?20180301??and?leaveTime?20180831
select?ID?where?entryTime?20180301?and?leaveTime?>?20180831
實驗室有 100 個瓶子,其中有一瓶裝有慢性毒藥(第 3 天發作),另外 99 瓶裝有蒸餾水。請問至少需要多少只小白鼠才能在3天內找出哪一瓶是慢性毒藥?只
4.找出出現頻率最高的前 K 個數,或者從海量數據中找出最大的前 K 個數
5.實現排序二叉樹的插入方法
tyedef?struct?node?{
????int?data;
????struct?node*?left;
????struct?node*?right;
}*BiTree;
void?insertBST(BiTree&?bt,?int?data)
{
?if?(!bt)
?{
??BiTree?ins?=?new?Node;
??ins->data?=?data;
??ins->left?=?ins->right?=?nullptr;
??bt?=?ins;
?}
?else?if?(bt->data?>?data)
??insertBST(bt->left,?data);
?else
??insertBST(bt->right,?data);
}
綜合面(3-23)對公司的了解最近的 offer?為何不要?家庭成員、是否單身用三個詞形容自己參加過的社團為何選擇醫學信息工程擇業因素興趣愛好學習方式自身的優勢怎么完成學校到公司的過渡?46.美的一面(3-17)()OOP 三大特點STL 常用容器棧與堆的區別new 和 的區別指針和引用的區別工廠方法模式TCP 三次握手內存泄漏是什么意思數據庫Linux工作問題二面(3-17)()你的專業是做什么的?做過窗口的信號共享嗎?項目的濾波算法是什么?音視頻項目的難題是什么?你的項目來源是哪里?遇到過程序崩潰的情況嗎?TCP 的連接、釋放過程
(終于拿到所謂大廠 offer。但是是 IT 部門,不是研發部門,在佛山。所以拒了)
47.科大訊飛(3-23)介紹康復訓練系統視頻播放器是否用過 MySQL生產者消費者模式用過 的 I/O 模型嗎?多線程的用法怎么操作文件系統new 和 的區別48.多益網絡(3-24)(PASS)介紹項目、視頻播放器 怎么用的視頻文件是什么格式,怎么存放的怎么設計視頻播放器的暫停?后端是怎么處理的?進度條怎么顯示的?多線程怎么用的?指針和引用的區別?在傳遞參數上有什么區別?函數未定義時會怎么樣?怎么刪除雙向鏈表?快排的思路堆是不是二叉樹寫代碼:用 C++ 實現全排列工作問題:如何看待加班?49.冰川網絡(4-2)
碩士畢業課題
TCP 與 UDP
算法問題:網格中有 2 個點貪心算法 背包問題 c語言,怎么找到從 A 到 B 的最短路徑?(用廣度優先搜索)
數據庫:為何索引的數據結構用 B-tree?
(因為數據庫主要消耗在磁盤 I/O 上,所以要優化磁盤 I/O ,如果用紅黑樹,樹的深度太高,消耗磁盤 I/O 太多,速度會太慢)
50.英特爾現場面(4-12)做一份筆試,問的比較細節,操作系統比較重要,幾個 C語言的關鍵字沒用過三個面試官輪流進來房間面試,一個面試官問半小時。問的技術問題不多,主要問項目細節。其中一個面試官的一個問題用英語問,要求用英語回答并討論。這個面試官告訴我好多面對項目的態度和看法,要發散思維,考慮用戶體驗。
(最后一家面試以英特爾結束,算是完美結束了。反正不留上海,不過就不過了)