Go相關
- map、channel、slice的底層實現,
- sync.map、sync.pool、sync.Once的原理
- GC的過程、寫屏障的含義及作用
- GMP模型,觸發Goroutine切換的原因有哪些?for死循環會怎么樣?全局goroutine里面存儲什么?
- interface的底層實現,怎么判空?
- reflect的使用
- 逃逸分析
- context的使用
- go 性能問題的定位過程(pprof的使用)
- 協程池的使用
Mysql相關
- 索引的分類
- 為什么選擇B+樹實現索引?一般深度為多少?b+樹和紅黑樹的區別?
- 聚簇索引和非聚簇索引的區別
- 創建索引后,查詢讀取I/O的次數
- 索引的最左前綴原則
- mysql數據的索引優化以及失效
- 從學生表中查詢每個班的分數的前3名
- mysql的隔離級別?處理什么問題的(臟讀、幻讀、不可重復讀)
- mysql的主從復制過程?
- mysql的大表優化方式
Redis相關
- redis的數據類型以及日常的應用
- redis的發布/訂閱的原理
- zset的底層實現
- 數據緩存過期策略
- redis的部署模式
- redis為什么速度比較快
- reids的大key、熱key的處理
- 如何實現分布式鎖的
- 持久化策略及其對比
- 緩存雪崩、緩存擊穿、緩存穿透
Etcd相關
- etcd是什么?有什么優勢
- raft選主邏輯
- 日志復制
- 腦裂問題
- etcd的watch機制
- etcd如何實現配置下發和服務發現
- etcd對於偶數機器的集群的選主處理
- 選主實現邏輯
Prometheus相關
- 簡介
- 數據存儲原理
- 數據類型
Grpc相關
- 相較於restful的優勢
- 數據交互方式
- 限流(通過流模式傳輸時,發送方數據量過大,會發生什么?)
- protobuf和json的對比
- grpc負載均衡的實現
Linux相關
- awk
- poll、epoll、select
- I/O模型
網絡協議相關
- http2的優勢
- https的建連過程(7次握手)
- 對稱加密和非對稱加密
- icmp協議的原理
- tcp三次握手、四次揮手
- tcp 擁塞策略
- tcp的time_wait狀態和colse_wait狀態
- 如何解決tcp的粘包問題
- quic協議是什么
- 如何理解網絡模型
- http的狀態碼含義
智力題
-
25匹馬,每次只能比賽5組,最快幾次找到前3名
-
寶石問題(3個盒子,其中2個寶石,一個石頭;先隨機選取一個,然后剔除剩余兩個中的寶石;第三次選擇,選擇哪個為寶石的概率大?)
系統設計
-
RPC的設計
-
架構設計分單系統,每秒3000訂單有效期15分鍾,50W司機進行搶單操作,如果一直沒有搶單,則訂單失效
-
字符串hash算法的實現
-
敏感詞過濾
-
設計一個高可用的穩定的並發模型處理HTTP請求
其他
- 一致性hash算法
- 微服務概述
- 什么是死鎖,如何避免
- 限流策略
算法
-
如何原地交換兩個數
-
島嶼問題
-
數組中重復的數據
-
1到n亂序排列的數據,少了其中一個,找出這個數
-
二叉樹的右視圖
-
LRU緩存機制 (考慮並發訪問)
-
高並發的生產者消費者模式
-
通過中序遍歷序列和先序序列恢復二叉樹
-
爬樓梯問題
-
單鏈表逆序
-
單向鏈表排序
-
string1 = 1234dsafaserewr,string2 = 23aefasdfwer,求string3 = string1 + string2
-
二叉樹節點的公共祖先
-
二叉樹的最大深度
-
二叉樹的中序遍歷和層次遍歷
-
尋找兩個升序數組的第K大值
-
最長回文子串長度
-
最短回文串
-
合並兩個有序鏈表
-
全排列
-
接雨水
-
盛最多水的容器
-
Pow(x, n)
海量數據處理問題(面試官很喜歡問)
- hash
- 字典樹
- bitmap
- 布隆過濾器
- MapReduce
- 桶