2021年跳槽該如何準備?c/c++ linux服務器開發崗

靈魂三問:

2020年你漲薪了嗎?

2020年你的技術提升了嗎?

對於2020年的自己是否滿意?

“金三銀四”即將到來,作爲一年的跳槽季,這是找工作換工作的最佳時機,對於不滿現狀的朋友考慮在這個時間跳槽,但是看看招聘網站,要求玄的要死。面試幾輪之後更是沒有深沒有淺。經過一段時間的接觸之後,內心十分着急,又不知道怎麼辦,就是沒有一個具體可執行的計劃。這樣下去導致最壞的結果可能是今年的跳槽可能變成了換坑,跳槽是職業生涯有續線性的增長,無論收入還是title或者平臺,換坑是從這個坑跳到另外一個坑,從而進入一個惡性循環,給長期職業發展帶來很不利的影響,個人能力的成長長期維持在同一水平線上下浮動。

計劃的意思是瞭解當下市場招聘環境的變化,並且根據對自己技術勢力的綜合評估對當前的市場行情的預估之後,分析技術差距羅列的一個學習列表,具體細節的實施,學習效果的驗證,要花費多長時間來完成他,每天要投入多少精力學習等等,根據不同的情況來自己把握。

首先給大家分享一份對標騰訊T8(原2.3)職級的技術棧,供大家查漏補缺

c/c++ linux服務器開發學習地址:c/c++ linux服務器高級架構師

一、精進基石

1、數據結構與算法
在這裏插入圖片描述

2、設計模式23種(沒有全部列舉)
在這裏插入圖片描述

3、工程管理
在這裏插入圖片描述

視頻學習地址:設計模式很難嗎?看mark老師如何吊打設計模式

紅黑樹,在Linux內核的那些故事

二、高性能網絡設計

1、代碼實現
在這裏插入圖片描述

2、方案分析
在這裏插入圖片描述

視頻學習地址:linux多線程之epoll原理剖析與reactor原理及應用

深入理解websocket,爲你的項目多條思路

三、基礎組件實現

1、池式結構
在這裏插入圖片描述

2、高性能組件

在這裏插入圖片描述

3、開源組件
在這裏插入圖片描述

視頻學習地址:150行代碼,手把手寫完線程池(完整版)

四、協程的原理及實現

在這裏插入圖片描述

五、基礎開源框架

1、skynet
在這裏插入圖片描述

2、zeromq
在這裏插入圖片描述

3、dpdk
在這裏插入圖片描述

視頻學習地址:爲什麼dpdk越來越受歡迎,看完以後,讓人醍醐灌頂

聊聊linux服務器端高級架構—雲風的skynet

六、中間件開發

1、mysql
在這裏插入圖片描述

2、redis

在這裏插入圖片描述

3、nginx
在這裏插入圖片描述

4、mongodb
在這裏插入圖片描述

5、dfs
在這裏插入圖片描述

視頻學習地址:16萬行Nginx源碼,就該這麼讀

七、linux內核

1、進程管理
在這裏插入圖片描述

2、內存管理
在這裏插入圖片描述

3、文件系統
在這裏插入圖片描述

4、設備驅動
在這裏插入圖片描述

視頻學習地址:5個方面分析linux內核架構,讓你對內核不再陌生

linux內核,進程調度器的實現,完全公平調度器 CFS

八、性能分析

在這裏插入圖片描述

九、分佈式框架

在這裏插入圖片描述

視頻學習地址:去中心化,p2p,網絡穿透一起搞定

其次,跳槽找工作肯定是需要面試的,在這總結一些面試題供大家參考(因爲是C/C++的,而鵝廠是cpp的主戰場,所以總結的是鵝廠的一些面試題)

【文章福利】小編還總結了很多其它一線互聯網大廠的面試題,有需要的朋友可以加羣812855908領取
在這裏插入圖片描述

C/C++

const
多態
什麼類不能被繼承(這個題目非常經典,我當時答出了private但是他說不好,我就沒想到final我以爲那個是java的)

網絡

