雙非二本,畢業(yè)一年多,斬獲杭州大廠offer,他學了些什么?
個人情況
2018.9開始實習,2019.7畢業(yè)于某二本。老東家前端團隊100人左右,社招基本不算實習經(jīng)驗,算是一年半經(jīng)驗出去戰(zhàn)斗。
一、先說原因
1、想看看外面的世界
從2018.9年實習 -> 2019.7轉正 -> 2021.3離職,沒見過外面的世界,自己說不上來老東家的一些好與壞,只是感覺在一家公司呆久了,不管是同事、環(huán)境、技術相關,都趨于一種小變化的節(jié)奏。至于這是好是壞,因人而異吧。
2、個人成長
寫了很久的相似業(yè)務,感覺對自己的成長來說,幫助很小。一直是vue,一直是toB,一直都是his系統(tǒng)。近一年以來,基本也是自己在負責兩個項目,很想和別人一起做項目,學習大佬的姿勢。也很想做做其他的產(chǎn)品,或者toC等等,想讓自己能接觸更多的東西。打聽了有贊技術挺強,用的也是大廠偏愛的React,自己想轉這方面的,也是為了一個大廠夢,所以自己需要做出一些改變。
3、生活壓力
結婚需要房子,杭州的房價又不低,必須得去奮斗,說白了還是缺錢。提離職之前也大概了解了老東家的漲幅,下家給的翻倍,沒辦法拒絕。也是為了提高自己的base,為以后做做準備。
二、面試結果(按順序排)
1、微點(offer)
出去面試的第一家,3輪技術+一輪hr,給的薪資還可以,其他年終1-3個月,單休+五險一金最低,自己就不考慮了
2、涂鴉(現(xiàn)場掛)
信心滿滿的去現(xiàn)場面,被錘了一頓。次要原因是:我給的pdf簡歷,重點的地方用其他顏色標記了。結果涂鴉hr打印出來的簡歷這些標重點的都沒了。面試官也很無奈,只能揀其他能看見的關鍵字問,我又不太熟,就只能GG了。給自己的打擊挺大的。。。主要原因還是自己菜??
3、???一面20mins掛)
一面二十多分鐘,然后給我掛了??
4、端點(offer)
一面電話,二面現(xiàn)場,三面HR電話。技術棧react,前端七八十人左右,給的薪資也還行,聽說那邊90%是3個月年終,本來是要去的,后面有了有贊的offer。
5、有贊(offer)
前后大概一周,年前最后一個工作日收到offer,自己提了離職。這里寫下主要的問題吧,有想看我的回答的可以去博客瞅兩眼【面試】2020年底面經(jīng)[1]
6、字節(jié)跳動(一面1h20mins掛)
年前拿了有贊的offer,準備去了。可惜的時候沒有面過大廠??斓诫x職日期的時候,朋友幫我內推了一下字節(jié),帶著試一試的心態(tài),距離上一次面試已經(jīng)一個月了,簡單準備了一下。一面1h20min,個人感覺沒有想象的那么難,編程題沒做好,是自己的問題,再加油吧????。
面試中個人問題
1、話太多
一個問題自己能說好久,說著說著就跑題了。自己面試實習生,也遇到過這樣的。這樣會給自己在面試管的印象扣分。面試還是揀重點的回答,回答也不能太短,需要在中間給面試官提問的時間。
2、答非所問
不會就是不會,很多知識點,如果是沒聽過的,或者自己沒去了解過的,就不要扯,這樣只會拉長面試的時間。某些知識點不會,直接說。面試官就接著下一個問題了,也能讓面試官更全面的了解自己。
3、算法薄弱
遇到算法題,總是想著用暴力法解決,寫的代碼有點難看。多去刷刷題,沒有基礎的,每種類型的刷幾道簡單的就行,像我這種比較初級的程序員,考的基本是簡單的算法題。
有贊面經(jīng)
一面電話 (1h)
講講最近寫的項目 講講自己寫的打印插件,vue-iframe-print,和其他打印方式對比。分頁問題,默認背景圖如何顯示(知道有 css,但是記不住是那個),自定義樣式等等 權限系統(tǒng)(RBAC),具體實現(xiàn),接口權限校驗。通用接口如何校驗,可復用的業(yè)務接口如何校驗 講一講OAuth 微前端(項目在用) 為什么要用微前端,和 iframe 對比了一下。 實現(xiàn)一個水平垂直居中?flex:1 含義? 一道場景題 margin 塌陷?有沒有遇到過其他 css 問題? vue 響應式原理 組件 data 為什么是一個函數(shù)? vue Object.defineProperty 缺陷?數(shù)組 7 個方法怎么重寫的? dep 依賴搜集與 watcher 派發(fā)更新流程?dep 是發(fā)布者還是訂閱者?怎么知道每一個 watcher 要通知哪一個 dep? keep-alive 原理? 講一講虛擬 dom 講一講vue diff 算法 為什么使用 key 能提升 diff 性能 this 指向的理解?聲明時和運行時指向?箭頭函數(shù)指向?修改 this 指向? call,apply,bind 區(qū)別?講一下實現(xiàn)一個 bind 的思路 函數(shù)柯里化概念,常用場景? 關于緩存的一些東西?如何提高緩存命中率? 詳細描述一下輸入 URL 到頁面打開的過程,盡量詳細些? 數(shù)組和鏈表在計算機中存儲的方式?計算機中增加一個數(shù)組元素的方式? 你有什么想問我的?
然后約了二面,視頻 coding
一面視頻 coding(45mins)
/**
* 1. 實現(xiàn)一個函數(shù),判斷兩個變量值是否相等
*
* 注意
* - 數(shù)據(jù)類型不限于示例,盡可能考慮邊界
* - function 引用相等即可
*/
const foo1 = {
a: 1,
b: "1",
c: NaN,
d: [
{
a: 1,
b: 2,
},
],
f: {
a: 1,
},
g: null,
};
const foo2 = {
a: 1,
b: "1",
c: NaN,
d: [
{
a: 1,
b: 2,
},
],
f: {
a: 1,
},
g: null,
};
function isEqual(target1, target2) {}
console.log(isEqual(foo1, foo2), "isEqual");
/**
* 2. 實現(xiàn) getValue 函數(shù)來獲取path對應的值
*/
var object = { a: [{ b: { c: 3 } }] }; // path: 'a[0].b.c'
var array = [{ a: { b: [1] } }]; // path: '[0].a.b[0]'
function getValue(target, valuePath, defaultValue) {}
console.log(getValue(object, "a[0].b.c", 0)); // 輸出3
console.log(getValue(array, "[0].a.b[0]", 12)); // 輸出 1
console.log(getValue(array, "[0].a.b[0].c", 12)); // 輸出 12
/**
* 問題 3
* 將一天24小時按每半小劃分成48段,我們用一個位圖表示選中的時間區(qū)間,例如`110000000000000000000000000000000000000000000000`,
* 表示第一個半小時和第二個半小時被選中了,其余時間段都沒有被選中,也就是對應00:00~01:00這個時間區(qū)間。一個位圖中可能有多個不連續(xù)的
* 時間區(qū)間被選中,例如`110010000000000000000000000000000000000000000000`,表示00:00-1:00和02:00-02:30這兩個時間區(qū)間被選中了。
*
* 要求:寫一個函數(shù)timeBitmapToRanges,將上述規(guī)則描述的時間位圖轉換成一個選中時間區(qū)間的數(shù)組。
* 示例輸入:`"110010000000000000000000000000000000000000000000"`
* 示例輸出:`["00:00~01:00", "02:00~02:30"]`
*/
function timeBitmapToRanges(str) {}
console.log(
timeBitmapToRanges("110010000000000000000000000000000000000000000000")
);
console.log(
timeBitmapToRanges("110011000000110000000000000000000000000000001111")
);
二面現(xiàn)場( 1h20mins)
上來就是兩頁紙,我人懵了。。。因為已經(jīng)做過線上 coding 了,沒做好心理準備~~~,也沒復習這方面的。。。。
大數(shù)相加: 給定兩個字符串形式的非負整數(shù) num1 和 num2 ,計算它們的和。leetcode 415. 字符串相加[2] 寫一個事件 Event 類,實現(xiàn) on,off,emit,once 功能,同時 on 要支持 debounce。eg:on('click',function(){},500) 介紹下讓自己成長最大的項目? 你覺得現(xiàn)在遇到的最難的問題是什么? 為什么要做微前端? 回到寫的第二道題,說到了 setTimeout 設定的時間,函數(shù)能準確按時執(zhí)行嗎?setTimeout 怎么能做到準時? js 是單線程還是多線程?為什么?支不支持多線程?支持多線程的方式有哪些?node端多線程知不知道?進程和線程的區(qū)別?進程內存計算機如何分配?線程資源如何分配? 跨域的解決方案 如何實現(xiàn)移動端 1px 邊框 什么是html 可替換元素? 一個圖片對應多個 cdn 地址,如果第一個地址不能用了,需要換成下一個,怎么做? vue 生命周期詳細描述下?改變組件 data 里面的東西會觸發(fā)什么生命周期? vue2.x 響應式原理?Object.defineProperty 的一些參數(shù)? for in可以遍歷出來那些東西?for in可以遍歷數(shù)組嗎?可以遍歷出那些東西? vue組件 scoped作用?實現(xiàn)原理?其他的css隔離方案? 怎么用ES5 去實現(xiàn)ES6類的繼承? 你覺得 eslint 有哪些規(guī)則比較有用? http1.1和http2的區(qū)別?http1.1中做了哪些項目優(yōu)化?http1.1中用的哪些優(yōu)化手段,會在http2中失效?http2.0還存在什么問題?http3了解嗎?
聊了近一個半小時,終于結束了~~~面試小哥說讓我等會,告訴了我衛(wèi)生間在那,就走了,面試體驗還是挺不錯的,有些不知道的問題。面試官會換種問法,實在答不出來也會跟你說答案。
三面(50mins)
自我介紹 說一說最近一年做的最好的業(yè)務?你覺得你做的最出彩的地方是哪里? 處方打印,不同格式如何設置? 離線緩存 存在什么問題? 講一講權限系統(tǒng)?除了RBAC,還了解哪些權限設計嗎?RBAC的優(yōu)點? 給你一個需求:除了預設角色,某個人可以單獨做其他的事情,怎么辦? 講一講你們做的微前端?父應用如何加載多個子應用?路由整合是如何做的? 講一講局部打印的實現(xiàn)? api-proxy是如何實現(xiàn)的?業(yè)務越來越復雜,nginx是不是每次都要改?怎么解決?怎么做一個全局代理?在本地如何調試線上代碼? 講一下項目中定制化需求如何處理?更優(yōu)雅的方式?面試官舉了一個有贊的場景例子:關于不同商家后臺,某個商家多了一個菜單?某個商家在通用頁面A中有特殊的兩個按鈕?如何處理這種個性化的問題?深入一點,如何把個性化需求開放給其他商家自己開發(fā)? 如果讓你寫一個single-spa,你怎么做?兩個子應用的app.js如何切換?js、css如何隔離?作為攻擊者,如何突破用proxy實現(xiàn)的一個沙箱環(huán)境,或者說子應用如何才能訪問父應用的window對象? 講一講項目中的全鍵盤操作?keyup監(jiān)聽怎么做的?addEventListener第三個參數(shù)?如何阻止冒泡事件?怎么阻止部分按鍵? 講一講oAuth 2.0 你為什么想出來看機會?對下一份工作期望是怎么樣的?你現(xiàn)在是怎么學習的? 你有什么想問的?
接著就讓我等一下,估計是去討論去了,自己也知道,接下來如果有hr來,就80%過了。找個理由說hr不在的,基本就涼了。。。
四面(HR 40mins)
等待的時間是非常煎熬的~ 一會(忘記了是多久,差不多10分鐘?),HR小姐姐來了,換了個位置,開始面對面談。
剛剛聊下來感覺怎么樣? 對自己1-3年的規(guī)劃 前端方面有沒有犯過比較大的故障?績效好的情況下為什么要考慮機會? 你覺得自己還能在現(xiàn)在的業(yè)務中成長多少?或者說你還能為現(xiàn)在的業(yè)務做什么? 平時自己的學習方式? 你希望自己3年以后能達到什么水平?你覺得自己和P6差距在哪? 平時的工作節(jié)奏? 你對加入有贊的一些期待是什么?薪資是怎么樣的期待?有沒有其他offer? 你有什么想問的?
問了下什么時候能給結果?也說了自己有三個offer,年前需要給答復,HR小姐姐說,明天盡快。
等我到門口的時候,又問了下離職時間。這個時候自己才感覺有戲~~~~
拿offer & 提離職
第二天中午,hr給我電話了,下午發(fā)了滿意的offer。接著自己就去找主管提離職了,主管說有點突然,他要開車回家,就擱置了一下,到晚上的時候,自己又主動找了下主管,當時也沒說出結果,最后晚上十一點多,大領導打電話來問我離職的原因,自己說了成長和錢的問題,最后和主管約定了離職日期。
一些感想
離職想法產(chǎn)生之前,自己并沒有太多準備。遺憾的是沒有把大廠都面一遍,字節(jié)是離職前一周的面的,沒什么準備,卒。網(wǎng)易找了內推,hr說資歷太淺,卒。脈脈上找了個阿里內推,給我投個H5技術專家,氣死人??,卒。總體來說,沒有個三年經(jīng)驗也挺難的,我2021.2投的,算是一年半經(jīng)驗,很多大廠簡歷都過不去。
幸運的是,年前拿到了offer,避免了年后的激烈競爭??
學習資源
人人都能看得懂的Leetcode力扣刷題教程合集[3] 不錯的算法視頻講解 種一棵樹,最好的時機是十年前,其次是現(xiàn)在[4] 分享個人學習的東西 字節(jié)飛書的學習計劃 - 超清楚(必看)[5] 字節(jié)前端知識梳理,很清楚,建議收藏 冴羽的博客[6] 淘寶大神總結的前端基礎 vue 源碼分析[7] 個人感覺講的不錯,帶你從頭實現(xiàn)一個vue 大廠面試題每日一題[8] 沒事就來刷一刷

