當(dāng)前位置:首頁(yè) > IT技術(shù) > 微信平臺(tái) > 正文

大廠面試過(guò)程復(fù)盤(pán)(微信/阿里/頭條,附答案篇)
2021-08-03 15:43:33

?

背景

本人前端,3年經(jīng)驗(yàn),由于個(gè)人的原因,決定跳槽,于是大概3月開(kāi)始找工作,總歷時(shí)大概2個(gè)月,面試了微信/阿里/頭條,三家都拿到了offer,來(lái)分享一下面經(jīng)。

問(wèn)題比較多,而且很多面試題都是跟個(gè)人項(xiàng)目相關(guān)的,項(xiàng)目相關(guān)的問(wèn)題借鑒意義不大,所以這里總結(jié)一些與項(xiàng)目無(wú)絕對(duì)關(guān)系的問(wèn)題,歡迎圍觀~

本文答案均以鏈接的形式給出,因?yàn)槲冶救说囊粋€(gè)特點(diǎn)就是回答題目一定要夠詳細(xì),而且大部分的題目我都寫(xiě)過(guò)文章或者公眾號(hào)轉(zhuǎn)發(fā)過(guò)文章了

?

整體流程

這里,我梳理了一些自己的心得,方便自己后面做直播,這里就當(dāng)預(yù)告一下,先放個(gè)思維導(dǎo)圖。

大廠面試過(guò)程復(fù)盤(pán)(微信/阿里/頭條,附答案篇)_微信

微信

筆試

  1. 數(shù)組交集,編寫(xiě)一個(gè)函數(shù),輸入兩個(gè)數(shù)組,輸出它們的交集。輸出數(shù)組中不含重復(fù)的元素,元素排列順序可隨意。

原題地址:https://leetcode-cn.com/problems/intersection-of-two-arrays-ii/

  1. 二叉樹(shù)的搜索,輸入一個(gè)普通二叉樹(shù)的根節(jié)點(diǎn),實(shí)現(xiàn)一個(gè)調(diào)度器,調(diào)用調(diào)度器的next()方法,將返回二叉樹(shù)中下一個(gè)最小的數(shù);調(diào)用迭代器的hasNext()方法,將返回是否存在下一個(gè)數(shù)。二叉樹(shù)節(jié)點(diǎn)是整數(shù),無(wú)序。

原題地址:https://leetcode-cn.com/problems/binary-search-tree-iterator/

  1. 三角形個(gè)數(shù),輸入一個(gè)非負(fù)整數(shù)的數(shù)組,如果將數(shù)組元素選作三角形的邊長(zhǎng),編寫(xiě)一個(gè)函數(shù),輸出這個(gè)數(shù)組可構(gòu)成的三角形數(shù)量。

原題地址:https://leetcode-cn.com/problems/valid-triangle-number/

  1. 數(shù)組切分問(wèn)題,輸入一個(gè)正序排列的整型數(shù)組,如果它可以被切分為1個(gè)或多個(gè)子序列,輸出True,反之False。子序列需為連續(xù)的整型數(shù)組,并且長(zhǎng)度至少為3。
例1:
輸入: [1,2,3,3,4,5]
輸出:True
解釋?zhuān)嚎梢郧蟹譃?個(gè)各自連續(xù)的子序列:
1, 2, 3
3, 4, 5
例2:
輸入: [1,2,3,3,4,4,5,5]
輸出:True
解釋?zhuān)嚎梢郧蟹譃?個(gè)各自連續(xù)的子序列:
1, 2, 3, 4, 5
3, 4, 5
例3:
輸入: [1,2,3,4,4,5]
輸出:False
解釋?zhuān)簾o(wú)法切分出長(zhǎng)度至少為3的子序列。

原題地址:https://leetcode-cn.com/problems/split-array-into-consecutive-subsequences/

  1. 一只青蛙一次可以跳上1級(jí)臺(tái)階,也可以跳上2級(jí)。求該青蛙跳上一個(gè)n級(jí)的臺(tái)階總共有多少種跳法.
  2. 求下面代碼的輸出
function test(a,b) {
  console.log(b)
  return {
    test:function(c){
      return test(c,a);
    }
  };
}

