靈魂三問:
2021年你漲薪了嗎?
你是否對于現(xiàn)在的工作滿意蛋辈?
你距離你的目標還差多少属拾?
“金三銀四”已經(jīng)過去将谊,換工作的大潮已經(jīng)退去,作為一年的跳槽季渐白,你是否已經(jīng)找到自己滿意的工作尊浓?薪資是否滿意?而對于還在原崗位堅持的小伙伴是否漲薪了呢纯衍?無論是跳槽還是漲薪栋齿,都需要有堅實的技術背景作為支撐,對于不滿現(xiàn)狀的朋友,又擔心自己的技術積累不夠,就需要一個具體可執(zhí)行的提升計劃了施流。
計劃的意思是了解當下市場招聘環(huán)境的變化吧享,并且根據(jù)對自己技術勢力的綜合評估對當前的市場行情的預估之后,分析技術差距羅列的一個學習列表塞弊,具體細節(jié)的實施,學習效果的驗證,要花費多長時間來完成他惋鸥,每天要投入多少精力學習等等,根據(jù)不同的情況來自己把握鹅龄。
首先給大家分享一份對標鵝廠T8(原2.3)職級的技術棧揩慕,供大家查漏補缺
c/c++ linux服務器開發(fā)免費學習地址:c/c++ linux后臺服務器高級架構師
1、數(shù)據(jù)結構與算法
視頻解析:5種紅黑樹的場景扮休,從Linux內核談到Nginx源碼迎卤,聽完醍醐灌頂
2、設計模式23種(沒有全部列舉)
3玷坠、工程管理
4蜗搔、代碼實現(xiàn)
視頻解析:linux下的epoll實戰(zhàn)揭秘——支撐億級IO的底層基石
5、方案分析
6八堡、池式結構
視頻解析:160行代碼帶你手寫線程池樟凄,面試不懼手撕( 完整版)
7、高性能組件
8兄渺、開源組件
9缝龄、協(xié)程的原理及實現(xiàn)
視頻解析:linux系統(tǒng)下協(xié)程的實現(xiàn)與原理剖析
10、基礎開源框架
視頻解析:為什么dpdk越來越受歡迎挂谍,看完以后叔壤,讓人醍醐灌頂
11、中間件開發(fā)
mysql
redis
nginx
mongodb口叙、dfs
視頻學習地址:Nginx源碼從模塊開發(fā)入手炼绘,3個項目弄透nginx模塊開發(fā)
12妄田、linux內核
視頻解析:90分鐘了解Linux內存架構俺亮,numa的優(yōu)勢驮捍,slab的實現(xiàn),vmalloc原理
13脚曾、性能分析
14东且、分布式框架
其次,跳槽找工作肯定是需要面試的斟珊,在這總結一些面試題供大家參考(因為是C/C++的苇倡,而鵝廠是cpp的主戰(zhàn)場,所以總結的是鵝廠的一些面試題)
c/c++ linux服務器開發(fā)免費學習地址:c/c++ linux后臺服務器高級架構師
【文章福利】小編還總結了其它一線互聯(lián)網(wǎng)大廠的面試題囤踩,需要的朋友可以加群812855908領取
C/C++
const
多態(tài)
什么類不能被繼承(這個題目非常經(jīng)典旨椒,我當時答出了private但是他說不好,我就沒想到final我以為那個是java的)
網(wǎng)絡
網(wǎng)絡的字節(jié)序
網(wǎng)絡知識 tcp三次握手 各種細節(jié) timewait狀態(tài)
tcp 與 udp 區(qū)別 概念 適用范圍
TCP四次揮手講一下過程堵漱,最后一次ack如果客戶端沒收到怎么辦综慎,為什么揮手不能只有三次,為什么time_wait勤庐。
對于socket編程示惊,accept方法是干什么的,在三次握手中屬于第幾次愉镰,可以猜一下米罚,為什么這么覺得。
tcp怎么保證有序傳輸?shù)恼商剑v下tcp的快速重傳和擁塞機制录择,知不知道time_wait狀態(tài),這個狀態(tài)出現(xiàn)在什么地方碗降,有什么用隘竭?
知道udp是不可靠的傳輸,如果你來設計一個基于udp差不多可靠的算法讼渊,怎么設計动看?
http與https有啥區(qū)別?說下https解決了什么問題爪幻,怎么解決的菱皆?說下https的握手過程。
tcp 粘包半包問題怎么處理挨稿?
keepalive 是什么東東仇轻?如何使用?
列舉你所知道的tcp選項叶组,并說明其作用。
socket什么情況下可讀历造?
nginx的epoll模型的介紹以及io多路復用模型
SYN Flood攻擊
流量控制甩十,擁塞控制
TCP和UDP區(qū)別船庇,TCP如何保證可靠性,對方是否存活(心跳檢測)
tcpdump抓包侣监,如何分析數(shù)據(jù)包
tcp如何設定超時時間
基于socket網(wǎng)絡編程和tcp/ip協(xié)議棧鸭轮,講講從客戶端send()開始,到服務端recv()結束的過程橄霉,越細越好
http報文格式
http1.1與http1.0區(qū)別窃爷,http2.0特性
http3了解嗎
http1.1長連接時,發(fā)送一個請求阻塞了姓蜂,返回什么狀態(tài)碼按厘?
udp調用connect有什么作用?
操作系統(tǒng)
進程和線程-分別的概念 區(qū)別 適用范圍 它們分別的通訊方式 不同通訊方式的區(qū)別優(yōu)缺點
僵尸進程
死鎖是怎么產(chǎn)生的
CPU的執(zhí)行方式
代碼中遇到進程阻塞钱慢,進程僵死逮京,內存泄漏等情況怎么排查。
有沒有了解過協(xié)程束莫?說下協(xié)程和線程的區(qū)別懒棉?
堆是線程共有還是私有,堆是進程共有還是私有览绿,棧呢
了解過協(xié)程嗎(我:攜程策严??饿敲?不了解嗚嗚嗚)
共享內存的使用實現(xiàn)原理(必考必問妻导,然后共享內存段被映射進進程空間之后,存在于進程空間的什么位置诀蓉?共享內存段最大限制是多少栗竖?)
c++進程內存空間分布(注意各部分的內存地址誰高誰低,注意棧從高道低分配渠啤,堆從低到高分配)
ELF是什么狐肢?其大小與程序中全局變量的是否初始化有什么關系(注意.bss段)
使用過哪些進程間通訊機制,并詳細說明(重點)
多線程和多進程的區(qū)別(重點 面試官最最關心的一個問題沥曹,必須從cpu調度份名,上下文切換,數(shù)據(jù)共享妓美,多核cup利用率僵腺,資源占用,等等各方面回答壶栋,然后有一個問題必須會被問到:哪些東西是一個線程私有的辰如?答案中必須包含寄存器,否則悲催)
信號:列出常見的信號贵试,信號怎么處理琉兜?
i++是否原子操作凯正?并解釋為什么?豌蟋?廊散??梧疲?允睹??
說出你所知道的各類linux系統(tǒng)的各類同步機制(重點)幌氮,什么是死鎖缭受?如何避免死鎖(每個技術面試官必問)
列舉說明linux系統(tǒng)的各類異步機制
exit() _exit()的區(qū)別?
如何實現(xiàn)守護進程浩销?
linux的內存管理機制是什么贯涎?
linux的任務調度機制是什么?
標準庫函數(shù)和系統(tǒng)調用的區(qū)別慢洋?
補充一個坑爹坑爹坑爹坑爹的問題:系統(tǒng)如何將一個信號通知到進程塘雳?(這一題哥沒有答出來)
Linux系統(tǒng)
linux的各種命令 給你場景讓你解決
Linux了解么,查看進程狀態(tài)ps普筹,查看cpu狀態(tài) top败明。查看占用端口的進程號netstat grep
Linux的cpu 100怎么排查,top jstack太防,日志妻顶,gui工具
Linux操作系統(tǒng)了解么
怎么查看CPU負載,怎么查看一個客戶下有多少進程
Linux內核是怎么實現(xiàn)定時器的
gdb怎么查看某個線程
core dump有沒有遇到過蜒车,gdb怎么調試
linux如何設置core文件生成
linux如何設置開機自啟動
linux用過哪些命令讳嘱、工具
用過哪些工具檢測程序性能,如何定位性能瓶頸的地方
netstat tcpdump ipcs ipcrm (如果這四個命令沒聽說過或者不能熟練使用酿愧,基本上可以回家沥潭,通過的概率較小 ^_^ ,這四個命令的熟練掌握程度基本上能體現(xiàn)面試者實際開發(fā)和調試程序的經(jīng)驗)
cpu 內存 硬盤 等等與系統(tǒng)性能調試相關的命令必須熟練掌握嬉挡,設置修改權限 tcp網(wǎng)絡狀態(tài)查看 各進程狀態(tài) 抓包相關等相關命令 必須熟練掌握
awk sed需掌握
gdb調試相關的經(jīng)驗钝鸽,會被問到
MongoDB
關于大數(shù)據(jù)存儲的(mongodb hadoop)各種原理 mongodb又問的深入很多
Redis
Redis內存數(shù)據(jù)庫的內存指的是共享內存么
Redis的持久化方式
Redis和MySQL有什么區(qū)別,用于什么場景庞钢。
redis有沒有用過拔恰,常用的數(shù)據(jù)結構以及在業(yè)務中使用的場景,redis的hash怎么實現(xiàn)的
問了下緩存更新的模式基括,以及會出現(xiàn)的問題和應對思路颜懊?
redis的sentinel上投票選舉的問題 raft算法
redis單線程結構有什么優(yōu)勢?有什么問題? 主要優(yōu)勢單線程河爹,避免線程切換產(chǎn)生靜態(tài)消耗使鹅,缺點是容易阻塞,雖然redis使用io復用epoll和輸入緩沖區(qū)把命令按照隊列先進先出輸入等等
你覺得針對redis這些缺點那些命令在redis上不可使用昌抠? 比如keys、hgetall等等這些命令 建議用scan等等 這方面闡述
你覺得為什么項目中沒有用mysql而用了es鲁僚,redis在這里到底起到了什么作用炊苫?因為架構上這里理解不清楚,最后回答自己都覺得有漏洞了
你覺得redis什么算有用冰沙? 有用侨艾? 是說存進去了還是說命中緩存?最后把緩存命中率是什么說了一遍
你們這邊redis集群是怎么樣子的
平常redis用的多的數(shù)據(jù)結構是什么拓挥,跳表實現(xiàn)唠梨,怎么維護索引,當時我說是一個簡單的二分侥啤,手寫二分算法当叭,并且時間復雜度是怎么計算出來的 (2的k次方等于n k等于logn)
MySQL
你們后端用什么數(shù)據(jù)庫做持久化的?有沒有用到分庫分表盖灸,怎么做的蚁鳖?
索引的常見實現(xiàn)方式有哪些,有哪些區(qū)別?MySQL的存儲引擎有哪些赁炎,有哪些區(qū)別醉箕?InnoDB使用的是什么方式實現(xiàn)索引,怎么實現(xiàn)的徙垫?說下聚簇索引和非聚簇索引的區(qū)別?
mysql查詢優(yōu)化
MySQL的索引讥裤,B+樹性質。
B+樹和B樹姻报,聯(lián)合索引等原理
mysql的悲觀鎖和樂觀鎖區(qū)別和應用己英,ABA問題的解決
項目性能瓶頸在哪,數(shù)據(jù)庫表怎么設計
假設項目的性能瓶頸出現(xiàn)在寫數(shù)據(jù)庫上逗抑,應該怎么解決峰值時寫速度慢的問題
假設數(shù)據(jù)庫需要保存一年的數(shù)據(jù)剧辐,每天一百萬條數(shù)據(jù),一張表最多存一千萬條數(shù)據(jù)邮府,應該怎么設計表
數(shù)據(jù)庫自增索引荧关。100臺服務器,每臺服務器有若干個用戶褂傀,用戶有id忍啤,同時會有新用戶加入。實現(xiàn)id自增,統(tǒng)計用戶個數(shù)同波?不能重復鳄梅,好像是這樣的。
mysql未檩,會考sql語言戴尸,服務器數(shù)據(jù)庫大規(guī)模數(shù)據(jù)怎么設計,db各種性能指標
算法
堆棧
有序數(shù)組排序冤狡,二分孙蒙,復雜度
常見排序算法,說下快排過程悲雳,時間復雜度
有N個節(jié)點的滿二叉樹的高度挎峦。1+logN
如何實現(xiàn)關鍵字輸入提示,使用字典樹合瓢,復雜度多少坦胶,有沒有其他方案,答哈希晴楔,如果是中文呢顿苇,分詞后建立字典樹?
hashmap的實現(xiàn)講一下吧税弃,講的很詳細了岖圈。講一下紅黑樹的結構,查詢性能等钙皮。
快排的時間復雜度蜂科,冒泡時間復雜度,快排是否穩(wěn)定短条,快排的過程
100w個數(shù)导匣,怎么找到前1000個最大的,堆排序茸时,怎么構造贡定,怎么調整,時間復雜度可都。
一個矩陣缓待,從左上角到右下角,每個位置有一個權值渠牲⌒矗可以上下左右走,到達右下角的路徑權值最小怎么走签杈。
四輛小車瘫镇,每輛車加滿油可以走一公里,問怎么能讓一輛小車走最遠。說了好幾種方案铣除,面試官引導我優(yōu)化了一下谚咬,但是還是不滿意,最后他說跳過尚粘。
MySQL的索引择卦,B+樹性質。
十億和數(shù)找到前100個最大的郎嫁,堆排序互捌,怎么實現(xiàn),怎么調整行剂。
布隆過濾器
hash表解決沖突的方法
跳表插入刪除過程
讓你實現(xiàn)一個哈希表,怎么做(當時按照Redis中哈希表的實現(xiàn)原理回答)
設計模式
對于單例模式钳降,有什么使用場景了厚宰,講了全局id生成器,他問我分布式id生成器怎么實現(xiàn)遂填,說了zk铲觉,問我zk了解原理不,講了zab吓坚,然后就沒問啦撵幽。
除了單例模式,知道適配器模式怎么實現(xiàn)么礁击,有什么用
分布式架構
CAP BASE理論
看你項目里面用了etcd盐杂,講解下etcd干什么用的,怎么保證高可用和一致性哆窿?
既然你提到了raft算法链烈,講下raft算法的基本流程?raft算法里面如果出現(xiàn)腦裂怎么處理挚躯?有沒有了解過paxos和zookeeper的zab算法强衡,他們之前有啥區(qū)別?
rpc有沒有了解
最后再送你一句來自丘吉爾的名言:
“成功不是最終的码荔,失敗也不是致命的漩勤,開始的勇氣才是最重要的!