三面是總監面,本人不幸被拒了,這次面試沒有問
專案相關的問題,專案的問題是放在二面問的。三面給人的 感覺要求很嚴,有些問題看似基礎,但問得很細,稍有閃失就被pass,絕不能有模稜兩可那種回答,以下是面試題:
1)tcp三次握手的過程,accept發生在三次握手哪個階段?
2)tcp流, udp的資料報,之間有什麼區別,為什麼tcp要叫做資料流?
3)const的含義及實現機制,比如:const int i,是怎麼做到i只可讀的?
4) valitale的含義。
5)offsetof(s, m)的巨集定義,s是結構型別,m是s的成員,求m在s中的偏移量。
6)100億個數,求最大的1萬個數,並說出演算法的
時間複雜度。
7)設計乙個洗牌的演算法,並說出演算法的時間複雜度。
socket
在什麼情況下可讀?
--------------
1)三次握手之後
2)流無邊界,資料報有邊界.tcp是先進先出的,並且可靠.
3)編譯器相關,優化可能讓其直接轉為一常量代入.
4)volatile吧,告訴編譯器此處必須得從位址去取,不得作相關優化。千萬注意,這裡與硬體cache可不是一回事。
5)#define offsetof(s, m) () /*gcc*/
6)建乙個堆,先把最開始的1萬個數放進去。以後每進乙個,都把最小的趕出來。
7)產生2*54+rand()%2次交換,所有序列已經很接近平均分布(只要rand()滿足均分),並且比較快。否則會是複雜度比較高的演算法。我統計 過。
不知道想問什麼。
9)擁塞控制是把整體看成乙個處理物件的,流量控制是對單個的。感知的手段應該不少,比如在tcp協議裡,tcp報文的重傳本身就可以作為擁塞的依據。依 據這樣的原理,應該可以設計出很多手段。
9)流量控制與擁塞控制的區別,節點計算機怎樣感知網路擁塞了?
linux和os:
netstat tcpdump ipcs ipcrm (如果這四個命令沒聽說過或者不能熟練使用,基本上可以回家,通過的概率較小 ^_^ ,這四個命令的熟練掌握程度基本上能體現面試者實際開發和除錯程式的經驗)
cpu 記憶體 硬碟 等等與系統效能除錯相關的命令必須熟練掌握,設定修改許可權 tcp網路狀態檢視 各程序狀態 抓包相關等相關命令 必須熟練掌握
awk sed需掌握
共享記憶體的使用實現原理(必考必問,然後共享記憶體段被對映程序式空間之後,存在於程序空間的什麼位置?共享記憶體段最大限制是多少?)
c++程序記憶體空間分布(注意各部分的記憶體位址誰高誰低,注意棧從高道低分配,堆從低到高分配)
elf是什麼?其大小與程式中全域性變數的是否初始化有什麼關係(注意.bss段)
使用過哪些程序間通訊機制,並詳細說明(重點)
makefile編寫,雖然比較基礎,但是會被問到
gdb除錯相關的經驗,會被問到
如何定位記憶體洩露?
動態鏈結和靜態鏈結的區別
32位系統乙個程序最多多少堆記憶體
多執行緒和多程序的區別(重點 面試官最最關心的乙個問題,必須從cpu排程,上下文切換,資料共享,多核cup利用率,資源占用,等等各方面回答,然後有乙個問題必須會被問到:哪些東西是乙個執行緒私有的?答案中必須包含暫存器,否則悲催)
寫乙個c程式辨別系統是64位 or 32位
寫乙個c程式辨別系統是大端or小端位元組序
訊號:列出常見的訊號,訊號怎麼處理?
i++是否原子操作?並解釋為什麼???????
說出你所知道的各類linux系統的各類同步機制(重點),什麼是死鎖?如何避免死鎖(每個技術面試官必問)
列舉說明linux系統的各類非同步機制
exit() _exit()的區別?
如何實現守護程序?
linux的記憶體管理機制是什麼?
linux的任務排程機制是什麼?
標準庫函式和系統呼叫的區別?
補充乙個坑爹坑爹坑爹坑爹的問題:系統如何將乙個訊號通知到程序?(這一題哥沒有答出來)
c語言:
巨集定義和展開(必須精通)
位操作(必須精通)
指標操作和計算(必須精通)
記憶體分配(必須精通)
sizeof必考
各類庫函式必須非常熟練的實現
哪些庫函式屬於高危函式,為什麼?(strcpy等等)
c++:
乙個string類的完整實現必須很快速寫出來(注意:賦值構造,operator=是關鍵)
虛函式的作用和實現原理(必問必考,實現原理必須很熟)
sizeof乙個類求大小(注意成員變數,函式,虛函式,繼承等等對大小的影響)
指標和引用的區別(一般都會問到)
多重類構造和析構的順序
stl各容器的實現原理(必考)
extern c 是幹啥的,(必須將編譯器的函式名修飾的機制解答的很透徹)
volatile是幹啥用的,(必須將cpu的暫存器快取機制回答的很透徹)
static const等等的用法,(能說出越多越好)
資料結構或者演算法:
《離散數學》範圍內的一切問題皆由可能被深入問到(這個最坑爹,最重要,最體現功底,最能加分,特別是各類樹結構的實現和應用)
各類排序:大根堆的實現,快排(如何避免最糟糕的狀態?),bitmap的運用等等
hash, 任何乙個技術面試官必問(例如為什麼一般hashtable的桶數會取乙個素數?如何有效避免hash結果值的碰撞)
網路程式設計:
tcp與udp的區別(必問)
udp呼叫connect有什麼作用?
tcp連線中時序圖,狀態圖,必須非常非常熟練
socket服務端的實現,select和epoll的區別(必問)
epoll哪些觸發模式,有啥區別?(必須非常詳盡的解釋水平觸發和邊緣觸發的區別,以及邊緣觸發在程式設計中要做哪些更多的確認)
大規模連線上來,併發模型怎麼設計
tcp結束連線怎麼握手,time_wait狀態是什麼,為什麼會有time_wait狀態?哪一方會有time_wait狀態,如何避免time_wait狀態占用資源(必須回答的詳細)
tcp頭多少位元組?哪些字段?(必問)
什麼是滑動視窗(必問)
如果select返回可讀,結果唯讀到0位元組,什麼情況?
keepalive 是什麼東東?如何使用?
列舉你所知道的tcp選項,並說明其作用。
socket什麼情況下可讀?
db:mysql,會考sql語言,伺服器資料庫大規模資料怎麼設計,db各種效能指標
最後:補充乙個最最重要,最最坑爹,最最有難度的乙個題目:乙個每秒百萬級訪問量的網際網路伺服器,每個訪問都有資料計算和i/o操作,如果讓你設計,你怎麼設計?
騰訊後台開發面試題 整理2
1 tcp三次握手的過程,accept發生在三次握手哪個階段?2 tcp流,udp的資料報,之間有什麼區別,為什麼tcp要叫做資料流?3 const的含義及實現機制,比如 const int i,是怎麼做到i只可讀的?4 valitale的含義。5 offsetof s,m 的巨集定義,s是結構型別...
騰訊後台開發面試總結
linux和os netstat tcpdump ipcs ipcrm 如果這四個命令沒聽說過或者不能熟練使用,基本上可以回家,通過的概率較小 這四個命令的熟練掌握程度基本上能體現面試者實際開發和除錯程式的經驗 cpu 記憶體 硬碟 等等與系統效能除錯相關的命令必須熟練掌握,設定修改許可權 tcp網...
騰訊後台開發面試經驗
面試官簡單問了下工作地點的問題後,就直入主題了,沒問專案,全是程式設計基礎和演算法,感覺問題都是隨機的,從乙個問題根據你的回答深入到下乙個問題。1.static 使用與作用 2.inline 中斷 3.程序與儲存 4.棧的兩種指標,哎,才知道原來有個ebp是幀指標啊 5.殭屍程序的理解 6.awk,...