大家好,我是若川。最近組織了源碼共讀活動《1個月,200+人,一起讀了4周源碼》,已經有超50+人提交了筆記,群里已經有超1200人,感興趣的可以點此鏈接掃碼加我微信?ruochuan12
本文來自讀者@AaronKwong 投稿。
他參與了四期源碼共讀,說對找工作很有幫助
。于是聯系他把最近大廠面試總結下來投稿。今天是他的生日,所以選擇在今天發文。
筆者@AaronKwong 2020.6 畢業于廣州某高水平大學,計算機學院,軟件工程專業。大四上學期開始實習并一直工作到時下。
2021.3 老東家在線教育項目解散,轉崗并開始復習。
8 月下旬開始投簡歷,boss 投遞 + 朋友內推,先后投遞了拼多多,yy 直播,歡聚,字節跳動,虎牙,基本上每天都在面,白天上班晚上面試,大概持續了兩周左右
面經
拼多多商家端一面(40 分鐘)
簡歷項目問詢 - 細節
垂直水平居中
一個簡單請求的 header 會有什么字段
map, filter, reduce 都怎么用
symbol 有了解嗎
ES5 繼承,ES6 類繼承,靜態方法
Promise 超時控制
DFS 找節點
node 有什么特性,適合用來做什么
midway 對比 egg 有什么優勢
typescript 有沒有實踐過
平時有用什么設計模式嗎
平時打包工具 - Webpack 相關
你有沒有哪些我沒問到你想說的
緩存相關,cdn 緩存處理
你有什么想問的
拼多多商家端二面(65 分鐘)
壓力面,質疑觀點
拍平數組
const?flatten?=?(list,?level?=?+Infinity)?=>?{//?...
};
const?array?=?[1,?[2,?[3,?4,?[5]],?3],?-4];
const?list1?=?flatten(array);
const?list2?=?flatten(array,?2);
console.log(list1);?//?[1,?2,?3,?4,?5,?3,?-4]
console.log(list2);?//?[1,?2,?3,?-4]
promise
const?myPromise?=?val?=>?Promise.resolve(val);
const?delay?=?duration?=>?{//?...
};
myPromise(`hello`).then(delay(1000)).then(val?=>?console.log(val));?//?一秒之后輸出?hello
拼多多商家端三面(30 分鐘)
項目細節問詢
Vue 源碼有讀嗎 - 響應式原理,nextTick
最近有沒有研究什么新技術
項目優化有哪些實踐
V8 如何執行一段代碼
72-編輯距離
226-翻轉二叉樹
性能優化的實踐
有其他想問的嗎
歡聚一面(90 分鐘)
項目細節,ci/cd 詳細問,重構詳細問,詳細介紹題目錄入
vue 的 history 和 hash 模式區別,hash 與 ssr
https 基本原理
ca 證書怎么確保真實性
cors 是什么,同域又是什么
怎么解決前后端通信跨域
可以 node 轉發繞過跨域,為什么瀏覽器還是要做 cors
除了 webpack proxy ,nginx,后端配 cors 頭,還有什么跨域方案
xss 攻擊怎么防范,除了轉譯呢,轉譯出來的那個叫什么
es6 的二進制操作?
說一下思路怎么去實現一個 promise
promise 怎么能夠保證 then 的順序執行
worker 有了解過嗎
ssr 的原理?
性能優化有哪些實踐
有沒有在研究什么
手寫:min 到 max 的隨機數,整數和小數的方案
場景:多個屬性,每個屬性都是數組,求屬性聚合結果
場景:用戶點擊按鈕沒反應,怎么去定位錯誤(除開 QA 環節能檢查到的錯誤)
有什么想問的
歡聚二三面
二面部門終面,三面 hr 面,現場一天面完,主要是和部門領導交流,關于項目組以及負責的模塊;了解薪酬福利相關
yy 直播一面(30 分鐘)
項目的 CI/CD 怎么配置的,jenkins 怎么部署,為何沒有直接部署單獨機器,內網互通去傳送文件發布,git 權限怎么配的
vue-router hash/history 區別
vuex 里面有哪些東西,分別用來干嘛的
vuex 分了模塊,有全局通用的內容是怎么配置的
除了直接調用命名空間模塊還有辦法直接訪問需要放在全局模塊下的東西嗎
Vue 的響應式原理
子組件的 data 變化,那么父子組件的更新是怎么樣進行的
雙向綁定,那么視圖數據更新怎么影響到 data 里的數據
Vue 的生命周期有哪些
項目內怎么通信 - (EventBus/emit-on/vuex)
EventBus 實現原理,有沒有多條事件總線的情況,怎么解決可能重名的問題
移動端里的單位 - rem/vh/vw
postCss rem=>px,設計稿上 750 寬度是怎么去算的
移動端有什么性能優化的點 - 虛擬滾動
typescript 有寫過嗎有了解嗎
說一下你理解的泛型
webpack loader 項目里有用哪些?
一個.mp4 文件加載的話需要用哪些 loader
有開發 webpack 插件嗎?是要怎么開發
http 有多少版本
http 1 2 3 的版本區別
http2 和 1 的區別,解決了什么東西
http3 解決了 http1 和 2 什么問題
http3 什么問題沒想起來
http 緩存
cdn 緩存是強緩存還是協商緩存
字節跳動 一面
輸出結果
var?a?=?3;
var?total?=?0;
var?result?=?[];
function?foo(a)?{var?i?=?0;for?(;?i?<?3;?i++)?{result[i]?=?function?()?{console.log(i,?a);total?+=?i?*?a;console.log(total);};}
}
foo(1);
result[0](?"0");
result[1](?"1");
result[2](?"2");
Promise 輸出順序
給一個 n,生成一個
[0, n-1)
亂序數組這個時間復雜度是多少,能進行優化嗎
看你寫的這個有用 sort,為什么是 O(nlogn)呢
還能再優化下嗎
說一下快排原理?
三路快排是怎么個三路法
還了解其他一些排序嗎
詳細說下歸并排序
穩定和不穩定排序怎么界定?
了解一些時間順序相關的 api 嗎
requestAnimationFrame 有了解過嗎
setImmediate 和 setTimeout 和 setInterval?
項目細節,最有成就感的需求是哪個?
base64 是怎么樣轉碼的
為何轉了 json 協議之后可以優化圖片上傳
如果公網上傳的話,怎么防止不被人拿來做圖床
xss 的話怎么防止
Vue 的生命周期有哪些
created 和 beforeMount 有何區別
render 函數和 jsx
Vue 怎么轉 js 代碼的?
computed 里面的懶更新是怎么實現的
字節跳動 二面(47 分鐘)
自我介紹
最有成就感的項目細問
react fiber 原理
求藍色區域的寬 高
<html><style>.box?{padding:?2px;margin:?2px;width:?10px;height:?10px;background:?blue;border:?1px?solid?black;}#content-box?{box-sizing:?content-box;}#border-box?{box-sizing:?border-box;}</style><body><div?class="box"?id="content-box"></div><div?class="box"?id="border-box"></div></body>
</html>
輸出結果
var?length?=?10;
function?fn()?{return?this.length?+?1;
}
var?obj1?=?{length:?5,test1:?function?()?{return?fn();},
};obj1.test2?=?fn;console.log(obj1.test1());
console.log(fn()?===?obj1.test2());
拍平數組,去重,排序
leetCode 103 + 拍平結果
字節跳動三面(65 分鐘)
(看到前面兩面的內容/評價)問:是不是有專門準備過?
項目細節,實現原理,痛點解決方案,可以優化的方案,怎么實現這個優化的方案
題庫整個的實現原理,移動端 table 虛擬滾動不定高的實現原理
平時和產品怎么交流;不相同意見的時候怎么處理
前面幾面面試體驗怎么樣;有哪些問的東西難倒你了
一個二維數組對應骰子的上下兩面,其他四面已被磨平,兩面的數字都是 1-6 隨機一個數,但不會重復,想要所有的上面或者下面都是同一個數字,最少需要翻幾次
字節跳動 換部門 加面(60 分鐘)
題庫和重構細節
題庫的優化迭代有沒有具體的數據可以支撐?
前面幾輪有沒有碰到特別難的不會的點?
https tls 連接詳情,幾個 rtt
promise 優缺點
promise 怎么控制異步
閉包
繼承
promise 輸出順序
typescript 泛型
首頁白屏優化
算法
字節換部門 hr 面(50 分鐘)
自我介紹
最有成就感的需求
這個需求有沒有可以優化的點
希望是一個怎么樣的工作環境
覺得自己的優點是什么
放到市場上自己的優勢在哪里
平時學習的途徑
可以說下你關注了哪些技術公眾號嗎
家常
期望薪資
工作地區相關
部門相關
總結
代碼相關:JavaScript 基礎重中之重,工程化方向的了解和實踐也必不可少,這次面試下來還是發現到自己對于 Node,TypeScript,Webpack 等會有短板存在。
業務相關:對自己負責的業務模塊一定要做好總結和復盤,尋找優、缺點,漏洞,思考優化/解決方案。
給自己一個時間點,到了這個點就開始投,不然沒有時間限制,這里復習一下,那里學一下,復習進度就會拖慢。
面試官們也都很友好,遇到卡住的情況會嘗試引導你去做,實在想不出來也可以說說自己大概的思路。
要感謝的人
同學和同事們都給了我很大的幫助,有給我復習方向,以及各種內推機會。包括之前提桶焦慮,左怕右怕,擔心自己復習得不到位,可能面什么都涼。尤其是李總[1]最初帶我學前端的大佬,給了我很大的鼓勵,面試之后復盤的復習點總結也幫助了我許多。
若川視野川哥,源碼共讀活動帶著我從簡單的源碼開始讀起,慢慢去拓展到大型源碼庫;在川哥源碼共讀群認識了年哥,給我復習的方向和節奏都給了很大的指引。
復習中有參考的內容
霖呆呆大佬的掘金文章,promise,this 相關
川哥的源碼共讀系列
參考資料
[1]
李總: https://github.com/logcas
最近組建了一個江西人的前端交流群,如果你是江西人可以加我微信?ruochuan12?私信?江西?拉你進群。
推薦閱讀
1個月,200+人,一起讀了4周源碼
我歷時3年才寫了10余篇源碼文章,但收獲了100w+閱讀
老姚淺談:怎么學JavaScript?
我在阿里招前端,該怎么幫你(可進面試群)
·················?若川簡介?·················
你好,我是若川,畢業于江西高校。現在是一名前端開發“工程師”。寫有《學習源碼整體架構系列
從2014年起,每年都會寫一篇年度總結,已經寫了7篇,點擊查看年度總結。
同時,最近組織了源碼共讀活動
識別上方二維碼加我微信、拉你進源碼共讀群
今日話題
略。歡迎分享、收藏、點贊、在看我的公眾號文章~