題主2019年非985/211非計算機專業(yè)本科畢業(yè)(野生程序員),之前在騰訊實習了半年多+畢業(yè)后在騰訊工作了一年
年中的時候因個人原因氓皱,打算離開騰訊路召,到外面看看,投了若干簡歷波材,最終面試了字節(jié)跳動股淡、蝦皮、快手廷区、拼多多這4家公司唯灵。有的喜有的憂,本文是對本次面試的一個總結(jié)躲因。
快手
快手是最早約的面試早敬,在boss直聘上投完大概幾天就約了。也是我本次第一家面試的公司大脉。時間某個工作日的晚上8點搞监,那天早早溜回家面試了,是在帕螅客網(wǎng)上進行的
主要問的問題如下:
- react16新增了哪些生命周期琐驴、有什么作用,為什么去掉某些15的生命周期(寫過碼看過文檔都能答上了)
- fiber怎樣的秤标,如何實現(xiàn)異步渲染(鏈表/可中斷)
- redux和redux-saga的區(qū)別和原理
- 項目中用到的saga-duck是個什么東西
- useEffect的實現(xiàn)原理(坦白說自己沒看過react的實現(xiàn)绝淡,就說了下preact的實現(xiàn))
- 異步渲染和舊版的diff的區(qū)別
- babel實現(xiàn)轉(zhuǎn)碼的過程(詞法/語法分析)
- 項目的技術(shù)棧怎么選型(這種問題好幾次都被問到,感覺我真的不太知道怎么答)
- 小程序底層實現(xiàn)原理了解多少(說了下雙線程模型/預(yù)加載webview)
- 項目nodeJs應(yīng)用異常退出如何處理(pm2/uncaughtException事件等)苍姜、日志上報怎么做(輸出重定向到文件牢酵,elk服務(wù)傳傳到kibana)
- graphic schema怎么設(shè)計(說了下我對于項目中的理解,資源維度衙猪,感覺回答不太好)
- 有哪些技術(shù)驅(qū)動業(yè)務(wù)的案例(說了下這個插件的思路和webpack一些優(yōu)化)
最后寫了一道算法:最大乘積子序列馍乙,有正負數(shù)的情況布近。應(yīng)該對應(yīng)于這個leetcode題目。這里我理解錯題意以為這個序列是可以不連續(xù)的丝格,而且對于理解錯的題意也用了一種錯誤的寫法撑瞧,用了o(n2)的一種實現(xiàn)。然后面試官提示說o(n)显蝌,最后還是沒做出來预伺。這個題目其實自己在之前的刷題的時候自己也是比較順利能解出來了,這里有點可惜曼尊,面試臨場代碼能力還是有待加強
最后面試官大概講了下部門情況酬诀,他們那邊是深圳快影前端團隊,目前規(guī)模還不大涩禀,正在大力招人料滥。最后還問了下我如何看待目前部門工程化建設(shè)不足的問題,我表示這是一個很好的機會去挑戰(zhàn)自己(hhh)艾船。
當時這次面試之前葵腹,差不多兩年沒面試了(上一次面試還是2018年的8月),很多地方自己感覺也是表現(xiàn)不太好屿岂。雖然面試官最后說了認為我是一個比較優(yōu)秀的同學践宴,讓我當時迷之自信誤以為會有下一輪。過了一周沒有任何答復(fù)后爷怀,去boss直聘上問了下hr阻肩,答復(fù)說算法有待加強,第一次面試涼涼~
拼多多
拼多多投的是廣州的部門运授,好像是小程序團隊烤惊,通過一個同學內(nèi)推的
一面 47分鐘。某天晚上9點
- redux的理念(說了下action dispatch state啥的吁朦,單向數(shù)據(jù)流)
- react-redux中connect怎么實現(xiàn)(高階組件柒室、context注入store、subscribe訂閱store數(shù)據(jù)變化)
- mixin hoc 繼承的區(qū)別逗宜,優(yōu)缺點
- react diff如何實現(xiàn)
- react 舊版的diff用深度優(yōu)先還是廣度優(yōu)先雄右。為什么用深度優(yōu)先,廣度優(yōu)先能實現(xiàn)嗎(其實我認為廣度也能實現(xiàn)的纺讲,面試官問廣度有啥不好擂仍,我確實不知道..)
- diff的時間復(fù)雜度?為什么熬甚?(o(n)逢渔。提了下react優(yōu)化o(n3)->o(n))
- react-router實現(xiàn)原理(hash/html5 history)
- 客戶端路由hash/history實現(xiàn)的區(qū)別、原理
- 有哪些常見的http頭
- websocket/輪詢的好處和缺點 (性能乡括、兼容性)
- websocket的握手過程(urgrade websocket)
- tcp的握手過程
- tcp/udp的區(qū)別
- 一個應(yīng)用場景redux觸發(fā)幾次action如何設(shè)計(這個問題感覺有點迷复局,不知道有啥問冲簿,我回答也有點迷,面試官說可以了...)
- 盡可能多實現(xiàn)pdd app導(dǎo)航布局實現(xiàn)(就是類似4等分div并列排布)
- 如何清除浮動
- BFC實現(xiàn)原理
- 開放題:pdd首頁假設(shè)沒有任何優(yōu)化亿昏,盡可能多的想優(yōu)化的辦法(懶加載、打包優(yōu)化档礁、webpack速度角钩、代碼壓縮、雪碧圖呻澜、http2 balabala....)
二面 周日 下午2.30 35分鐘
- css的盒子模型(content-box border-box)
- 實現(xiàn)動畫有哪些方法 (js css)
- react mixing hoc 繼承 hook之間的區(qū)別/優(yōu)缺點
- 瀏覽器渲染出一個頁面的過程
- vue/react技術(shù)選型
- 項目相關(guān)递礼,項目重構(gòu)開發(fā)如何并行balabala...
- 項目中工程化進行了哪些優(yōu)化
- 項目中繼續(xù)進行優(yōu)化會從哪些方面去做(說了下webpack5 module fedration)
- nodejs項目的性能優(yōu)化
- linux文件權(quán)限(4 2 1 )
- 前端監(jiān)控怎樣實現(xiàn) (數(shù)據(jù)采集、上報羹幸、展示之類)
三面 本來約了去星期天廣州現(xiàn)場的脊髓,結(jié)果車票都買好了,前幾天栅受,hr說部門架構(gòu)調(diào)整将硝,崗位暫時不開放了屏镊。又涼了~
拼多多的面試時間還是很合適的依疼,周天+晚上9點,基本可以避免上班的尷尬(畢竟11 11 6...)而芥。問的問題也中規(guī)中矩吧律罢。不過也無緣了。拼多多的兩輪是比較少有的不需要手寫代碼的棍丐,都是電話面試误辑。
蝦皮
蝦皮通過一個同學內(nèi)推的,面的金融部門
蝦皮都是qq視頻面試+騰訊文檔word寫代碼
一面 周二早上
- http 302 301 307之間的區(qū)別
- 301和302對于seo來說哪個更好 (301)
- 跨域是什么歌逢、如何解決
- jsonp有什么缺點
- 圖片base64和外鏈的應(yīng)用場景巾钉,各有什么優(yōu)缺點(base64減少請求數(shù),但是會增加額外的體積)
- http緩存機制
- https的握手過程是怎樣的
- set/map的區(qū)別
- hook的局限性
- setState和hook的區(qū)別
- decorator的作用趋翻,編譯后是怎樣的(@decorator -> decorator(target)...)
- symbol是什么睛琳,一般用來做什么
- csrf 是什么 如何防范
- sql注入是什么,如何防范
- react 調(diào)用setState之后發(fā)生了什么
- nodejs事件循環(huán)機制
- pm2的原理踏烙,有哪些模式(cluster fork)
- docker和k8s有了解多少(k8s聽過沒用過)
- 移動端端一個元素拖動师骗,如何實現(xiàn)和優(yōu)化(節(jié)流、改變位置)
-for in/for of 看代碼輸出
- 幾道看代碼說輸出(忘了具體題目了)
- 描述鏈表的反轉(zhuǎn)怎樣實現(xiàn)讨惩,復(fù)雜度多少
編程
- 實現(xiàn)instanceOf
- 實現(xiàn)一個對象被for of遍歷
- 實現(xiàn)鏈表的添加辟癌、刪除。復(fù)雜度多少
一面考的都是一些基礎(chǔ)知識荐捻,需要一定牢固的基礎(chǔ)知識準備才行
二面 時間 一面之后的下午
- 給了兩段效果上都可以實現(xiàn)child 繼承 parent黍少,細節(jié)上的差別function child(){}
function parent(){}
child.prototype.proto = parent.prototype
child.prototype = new parent() - 一些代碼看輸出的題目寡夹。考點有函數(shù)this指向的問題
- 如何監(jiān)聽html外鏈資源加載失敗(面試官又追問了onerror 和addEventListener的error都能嗎厂置。面試官說onerror不行菩掏,具體我沒試過...)
- Mutation Observer、Intersection Observer使用場景(Intersection聽過沒用過)
- 127.0.0.1和0.0.0.0差別(一個只能通過localhost 昵济,一個可以通過本機ip或者localhost都行)
- 利用promise js sleep函數(shù)實現(xiàn)
- jsx轉(zhuǎn)換后是怎樣的
- redux compose函數(shù)做什么的智绸,中間件呢
- redux-saga是什么,和redux-thunk有什么區(qū)別
- dva有了解嗎
- umi.js有用過嗎
- req.pipe(res)
- stream 如何處理數(shù)據(jù)消費和數(shù)據(jù)生產(chǎn)的速率不一致問題
- writeable stream drain事件是做什么的(這是和一個控制讀寫速率有關(guān)的事件)
二面考得比較細访忿,問了很多看代碼問輸出的問題瞧栗,也問了一些比較細節(jié)的問題,有些細節(jié)的地方確實實際也沒接觸過海铆。
字節(jié)
字節(jié)是通過一個同學內(nèi)推的迹恐。字節(jié)也是自己比較中意的公司之一吧。為了準備字節(jié)面試卧斟,刷了不少leetcode殴边,雖然好像面試也沒怎么考,但是通過這段時間刷leetcode唆涝,不得不承認感覺自己的代碼能力也有一定提升
某個周日晚上20點
一面
- 常用的http狀態(tài)碼(101 200 204 301 302 304 307 400 404 500...)
- 301和302的區(qū)別(永久/臨時)
- 前端路由怎樣實現(xiàn)(hashchange事件 hack history.pushState)
- 前端路由直接刷新404怎樣處理(404時重定向到index.html 如nginx)
- 從前端到后端全鏈路如何設(shè)計實現(xiàn)一個登陸的流程(session方案找都、jwt)
- 什么是跨域,怎樣處理
- 簡單請求和復(fù)雜請求的區(qū)別
- 瀏覽器的緩存策略說下
- domain屬性解決跨域廊酣。幾種domain設(shè)置對跨域是否生效
- ts 泛型做什么的能耻,infer關(guān)鍵字的作用
題目
- 實現(xiàn)typescript的Paramters、ReturnType (考察infer關(guān)鍵字使用)
- 實現(xiàn)Promise.all (每個promise resolve結(jié)果存數(shù)組亡驰,最后一個promise返回時晓猛,把數(shù)組返回)
- 實現(xiàn)一個并發(fā)請求控制函數(shù),限制并發(fā)數(shù)
二面 一面之后馬上進行了二面
- jwt的原理(以前用過凡辱,比較好說)
- xss和csrf是怎樣的戒职,如何去解決
- pureComponent和Component的區(qū)別(前者shouldComponentUpdate默認比較props)
- react hoc hook解決了什么問題
- 有哪些常用的react hook,它們做了什么(useState useReducer`` useContext等等...)
- 項目實現(xiàn)一個中間層的意義(前端全鏈路日志打通)
- setState同步還是異步
- setState傳遞對象和函數(shù)有什么區(qū)別透乾?如何選擇
- 合成事件怎樣的洪燥,有什么好處
- 事件冒泡和事件捕獲的區(qū)別、react中的冒泡和捕獲呢(react中都是合成事件乳乌,無論冒泡和捕獲捧韵,對應(yīng)于原生事件都是冒泡)
- 怎樣看待加班(hhh 加班很正常啦,在騰訊的時候也是每天加班)
- 為啥選擇跳槽
題目
- 實現(xiàn)css垂直汉操、水平居中
- 實現(xiàn)bind函數(shù)
- 實現(xiàn)快速排序
三面 三面是leader面再来,某個周二下午進行
- 為什么之前拿了實習offer沒來/下一份工作有怎樣的預(yù)期
- graphql相比restful的區(qū)別、優(yōu)點缺點()
- 為啥選擇了redux-saga作為解決方案(解決異步優(yōu)雅/提供很多工具函數(shù))。redux的異步中間件方案有哪些芒篷,對比搜变。saga對比dva?
- graphql的鑒權(quán)在哪里做
- 協(xié)程是什么(語言層面實現(xiàn)的并發(fā))针炉,Go/nodeJs怎樣去實現(xiàn)協(xié)程(Go使用go關(guān)鍵字挠他、node可以使用Generator實現(xiàn)、我理解react16的異步渲染也是協(xié)程的實現(xiàn))
- react fiber的機制是怎樣的
- 鎖機制的作用篡帕,node和Go如何處理死鎖
- Go/node實現(xiàn)并發(fā)怎么做
- node和Go的優(yōu)缺點怎樣理解
編程
- 實現(xiàn)一個useState
三面可能因為簡歷寫了自己寫過一些Go(其實我只是個人項目的一些玩具)绩社,面試官問了不少node和Go的問題,然后我就先表明Go自己只是簡單學過赂苗,然后就按照我的理解回答node和Go的問題..幸好感覺回答得也7788吧
四面 因為某些原因,前3面發(fā)了offer后我選擇換了部門贮尉,于是就有了4面
- 介紹項目 項目難點
- 項目做了哪些優(yōu)化
- 一個廣告頁面拌滋,如何統(tǒng)計在不同平臺上的停留時間
- 為何選擇換工作
四面基本上都是聊項目,難得沒有做題猜谚。我們準備面試的時候一定也要先整理下自己的項目的一些難點之類的败砂,所以四面過程還是比較輕松的
字節(jié)感覺總體難度是這4個公司面試難度最大的,寫代碼也是最多的魏铅,而且感覺面試的時候?qū)懘a真的比平時加了不少debuff昌犹,這個還是非常考驗心理素質(zhì)和代碼能力的览芳。最后還是有驚無險拿了字節(jié)跳動的offer啦~
寫在最后
這就是本次跳槽面試經(jīng)歷小總結(jié)斜姥。忠告各位:目前大環(huán)境也確實不好,各位跳槽要慎重沧竟,千萬別裸辭~
碼字不易铸敏,據(jù)說點贊的人都能收割offer~
推薦閱讀
《飛馬計劃》到底是什么? 可以讓數(shù)萬程序員為之著迷
看完三件事
如果你覺得這篇內(nèi)容對你還蠻有幫助蒙具,我想邀請你幫我三個小忙:
點贊,轉(zhuǎn)發(fā)朽肥,有你們的 『點贊和評論』禁筏,才是我創(chuàng)造的動力。
關(guān)注公眾號 『 Java斗帝 』鞠呈,不定期分享原創(chuàng)知識融师。
同時可以期待后續(xù)文章ing??