【校招面經(jīng)分享】好未來-北京-視頻面試
點擊藍(lán)色“腦洞前端”關(guān)注我喲
加個“星標(biāo)”,帶你揭開大前端的神秘面紗!
?這是腦洞前端第「100」篇原創(chuàng)文章
作者:阿吉 整理&點評:lucifer
為什么要寫這個面經(jīng)?
lucifer 說讓我寫一下秋招面經(jīng),但我很菜,一開始不想寫的。最主要的是不想暴露自己的菜,雖然群佬都知道我比較菜。
lucifer 的群大概是我唯一一個每時每刻都能得到響應(yīng)的群吧。很開心當(dāng)時只是隨便加了一下,但認(rèn)識了好多大佬,經(jīng)常在群里問一些很沒頭腦的問題,但總有人會艾特我回答,盡可能去觸摸自己的知識邊界幫我解答,大家都在交流(技術(shù)+扯皮)。
比較遺憾沒偷學(xué)到 lucifer 的算法能力,也沒能白嫖到小漾的美圖。在 lucifer 群里開群語音,還有幸白嫖過川川(若川大佬)的聲音 hhhhhh。大概我挺希望小漾看到這個文章能主動點曬照一下 hhhh(感覺第二天我就沒了)。
面試體驗
好未來的四位面試官給予的面試體驗很舒服。四面面試官說話一直用“您”。四面面試快結(jié)束的時候:
我:“我們的時間價值并不對等,所以很感謝您愿意抽時間面試我”
面試官:“不,我們的時間是對等的,我們今天只是在平等的交流”。
好未來的面試體驗可能是目前秋招面試最舒服的,因為平時喜歡看很多閑書(面試很少會問的那種),把那些知識都有機(jī)會和面試官進(jìn)行了分享。
?面試官的問題用 Q 表示, 我的回答用 A 表示,序號表示第幾個。比如 Q5 表示面試官的第五個問題, A8 表示我對第八個問題的回答。
?
一面(男)
面試內(nèi)容
Q1: 聊項目,聊實習(xí)公司,問什么時候開始學(xué)前端 A1: 大二 Q2: 說一下排序算法。手撕冒泡,快排及其優(yōu)化 A2: blabla
?lucifer 小提示: 要可以手撕才行哦。
?
Q3: TCP 和 UDP 區(qū)別。TCP 為什么是可靠的?
A3: 《計網(wǎng) 自頂向下》,同時說了應(yīng)用場景。
Q4: 三次握手,四次揮手
A4: 過程,字段,為何兩次不行,各自作用。SYN 半連接攻擊。
Q5: 談一下 HTTP
A5: 詳細(xì)說 HTTP 1.0 1.1 2 3 細(xì)說文本格式和二進(jìn)制格式(這個很感謝 feiker 大表哥在群里說了下),以及 HPACK,應(yīng)用層和傳輸層的隊頭阻塞,多路復(fù)用和多路分解 瞎扯了一下 302 303 307 在 RFC 規(guī)范中的發(fā)展歷史,其實是跟瀏覽器大戰(zhàn)年代相關(guān)的。
Q6: 瀏覽器緩存
A6: 四級:Service Work, Memory Cache, Disk Cache, Push Cache HTTP 控制的緩存位于 Disk Cache,即強緩存和協(xié)商緩存。二者中間的啟發(fā)式緩存。
Q7: CDN
A7: content dispatch newwork。《計網(wǎng) 自頂向下》
Q8: 從 URL 到瀏覽器渲染,僅圍繞 HTTP 相關(guān)展開
A8: 因為僅涉及 HTTP,除了常規(guī)回答,談了下 webkit 里的三類資源加載器,以及網(wǎng)絡(luò)棧。
Q9: 編譯性語言 和 解釋性語言的區(qū)別
A9: java,js。引申 JVM 和 V8。以及 V8 在早些年間拒絕采用中間碼(《了不起的 nodejs》那本書比較老,里面就是無中間碼),后來又采用了。其實最開始的原因就是考慮到移動端存儲量。
Q10: 單線程的原因,好處
A10: JS 多線程對 DOM 的壞處。引申 webkit 多線程,看面試官比較感興趣,又分析了瀏覽器的多進(jìn)程架構(gòu),以及 Renderer 進(jìn)程的四個配置項。
二面-男
面試內(nèi)容
Q1: 聊項目,前端倒計時,IOS 兼容等 A1: ... Q2: 各種排序的時間復(fù)雜度 A2: ...
?lucifer 小提示: 不要死記硬背。
?
Q3: 手撕代碼
function?tpl(template,?data){
}
//?輸入
tpl('{%name%}',?{className:'hd',?name:123})
//?輸出
class="hd">123</div>
//?面試時編碼思路:根據(jù)瀏覽器的詞法分析去做,用stack。但存在問題。
A3:...
Q4: 看代碼說輸出,作用域
var?a?=?2;
function?fn1()?{
??var?a?=?1;
??console.log(this.a?+?a);
}
function?fn2()?{
??var?a?=?10;
??fn1();
}
fn2();
//?扯了一下this指向,以及C++中作用域的_variable表默認(rèn)添加。
A4: ...
Q5: 你對閉包的理解
A5: 函數(shù)執(zhí)行的保護(hù)機(jī)制。圍繞函數(shù)執(zhí)行機(jī)制(后來 lucifer 男神講可以從詞法作用域說,但畢竟是面試,感覺從函數(shù)執(zhí)行來講比較 ok),結(jié)合 V8 生成 AST 角度去談何為閉包。具像為作用域鏈,及其 2 個表象。優(yōu)缺點。理論應(yīng)用:在 Vue 中的應(yīng)用 Dep(),React 中的應(yīng)用 Redux dispatch,設(shè)計模式中單例模式。項目應(yīng)用:H5 前端自擬倒計時 destroyed 銷毀引用。
三面-女
面試內(nèi)容
Q1: 自我介紹 A1: 叫 AJ,來自 X,能干活。 Q2: 聊點你的學(xué)校經(jīng)歷吧 A2: 在校職務(wù)... Q3: 為什么選擇前端 A3: 經(jīng)過大一嘗試過 java,py,cnn 后決定,前端作為當(dāng)下的生存技能。興趣不局限于此。
?lucifer 小提示: 不要把自己局限到前端。
?
Q4: 為什么不現(xiàn)在就去學(xué)后端 A4: 我明白自己每個階段想要的是什么,當(dāng)下秋招的我應(yīng)該找一份匹配自己的工作。 Q5: 未來三年的職業(yè)規(guī)劃 A5: 業(yè)務(wù)崽。 Q6: 實習(xí)公司,對比百度、騰訊、小米,最不喜歡哪一個? A6: 從不同的層面去說最喜歡哪家。 Q7: 你覺得你的缺點有什么 A7: 不喜歡跟人爭執(zhí),浪費時間且無趣。 Q8: 為什么會投我們公司,了解我們嗎 A8: 很好的朋友在開課吧(然哥),給我說好未來還挺不錯的。秒投了。 Q9: 我們的業(yè)務(wù)有...你喜歡哪個業(yè)務(wù)啊 A10: 直播吧
四面-男
面試內(nèi)容
Q1: Vue 那種左右界面,中間的豎線可以滑動,左右布局跟著變化,怎么去做優(yōu)化,可以從哪些角度觸發(fā) A1: 不會。嘗試從 Vue Object.freeze() 和 提升圖層角度去說。 Q2: GPU 硬件加速渲染說下原理 A2: 不會。從 CSS3 觸發(fā)的角度說了下。 Q3: HTTPS 性能損耗在哪里? A3: TLS 握手。從《計算機(jī)網(wǎng)絡(luò) 自頂向下》那本書里提的角度簡單說了下。同時認(rèn)為非對稱加密算法對服務(wù)端資源消耗比較大。 Q4: 你如何去解決前端人員被需求壓滿,然后做業(yè)務(wù)覺得沒有技術(shù)成長 A4: 不局限在功能點的開發(fā),真正理解業(yè)務(wù),理解業(yè)務(wù)流程中的數(shù)據(jù)流向以及坑點。當(dāng)在當(dāng)前環(huán)境遇到技術(shù)瓶頸要跳槽時,帶著已有經(jīng)驗去下一個環(huán)境。 Q5. 談?wù)?WebSocket,然后怎么去改造。 A5: 簡單說了一點理論,直言沒實踐過。
?lucifer 小提示: 可以自己實現(xiàn)一個 WebSocket 玩玩就啥都知道了。
?
Q6: 直播業(yè)務(wù)中,常用的協(xié)議是什么 A6: 僅知道 webRTC。 Q7: 海量數(shù)據(jù)找出最大的 K 個,怎么找?時間復(fù)雜度是多少? A7: lucifer 之前的文章應(yīng)該有過,沒記牢固。簡單說了下。
?lucifer 小提示:我們只需要建立一個大小為 K 的小頂堆,N 個數(shù)分別入堆,最后堆頂?shù)脑鼐褪堑?K 大的。時間復(fù)雜度
?
Q8: 了解好未來嗎?為什么要來? A8: 做教育的。我哥推薦的。
PS: 面試白菜起步。SP 面是四面。
lucifer 點評
由于是校招的原因,整個面試過程比較注重的是基礎(chǔ)知識以及思考和學(xué)習(xí)方式。并且可以看出側(cè)重點依然是:
網(wǎng)絡(luò)(TCP,DNS,HTTP,HTTPS,瀏覽器緩存等) 瀏覽器渲染(GPU 硬件加速, webkit 原理等) 數(shù)據(jù)結(jié)構(gòu)與算法(排序算法,復(fù)雜度分析,堆的應(yīng)用等)
對于每一個部分,我們首先要做的是建立大局觀,這樣即使錯,也不會錯到哪去。大局觀建立好了,相當(dāng)于基本的知識框架有了,接下來就是填充知識框架了。這個階段最主要的就是鞏固復(fù)習(xí)和查缺補漏。經(jīng)過這樣的一個學(xué)習(xí),相信你也能夠在面試中嶄露頭角,獲得心儀的 offer。
大家也可以關(guān)注我的公眾號《腦洞前端》獲取更多更新鮮的前端硬核文章,帶你認(rèn)識你不知道的前端。
推薦閱讀
2、你不知道的 TypeScript 泛型(萬字長文,建議收藏)
4、immutablejs 是如何優(yōu)化我們的代碼的?
5、或許是一本可以徹底改變你刷 LeetCode 效率的題解書
6、想去力扣當(dāng)前端,TypeScript 需要掌握到什么程度?
?關(guān)注加加,星標(biāo)加加~
?
如果覺得文章不錯,幫忙點個在看唄
