一、C/C++
?
const
多型
什么類不能被繼承
二、網路
?
網路的位元組序
網路知識 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是什么?其大小與程式中全域變數的是否初始化有什么關系
使用過哪些行程間通訊機制,并詳細說明
多執行緒和多行程的區別(重點 面試官最最關心的一個問題,必須從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表解決沖突的方法
跳表插入洗掉程序
讓你實作一個哈希表,怎么做
?
九、設計模式
對于單例模式,有什么使用場景了,講了全域id生成器,他問我分布式id生成器怎么實作,說了zk,問我zk了解原理不,講了zab,然后就沒問啦,
除了單例模式,知道配接器模式怎么實作么,有什么用
十、分布式架構
CAP BASE理論
看你專案里面用了etcd,講解下etcd干什么用的,怎么保證高可用和一致性?
既然你提到了raft演算法,講下raft演算法的基本流程?raft演算法里面如果出現腦裂怎么處理?有沒有了解過paxos和zookeeper的zab演算法,他們之前有啥區別?
rpc有沒有了解
十一、系統設計
朋友之間的點對點關系用圖維護,怎么判斷兩人是否是朋友,并查集,時間復雜度,程序,
10g檔案,只有2g記憶體,怎么查找檔案中指定的字串出現位置,
Linux大檔案怎么查某一行的內容,
秒殺系統的架構設計
十億個數的集合和10w個數的集合,如何求它們的交集,
針對自己最熟悉的專案,畫出專案的架構圖,主要的資料表結構,專案中使用到的技術點,專案的總峰值qps,時延,以及有沒有分析過時延出現的耗時分別出現在什么地方,專案有啥改進的地方沒有?
如果請求出現問題沒有回應,如何定位問題,說下思路?
除了公司專案之外,業務有沒有研究過知名專案或做出過貢獻?
go程和執行緒有什么區別?
服務器CPU 100%怎么定位?
設計一個限流的演算法
定時器除了小根堆,還可以怎么做
專案性能瓶頸在哪,資料庫表怎么設計
在高并發的生產環境中(非除錯場景下),如果出現資料包的丟失,如何定位問題
一個每秒百萬級訪問量的互聯網服務器,每個訪問都有資料計算和I/O操作,如果讓你設計,你怎么設計?
總結
tcp/udp,http和https還有網路這塊(各種網路模型,已經select,poll和epoll)一定要非常熟悉
一定要有拿的出手的專案經驗,而且要能夠講清楚,講清楚專案中取舍,設計模型和資料表
分布式要非常熟悉
常見問題定位一定要有思路
作業系統,還是作業系統,重要的事情說三遍
系統設計,思路,思路,思路,一定要思路清晰,一定要總結下系統設計的流程
一點很重要的心得,平時blog和專欄看的再多,如果沒有自己的思考不過是過眼云煙,根本不會成為自己的東西,就像內核態和用戶態,平常也看過,但是沒細想,突然要自己說,還真說不出來,這就很尷尬了,勿以浮沙筑高臺,基礎這種東西還是需要時間去慢慢打牢,多去思考和總結,
C/C++Linux高級開發路線
對標騰訊C++后端開發
如果你對編程感興趣,想要深入學習,這里分享素材包及學習資源,還有免費教程哦
(包含C語言、C++、Windows、Qt、Linux相關知識點)~不論是小白還是進階者,在這里都能獲得成長,
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/196559.html
標籤:Linux