參考資料
【面試】2020年底面經(jīng): https://alexwjj.github.io/views/fe/interview/2020%E5%B9%B4%E5%BA%95%E9%9D%A2%E7%BB%8F.html#%E7%BB%93%E6%9E%9C
[2]leetcode 415. 字符串相加: https://leetcode-cn.com/problems/add-strings/
[3]人人都能看得懂的Leetcode力扣刷題教程合集: https://www.bilibili.com/video/BV1wA411b7qZ
[4]種一棵樹,最好的時機是十年前,其次是現(xiàn)在: https://alexwjj.github.io/
[5]字節(jié)飛書的學習計劃 - 超清楚(必看): https://bitable.feishu.cn/appNuDKPaGtimrdkB0JnXmpoktZ
[6]冴羽的博客: https://github.com/mqyqingfeng/Blog
[7]vue 源碼分析: https://www.bilibili.com/video/BV1LE411e7HE
[8]大廠面試題每日一題: https://q.shanyue.tech/
社群
字節(jié)跳動 IES 團隊預備招聘社群,加我好友即可加入社群。
加入社群后你能收獲什么:
我和我的同事們會在群里和大家一起聊聊字節(jié)跳動對前端工程師的要求。 收集一些大家的疑問,整理成 QA 文檔發(fā)布,解答一些常見疑惑。 這是一個氛圍輕松的群,大家可以聊技術,也可以聊生活中的趣事。 這個群會長期發(fā)展下去。 如需內推,可以私聊我,一對一指導簡歷。
加好友記得備注 "IES" 才可通過

點個在看你最好看
