伺服器開發需要的知識提綱

2021-07-11 02:05:24 字數 2727 閱讀 5098

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位元組,什麼情況?

網路程式設計:

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操作,如果讓你設計,你怎麼設計?

go開發之linux伺服器的知識

今天試著把專案 golang vue 放到一台centos的本地伺服器上執行在windows下編譯出linux可執行的go程式 set goarch amd64 set goos linux go build 會生成乙個沒有字尾的xx二進位制檔案,將該檔案放入linux系統某個資料夾下,賦予許可權 ...

伺服器相關知識

伺服器定義 從廣義上講,伺服器是指網路中能對其它機器提供某些服務的計算機系統 如果乙個pc對外提供ftp服務,也可以叫伺服器 從狹義上來講,伺服器是專指某些高效能計算機,能夠通過網路,對外提供服務。相對於普通pc來說,在穩定性 安全性 效能等方面都要求更高,因此cpu 晶元組 記憶體 磁碟系統 網路...

伺服器硬體知識

現在的人們幾乎無時無刻都會碰電腦!不管是台式電腦 台式電腦 筆記型電腦 膝上型電腦 平板電腦 智慧型手機等等,這些東西都算是電腦。雖然接觸的這麼多,但是,你了解電腦裡面的元件有什麼嗎?以桌機來說,電腦的機殼裡面含有什麼元件?不同的電腦可以應用在哪些工作?你生活周遭有哪些電器用品內部是含有電腦相關元件...