金三銀四季,人心躁動,或為尋求新生,或為追逐非凡。作為一個技術從業者,往往容易把自己局限在某一狹小的圈子,你很認真的做一些事情,也的確從中得到了一些收獲,但是,倘若你敢於突破圈子,去接觸了解外面的世界,你或許會遭受“沖擊”,得到意想不到的收獲。從2000年前的pc時代,到互聯網,移動互聯網,再到如今的雲計算、人工智能、大數據乃至區塊鏈,你不難發現,技術的演進已經變得愈發快速,未來的世界將會怎樣,真是難以預測!但可以預知的是,未來的5-10年,雲計算將做為類似電信運營商這樣的基礎設施,帶動傳統行業更新升級以及包括人工智能、大數據、區塊鏈這樣的技術的發展。而我們需要做的是,打破傳統的束縛,時刻關注技術趨勢和行業動態,適時合理做出自己的判斷和選擇。這個世界,已經不是單純靠努力就能過得體面的時代了,也已經不是一件事情可以做一輩子的時代了,我想表達的就是選擇比努力可能更重要,至於怎么選擇,就需要你保持與時俱進的態度,有足夠系統的認知和判斷力。
下面總結分享下最近面試互聯網公司的一些題目,主要針對后台c/c++開發方向:
首先先做下分類,主要可以分為linux基礎、網絡知識、語言基礎、數據庫、宏觀認識幾個部分,下面逐一列出,希望對求職者有幫助:
一、linux基礎
1、linux進程間通信方式有哪些?各有什么特點?
2、linxu線程同步方式有哪些?
3、進程與線程有何區別?
4、fork一個進程,子進程會繼承父進程哪些東西?
5、如何查看進程打開了哪些文件?如何查看進程使用了哪些共享內存?
6、gdb如何調試一個正在運行的程序?gdb命令有哪些?
7、gdb實現原理是怎樣的?
8、gdb調試一個core文件,bt發現堆棧信息都是????,可能是什么原因導致?應該怎么排查?
9、一個程序啟動運行的過程是怎樣的?
10、編譯一個程序,都經過了哪些環節?
11、一個程序在內存中的占用空間分布是怎樣的?
12、共享內存內核是怎么實現的?
13、怎么查看一個程序鏈接了哪些動態庫?怎么查看一個動態庫包含哪些符號?怎么看是否未定義?
14、磁盤有哪些調度算法?
15、一個程序存在性能問題,如何定位它?
16、iostat 工具展示信息中util對應值含義是什么?
17、如何評判一個磁盤的好壞?
18、一般什么時候會使用到tcpdump,怎么使用?
19、epoll與select有什么區別?epoll有哪些觸發模式?什么場景會使用ET模式?
20、epoll在內核是怎么實現的,使用了什么數據結構?
21、什么是零拷貝?
22、mqtt協議有哪幾種發布服務質量?
二、網絡知識
1、tcp三次握手四次揮手過程是怎樣,請畫出來
2、tcp斷開連接時為什么要有time_wait狀態?
3、tcp與udp有何區別?
4、tcp/ip內核協議棧有了解嗎?
5、tcp協議如何保證數據可靠傳輸?
6、寫出建立一個tcp連接進行數據交互時,客戶端、服務端分別都調用了哪些接口?
7、如果tcp服務端只listen不accept,三次握手能成功嗎?
8、tcp有個問題叫“黏包”,有了解嗎?
9、recv函數返回0,-1,大於0分別代表什么?
10、tcp滑動窗口和擁塞控制了解嗎?
11、libuv內部大概是怎么實現的?利用了什么機制實現異步?
12、有了解哪些服務器並發處理模型?什么是leader-follow模型?
13、怎么保證一個發送數據可靠到達對端?
14、如果一個報文發出去了,對端接收不到,要怎么去定位排查?
15、如果一個服務端目前支持n個並發連接,如果只從服務端程序優化角度去提高支持並發數,有什么思路?
16、nginx和apache的區別是怎樣的?nginx怎么處理驚群效應?nginx負載均衡有哪幾種方式?nginx源碼有哪幾個模塊?
17、如何通過tcp去傳輸文件?如何實現斷點續傳?
18、如果服務器宕機或進程掛掉了,客戶端連接會怎樣?
19、已經建立好的tcp連接,怎么去檢測它是否存在異常?如果客戶端發現異常將連接斷開后,怎么觸發重新建立連接?
20、訪問www.baidu.com,都經過了哪些過程?
21、什么是泛域名?
三、語言基礎
1、實現一個mem_cpy函數
2、用c寫出快速排序算法
3、寫一個函數判斷機器是大端還是小端
4、volatile關鍵字作用是什么
5、一個帶static函數有什么特點
6、extern C是什么意思
7、printf是怎么支持變參輸入的?printf("%d")會輸出什么
8、指針運算、內存對齊、聯合體
9、c和c++各有什么特點
10、什么是多態、重載函數?
11、虛函數如何實現?
12、給一個類結構,寫出其構造函數、析構函數、拷貝構造函數
13、go語言有什么特點?協程是怎么實現的?相比較線程有什么優點?
14、python、lua、shell、php等熟悉嗎
四、數據庫
1、sqlite、mysql、mongodb、redis、memcache各有什么特點?
2、數據庫優化手段有哪些?
3、分析一個sql查詢語句會經過哪些步驟?
4、數據庫引擎至上而下大概是什么樣的?
5、數據庫如何保障ACID
6、mysql和redis都有緩存,分別都是維護什么樣的結構?
7、設計微信朋友圈對應的數據庫表結構
8、數據庫索引怎么實現,鎖特點
五、宏觀認識
1、什么是雲計算?
2、雲計算分為哪幾個部分?paas是什么、saas又是什么,舉一個實際的例子
3、談談你對docker的認識?
4、什么是區塊鏈?
5、如果讓你來設計一款用戶量很大的應用,你會怎么設計框架?
6、未來三年,你的規划是怎樣的,或者最想要的是什么?
7、為什么想跳槽?
8、轉型互聯網,你怎么看待這個選擇?
9、如何保障一個金融系統的可靠性?
10、分布式系統了解多少?什么是微服務?
以上大體包含了最近面試遇到的一些問題,還有一些忘記了的以及不好描述的(比如算法、邏輯題),僅供參考,希望對大家有幫助!