好的始終在后面,蝦皮、快手、拼多多均失利,終拿字節(jié) offer
題主2019年非985/211非計(jì)算機(jī)專業(yè)本科畢業(yè)(野生程序員),之前在騰訊實(shí)習(xí)了半年多+畢業(yè)后在騰訊工作了一年,一直都是前端開發(fā)。
作者:flytam
來源:https://juejin.cn/post/6855649603497230350
年中的時(shí)候因個(gè)人原因,打算離開騰訊,到外面看看,投了若干簡(jiǎn)歷,最終面試了字節(jié)跳動(dòng)、蝦皮、快手、拼多多這4家公司。有的喜有的憂,本文是對(duì)本次面試的一個(gè)總結(jié)。
快手
快手是最早約的面試,在boss直聘上投完大概幾天就約了。也是我本次第一家面試的公司。時(shí)間某個(gè)工作日的晚上8點(diǎn),那天早早溜回家面試了,是在??途W(wǎng)上進(jìn)行的
主要問的問題如下:
react16新增了哪些生命周期、有什么作用,為什么去掉某些15的生命周期(寫過碼看過文檔都能答上了)fiber怎樣的,如何實(shí)現(xiàn)異步渲染(鏈表/可中斷)
redux和redux-saga的區(qū)別和原理項(xiàng)目中用到的
saga-duck是個(gè)什么東西useEffect的實(shí)現(xiàn)原理(坦白說自己沒看過react的實(shí)現(xiàn),就說了下preact的實(shí)現(xiàn))異步渲染和舊版的diff的區(qū)別
babel實(shí)現(xiàn)轉(zhuǎn)碼的過程(詞法/語法分析)
項(xiàng)目的技術(shù)棧怎么選型(這種問題好幾次都被問到,感覺我真的不太知道怎么答)
小程序底層實(shí)現(xiàn)原理了解多少(說了下雙線程模型/預(yù)加載
webview)項(xiàng)目nodeJs應(yīng)用異常退出如何處理(pm2/uncaughtException事件等)、日志上報(bào)怎么做(輸出重定向到文件,elk服務(wù)傳傳到kibana)
graphic schema怎么設(shè)計(jì)(說了下我對(duì)于項(xiàng)目中的理解,資源維度,感覺回答不太好)
有哪些技術(shù)驅(qū)動(dòng)業(yè)務(wù)的案例(說了下這個(gè)插件的思路和
webpack一些優(yōu)化)
最后寫了一道算法:最大乘積子序列,有正負(fù)數(shù)的情況。應(yīng)該對(duì)應(yīng)于這個(gè)leetcode題目。這里我理解錯(cuò)題意以為這個(gè)序列是可以不連續(xù)的,而且對(duì)于理解錯(cuò)的題意也用了一種錯(cuò)誤的寫法,用了o(n2)的一種實(shí)現(xiàn)。然后面試官提示說o(n),最后還是沒做出來。這個(gè)題目其實(shí)自己在之前的刷題的時(shí)候自己也是比較順利能解出來了,這里有點(diǎn)可惜,面試臨場(chǎng)代碼能力還是有待加強(qiáng)
最后面試官大概講了下部門情況,他們那邊是深圳快影前端團(tuán)隊(duì),目前規(guī)模還不大,正在大力招人。最后還問了下我如何看待目前部門工程化建設(shè)不足的問題,我表示這是一個(gè)很好的機(jī)會(huì)去挑戰(zhàn)自己(hhh)。
當(dāng)時(shí)這次面試之前,差不多兩年沒面試了(上一次面試還是2018年的8月),很多地方自己感覺也是表現(xiàn)不太好。雖然面試官最后說了認(rèn)為我是一個(gè)比較優(yōu)秀的同學(xué),讓我當(dāng)時(shí)迷之自信誤以為會(huì)有下一輪。過了一周沒有任何答復(fù)后,去boss直聘上問了下hr,答復(fù)說算法有待加強(qiáng),第一次面試涼涼~
拼多多
拼多多投的是廣州的部門,好像是小程序團(tuán)隊(duì),通過一個(gè)同學(xué)內(nèi)推的
一面 47分鐘。某天晚上9點(diǎn)
redux的理念(說了下actiondispatchstate啥的,單向數(shù)據(jù)流)react-redux中connect怎么實(shí)現(xiàn)(高階組件、context注入store、subscribe訂閱store數(shù)據(jù)變化)mixinhoc 繼承的區(qū)別,優(yōu)缺點(diǎn)reactdiff如何實(shí)現(xiàn)react舊版的diff用深度優(yōu)先還是廣度優(yōu)先。為什么用深度優(yōu)先,廣度優(yōu)先能實(shí)現(xiàn)嗎(其實(shí)我認(rèn)為廣度也能實(shí)現(xiàn)的,面試官問廣度有啥不好,我確實(shí)不知道..)diff的時(shí)間復(fù)雜度?為什么?(o(n)。提了下react優(yōu)化o(n3)->o(n))
react-router實(shí)現(xiàn)原理(hash/html5 history)客戶端路由
hash/history實(shí)現(xiàn)的區(qū)別、原理有哪些常見的
http頭websocket/輪詢的好處和缺點(diǎn) (性能、兼容性)websocket的握手過程(urgrade websocket)tcp的握手過程tcp/udp的區(qū)別
一個(gè)應(yīng)用場(chǎng)景redux觸發(fā)幾次action如何設(shè)計(jì)(這個(gè)問題感覺有點(diǎn)迷,不知道有啥問,我回答也有點(diǎn)迷,面試官說可以了...)
盡可能多實(shí)現(xiàn)pdd app導(dǎo)航布局實(shí)現(xiàn)(就是類似4等分div并列排布)
如何清除浮動(dòng)
BFC實(shí)現(xiàn)原理
開放題:pdd首頁假設(shè)沒有任何優(yōu)化,盡可能多的想優(yōu)化的辦法(懶加載、打包優(yōu)化、webpack速度、代碼壓縮、雪碧圖、http2 balabala....)
二面 周日 下午2.30 35分鐘
css的盒子模型(content-box border-box)
實(shí)現(xiàn)動(dòng)畫有哪些方法 (js css)
react mixing hoc 繼承 hook之間的區(qū)別/優(yōu)缺點(diǎn)
瀏覽器渲染出一個(gè)頁面的過程
vue/react技術(shù)選型
項(xiàng)目相關(guān),項(xiàng)目重構(gòu)開發(fā)如何并行balabala...
項(xiàng)目中工程化進(jìn)行了哪些優(yōu)化
項(xiàng)目中繼續(xù)進(jìn)行優(yōu)化會(huì)從哪些方面去做(說了下webpack5 module fedration)
nodejs項(xiàng)目的性能優(yōu)化
linux文件權(quán)限(4 2 1 )
前端監(jiān)控怎樣實(shí)現(xiàn) (數(shù)據(jù)采集、上報(bào)、展示之類)
三面 本來約了去星期天廣州現(xiàn)場(chǎng)的,結(jié)果車票都買好了,前幾天,hr說部門架構(gòu)調(diào)整,崗位暫時(shí)不開放了。又涼了~
拼多多的面試時(shí)間還是很合適的,周天+晚上9點(diǎn),基本可以避免上班的尷尬(畢竟11 11 6...)。問的問題也中規(guī)中矩吧。不過也無緣了。拼多多的兩輪是比較少有的不需要手寫代碼的,都是電話面試。
蝦皮
蝦皮通過一個(gè)同學(xué)內(nèi)推的,面的金融部門
蝦皮都是qq視頻面試+騰訊文檔word寫代碼
一面 周二早上
http 302 301 307之間的區(qū)別
301和302對(duì)于seo來說哪個(gè)更好 (301)
跨域是什么、如何解決
jsonp有什么缺點(diǎn)
圖片base64和外鏈的應(yīng)用場(chǎng)景,各有什么優(yōu)缺點(diǎn)(base64減少請(qǐng)求數(shù),但是會(huì)增加額外的體積)
http緩存機(jī)制
https的握手過程是怎樣的
set/map的區(qū)別
hook的局限性
setState和hook的區(qū)別
decorator的作用,編譯后是怎樣的(@decorator -> decorator(target)...)
symbol是什么,一般用來做什么
csrf 是什么 如何防范
sql注入是什么,如何防范
react 調(diào)用setState之后發(fā)生了什么
nodejs事件循環(huán)機(jī)制
pm2的原理,有哪些模式(cluster fork)
docker和k8s有了解多少(k8s聽過沒用過)
移動(dòng)端端一個(gè)元素拖動(dòng),如何實(shí)現(xiàn)和優(yōu)化(節(jié)流、改變位置)
-for in/for of 看代碼輸出
幾道看代碼說輸出(忘了具體題目了)
描述鏈表的反轉(zhuǎn)怎樣實(shí)現(xiàn),復(fù)雜度多少
編程
實(shí)現(xiàn) instanceOf實(shí)現(xiàn)一個(gè)對(duì)象被 for of遍歷實(shí)現(xiàn)鏈表的添加、刪除。復(fù)雜度多少
一面考的都是一些基礎(chǔ)知識(shí),需要一定牢固的基礎(chǔ)知識(shí)準(zhǔn)備才行
二面 時(shí)間 一面之后的下午
給了兩段效果上都可以實(shí)現(xiàn)child 繼承 parent,細(xì)節(jié)上的差別
function child(){}
function parent(){}
child.prototype.__proto__ = parent.prototype
child.prototype = new parent()一些代碼看輸出的題目。考點(diǎn)有函數(shù)
this指向的問題如何監(jiān)聽html外鏈資源加載失敗(面試官又追問了
onerror和addEventListener的error都能嗎。面試官說onerror不行,具體我沒試過...)Mutation Observer、Intersection Observer使用場(chǎng)景(Intersection聽過沒用過)127.0.0.1和0.0.0.0差別(一個(gè)只能通過localhost,一個(gè)可以通過本機(jī)ip或者localhost都行)利用promise js sleep函數(shù)實(shí)現(xiàn)
jsx轉(zhuǎn)換后是怎樣的
reduxcompose函數(shù)做什么的,中間件呢redux-saga是什么,和redux-thunk有什么區(qū)別dva有了解嗎
umi.js有用過嗎req.pipe(res)stream 如何處理數(shù)據(jù)消費(fèi)和數(shù)據(jù)生產(chǎn)的速率不一致問題
writeable stream
drain事件是做什么的(這是和一個(gè)控制讀寫速率有關(guān)的事件)
二面考得比較細(xì),問了很多看代碼問輸出的問題,也問了一些比較細(xì)節(jié)的問題,有些細(xì)節(jié)的地方確實(shí)實(shí)際也沒接觸過。
字節(jié)
字節(jié)是通過一個(gè)同學(xué)內(nèi)推的。字節(jié)也是自己比較中意的公司之一吧。為了準(zhǔn)備字節(jié)面試,刷了不少leetcode,雖然好像面試也沒怎么考,但是通過這段時(shí)間刷leetcode,不得不承認(rèn)感覺自己的代碼能力也有一定提升
某個(gè)周日晚上20點(diǎn)
一面
常用的http狀態(tài)碼(101 200 204 301 302 304 307 400 404 500...)
301和302的區(qū)別(永久/臨時(shí))
前端路由怎樣實(shí)現(xiàn)(
hashchange事件 hack history.pushState)前端路由直接刷新404怎樣處理(404時(shí)重定向到index.html 如nginx)
從前端到后端全鏈路如何設(shè)計(jì)實(shí)現(xiàn)一個(gè)登陸的流程(session方案、jwt)
什么是跨域,怎樣處理
簡(jiǎn)單請(qǐng)求和復(fù)雜請(qǐng)求的區(qū)別
瀏覽器的緩存策略說下
domain屬性解決跨域。幾種domain設(shè)置對(duì)跨域是否生效
ts 泛型做什么的,infer關(guān)鍵字的作用
題目
實(shí)現(xiàn)typescript的
Paramters、ReturnType(考察infer關(guān)鍵字使用)實(shí)現(xiàn)
Promise.all(每個(gè)promise resolve結(jié)果存數(shù)組,最后一個(gè)promise返回時(shí),把數(shù)組返回)實(shí)現(xiàn)一個(gè)并發(fā)請(qǐng)求控制函數(shù),限制并發(fā)數(shù)
二面 一面之后馬上進(jìn)行了二面
jwt的原理(以前用過,比較好說)
xss和csrf是怎樣的,如何去解決
pureComponent和Component的區(qū)別(前者shouldComponentUpdate默認(rèn)比較props)reacthoc hook解決了什么問題有哪些常用的react hook,它們做了什么(
useStateuseReducer`` useContext等等...)項(xiàng)目實(shí)現(xiàn)一個(gè)中間層的意義(前端全鏈路日志打通)
setState同步還是異步setState傳遞對(duì)象和函數(shù)有什么區(qū)別?如何選擇合成事件怎樣的,有什么好處
事件冒泡和事件捕獲的區(qū)別、react中的冒泡和捕獲呢(react中都是合成事件,無論冒泡和捕獲,對(duì)應(yīng)于原生事件都是冒泡)
怎樣看待加班(hhh 加班很正常啦,在騰訊的時(shí)候也是每天加班)
為啥選擇跳槽
題目
實(shí)現(xiàn)
css垂直、水平居中實(shí)現(xiàn)
bind函數(shù)實(shí)現(xiàn)快速排序
三面 三面是leader面,某個(gè)周二下午進(jìn)行
為什么之前拿了實(shí)習(xí)offer沒來/下一份工作有怎樣的預(yù)期
graphql相比restful的區(qū)別、優(yōu)點(diǎn)缺點(diǎn)()為啥選擇了
redux-saga作為解決方案(解決異步優(yōu)雅/提供很多工具函數(shù))。redux的異步中間件方案有哪些,對(duì)比。saga對(duì)比dva?graphql的鑒權(quán)在哪里做
協(xié)程是什么(語言層面實(shí)現(xiàn)的并發(fā)),Go/nodeJs怎樣去實(shí)現(xiàn)協(xié)程(Go使用go關(guān)鍵字、
node可以使用Generator實(shí)現(xiàn)、我理解react16的異步渲染也是協(xié)程的實(shí)現(xiàn))reactfiber的機(jī)制是怎樣的鎖機(jī)制的作用,node和Go如何處理死鎖
Go/node實(shí)現(xiàn)并發(fā)怎么做
node和Go的優(yōu)缺點(diǎn)怎樣理解
編程
實(shí)現(xiàn)一個(gè) useState
三面可能因?yàn)楹?jiǎn)歷寫了自己寫過一些Go(其實(shí)我只是個(gè)人項(xiàng)目的一些玩具),面試官問了不少node和Go的問題,然后我就先表明Go自己只是簡(jiǎn)單學(xué)過,然后就按照我的理解回答node和Go的問題..幸好感覺回答得也7788吧
四面 因?yàn)槟承┰?,?面發(fā)了offer后我選擇換了部門,于是就有了4面
介紹項(xiàng)目 項(xiàng)目難點(diǎn)
項(xiàng)目做了哪些優(yōu)化
一個(gè)廣告頁面,如何統(tǒng)計(jì)在不同平臺(tái)上的停留時(shí)間
為何選擇換工作
四面基本上都是聊項(xiàng)目,難得沒有做題。我們準(zhǔn)備面試的時(shí)候一定也要先整理下自己的項(xiàng)目的一些難點(diǎn)之類的,所以四面過程還是比較輕松的
字節(jié)感覺總體難度是這4個(gè)公司面試難度最大的,寫代碼也是最多的,而且感覺面試的時(shí)候?qū)懘a真的比平時(shí)加了不少debuff,這個(gè)還是非??简?yàn)心理素質(zhì)和代碼能力的。最后還是有驚無險(xiǎn)拿了字節(jié)跳動(dòng)的offer啦~
寫在最后
這就是本次跳槽面試經(jīng)歷小總結(jié)。忠告各位:目前大環(huán)境也確實(shí)不好,各位跳槽要慎重,千萬別裸辭~
The End
如果你覺得這篇內(nèi)容對(duì)你挺有啟發(fā),我想請(qǐng)你幫我個(gè)小忙:
1、點(diǎn)個(gè) 「在看」,讓更多的人也能看到這篇內(nèi)容
2、關(guān)注面試題庫官網(wǎng) https://bigerfe.com,讓我們成為長(zhǎng)期關(guān)系
點(diǎn)個(gè)『在看』支持下 
