筆者非科班轉行,兩個月拿了十多個offer,其中包括了互聯網大廠,央企,國企,銀行等,下面看看都面了什麼(部分回憶)。總之,在面試國企等企業時,會有一些有意思的問題,也會出現羣面的場景。本文收錄於面試集錦
1 阿里一面
- 指針和引用的區別
- define和const
- 內聯函數和define
- c++內存管理
- 棧和堆區別,全局變量和局部變量
- c++多態,虛函數,純虛函數
- 多態的好處
- 數據庫索引,給一個語句問有沒有用到索引,底層怎麼實現的
- B樹和B+樹
- 哈希衝突
- 說一說常見的排序算法和時間,空間複雜度
- TCP,UDP,可靠傳輸,網絡什麼時候擁塞
- 爲什麼要內存對齊
- 非對稱加密和對稱加密
2 電信研究院
- 操作系統linux會用嗎,用啥系統
- static變量和局部變量知道不
- 內存溢出
- 服務器什麼操作會不
- c++用的多嗎
- 想做什麼崗位
- linux命令會嗎
- epoll和select
- sed和grep知道不
- awk
- 有什麼愛好
- 你會打橋牌?
- 檯球打的不錯嗎?
- 籃球會不會
- 王者榮耀啥段位
- 喜歡玩啥位置
- 哪個實驗室的,導師叫什麼
- 過兩天來你們學院,記得過來
這個。。。。
3 拼多多
- 你會gdb調試?說一下gdb調試的原理
- 你用過git,講一下原理
- 你熟悉哪些linux命令,回答瞭解複製之類的,然後問,cpu的原理你講一下
- https1.1和2.0的區別,答出來了,爲什麼,怎麼實現的?
- c++11有哪些特性,你實現一下shared_ptr
- tcp爲什麼可靠?tcp重傳的時間怎麼設的,(一個消息都得不到ACK)
- 多線程怎麼進行調度
- 用過mysql嗎,說一下B+樹
- 這是你的筆試題啊,考察一下你的算法吧,這個第三題你做錯了,有思路嗎,說沒有,那你現在想一下
- memcpy寫一下
- strcpy寫一下
- 瞭解c++多態嗎,那你用c實現一下。
- 操作系統忘了。
4 騰訊TEG
-
擅長的語言(C語言,C++),對C++的瞭解程度
-
Linux的項目平臺經驗多嗎?
-
malloc和new分配內存的區別
-
malloc內部的實現原理
-
malloc能夠分配的最大內存空間(32位)(提到了段),如果申請了2G的內存,會立即與物理地址對應嗎,如果不會,往裏面寫數據的時候是否會產生缺頁中斷
-
如何查看段的範圍和大小
-
elf目標可執行文件的組成部分,elf文件中的段跟運行時的段有什麼區別
-
如何裝載目標文件到內存當中
-
缺頁中斷的處理過程
提到了換頁換出的時候會產生缺頁中斷,反問是否一定是換頁產生的嗎?上面提到的未分配空間呢?
- 這種缺頁中斷在系統和硬件中是由哪些CPU,寄存器參與的。
提到了MMU,CR3寄存器
-
爲了加快頁表的轉換,會使用一些什麼樣的硬件和軟件
-
瞭解大頁內存嗎?它是什麼概念,有什麼優點和缺點。
優點:減少頁表
- 對於彙編這部分了解多嗎?C語言的函數調用在彙編的角度是怎麼實現的?
提到了ebp,esp函數棧,jmp跳轉
-
Linux庫函數memcpy,能不能想出比較高效的內存拷貝方式。除了按字節拷貝還有沒有性能更好的方法。
-
Linux上運行的進程的CPU有什麼組成部分,整體的CPU佔用和每一塊的CPU的佔用。怎麼用top去看一個進程的CPU佔用的組成部分。(是不是做的性能優化這部分的工作比較少)
-
C++ STL裏面有很多性能優化相關的類,這個你瞭解嗎?STL的string類本身有多大,如何保存字符串的?vector如何動態擴展空間?
提到了size()和capacity(),但是發現這個問題答錯了
-
挑一個研究的最深的技術點。挑自己最擅長的說,比如說網絡編程、系統內核啊等等
-
樂觀鎖和悲觀鎖的區別
提到了CAS
- 問到了CAS的應用場景,CAS允許有短暫的訪問遲滯嗎?
提到了讀商品和寫商品(然後發現場景錯誤)
- CAS爲了實現鎖的原語,在Linux系統上是怎麼去實現的?
談的是RING中的源碼,使用多個struct,但是他說沒有談到點上,想問的是背後原理(彙編也好,x86架構上也好)(可能是單句彙編語言,或者是總線鎖)
- volatile關鍵字的作用?主要是爲了解決什麼問題?爲了防止編譯器進行哪種方式的優化?
爲了防止編譯器優化,最核心的是做了什麼優化,怎麼理解直接去讀這個值
-
緩存是一個什麼樣的硬件?
-
寄存器也算是緩存的一部分嗎?
-
CPU訪問寄存器、訪問緩存、訪問內存哪個快?訪問的時間週期是多少?快多少倍?
-
本科、研究生、實習做的項目和事情中哪個事情比較滿意,能夠體現自己的能力的?
-
技術也好、做事情的方式也好的優勢和劣勢?
-
你是哪個地方的人?爲什麼不參加實習生的招聘?
-
你有什麼問題嗎?
5 某行
- 你知道預編譯嗎
- 你說了define,那你說他和函數有啥區別
- 哪個更快,爲啥
- 你提到了棧,那你說一下棧和堆
- 你實習過嗎,華爲實習主要做啥
- 你們班有幾個人實習了
- 做了一道簡單的算法題
- 有沒有轉正
- 加班嗎
- 你想做什麼方向,c++還是java還是python
- 畢設做什麼
- 幾個人做
- 數據庫會嗎
- 機考做了幾道題
- 家在哪裏
- 打算在哪裏工作
- 喜歡武漢嗎
- 有女朋友嗎
- 差不多就這些
6 追一科技
- 爲什麼不用CNN,用LSTM
- LSTM爲什麼可以緩解梯度消失
- 什麼是梯度消失和梯度爆炸
- 爲什麼要提取時序信息
- 說一下RNN和CNN
- 你說一下虛指針
- 寫一下單例模式
- 別的進程可以訪問這個進程的創建的單例模式的實例嗎
- 你說一下內存泄漏
- 有幾個虛函數表
- while(1)死循環
- attention機制
- 說一下繼承中的構造函數和析構函數
- 野指針講一下
- 你學過哪些課程,那你說說紅黑樹
- 你說一下平衡二叉樹怎麼插入一個結點
- TCP怎麼重傳
- 共享內存爲什麼可以實現進程通信
- 每個進程都有自己的內存,爲什麼可以訪問共享內存
- 你知道希爾排序嗎,比直接插入排序快嗎,爲什麼,時間複雜度平均多少
- 單鏈錶快排
- 寫一下反轉單鏈表
7 總結
如果嘗試國企,研究所,銀行等,可以通過提前參加他們的培養生計劃,這樣進入機會會更大。當然,如果你是985,進入這些企業的機率確實會更大的,誰讓人家是985對吧,我們不得不爲自己曾經的不努力買單。但是機會一定是給時刻準備着的小夥伴,so,衝吧!資料整理在下方文章,你的star是我最前進的動力