網絡的字節序
網絡知識 tcp三次握手 各種細節 timewait狀態
tcp 與 udp 區別 概念 適用範圍
TCP四次揮手講一下過程,最後一次ack如果客戶端沒收到怎麼辦,爲什麼揮手不能只有三次,爲什麼time_wait。
對於socket編程,accept方法是幹什麼的,在三次握手中屬於第幾次,可以猜一下,爲什麼這麼覺得。
tcp怎麼保證有序傳輸的,講下tcp的快速重傳和擁塞機制,知不知道time_wait狀態,這個狀態出現在什麼地方,有什麼用?
知道udp是不可靠的傳輸,如果你來設計一個基於udp差不多可靠的算法,怎麼設計?
http與https有啥區別?說下https解決了什麼問題,怎麼解決的?說下https的握手過程。
tcp 粘包半包問題怎麼處理?
keepalive 是什麼東東?如何使用?
列舉你所知道的tcp選項,並說明其作用。
socket什麼情況下可讀?
nginx的epoll模型的介紹以及io多路複用模型
SYN Flood攻擊
流量控制,擁塞控制
TCP和UDP區別,TCP如何保證可靠性,對方是否存活(心跳檢測)
tcpdump抓包,如何分析數據包
tcp如何設定超時時間
基於socket網絡編程和tcp/ip協議棧,講講從客戶端send()開始,到服務端recv()結束的過程,越細越好
http報文格式
http1.1與http1.0區別,http2.0特性
http3瞭解嗎
http1.1長連接時,發送一個請求阻塞了,返回什麼狀態碼?
udp調用connect有什麼作用?






















操作系統

進程和線程-分別的概念 區別 適用範圍 它們分別的通訊方式 不同通訊方式的區別優缺點
殭屍進程
死鎖是怎麼產生的
CPU的執行方式
代碼中遇到進程阻塞,進程僵死,內存泄漏等情況怎麼排查。
有沒有了解過協程?說下協程和線程的區別?
堆是線程共有還是私有,堆是進程共有還是私有,棧呢
瞭解過協程嗎(我:攜程???不瞭解嗚嗚嗚)
共享內存的使用實現原理(必考必問,然後共享內存段被映射進進程空間之後,存在於進程空間的什麼位置?共享內存段最大限制是多少?)
c++進程內存空間分佈(注意各部分的內存地址誰高誰低,注意棧從高道低分配,堆從低到高分配)
ELF是什麼?其大小與程序中全局變量的是否初始化有什麼關係(注意.bss段)
使用過哪些進程間通訊機制,並詳細說明(重點)
多線程和多進程的區別(重點 面試官最最關心的一個問題,必須從cpu調度,上下文切換,數據共享,多核cup利用率,資源佔用,等等各方面回答,然後有一個問題必須會被問到:哪些東西是一個線程私有的?答案中必須包含寄存器,否則悲催)
信號:列出常見的信號,信號怎麼處理?
i++是否原子操作?並解釋爲什麼???????
說出你所知道的各類linux系統的各類同步機制(重點),什麼是死鎖?如何避免死鎖(每個技術面試官必問)
列舉說明linux系統的各類異步機制
exit() _exit()的區別?
如何實現守護進程?
linux的內存管理機制是什麼?
linux的任務調度機制是什麼?
標準庫函數和系統調用的區別?
補充一個坑爹坑爹坑爹坑爹的問題:系統如何將一個信號通知到進程?(這一題哥沒有答出來)





















Linux系統

linux的各種命令 給你場景讓你解決
Linux瞭解麼,查看進程狀態ps,查看cpu狀態 top。查看佔用端口的進程號netstat grep
Linux的cpu 100怎麼排查,top jstack,日誌,gui工具
Linux操作系統瞭解麼
怎麼查看CPU負載,怎麼查看一個客戶下有多少進程
Linux內核是怎麼實現定時器的
gdb怎麼查看某個線程
core dump有沒有遇到過,gdb怎麼調試
linux如何設置core文件生成
linux如何設置開機自啓動
linux用過哪些命令、工具
用過哪些工具檢測程序性能,如何定位性能瓶頸的地方
netstat tcpdump ipcs ipcrm (如果這四個命令沒聽說過或者不能熟練使用,基本上可以回家,通過的概率較小 _ ,這四個命令的熟練掌握程度基本上能體現面試者實際開發和調試程序的經驗)
cpu 內存 硬盤 等等與系統性能調試相關的命令必須熟練掌握,設置修改權限 tcp網絡狀態查看 各進程狀態 抓包相關等相關命令 必須熟練掌握
awk sed需掌握
gdb調試相關的經驗,會被問到














MongoDB

關於大數據存儲的(mongodb hadoop)各種原理 mongodb又問的深入很多

Redis

