linux后台开发具备能力集锦
Linux后臺開發(fā)應該具備技能
一、linux和os:
1、命令:netstat tcpdump ipcs ipcrm? 這四個命令的熟練掌握程度基本上能體現(xiàn)實際開發(fā)和調(diào)試程序的經(jīng)驗
2、cpu 內(nèi)存 硬盤 等等與系統(tǒng)性能調(diào)試相關的命令必須熟練掌握,設置修改權限 tcp網(wǎng)絡狀態(tài)查看 各進程狀態(tài) 抓包相關等相關命令 必須熟練掌握
3、awk sed需掌握
4、共享內(nèi)存的使用實現(xiàn)原理、然后共享內(nèi)存段被映射進進程空間之后,存在于進程空間的什么位置?共享內(nèi)存段最大限制是多少?
5、c++進程內(nèi)存空間分布(注意各部分的內(nèi)存地址誰高誰低,注意棧從高道低分配,堆從低到高分配)
6、ELF是什么?其大小與程序中全局變量的是否初始化有什么關系(注意.bss段)
7、使用過哪些進程間通訊機制,并詳細說明
8、makefile編寫,雖然比較基礎,但是會被問到
9、gdb調(diào)試相關的經(jīng)驗,會被問到
10、如何定位內(nèi)存泄露?
11、動態(tài)鏈接和靜態(tài)鏈接的區(qū)別
12、32位系統(tǒng)一個進程最多多少堆內(nèi)存
13、多線程和多進程的區(qū)別(重點 必須從cpu調(diào)度,上下文切換,數(shù)據(jù)共享,多核cup利用率,資源占用,等等各方面回答,然后有一個問題必須會被問到:哪些東西是一個線程私有的?答案中必須包含寄存器,否則悲催)
14、寫一個c程序辨別系統(tǒng)是64位 or 32位
15、寫一個c程序辨別系統(tǒng)是大端or小端字節(jié)序
16、信號:列出常見的信號,信號怎么處理?
17、i++是否原子操作?并解釋為什么???????
18、說出你所知道的各類linux系統(tǒng)的各類同步機制(重點),什么是死鎖?如何避免死鎖(每個技術面試官必問)
19、列舉說明linux系統(tǒng)的各類異步機制
20、exit() _exit()的區(qū)別?
21、如何實現(xiàn)守護進程?
22、linux的內(nèi)存管理機制是什么?
23、linux的任務調(diào)度機制是什么?
24、標準庫函數(shù)和系統(tǒng)調(diào)用的區(qū)別?
25、補充一個坑爹坑爹坑爹坑爹的問題:系統(tǒng)如何將一個信號通知到進程?
二、c語言:
1、宏定義和展開(必須精通)
2、位操作(必須精通)
3、指針操作和計算(必須精通)
4、內(nèi)存分配(必須精通)
5、各類庫函數(shù)必須非常熟練的實現(xiàn)
6、哪些庫函數(shù)屬于高危函數(shù),為什么?(strcpy等等)
三、c++:
1、一個String類的完整實現(xiàn)必須很快速寫出來(注意:賦值構造,operator=是關鍵)
2、虛函數(shù)的作用和實現(xiàn)原理(必問必考,實現(xiàn)原理必須很熟)
3、sizeof一個類求大小(注意成員變量,函數(shù),虛函數(shù),繼承等等對大小的影響)
4、指針和引用的區(qū)別(一般都會問到)
5、多重類構造和析構的順序
6、stl各容器的實現(xiàn)原理(必考)
7、extern c 是干啥的,(必須將編譯器的函數(shù)名修飾的機制解答的很透徹)
8、volatile是干啥用的,(必須將cpu的寄存器緩存機制回答的很透徹)
9、static const等等的用法,(能說出越多越好)
四、數(shù)據(jù)結構或者算法:
1、《離散數(shù)學》范圍內(nèi)的一切問題皆由可能被深入問到(這個最坑爹,最重要,最體現(xiàn)功底,最能加分,特別是各類樹結構的實現(xiàn)和應用)
2、各類排序:大根堆的實現(xiàn),快排(如何避免最糟糕的狀態(tài)?),bitmap的運用等等
3、hash, 任何一個技術面試官必問(例如為什么一般hashtable的桶數(shù)會取一個素數(shù)?如何有效避免hash結果值的碰撞)
五、網(wǎng)絡編程:
1、tcp與udp的區(qū)別(必問)
2、udp調(diào)用connect有什么作用?
3、tcp連接中時序圖,狀態(tài)圖,必須非常非常熟練
4、socket服務端的實現(xiàn),select和epoll的區(qū)別(必問)
5、epoll哪些觸發(fā)模式,有啥區(qū)別?(必須非常詳盡的解釋水平觸發(fā)和邊緣觸發(fā)的區(qū)別,以及邊緣觸發(fā)在編程中要做哪些更多的確認)
6、大規(guī)模連接上來,并發(fā)模型怎么設計
7、tcp結束連接怎么握手,time_wait狀態(tài)是什么,為什么會有time_wait狀態(tài)?哪一方會有time_wait狀態(tài),如何避免time_wait狀態(tài)占用資源(必須回答的詳細)
8、tcp頭多少字節(jié)?哪些字段?(必問)
9、什么是滑動窗口(必問)
10、connect會阻塞,怎么解決?(必考必問,提示:設置非阻塞,返回之后用select檢測狀態(tài))
11、如果select返回可讀,結果只讀到0字節(jié),什么情況?
12、keepalive 是什么東東?如何使用?
13、列舉你所知道的tcp選項,并說明其作用。
14、socket什么情況下可讀?
六、db:
1、MySQL,會考sql語言,服務器數(shù)據(jù)庫大規(guī)模數(shù)據(jù)怎么設計,db各種性能指標
最后2、:補充一個最最重要,最最坑爹,最最有難度的一個題目:一個每秒百萬級訪問量的互聯(lián)網(wǎng)服務器,每個訪問都有數(shù)據(jù)計算和I/O操作,如果讓你設計,你怎么設計?
總結
以上是生活随笔為你收集整理的linux后台开发具备能力集锦的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Delta3d框架学习--程序启动过程详
- 下一篇: Linux-(C/C++)动态链接库生成