@
白嫖不好,要不先贊在看!
一 自我介紹
本人小碩,秋招期間參加了不少安全類相關公司(深信服,綠盟等),另外參加了京東,小米,滴滴等互聯網公司面試,同時也面試了幾個研究所和一個銀行,下面總結下秋招相關情況。
二 面試情況
公司名稱 | 面試崗位 | 面試情況 |
---|---|---|
小米 | Linux內核開發 | 三面!掛 |
深信服 | c/c++開發 | 四面 拿到offer |
bigo | c/c++開發 | 四面 拿到口頭offer |
滴滴 | 網絡研發工程師 | 三面 掛場景 |
人大金倉 | c語言開發工程師 | 三面 拿offer |
京東 | c++研發工程師 | 二面!掛 |
綠盟科技 | 防火牆開發工程師 | 沒有去參加二面 |
浦發 | 軟件開發工程師 | 拿到offer |
中國網安(30所) | c防火牆開發 | 拿到offer |
映客直播 | 后台開發工程師(go) | 二面掛(印象很深刻) |
鼎橋(網上怎么變成了華為鼎橋。。) | c/c++軟件開發 | 拿到offer |
這是小藍整理的Linux后台開發面試高頻題目(除了語言部分,其他部分差別應該不大),並提供相關知識的書籍或視頻資源。
三 相關知識點匯總
1 c/c++相關
- c++虛函數原理
- 智能指針
- c語言如何實現c++對象以及私有成員
- c++多態實現
- new和malloc的區別以及底層實現原理
- STL中的vector怎么擴容
- 虛函數指針的初始化過程
- c++11原子變量介紹
- c++11特性有哪些,說用過的
- 怎么理解重載與重寫
- 怎么理解c++中的static關鍵字
- vector和list 的區別
- c++的內存分配
- map與set的底層實現
- 類靜態變量的初始化
- 析構函數可以是虛函數?為什么
- 深拷貝與淺拷貝
- 指針常量,常量指針的區別
c語言語法推薦書籍: 《c專家編程》《c與指針》
c++語言語言推薦書籍:《c++ primer》《effect c++》
c++語言stl底層原理:《STL源碼剖析》
2 計算機網絡
- 介紹下proactor和reactor
- reactor的組成
- TIME_WAIT危害
- TIME_WAIT時長,為什么?
- IP為什么要分片
- 項目中說用到線程池,開多大,為什么運用線程池?
- select和epoll區別
- select什么情況返回0
- epoll可讀情況有哪些
- 什么時候需要TCP四次揮手?
- 如何設置非阻塞
- 什么是零拷貝?
- tcp與udp的區別以及應用場景
- 如何設計一個可靠的udp
- 粘包如何解決
- 講一下擁塞控制和流量控制
- http和https區別
- 是否了解中間人劫持原理
- http協議格式,幾種方法,功能是什么
- chunk塊了解?介紹下
- 有chunk的時候contentlength是什么樣子
- 半連接在哪個階段
- 三次握手四次握手詳細過程,越詳細越好
- libevent結構,內部實現
- tcp的可靠性體現在哪里
- ARP協議工作流程
- epoll中的ET和LT模式
- 介紹下滑動窗口
- 指針與引用的區別
- Accept發生在三次握手哪個階段
- Udp的接收緩沖區和發送緩沖區和tcp的區別
- http長連接與短連接的區別
- udp包長度
- 一次url訪問會經歷哪些過程
- 數據包亂序會處理?
- seq為1000,發送了1000個數據,下一個seq是多少?
- syn如果丟了,重傳多少次
tcp/ip相關推薦書籍:《tcp/詳解:1》
熟悉使用wireshark捕包工具,加深印象可以使用python的一個庫,scapy/dpkt.
3 數據結構相關
- hash處理沖突的方法
- 二分查找及其變種
- 數組與鏈表的區別
- redis數據結構用過哪些,了解跳表?
- 紅黑樹比平衡二叉樹有哪些優點
- 二叉樹,b+樹,hash,二叉查找樹區別
- 說說紅黑樹的特性
- 各種樹,排序的時間復雜度
- 數據庫索引,事務,事務級別
- 不考慮事務的隔離性會出現什么問題
- 事務隔離級別
- 索引的類型
- AC自動機時間復雜度
數據結構書籍《大話數據結構》
極客時間王大佬/譚大佬專欄
4 數據庫相關
- 如何提高查詢速度?
- 加了索引就快了?
- 數據庫索引底層結構
- mysql與memcache的區別
- mysql常見三種存儲引擎的
- MySQL B+Tree索引和Hash索引的區別?
- B+樹索引和哈希索引的明顯區別是:
- 非關系型數據庫和關系型數據庫區別,優勢比較?
- mysql常見查詢優化方案
mysql書籍推薦:《mysql必知必會》,《高性能Mysql》
5 操作系統
- 進程與線程的區別
- 多進程與多線程區別,應用場景
- volatile和原子變量的區別
- proc文件系統
- 自旋鎖與普通鎖的區別
- 虛擬內存
- 進程的內存分布
- 棧內存為什么由系統自動分配和釋放
- 守護進程如何創建
- 進程間的通信方式及其區別,應用場景
- 死鎖條件和解除
- 進程調度方式
- 對編譯連接的理解
- 共享內存實現原理
- 僵屍進程是什么,如何處理
- 自旋鎖在單cpu與多cpu下的使用
- 用戶態與內核態
操作系統推薦書籍:《深入理解操作系統》,《Linux內核設計與實現》
6 Linux基礎知識及應用編程(后台必備!)
- 如何查看進程打開的文件
- 介紹下nm與ldd命令
- shell命令查內存,端口 ,io訪問量,讀寫速率
- awk grep具體應用
- 硬鏈接與軟連接,目錄可不可以用硬鏈接
- 常見命令netstat iptable tcpdump top
- makefile介紹下(cmake介紹下)
- gdb查看堆棧中所有遍歷
- gdb查看shared_ptr
指向的內容 - gdb如何調試多進程多線程
- g++和gcc編譯出來有什么區別
- 死鎖怎么調試
- core文件中是什么,gdb調試core文件
- 如何讀取一個10G文件,cat一個10g文件會發生什么
Linux基礎命令推薦書籍:《Linux就該這么學》
Linux應用編程推薦書籍《后台開發應用與實踐》《Linux多線程服務端編程》
補充資料:gdb手冊和makefile詳解
7 大數問題
- 有200億qq,但實際只有25億用戶,找到重復的qq
- 25億qq占用內存多大
- 1-100萬,計算找出所有的質數(計算密集型任務),用單線程與多線程怎么處理
- 1個G的文件寫程序,從A機器發送到B機器,怎么發?
- 100G的文本,每行80k還是80字符,提示用多個機器,多進程,多線程,求出重復最多的行。一個機器內存8G,計算每個機器大概分多少?能讀取100G的文本嗎?找重復率前十的文本
- 三個有序的序列,查找公共的部分,第一次我說用哈希表,他說序列太大,空間復雜度要低點,我說了二分查找,他問三個序列查找的順序和時間復雜度。(時間復雜度為N*logN *logN)
- 100WURL,如何存儲
- 10台服務器,100w用戶,如何進行負載均衡,如何有個服務器掛掉了咋辦
- 10000個數據查找最小的100個?時間復雜度?
- 場景題:QQ的服務器會保存登錄用戶的QQ號,只要有登錄,文件里面就會有記錄,現在需要統計哪些QQ號登錄過,怎么做?(先說了分治用小文件,他說除了這個了,我說bit數組,他就問需要多大內存?)
大數問題通常的套路是hash,分治,布隆,bitmap,如果推薦的話還是上面數據結構相關資料.當然如果能了解下比如hdfs文件系統,mapreduce,spark/flink流式計算最佳哈
8 手撕算法(遞歸非遞歸)
- 鏈表有無環判斷
- 實現一個單例模式
- 給一個字符串判斷單詞數
- 開方算法
- 青蛙跳台階
- 常用排序(快排和歸並要寫吐)
- 反轉鏈表
- 兩個鏈表,尋找公共節點
- 查找字符串中不重復的最長子串
- LRU
- 手寫求樹的深度的代碼
- 手寫生產者消費者
- 編程實現string類
- 兩個數組A,B,A有的B都有,求B-A;
- 輸入一個字符串,輸出它的全排列
- 統計完全二叉樹多少個節點
- memcpy實現
算法學習書籍推薦《劍指offer》,建議三遍哈。
leetcode分專欄練習幾題,不在多,在於精。
9 針對項目相關
- 介紹一個你做的比較的項目,幾個人做的,擔任什么角色
- 項目的技術點在哪里
- 項目不足在哪里
- 你在項目中學到了什么
- 讓你優化項目中的一點,如何做
- 項目什么架構
- 測過系統性能嗎,掛掉怎么辦?
最好是自己做過的項目,即時不是也需要弄明白其架構,為什么這么做,有什么優點,什么優化方案?
10 場景題
- 給一個場景,設計一下定時對url進行爬蟲,比如對新浪1個小時爬蟲n次,然后某些博客可能1個星期爬蟲1次。
- 給一個場景,設計服務器實現爬蟲的url去重,如何讓多個服務器對一個url爬蟲指定次數
- 好多小文件,設計一個服務器來實現如何存儲
- 設計兩地高效傳文件
這部分
11 架構/分布式/中間件相關
- 常用負載均衡策略
- 一致性hash原理
- 緩存容災中數據一致性問題
- 了解cap理論嗎
- 介紹下高可用,高性能,可伸縮基本概念。。
- 了解微服務?docker?k8s?
- Nginx了解到什么程度,nginx配置更新實現,事件模型
推薦書籍:《redis設計與實現》《從0開始學架構》《docker入門到實踐》《大型網站技術架構-核心原理與案例分析》
12 總結
以上是技術面試中秋招常遇到的相關題目,希望對大家有幫助。所有資料,掃描下面二維碼直接領取。
❤️ 看完三件事:如果您看完有一點點收獲,快速迎娶白富美方式:
1 關注公眾號「我是程序員小賤」,第一時間閱讀最新的文章,公眾號后台回復 [小天使] 送你 最新的編程技術資料。
2 點贊,讓更多的人也能看到這篇內容(收藏不點贊,都是耍流氓 -_-)
3 關注我和專欄,讓我們成為好基友。