Go 技術(shù)一面一般考哪些內(nèi)容
沒有假如,我就是一個(gè)Golang面試官,來自百度。同時(shí)我到百度之前也面過頭條,騰訊,小米,高德的golang,基本都過了。我回答應(yīng)該還是比較有說服力。
事實(shí)上,golang的問題只占我面試問題的20%左右。問東西的順序不一定是下面的順序,有的時(shí)候我會根據(jù)簡歷選擇二分法難度來問,直接問一個(gè)難度適中的問題。說上來就繼續(xù)二分法篩。下面是我問過的問題。
Go 技能考察
1.make和new差別,引用類型的意義
2.逃逸分析
3.channel的實(shí)現(xiàn)
4.gmp與gc,重點(diǎn)問題(網(wǎng)絡(luò)io等待隊(duì)列,讀寫屏障)
5.map的實(shí)現(xiàn),重點(diǎn)問題(sync.map的實(shí)現(xiàn),map實(shí)現(xiàn)隨機(jī)的方法)
期間會根據(jù)實(shí)際情況,從這幾個(gè)題發(fā)散問一些細(xì)節(jié),但是難度不會太難了。因?yàn)槲颐娴氖莗6級別的,問源碼有點(diǎn)欺負(fù)人了。另外會問一個(gè)開發(fā)性問題,你寫go遇到的坑點(diǎn)。從這里也可以發(fā)散問一些,但是不會問太多了。這幾個(gè)問題在10分鐘之內(nèi)肯定要問完的。我的面試范圍和我之前遇到過的面試基本都在 https://draveness.me/golang/ ,這個(gè)教程還是非常不錯(cuò)的。
PS:除了網(wǎng)頁版 https://draveness.me/golang/ 的作者還出了紙質(zhì)書,全書彩印,裝訂也十分精美,喜歡讀紙質(zhì)書的可以考慮入手。
這些問題不一定都要答上來,我是綜合考察的,我寫這幾個(gè)題目也不是讓大家去背這幾個(gè)題的,只是想告訴大家面試的難度一般如何,順便說幾個(gè)經(jīng)典題目。另外我主要關(guān)注的問題其實(shí)主要是mysql,redis,mq,算法,分布式。有人看的話,我就補(bǔ)充一下。
MySQL 考察
先聲明一下,我說的面試題都是個(gè)人向的,其實(shí)大家要面哪家公司的時(shí)候,搜那家公司的面試題用處其實(shí)不大,因?yàn)槊嬖嚬俨]有說題庫,或者統(tǒng)一標(biāo)準(zhǔn)的說法。如果我去了其他家公司當(dāng)面試官我一樣也會這么問(注意是提問方式和難度,題目我會換的)。而你碰到百度其他面試官,也很可能不會按我這么問。另外,因?yàn)槲颐娴男U械?0年的都有,所以具體問法也會靈活調(diào)整。說到校招,這次大校招我也被安排當(dāng)面試官了,校招的朋友也可以關(guān)注一下,如果能答出來,那就驚喜級別
補(bǔ)充一下我對mysql的考察方式。
1.八股,為什么用b+樹不用b樹
以第一題為分界線,答出來了問下面的
2.說說對mvcc的理解
3.幻讀是怎么解決的
4.redo,undo的作用和實(shí)現(xiàn)
5.事務(wù)的實(shí)現(xiàn)
答不出第一題就問,下面就是純八股了
2.索引怎么建
3.聯(lián)合索引最左前綴
4.聚簇索引與回表
如果覺得前半部分回答得不行,就會轉(zhuǎn)問后半部分的簡單題。和上面一樣,我問的問題和我遇見過的問題,基本都在《 MySQL技術(shù)內(nèi)幕 :InnoDB存儲引擎》姜承堯老師的書里面。
Redis 考察
redis的東西雖然不多,但是也是必問的。
?1.底層數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn),重點(diǎn)問題如:壓縮列表
2.aof與rdb,重點(diǎn)問題如:aof重寫機(jī)制
3.為什么用跳表
4.分布式鎖與redlock
5.三種分布式的結(jié)構(gòu)
6.大KEY?
基本上說明白一半就行了,和上面一樣,我問的問題和我遇見過的問題,大部分都在《Redis設(shè)計(jì)與實(shí)現(xiàn)》里面。因?yàn)閞edis的問題都不算難,如果全答上來了,我可能會問一個(gè):在擴(kuò)容rehash的時(shí)候scan掃集合,會不會掃到重復(fù)的數(shù)據(jù)。
9月9日 補(bǔ)充mq+es+分布式
那就補(bǔ)一下剩下的常問問題吧,mq主要是kafka。下面基本上工作3年之內(nèi)不怎么問,3年以上的說上1/3到1/2就通過。
?1.kafka的零拷貝和順序io 零拷貝最好說說細(xì)節(jié),其實(shí)就是用戶空間和內(nèi)核空間mmap
2.kafka的分片,分片的讀一致性(水位和活躍組?忘了叫什么了)和寫一致性怎么保證
3.es的倒排索引,和分片的查詢召回
4.分布式鎖,redis redlock etcd
5.分布式事務(wù) 2pc 3pc tcc
6.分布式共識協(xié)議 raft和paxos
7.分布式數(shù)據(jù)庫 CAP BASE的概念 etcd tidb的了解?
額外的問題,只有簡歷寫了我才會問
1.k8s的應(yīng)用和架構(gòu)(k8s其實(shí)我也沒深入研究,隨便)
2.監(jiān)控prometheus,比如里面時(shí)序數(shù)據(jù)庫TSDB
3.微服務(wù)架構(gòu)的內(nèi)容,比如服務(wù)發(fā)現(xiàn)和鏈路追蹤的工具
4.校招的話問問tcp
5.其他我感興趣的東西
6.算法題必問,一般先選一個(gè)中等偏難的,難度參見周賽第三題。要是很順暢就加一個(gè)第四題難度(困難),做不出來就換一個(gè)第二題難度(中等偏簡單)。
7.架構(gòu)設(shè)計(jì),因?yàn)槲抑皇且幻妫@種問題一般留給二面問。不過我給的建議是,mysql分表,redis緩存,kafka削峰這三板斧
最后
寫在最后,其實(shí)我的標(biāo)準(zhǔn)只有一個(gè),我的所有提問也是圍繞這一標(biāo)準(zhǔn)來的,就是讓我感受到你對技術(shù)的熱情,對技術(shù)路線有清晰規(guī)劃,并且正在進(jìn)行系統(tǒng)性地有條理的學(xué)習(xí)持續(xù)一年以上,比如看書,事實(shí)上我也是這么要求自己的。我相信滿足了這個(gè)條件,你面其他公司也很容易。