Linux后臺開發(fā)必看!


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