伺服器後台開發面試題總結
總結這個面試題並不是鼓勵大家去跳槽,每家公司都有他好的一面,也都會存在一定問題,不要以為別人家的公司什麼都是好的。因此跳槽之前,先想清楚為什麼要跳槽。切不可盲目跟風,但是一旦做出了換工作的決定,那麼就會面臨著頻繁的面試。
對於程序員來說,面試主要關注點還是你的技術能力。下面結合自己的面試經歷總結下對於伺服器後台開發崗位,面試官主要考察的是哪些知識點。有些知識點公眾號前面的文章已經涉及到,將其鏈接放在題目下,直接點擊即可跳轉到相關文章,供大家參考,對於公眾號沒有涉及到的知識點,本文暫時不做解答,後面將會以文章形式持續推出。
每個公司每個面試官的風格不一樣,因此想將所有的面試題都總結不可能,下面總結的是面試中出現頻率較高的面試題。
數據結構與演算法
系統編程
1:Linux下進程虛擬空間布局。
Linux內存管理
2:進程間通信方式有哪些,它們都適合用於哪些場景,你在項目總用過哪幾種?
3:線程同步的方式有哪些?
4:互斥鎖和讀寫鎖以及信號量
5:malloc函數的實現原理
6:什麼是死鎖?如何避免死鎖?
7:動態鏈接和靜態鏈接的區別?
Linux下C++靜態庫和動態庫詳解
8:進程和線程區別,多線程編程需要注意什麼?
進程與線程的一個簡單解釋
9:select和epoll的區別,epoll兩種模式(ET和LT)的區別。
C/C++語言
1:位元組對齊相關題目。
C/C++內存對齊詳解
2:static關鍵字的作用。
類的靜態成員
3:C++中智能指針的實現原理,shared_ptr和unique_ptr有什麼區別?
C++智能指針
4:C++中虛函數的作用,實現原理?
5:指針和引用的區別,什麼時候必須用引用?
6:const和define區別
7:stl有哪些容器,它們的特點是什麼,適合用於什麼場景?
8:當vector的內存用完了,它是如何擴展內存的?
9:map是怎麼實現的?查找複雜度是多少?能不能邊遍歷邊插入?
10:vector每次insert或erase之後,以前保存的iterator會不會失效?
TCP/IP協議
1:TCP和UDP協議的區別。
不放棄 (TCP協議與流通信)
傀儡 (UDP協議)
2:說說對TCP滑動窗口的理解。
魔鬼細節 (TCP滑窗管理)
3:tcp三次握手四次揮手的過程,為什麼要進行三次握手,四次揮手?
愛的傳聲筒 (TCP連接)
4:time_wait狀態產生的原因、危害以及如何避免?
Linux系統工具
1:用過的linux命令有哪些?
2:top/fee/vmstat/iotop/iostat/netstat等系統監控命令的使用,包括命令輸出某些關鍵欄位的含義。
Linux中load average意義
Linux下查看CPU信息[/proc/cpuinfo]
3:gdb調試相關問題,如怎麼調試coredump文件?
4:makefile相關問題
5:awk/sed/grep結合正則表達式的問題。
讓你事半功倍的正則表達式
grep命令基本用法
系統結構設計
1:如何設計一個分散式ID生成器
分散式ID生成器
2:系統容錯性設計
億級Web 系統的容錯性實踐【上】
億級Web 系統的容錯性實踐【中】
億級Web 系統的容錯性實踐【下】
3:高並發系統設計從哪些方面考慮
以上就是是面試伺服器後台開發崗位中出現頻率較高的知識點(三年及以下經驗,至於資深、架構師這些職位面試主要問些什麼,我也不太清楚),主要針對的是C++技術棧,至於JAVA/PYTHON等其它語言,其實也有一定的借鑒,如演算法、協議、系統設計等這些都是共通的。
伺服器後台開發還是有很多的東西要學,上面的總結只是讓大家在面試中做到心中有數,實際開發中要掌握的東西遠遠不只這些,需要大家在平時的學習過程中慢慢積累。後續將會整理伺服器後台開發中一些經典書籍和開源代碼供大家參考閱讀。


TAG:碼農有道 |