Redis內存數據庫的內存指的是共享內存麼
Redis的持久化方式
Redis和MySQL有什麼區別,用於什麼場景。
redis有沒有用過,常用的數據結構以及在業務中使用的場景,redis的hash怎麼實現的
問了下緩存更新的模式,以及會出現的問題和應對思路?
redis的sentinel上投票選舉的問題 raft算法
redis單線程結構有什麼優勢?有什麼問題? 主要優勢單線程,避免線程切換產生靜態消耗,缺點是容易阻塞,雖然redis使用io複用epoll和輸入緩衝區把命令按照隊列先進先出輸入等等
你覺得針對redis這些缺點那些命令在redis上不可使用? 比如keys、hgetall等等這些命令 建議用scan等等 這方面闡述
你覺得爲什麼項目中沒有用mysql而用了es,redis在這裏到底起到了什麼作用?因爲架構上這裏理解不清楚,最後回答自己都覺得有漏洞了
你覺得redis什麼算有用? 有用? 是說存進去了還是說命中緩存?最後把緩存命中率是什麼說了一遍
你們這邊redis集羣是怎麼樣子的
平常redis用的多的數據結構是什麼,跳錶實現,怎麼維護索引,當時我說是一個簡單的二分,手寫二分算法,並且時間複雜度是怎麼計算出來的 (2的k次方等於n k等於logn)










MySQL

你們後端用什麼數據庫做持久化的?有沒有用到分庫分表,怎麼做的?
索引的常見實現方式有哪些,有哪些區別?MySQL的存儲引擎有哪些,有哪些區別?InnoDB使用的是什麼方式實現索引,怎麼實現的?說下聚簇索引和非聚簇索引的區別?
mysql查詢優化
MySQL的索引,B+樹性質。
B+樹和B樹,聯合索引等原理
mysql的悲觀鎖和樂觀鎖區別和應用,ABA問題的解決
項目性能瓶頸在哪,數據庫表怎麼設計
假設項目的性能瓶頸出現在寫數據庫上,應該怎麼解決峯值時寫速度慢的問題
假設數據庫需要保存一年的數據,每天一百萬條數據,一張表最多存一千萬條數據,應該怎麼設計表
數據庫自增索引。100臺服務器,每臺服務器有若干個用戶,用戶有id,同時會有新用戶加入。實現id自增,統計用戶個數?不能重複,好像是這樣的。
mysql,會考sql語言,服務器數據庫大規模數據怎麼設計,db各種性能指標









算法

堆棧
有序數組排序,二分,複雜度
常見排序算法,說下快排過程,時間複雜度
有N個節點的滿二叉樹的高度。1+logN
如何實現關鍵字輸入提示,使用字典樹,複雜度多少,有沒有其他方案,答哈希,如果是中文呢,分詞後建立字典樹?
hashmap的實現講一下吧,講的很詳細了。講一下紅黑樹的結構,查詢性能等。
快排的時間複雜度,冒泡時間複雜度,快排是否穩定,快排的過程
100w個數,怎麼找到前1000個最大的,堆排序,怎麼構造,怎麼調整,時間複雜度。
一個矩陣,從左上角到右下角,每個位置有一個權值。可以上下左右走,到達右下角的路徑權值最小怎麼走。
四輛小車,每輛車加滿油可以走一公里,問怎麼能讓一輛小車走最遠。說了好幾種方案,面試官引導我優化了一下,但是還是不滿意,最後他說跳過。
MySQL的索引,B+樹性質。
十億和數找到前100個最大的,堆排序,怎麼實現,怎麼調整。
布隆過濾器
hash表解決衝突的方法
跳錶插入刪除過程
讓你實現一個哈希表,怎麼做(當時按照Redis中哈希表的實現原理回答)














設計模式

對於單例模式,有什麼使用場景了,講了全局id生成器,他問我分佈式id生成器怎麼實現,說了zk,問我zk瞭解原理不,講了zab,然後就沒問啦。
除了單例模式,知道適配器模式怎麼實現麼,有什麼用

分佈式架構

CAP BASE理論
看你項目裏面用了etcd,講解下etcd幹什麼用的,怎麼保證高可用和一致性?
既然你提到了raft算法,講下raft算法的基本流程?raft算法裏面如果出現腦裂怎麼處理?有沒有了解過paxos和zookeeper的zab算法,他們之前有啥區別?
rpc有沒有了解


最後再送你一句來自丘吉爾的名言:

“成功不是最終的,失敗也不是致命的,開始的勇氣纔是最重要的!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章