想成爲BAT後臺開發工程師,這些都是基礎!

“互聯網企業每年校招的技術面試形式類似,大多是對面試者技術基礎的考察。本文面對C++後臺開發崗位,收集總結了百餘道技術基礎題。供大家學習和準備。 ”

C++語言基礎

  • c++具有哪些特點和性質,和c有什麼區別
  • 指針的作用
  • 全局變量的缺點
  • c++對象的生命週期
  • c和C++中動態分配內存是怎樣實現
  • 爲什麼建議多用組合少用繼承
  • 編譯語言和解釋語言的區別
  • 面對對象的思想,還有什麼其它編程思想
  • 多態是什麼,有哪幾種
  • doule 和float二進制怎麼存的,double 1.5 和 float 1.5 的大小
  • c++的對象模型(內存模型,虛函數表,虛函數指針)
  • 有沒有了解智能指針
  • dynamic_cast有什麼用
  • 智能指針shared_ptr,循環引用的情況怎麼辦,weak_ptr的弱引用什麼意思
  • 野指針是什麼
  • lambda函數
  • rand函數需要注意什麼
  • c++模板
  • static關鍵字
  • 常量指針與指針常量
  • 函數參數傳常引用和普通函數參數
  • 內存泄漏原因及如何避免
  • 深拷貝和淺拷貝
  • 右值引用
  • 虛表
  • 所有類都有虛表嗎
  • C++是單繼承還是多繼承,菱形繼承的問題,爲什麼虛繼承能解決
  • 強制類型轉換,static_cast和dynamic_cast的區別,爲什麼dynamic_cast能夠向上向下轉
  • RTTI的底層實現原理,如何動態獲得類型,怎麼判斷指針對象的繼承關係
  • 函數重載?有什麼用?怎麼實現的?爲什麼不能用返回值不同函數名形參列表相同做重載呢?
  • 重載和重寫
  • 結構體和類的區別
  • 拷貝構造和移動構造
  • 什麼情況下必須使用拷貝構造函數
  • 內存堆棧對比,分配效率
  • 全局變量放哪兒
  • 碎片會出現在哪內存區域
  • malloc底層實現
  • volatile作用,寄存器
  • new和malloc的區別
  • delete的幾種方式
  • 面向對象的特點
  • 子類和父類在構造和析構的時候有什麼特點嗎,順序
  • 基類的析構函數,不是虛函數會造成什麼問題
  • 純虛函數和虛函數的區別
  • 引用的作用
  • 常引用
  • 結構體和聯合體,對聯合不同成員賦值,其它的值會改變嗎
  • c++是類型安全的嗎
  • const和define的區別,哪種更好
  • 指針和數組的區別
  • 全局變量和局部變量的區別,操作系統和編譯器是怎麼知道的
  • 標準模板庫,哪些數據結構,怎麼分類
  • 迭代器
  • 什麼時候用vector和list,實現的方案
  • STL vector擴容怎麼實現
  • STL中map和unordered_map的區別,兩種map的底層實現

設計模式

  • 設計模式原則
  • 單例模式的線程安全實現
  • 觀察者模式
  • 代理模式
  • 爲什麼要採用工廠模式,策略模式,一定要用嗎

數據結構和算法

  • 常見排序算法及其複雜度,哪些穩定和非穩定
  • 快速排序爲什麼隨機選初始值
  • 建堆的過程及建堆後如何排序
  • 快速排序和歸併排序的過程
  • 數據結構知道哪些,對比下數組和鏈表
  • 鏈表的作用
  • 紅黑樹和平衡二叉搜索樹
  • 哈希表
  • 哈希衝突解決辦法
  • 如何判斷圖的連通性
  • 堆和棧的區別
  • b+樹

