摘要:經(jīng)過半年的沉淀,加上對(duì),和分布式這塊的補(bǔ)齊,終于開始重拾面試信心,再次出征。面試官提示沒有提到線程的有內(nèi)核態(tài)的切換,程只在用戶態(tài)調(diào)度。三面綜合技術(shù)面這面面的是陣腳大亂,面試官采用刨根問底的方式提問,終究是面試經(jīng)驗(yàn)不夠,導(dǎo)致面試的節(jié)奏有點(diǎn)亂。
經(jīng)過半年的沉淀,加上對(duì)MySQL,redis和分布式這塊的補(bǔ)齊,終于開始重拾面試信心,再次出征。
鵝廠面試職位:go后端開發(fā)工程師,接受從Java轉(zhuǎn)語言
都知道鵝廠是cpp的主戰(zhàn)場,而以cpp為背景的工程師大都對(duì)os,network這塊要求特別高,不像是Java這種偏重業(yè)務(wù)層的語言,之前面試Java的公司側(cè)重還是在數(shù)據(jù)結(jié)構(gòu)、網(wǎng)絡(luò)、框架、數(shù)據(jù)庫和分布式。所以O(shè)S這塊吃的虧比較大
電話面試,隨便問了些技術(shù)問題,最后還問了個(gè)LeetCode里面medium級(jí)別的算法題,偏簡單
redis有沒有用過,常用的數(shù)據(jù)結(jié)構(gòu)以及在業(yè)務(wù)中使用的場景,redis的hash怎么實(shí)現(xiàn)的,rehash過程講一下和JavaHashMap的rehash有什么區(qū)別?redis cluster有沒有了解過,怎么做到高可用的?redis的持久化機(jī)制,為啥不能用redis做專門的持久化數(shù)據(jù)庫存儲(chǔ)?
了不了解tcp/udp,說下兩者的定義,tcp為什么要三次握手和四次揮手?tcp怎么保證有序傳輸?shù)模v下tcp的快速重傳和擁塞機(jī)制,知不知道time_wait狀態(tài),這個(gè)狀態(tài)出現(xiàn)在什么地方,有什么用?(參考quic)
知道udp是不可靠的傳輸,如果你來設(shè)計(jì)一個(gè)基于udp差不多可靠的算法,怎么設(shè)計(jì)?
http與https有啥區(qū)別?說下https解決了什么問題,怎么解決的?說下https的握手過程。
看你項(xiàng)目里面用了etcd,講解下etcd干什么用的,怎么保證高可用和一致性?
既然你提到了raft算法,講下raft算法的基本流程?raft算法里面如果出現(xiàn)腦裂怎么處理?有沒有了解過paxos和zookeeper的zab算法,他們之前有啥區(qū)別?
你們后端用什么數(shù)據(jù)庫做持久化的?有沒有用到分庫分表,怎么做的?
索引的常見實(shí)現(xiàn)方式有哪些,有哪些區(qū)別?MySQL的存儲(chǔ)引擎有哪些,有哪些區(qū)別?InnoDB使用的是什么方式實(shí)現(xiàn)索引,怎么實(shí)現(xiàn)的?說下聚簇索引和非聚簇索引的區(qū)別?
有沒有了解過協(xié)程?說下協(xié)程和線程的區(qū)別?
算法題一個(gè),劍指offer第51題,數(shù)組中的重復(fù)數(shù)字?
自己的回答情況,redis這塊沒啥問題,具體rehash有印象是漸進(jìn)式的,但是具體原理可能答的有點(diǎn)出入。tcp的time_wait這塊答的不是很好,之前沒有了解過quic機(jī)制的實(shí)現(xiàn),所以問可靠性u(píng)dp的時(shí)候,基本上腦子里就照著tcp的實(shí)現(xiàn)在說。https這塊沒啥說的,之前項(xiàng)目里面有用到類似的東西,研究的比較清楚了。raft算法這個(gè)因?yàn)閯偤迷谒?.824(才刷到lab2。。。),答的也湊合,不過paxos和zab算法確實(shí)不熟悉,直接說不會(huì)。MySQL這塊很熟了,包括索引,鎖,事務(wù)機(jī)制以及mvcc等等,沒啥說的,都已經(jīng)補(bǔ)齊了。協(xié)程和線程,主要說了go程和Java線程的區(qū)別以及go程的調(diào)度模型。面試官提示沒有提到線程的有內(nèi)核態(tài)的切換,go程只在用戶態(tài)調(diào)度。最后一個(gè)算法題,首先說使用HashMap來做,說空間復(fù)雜度能不能降到O(1),后面想了大概5min才想出來原地置換的思路。
主要針對(duì)自己最熟悉的項(xiàng)目,畫出項(xiàng)目的架構(gòu)圖,主要的數(shù)據(jù)表結(jié)構(gòu),項(xiàng)目中使用到的技術(shù)點(diǎn),項(xiàng)目的總峰值qps,時(shí)延,以及有沒有分析過時(shí)延出現(xiàn)的耗時(shí)分別出現(xiàn)在什么地方,項(xiàng)目有啥改進(jìn)的地方?jīng)]有?
如果請(qǐng)求出現(xiàn)問題沒有響應(yīng),如何定位問題,說下思路?
tcp 粘包問題怎么處理?
問了下緩存更新的模式,以及會(huì)出現(xiàn)的問題和應(yīng)對(duì)思路?
除了公司項(xiàng)目之外,業(yè)務(wù)有沒有研究過知名項(xiàng)目或做出過貢獻(xiàn)?
基本都沒有啥問題,除了面試官說項(xiàng)目經(jīng)驗(yàn)稍弱之外,其余還不錯(cuò)。
這面面的是陣腳大亂,面試官采用刨根問底的方式提問,終究是面試經(jīng)驗(yàn)不夠,導(dǎo)致面試的節(jié)奏有點(diǎn)亂。 舉個(gè)例子:
其中有個(gè)題是go程和線程有什么區(qū)別?
答:1 起一個(gè)go程大概只需要4kb的內(nèi)存,起一個(gè)Java線程需要1.5MB的內(nèi)存;go程的調(diào)度在用戶態(tài)非常輕量,Java線程的切換成本比較高。接著問為啥成本比較高?因?yàn)镴ava線程的調(diào)度需要在用戶態(tài)和內(nèi)核態(tài)切換所以成本高?為啥在用戶態(tài)和內(nèi)核態(tài)之間切換調(diào)度成本比較高?簡單說了下內(nèi)核態(tài)和用戶態(tài)的定義。接著問,還是沒有明白為啥成本高?心里瞬間崩潰,沒完沒了了呀,OS這塊依舊是痛呀,支支吾吾半天放棄了。
后面所有的提問都是這種模式,結(jié)果回答的節(jié)奏全無,感覺被套路了。大多度都能回答個(gè)一二甚至是一二三,但是再往后或者再深入的OS層面就GG了。
后面問了下項(xiàng)目過程中遇到的最大的挑戰(zhàn),以及時(shí)怎么解決的?
后面還問了一個(gè)問題定位的問題,服務(wù)器CPU 100%怎么定位?可能是由于平時(shí)定位業(yè)務(wù)問題的思維定勢,加之處于蒙蔽狀態(tài),隨口就是:先查看監(jiān)控面板看有無突發(fā)流量異常,接著查看業(yè)務(wù)日志是否有異常,針對(duì)CPU100%那個(gè)時(shí)間段,取一個(gè)典型業(yè)務(wù)流程的日志查看。最后才提到使用top命令來監(jiān)控看是哪個(gè)進(jìn)程占用到100%。果然陣腳大亂,張口就來,捂臉。。。
本來正確的思路應(yīng)該是先用top定位出問題的進(jìn)程,再用top定位到出問題的線程,再打印線程堆棧查看運(yùn)行情況,這個(gè)流程換平時(shí)肯定能答出來,但是,但是沒有但是。還是得好好總結(jié)。
最后問了一個(gè)系統(tǒng)設(shè)計(jì)題目(朋友圈的設(shè)計(jì)),白板上面畫出系統(tǒng)的架構(gòu)圖,主要的表結(jié)構(gòu)和講解主要的業(yè)務(wù)流程,如果用戶變多流量變大,架構(gòu)將怎么擴(kuò)展,怎樣應(yīng)對(duì)?
這個(gè)答的也有點(diǎn)亂,直接上來自顧自的用了一個(gè)通用的架構(gòu),感覺毫無亮點(diǎn)。后面反思應(yīng)該先定位業(yè)務(wù)的特點(diǎn),這個(gè)業(yè)務(wù)明顯是讀多寫少,然后和面試官溝通一期剛開始的方案的用戶量,性能要求,單機(jī)目標(biāo)qps是什么等等?在明確系統(tǒng)的特點(diǎn)和約束之后再來設(shè)計(jì),而不是一開始就是用典型互聯(lián)網(wǎng)的那種通用架構(gòu)自顧自己搞自己的方案。
3天后收到短信被拒
tcp/udp,http和https還有網(wǎng)絡(luò)這塊(各種網(wǎng)絡(luò)模型,已經(jīng)select,poll和epoll)一定要非常熟悉
一定要有拿的出手的項(xiàng)目經(jīng)驗(yàn),而且要能夠講清楚,講清楚項(xiàng)目中取舍,設(shè)計(jì)模型和數(shù)據(jù)表
分布式要非常熟悉
常見問題定位一定要有思路
操作系統(tǒng),還是操作系統(tǒng),重要的事情說三遍
系統(tǒng)設(shè)計(jì),思路,思路,思路,一定要思路清晰,一定要總結(jié)下系統(tǒng)設(shè)計(jì)的流程
一點(diǎn)很重要的心得,平時(shí)blog和專欄看的再多,如果沒有自己的思考不過是過眼云煙,根本不會(huì)成為自己的東西,就像內(nèi)核態(tài)和用戶態(tài),平常也看過,但是沒細(xì)想,突然要自己說,還真說不出來,這就很尷尬了。勿以浮沙筑高臺(tái),基礎(chǔ)這種東西還是需要時(shí)間去慢慢打牢,多去思考和總結(jié)。
相關(guān)資料補(bǔ)充學(xué)習(xí):
系統(tǒng)設(shè)計(jì)入門
系統(tǒng)設(shè)計(jì)典型問題的思考
協(xié)程的好處有哪些
Golang的goroutine是怎么實(shí)現(xiàn)的?
Context-Switch
從Java視角理解系統(tǒng)結(jié)構(gòu)(一)CPU上下文切換
某東南亞互聯(lián)網(wǎng)公司 一面技術(shù)面先筆試算法題,LeetCode medium難度,然后綜合問了下騰訊一面二面類似的問題+一個(gè)最熟悉的項(xiàng)目
二面研發(fā)經(jīng)理綜合面試綜合聊了下熟悉的技術(shù),遇到了最難的問題,講解一下項(xiàng)目的流程和架構(gòu)
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/72968.html
摘要:前言三年后端開發(fā)經(jīng)驗(yàn),面的目標(biāo)崗位是的高級(jí)后端開發(fā)。面試結(jié)束,應(yīng)該沒有后續(xù)。 前言 三年Java后端開發(fā)經(jīng)驗(yàn),面的目標(biāo)崗位是20k-35k的高級(jí)后端Java開發(fā)。 第一場,基本裸面,關(guān)于曾經(jīng)的項(xiàng)目部門答的不好,所以還是得好好準(zhǔn)備。 某C輪在線旅游公司 筆試 先做半個(gè)小時(shí)的筆試題,一共六個(gè)題目,兩道go語言的基礎(chǔ)題,一道斐波那契相關(guān),一道數(shù)據(jù)庫行列轉(zhuǎn)置,一道實(shí)現(xiàn)一個(gè)棧,還有一道是百萬計(jì)...
摘要:獲取的對(duì)象范圍方法獲取的是最終應(yīng)用在元素上的所有屬性對(duì)象即使沒有代碼,也會(huì)把默認(rèn)的祖宗八代都顯示出來而只能獲取元素屬性中的樣式。因此對(duì)于一個(gè)光禿禿的元素,方法返回對(duì)象中屬性值如果有就是據(jù)我測試不同環(huán)境結(jié)果可能有差異而就是。 花了很長時(shí)間整理的前端面試資源,喜歡請(qǐng)大家不要吝嗇star~ 別只收藏,點(diǎn)個(gè)贊,點(diǎn)個(gè)star再走哈~ 持續(xù)更新中……,可以關(guān)注下github 項(xiàng)目地址 https:...
摘要:好不容易在月號(hào)這天中午點(diǎn)左右接到了來自阿里的面試電話。這里會(huì)不斷收集和更新基礎(chǔ)相關(guān)的面試題,目前已收集題。面試重難點(diǎn)的和的打包過程多線程機(jī)制機(jī)制系統(tǒng)啟動(dòng)過程,啟動(dòng)過程等等掃清面試障礙最新面試經(jīng)驗(yàn)分享,此為第一篇,開篇。 2016 年末,騰訊,百度,華為,搜狗和滴滴面試題匯總 2016 年未,騰訊,百度,華為,搜狗和滴滴面試題匯總 各大公司 Java 后端開發(fā)面試題總結(jié) 各大公司 Jav...
摘要:但在的過程中過程中有可能被其他對(duì)象調(diào)用它的產(chǎn)生異常,如果你的程序不捕獲這個(gè)異常,線程就會(huì)異常終止,進(jìn)入狀態(tài),如果你的程序捕獲了這個(gè)異常,那么程序就會(huì)繼續(xù)執(zhí)行語句塊可能還有語句塊以及以后的代碼。 LinkedHashMap 的應(yīng)用 基于 LinkedHashMap 的訪問順序的特點(diǎn),可構(gòu)造一個(gè) LRU(Least Recently Used) 最近最少使用簡單緩存。 也有一些開源的緩存產(chǎn)...
閱讀 3596·2020-12-03 17:42
閱讀 2768·2019-08-30 15:54
閱讀 2223·2019-08-30 15:44
閱讀 571·2019-08-30 14:08
閱讀 970·2019-08-30 14:00
閱讀 1103·2019-08-30 13:46
閱讀 2784·2019-08-29 18:33
閱讀 2886·2019-08-29 14:11