var retA = test(0);  
retA.test(2);  
retA.test(4);  
retA.test(8);
var retB = test(0).test(2).test(4).test(8);
var retC = test('good').test('bad');  
retC.test('good');  
retC.test('bad');
  1. top k

原題地址:https://leetcode-cn.com/problems/kth-largest-element-in-an-array/

  1. 閉包問(wèn)題及優(yōu)化
for (var i = 0; i < 4; i++) {
  setTimeout(function() {
    console.log(i);
  }, 300);
}

PS:一面筆試要求是30分鐘,前4道算法題,二面筆試題是15分鐘

與項(xiàng)目關(guān)系不大的問(wèn)答題

  1. 節(jié)流防抖(實(shí)現(xiàn)/場(chǎng)景/源碼,如lodash實(shí)現(xiàn)原理)
  2. 事件循環(huán)(瀏覽器/node/版本差異)(https://mp.weixin.qq.com/s/QgfE5Km1xiEkQqADMLmj-Q)
  3. setTimeout 實(shí)現(xiàn)原理(https://mp.weixin.qq.com/s/7qTRSMqaqG8XZ9rpEBhYNQ)
  4. react 和 vue 的區(qū)別
  5. Promise 原理
  6. 前端錯(cuò)誤監(jiān)控及容災(zāi)(https://mp.weixin.qq.com/s/prf-mXexBh1Ie-ctq9FnzA)
  7. 性能優(yōu)化(https://mp.weixin.qq.com/s/qXFd3f7CkEzz4u_1zl-TSw、https://mp.weixin.qq.com/s/dy1u2g9TeCoq2WOdPLqAXw、https://mp.weixin.qq.com/s/DJ8Fdq1_cIoW0_NYekZwFw、https://mp.weixin.qq.com/s/azeUIx0EA86EFQrtIRUKwQ、https://mp.weixin.qq.com/s/wDKKj5R8SYm-_75Zn1y30A、https://mp.weixin.qq.com/s/BOdnCYbMQfmCpUC3w3KZqw、https://mp.weixin.qq.com/s/FdG7uVIDXltNyskL3qh8Cw、太多了,貼不過(guò)來(lái)了,自己再總結(jié)吧)
  8. 談?wù)?node 的內(nèi)存泄漏(我的總結(jié)暫時(shí)沒(méi)時(shí)間寫(xiě),可以看看這篇,https://zhuanlan.zhihu.com/p/25736931)
  9. 開(kāi)發(fā)過(guò)程中遇到的最大挑戰(zhàn)是什么(梳理項(xiàng)目,得出難點(diǎn))
  10. 學(xué)習(xí)的動(dòng)力怎么來(lái)的,如何維持(有興趣可以留意一下我的直播)
  11. 瀏覽器的渲染機(jī)制是怎樣的(https://mp.weixin.qq.com/s/wcw30EUb2ds3AoW176WGeg)
  12. SSR 作用及優(yōu)缺點(diǎn)(seo/首屏快/開(kāi)發(fā)成本高等,我項(xiàng)目用的是vue ssr,沒(méi)專(zhuān)門(mén)總結(jié),可以先看這個(gè),https://zhuanlan.zhihu.com/p/35871344)
  13. 如何進(jìn)行狀態(tài)管理(vuex/redux)
  14. webpack 及瀏覽器的技術(shù)分享目的是什么,分享了什么,怎么做的分享(https://mp.weixin.qq.com/s/1FySzmVrNjS6wjgqALC96g、https://mp.weixin.qq.com/s/wcw30EUb2ds3AoW176WGeg)
  15. 如何進(jìn)行項(xiàng)目重構(gòu)(知乎很多討論,直接去參考就可以了,或者看看這個(gè)https://www.itzhai.com/refactoring/refactoring-principle.html)
  16. 進(jìn)程與線(xiàn)程的區(qū)別(https://www.zhihu.com/question/25532384)
  17. 說(shuō)說(shuō)知道的設(shè)計(jì)模式(參考掘金小冊(cè)子就可以了)
  18. CI/CD(https://mp.weixin.qq.com/s/MbeW8UNZ1fPekWcaNqmsCQ)

PS:由于面試全過(guò)程歷時(shí)比較長(zhǎng),一些題目已經(jīng)忘記了。大概記得這么點(diǎn),然后很看項(xiàng)目,每一輪都詳細(xì)問(wèn)了項(xiàng)目~

可能感興趣的問(wèn)答

  1. 面試一共幾輪

我本人一共 4 輪技術(shù)面 + 1 輪HR面。目前微信職級(jí)為9級(jí)以下的技術(shù)崗不用經(jīng)過(guò)面委,9級(jí)以下的一般4輪技術(shù)面,內(nèi)部轉(zhuǎn)崗可3輪技術(shù)面,9級(jí)及以上的需要走面委面試,大概形式是做份ppt去講自己的項(xiàng)目經(jīng)歷及其他技術(shù)項(xiàng)。9級(jí)及以上的就5-10輪技術(shù)面不等。

  1. 歷時(shí)多長(zhǎng)

我本人總歷時(shí)一個(gè)多月(相對(duì)來(lái)說(shuō)算很快了),所以如果你要面騰訊,千萬(wàn)不要裸辭,不對(duì),面什么都不要裸辭,這年頭不好混,慫一點(diǎn)。

  1. 整體面試流程是怎樣的

內(nèi)推->一面->二面->三面->四面->HR面->口頭offer->正式offer->背調(diào)->入職

每個(gè)階段耗時(shí)一到兩周的時(shí)間

  1. 微信工作地點(diǎn)

目前微信總部在廣州,大部分的組都在廣州,其中微信支付在深圳。

  1. 微信考算法多嗎

多,基本上就是算法+項(xiàng)目

阿里

筆試

  1. n階樓梯問(wèn)題(尾遞歸的優(yōu)化[函數(shù)最后調(diào)用自身可以減少中間變量|化遞歸為循環(huán)去優(yōu)化]/備忘錄優(yōu)化)
  2. 節(jié)流防抖的實(shí)現(xiàn)(分析筆試答案時(shí)問(wèn)到,總結(jié)差別,說(shuō)出應(yīng)用場(chǎng)景)
  3. 深拷貝(類(lèi)型考慮/Symbol/Date等的構(gòu)造/循環(huán)優(yōu)化/共用引用優(yōu)化等),這里貼2篇文章給大家參考
  4. 封裝一個(gè)只能輸入數(shù)字的React組件

問(wèn)答題

  1. 輸入U(xiǎn)RL后發(fā)生了什么(https://mp.weixin.qq.com/s/DLq_GIkdnuOayThfi3jI0A)
  2. 事件循環(huán)說(shuō)一下(https://mp.weixin.qq.com/s/QgfE5Km1xiEkQqADMLmj-Q)
  3. JS有幾種基本類(lèi)型,分別是什么,與對(duì)象的區(qū)別(不貼鏈接了,我認(rèn)為是前端的都應(yīng)該知道)
  4. JS 執(zhí)行過(guò)程中是如何保存上下文的(堆和棧,可以看極客時(shí)間的《瀏覽器工作原理》,或者參考我這里,https://mp.weixin.qq.com/s/klZ6j3Gj9cwHGQFys6Hdjg、https://mp.weixin.qq.com/s/HqADCzMGlIFDNnMRLsPTAA)
  5. 你認(rèn)為什么是前端
  6. 為什么想來(lái)阿里
  7. 最近在看什么書(shū)
  8. 微前端了解嗎(https://mp.weixin.qq.com/s/awBqvJmqWc7JGxwgB0QQZA、https://mp.weixin.qq.com/s/80S-RFmoZoq8KfCH6YZ_Tg、https://mp.weixin.qq.com/s/HVwcY8JGyrK8VcN1Ic9sWQ)
  9. 你想成為什么樣的人(個(gè)人成長(zhǎng)規(guī)劃)
  10. 項(xiàng)目中遇到的最大挑戰(zhàn)是什么,如何解決的
  11. node 大量日志怎么處理的(緩沖隊(duì)列)
  12. http2 的特點(diǎn)(https://mp.weixin.qq.com/s/OitrWEosrpuXh19o_TDasg)
  13. node 與其他語(yǔ)言有什么區(qū)別,其優(yōu)劣勢(shì)是什么
  14. csrf 的核心原理
  15. node 事件循環(huán)(https://mp.weixin.qq.com/s/QgfE5Km1xiEkQqADMLmj-Q)
  16. FCP/FMP/FP 分別是怎樣定義,如何統(tǒng)計(jì)(https://mp.weixin.qq.com/s/wDKKj5R8SYm-_75Zn1y30A)
  17. MySQL 題目,id 唯一,name 可以重復(fù),求 name 有重復(fù)的所有數(shù)據(jù)
  18. 有沒(méi)有推動(dòng)過(guò)什么東西
  19. 未來(lái)的一個(gè)發(fā)展是否是全棧,如何規(guī)劃(可以留意我的直播)
  20. 鏈路錄屏的原理(可以分析rrweb即可,參考例子,https://mp.weixin.qq.com/s/PxEzBrr3YF1jD84c_p1uAA)
  21. 鏈路錄屏法務(wù)問(wèn)題如何解決(屏蔽關(guān)鍵信息/用戶(hù)授權(quán)等)
  22. FMP 定義及統(tǒng)計(jì),w3c的草案你知道嗎(自行谷歌查找)
  23. react 項(xiàng)目的可持續(xù)維護(hù)性如何體現(xiàn)(自行谷歌查找)
  24. react hooks用過(guò)嗎,為什么要用(沒(méi)有專(zhuān)門(mén)總結(jié),自行谷歌查找)
  25. h5 和小程序有什么區(qū)別(自行谷歌查找)
  26. https加密原理,中間人攻擊知道嗎(https://mp.weixin.qq.com/s/aMYp6Y5n26r9vdQIom4g0w、https://mp.weixin.qq.com/s/sHtZhRTNOihmxap5sDD6xQ)
  27. ng 負(fù)載均衡的方式有哪些(https://mp.weixin.qq.com/s/u-XbBwGxHrhJGiMiiqz26w、https://mp.weixin.qq.com/s/o2Us4Zj6DO2NHGQVaHIa1A)
  28. CDN 有什么作用(https://github.com/LuckyWinty/fe-weekly-questions/issues/24)
  29. 不可變數(shù)據(jù)里面,immutable,刪除數(shù)組里面的列表
  30. 垃圾回收中,內(nèi)部函數(shù)返給上層的對(duì)象是如何管理的(參考這個(gè),https://mp.weixin.qq.com/s/m_cwfM0PgivmmCKaK-TviQ)
  31. es 靜態(tài)分析原理(https://zhuanlan.zhihu.com/p/33843378)
  32. 有一個(gè)很大很大的文件,如何統(tǒng)計(jì)文件里面重復(fù)最多的行是哪行(參考git的記錄存儲(chǔ))

頭條

筆試題

一面:

  1. 執(zhí)行代碼求輸出,并說(shuō)明為什么,嚴(yán)格模式下輸出有變化嗎,為什么
var a = function () {this.b = 3;}
var c = new a();
a.prototype.b = 9;
var b = 7;
a();

console.log(b);
console.log(c.b);
  1. 給定一個(gè)升序整型數(shù)組[0,1,2,4,5,7,13,15,16],找出其中連續(xù)出現(xiàn)的數(shù)字區(qū)間,輸出為["0->2","4->5","7","13","15->16"]
function summaryRanges(arr){
    //TODO
}
  1. 請(qǐng)實(shí)現(xiàn)以下的函數(shù),可以批量請(qǐng)求數(shù)據(jù),所有的URL地址在urls參數(shù)中,同時(shí)可以通過(guò) max 參數(shù)控制請(qǐng)求的并發(fā)度,當(dāng)所有請(qǐng)求結(jié)束之后,需要執(zhí)行 callback 回調(diào)函數(shù)。發(fā)請(qǐng)求的函數(shù)可以直接使用 fetch 即可
function sendRequest(urls: sring[],max:number,callback:()=>void){
    //TODO
}

二面:

  1. 實(shí)現(xiàn)一個(gè)字符串反轉(zhuǎn):輸入:www.toutiao.com.cn 輸出:cn.com.toutiao.www

要求:1.不使用字符串處理函數(shù) 2.空間復(fù)雜度盡可能小

類(lèi)似題:https://leetcode-cn.com/problems/reverse-words-in-a-string-iii/

  1. 不借助變量,交換兩個(gè)數(shù)。
function swap(a, b) {
    //TODO
}
答案詳見(jiàn):https://github.com/LuckyWinty/fe-weekly-questions/issues/513. 觀察者模式與發(fā)布訂閱者區(qū)別,并寫(xiě)出其模型答案詳見(jiàn):https://github.com/LuckyWinty/fe-weekly-questions/issues/49

與項(xiàng)目無(wú)絕對(duì)相關(guān)的問(wèn)答題

  1. vue 事件機(jī)制是如何實(shí)現(xiàn)的
  2. vue 的組件通信方式有哪些
  3. react fiber 的實(shí)現(xiàn)原理?
  4. vue 響應(yīng)式數(shù)據(jù)原理(vue2/vue3/依賴(lài)收集/發(fā)布訂閱/watcher消息隊(duì)列控制/Vue.set實(shí)現(xiàn))(https://mp.weixin.qq.com/s/zDv_IQ36o_rRD25xN9uyuw、https://mp.weixin.qq.com/s/hTygoAan4yH3V4XV9iE1Pw)
  5. vue 轉(zhuǎn)小程序怎么實(shí)現(xiàn)(ast/生命周期對(duì)齊/跨平臺(tái)模塊兼容/兼容細(xì)節(jié)點(diǎn)實(shí)現(xiàn)過(guò)程)(可以看看mqvue的實(shí)現(xiàn)原理)
  6. 性能指標(biāo),如何理解TTI,如何統(tǒng)計(jì),與FID有什么區(qū)別,如何實(shí)現(xiàn)統(tǒng)計(jì),還聊了很多性能的東西(https://mp.weixin.qq.com/s/wDKKj5R8SYm-_75Zn1y30A)
  7. 說(shuō)說(shuō)你所了解的安全問(wèn)題及防護(hù)方法(https://mp.weixin.qq.com/s/rU32rVM6Q-ele01ZB3RFzg)
  8. 說(shuō)說(shuō)你知道的設(shè)計(jì)模式,并舉個(gè)對(duì)應(yīng)的模式例子(https://mp.weixin.qq.com/s/x3OCgS_knmM4D5zNSIVGRg)
  9. 未來(lái)規(guī)劃及學(xué)習(xí)方法
  10. 你覺(jué)得你是怎樣拿到京東校招的sp的
  11. 遇到的最大挑戰(zhàn)/過(guò)去的最大收獲分別是什么

我本人的博客/公眾號(hào),似乎面試官都看過(guò),都知道我學(xué)過(guò)什么,知道什么,所以很多我博客上有的東西都沒(méi)問(wèn),甚至我引申到過(guò)去,都不讓說(shuō),有種沒(méi)機(jī)會(huì)表現(xiàn)的感覺(jué),哈哈

感受&更多學(xué)習(xí)資料

其實(shí)單看問(wèn)題,參考性還是比較小的,畢竟面試官主要會(huì)根據(jù)簡(jiǎn)歷去發(fā)問(wèn)。這里的一個(gè)感受就是,項(xiàng)目中遇到的最大挑戰(zhàn),這個(gè)問(wèn)題真不好答,我當(dāng)時(shí)答得也不夠好,后面又回去總結(jié)了一波項(xiàng)目,建議大家都好好總結(jié)一下自己平時(shí)遇到的問(wèn)題,尋根究底。

這部分的題目,我會(huì)同步到我的每周N題上,歡迎大家來(lái)交流答案啊。想刷題的也可以來(lái),地址如下:https://github.com/LuckyWinty/fe-weekly-questions/issues

有很多知識(shí)點(diǎn),雖然我沒(méi)被問(wèn)到,但是我寫(xiě)了不少文章,感興趣的話(huà)可以關(guān)注一下我的博客,地址如下:https://github.com/LuckyWinty/blog

更多我覺(jué)得比較好的博客,地址如下:

  • http://blog.poetries.top/FE-Interview-Questions/


最后
  • 歡迎加我微信(winty230),拉你進(jìn)技術(shù)群,長(zhǎng)期交流學(xué)習(xí)...

  • 歡迎關(guān)注「前端Q」,認(rèn)真學(xué)前端,做個(gè)專(zhuān)業(yè)的技術(shù)人...

大廠面試過(guò)程復(fù)盤(pán)(微信/阿里/頭條,附答案篇)_微信_(tái)02

本文摘自 :https://blog.51cto.com/u

開(kāi)通會(huì)員,享受整站包年服務(wù)立即開(kāi)通 >