操作系統

  • Linux常用命令,查看系統負載情況,查看端口號,端口號被佔用怎麼辦
  • 如何查看服務器運行時間?看是否有重啓和宕機?
  • Linux系統的gdb調試
  • Linux查看進程的命令
  • ping一個ip發生了什麼
  • 鎖的概念
  • 如何避免死鎖
  • 進程和線程的區別
  • 線程同步的方式,讀寫鎖
  • 進程間的通信方式
  • 多線程中對A,B同時加鎖的時候,需要注意什麼問題(死鎖的情況)
  • 如何避免死鎖
  • epoll和select區別,水平觸發和邊沿觸發
  • Reactor模式,調度器、工作線程和請求隊列都會幹什麼,狀態發生什麼改變
  • 單進程如何進行IO複用
  • epoll的單線程
  • select的實現需要多線程嗎
  • 虛擬內存和物理內存
  • 爲什麼用多線程,不同線程共享棧嗎
  • 軟中斷什麼時候發生
  • 殭屍進程、孤兒進程
  • 操作系統複製粘貼如何實現
  • 頁面置換算法
  • 進程調度算法
  • 線程池怎麼實現

計算機網絡

  • TCP的TIME_WAIT 和CLOST_WAIT
  • time_wait 和close_wait,客戶端斷開連接了,服務器會怎樣
  • TCP的可靠性,超時重傳怎麼實現
  • UDP和TCP對比
  • http狀態碼
  • HTTP和HTTPS
  • HTTPS加密過程
  • 非對稱加密和對稱加密算法
  • 代理
  • udp的限制,udp是有序還是無序
  • 輸入一個URL,回車後直到渲染出頁面中間發生了什麼?(dns是屬於TCP還是UDP)
  • tcp三次握手
  • session和cookie的區別
  • get和post的區別
  • 滑動窗口
  • ARP協議,描述一下原理
  • 路由器和交換機分別在什麼層

手撕代碼

  • 手寫LRU頁面置換算法
  • 手寫最小堆
  • 從n個數中抽m個出來,按從大到大輸出所有排列組合
  • 改編的約瑟夫環問題
  • 計算化學分子式每個元素的個數,如HMg2(H2O(P2S3))3NH3,每個元素以大寫字母開頭
  • 鏈表操作,奇數位遞增,偶數爲遞減,重新排序爲遞增
  • 鏈表每隔k個反轉
  • 實現 void* memmove(void* dst, const void* src, size_t n)
  • N個數重複3次,一個數重複一次,請找到這個數; 3N+1, int32_t, vector<int32_t>
  • 實現一下string類,包括構造函數,拷貝構造函數,析構函數,運算符重載等
  • 一顆多叉樹,實現層序遍歷以及元素賦值操作
  • 手寫快排

開放性試題

  • 手機的指紋識別是如何實現的?
  • 抽獎箱設計,三種顏色A,B,C,要求每種顏色的權重(概率)分別爲1:10:100,怎麼產生三種顏色
  • 兩個文件有上億個qq號,找重複的
  • 大量qq號存儲、查詢和查重
  • 1-n,缺失了一個數,找到這個數
  • 假設內存不夠,相加溢出,怎麼辦

送命題

  • 如何看待加班現象
  • 不做技術轉什麼方向
  • 看過什麼書,看過什麼庫
  • 意向城市
  • 有沒有了解顯卡
  • 課餘時間都在幹什麼
  • 學科課程比較突出的
  • 在項目中的優勢和劣勢
  • 字節範兒
  • 作爲項目負責人要注意到什麼
  • 目前爲止經歷最大的挫折是什麼?如何走出來的?
  • 平時有什麼興趣愛好?
  • 爲什麼不繼續做原來的方向?
  • 對工作的誠實有什麼看法?
  • 你的職業規劃?

我的個人微信公衆號:【業餘碼農】,裏面有校招經驗分享,還有面經分享;之後還會分享我自己對於互聯網行業的一些看法,有什麼問題也可以在上面問我。感興趣的同學可以關注下。
【關注福利】關注公衆號後臺回覆【秋招】,即可免費獲得面經答案解析一份。
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章