大部分都是開放式問題,看面試者回答的程度逐漸往下問。
不問一些像語言特性、語法糖那種可以死記硬背,不需要理解的問題,更多考察面試者的編程/工程 經(jīng)驗和思維。
1. 系統(tǒng)
考察面試者對操作系統(tǒng)的了解程度,看基礎(chǔ)功。
1.1 內(nèi)存
說一下進程里的內(nèi)存,是組織、管理的,例如申請一塊內(nèi)存,操作系統(tǒng)具體會做什么? ★★★?
說一下邏輯內(nèi)存地址,是怎么映射成物理內(nèi)存地址?★★
1.2 調(diào)度
- 進程切換實際要做什么工作?如果了解協(xié)程,那協(xié)程切換又是怎么搞的?★★★
1.3 文件系統(tǒng)
- 操作系統(tǒng)從一個文件名,讀取到具體的文件內(nèi)容,實際干了什么事情?★★★★
2. 網(wǎng)絡(luò)
考察面試者對網(wǎng)絡(luò)常見問題的解決經(jīng)驗
2.1 tcp
先說一下三次握手,如果三次握手,client只做了第一次握手,就不管了,會引發(fā)服務(wù)器什么問題,有什么思路解決? ★★★
time_wait是啥?為啥會有time_wait?怎么解決time_wait過多的問題?★★
2.2 http
- http在弱網(wǎng)絡(luò)具體會有哪些問題?怎么解決?★★★?
3. 算法與數(shù)據(jù)結(jié)構(gòu)
考察面試者的編程思維
有100個視頻,100個用戶,要統(tǒng)計每個視頻被播放的uv,允許一定誤差,怎么做?★
有1000000000個視頻, 100個用戶,要統(tǒng)計每個視頻被播放的uv,允許一定誤差,怎么做?★★
有100個視頻, 1000000000個用戶,要統(tǒng)計每個視頻被播放的uv,允許一定誤差,怎么做?★★
有1000000000個視頻, 1000000000個用戶,要統(tǒng)計每個視頻被播放的uv,允許一定誤差,怎么做?★★★★
從一堆人中,隨機挑人,例如挑出A、B,便說A、B是一伙;C、D是一伙;挑出B、C是一伙,那么A、B、C、D都是一伙。然后隨機挑出兩個人,判斷他們是否一伙,要怎么做?★★★★
LRU是怎么做的?存在哪些問題,要怎么解決?★★★
4. 組件
考察面試者對于常用組件的掌握程度。
4.1 mysql
- mysql索引是怎么回事?★★
- mysql的鎖機制?寫sql語句時,要怎么避免鎖的粒度過大?★★★★
- mysql的事務(wù)是怎么做的?★★★★
4.2 redis
- redis如何做持久化?★★
- redis存在哪些性能問題?可以怎么解決?★★★
- redis的hash是怎么擴容的?★★
4.3 消息列隊
- 你熟悉的這個消息隊列具體工作原理是啥?存在哪些問題,怎么解決?★★★?
- 容災(zāi) ★★★
4.4 lsm
- leveldb/rocksdb 工作原理?讀寫流程?sst怎么合并?適用場景以及一些問題的優(yōu)化方法 ★★★?
- leveldb/rocksdb sst是怎么組織的,做了什么樣的優(yōu)化?★★★
5. 分布式
- raft/paxos 協(xié)議的原理?存在哪些問題?怎么優(yōu)化?★★★★★
- raft/paxos只是日志同步,那怎么基于raft/paxos 做高性能的強一致系統(tǒng)?★★★★
- 如何擴縮容?★★★