雙非二本,軟體工程,自學前端,今年畢業。
喜歡編程,古風,日語和英語。
常以冷月心之名混跡前端江湖,也曾在混跡網文圈時用冷月心做筆名籤約掌閱,作品《清起風雲》,百度可查。
求職期間寫了一個小博客,感興趣的可以看看 https://lengyuexin.github.io/gatsby
為什麼離職這個問題,幾乎我參加的每一場面試都會問到。我是2020.7.1畢業,最後離職日期是2020.12.18。這段工作經歷很短,被問到也很正常。最主要原因還是追求更大的發展空間和技術突破。
在我導師跳槽去美團後,團隊內就出現了明顯的技術斷層。我遇到的某些問題,能夠與之商量的同事也越來越少。至於源碼,數據結構和算法層面的交流就更少了。
而這些深層次的東西,才是真正意義上的技術棧,是真真正正能提高個人技術能力和核心競爭力的東西。
跳槽前該考慮的事在我看來,決定是否跳槽成功的核心因素有兩個:個人技術能力和當前招聘市場的大環境。建議先將自身技術能力和招聘要求做一個比對,如果覺得可以勝任,再去投遞也不遲。至於市場環境,大概是金三銀四,金九銀十和年末擴招三大階段吧。
如果技術已經準備ok,簡歷也完善過,那就可以開始投遞了。內推也好,其他招聘軟體也好,自行選擇即可。
最最最重要的一件事,不建議裸辭。如果裸辭,做好心理準備。大多數情況下,換一份滿意的工作,整個面試流程加offer審核到offer call再到最終郵件offer,耗時一個月是很正常的。在職面試都會有焦慮感,更何況是裸辭。
如果工作年限很短,又是裸辭,那我只能說在簡歷篩選上會很吃虧。比如我,投字節15個崗位,都被幹掉,到第16個才約上面試。投快手4次內推,被幹掉4次,最快的一次一小時左右就把我幹掉了。不得不說,快手效率還是到位的。不死心的我又投了第五次,成功約上了面試。至於後來為什麼能再約上猿輔導,百度,58同城,去哪兒網,美團的面試,我猜應該都是因為運氣...又或者,實在很缺人?
技術方面該如何準備結合我20多次的面試經驗,總結出一個核心:基礎。即便是大廠,也不會忽略問基礎,反而更重視這個。基礎不穩,地動山搖。基礎穩如狗,大廠隨便走。以下我提到的資料都會在文末給出連結,大家可自行查看。
js方向對於js而言,我覺得基礎應該是基本語法,數據類型,異步,各種常用api,this,es6+,原型和原型鏈,繼承,作用域和作用域鏈,閉包...等等。建議閱讀紅寶書第四版並結合神三元的js靈魂之問系列按需完善。
css方向對於css而言,我覺得基礎應該是常用選擇器,權重,垂直居中方案,rem和em,flex,動畫...等等。對於這方面的準備,網上很多博客就能解決。如果想系統了解一下,推薦張鑫旭的《css世界》。flex的話,推薦小青蛙網站和阮一峰的博客。
源碼方向react技術棧,推薦閱讀的源碼是react,react-router,redux,react-redux,axios。
vue的話,推薦閱讀的源碼是vue,vue-router,axios,vuex。
如果涉及nodejs,那koa2,koa-router,express,也都可以安排下。
至於源碼方向的推薦有三個:
數據結構和算法方向面試過程中問到算法很正常,這個時候就要注重平時的積累了。
算法方向推薦的有四個:
計算機網絡方向無論是前端還是後端,通信都是極為重要的概念,最起碼應用層http和https要有一定的了解。
如果想全面了解一下,推薦謝希仁那本特別厚的《計算機網絡》,看前六章就可以了。
如果覺得特別多,可以看一下神三元的http靈魂之問。
瀏覽器方向這部分只推薦一個,極客時間李兵老師的瀏覽器專欄
其他方向我這邊因為項目中會兼顧一些運維的工作,所以對nginx常用配置和linux常用命令有一定的了解,這部分可參考我之前寫的筆記。當然這個不算必須項,大概可以算個加分項吧。
面經接下來我會分享我面試的七家公司的面經,可作為面試參考。
58同城一面面試感受:
58同城是我面的最早的一家,一面是電話面,大概聊了有一個小時。整個面試過程很nice,最後讓面試官給我一個評價。講真,面試官很真誠,說我的表現是超預期,但是在年限和經驗上有所欠缺,hr那邊可能會影響定級。我表示理解,畢竟確實年限短。
58同城二面node偏運維方向的有沒有了解過(docker k8s)說下react-router源碼你看完後印象深刻的部分面試感受:
二面是視頻面,面試官和我聊了一下接下來的發展方向,描繪了一張美好的藍圖。聽起來還不錯,雖然沒聽懂。某些不可說的原因,58同城結束在二面,後續沒有再進行。
百度一面數組中一萬個數據,訪問第一個和最後一個效率會有什麼差異,為什麼forEach for in for of 的差異css設置div寬高比3:4 padding-bottom:75%算法12345678.01 =>123,456,78.01算法12345678.01=>12,345,678.01面試感受:
女面試官,題是有點多,但感覺還好,都是偏基礎。印象最深的是算法部分,面試官出了題,我直接說了思路,好像還巴拉巴拉說了一下其他的。面試官說:哎呀,我只是想讓你做個題...(撒嬌語氣??) 好的,做題。
百度二面你對node還有什麼想分享的嗎,覺得用起來爽的部分(gzip pipe)業務中數據是怎麼存儲的,node為什麼沒有接入資料庫業務線如何用埠號區分(nginx http-proxy)關於webpack你還有什麼想分享的嗎 (同步加載異步加載的實現)如何將css內容插入到頁面上(style-loader)如果讓你實現style-loader,你打算怎麼做有沒有考慮過高並發場景,如何解決(緩存,壓縮,負載均衡,集群)反問二:App部門是不是只有移動端場景,有沒有其他的,比如pc反問四:百度App是分工明確還是也會出現身兼多職的情況反問五:給我一個今後學習發展的建議和這次面試的簡單評價面試感受:
不得不說,和二面面試官聊的很是帶勁,給我很多鼓勵,完事大概是晚上十點多了,意猶未盡。當場要整三面,當時也恰好11點要上線,就改時間了,三面約到了一周後。
百度三面三面面試官是手機百度部門的leader,電話面的,主要是問了我一下期望薪資和來百度的意願。然後又是一波鼓勵,還教我怎麼談薪資,感動到爆炸。說實話當時我已經決定同等薪資必去百度,奈何後續流程太長了,我已經接到抖音正式offer郵件那邊還沒反饋。
抖音一面業務中拖拽如何控制位置的,適配怎麼處理,全屏怎麼控制post的ContentType類型有哪些(application/x-www-form-urlencoded/multipart/form-data/text/plain)說下box-sizing中border-box 和content-box的區別var fullname = '1';
var obj = {
fullname: '2',
prop: {
fullname: '3',
//如果改成普通函數呢?
getFullname:()=> {
return this.fullname;
}
}
};
console.log(obj.prop.getFullname());
var test = obj.prop.getFullname;
console.log(test());
const el = require('./element.js');
const ul = el('ul', {id: 'list'}, [
el('li', {class: 'item'}, ['Item 1']),
el('li', {class: 'item'}, ['Item 2']),
el('li', {class: 'item'}, ['Item 3'])
])
const ulRoot = ul.render();
document.body.appendChild(ulRoot);
<ul id='list'>
<li class='item'>Item 1</li>
<li class='item'>Item 2</li>
<li class='item'>Item 3</li>
</ul>{
a:{
b:{
c:{f:"aa"}
},
d:{
e:{g:"bb"},
h:{i:"cc"}
},
j:{
k:"dd"
}
}
}
// [f,g,i,c,e,h,k,b,d,j,a]面試感受:
面了百度和58同城,有點膨脹,字節讓我清醒。算法被吊打,只寫了個大概和思路。感覺要涼了,最後反問環節我已經沒什麼想問的了。如果說有,我想問一下我還有機會嗎?最後說了一下我的遺憾,表示我擅長的沒有完全體現出來,命中的很多盲區。好傢夥,峰迴路轉,面試官說我還是有其他亮點的,再給我一次機會,就到了二面,感動到冒泡泡...
抖音二面node的進程守護怎麼做的,發現非預期故障怎麼排查
//JS實現一個帶並發限制的異步調度器Scheduler,
//保證同時運行的任務最多有兩個。
//完善代碼中Scheduler類,使得以下程序能正確輸出:
//Scheduler內部可以寫其他的方法
class Scheduler {
add(promiseCreator) { ... }
// ...
}
const timeout = (time) => new Promise(resolve => {
setTimeout(resolve, time)
})
const scheduler = new Scheduler()
const addTask = (time, order) => {
scheduler.add(() => timeout(time))
.then(() => console.log(order))
}
addTask(1000, '1')
addTask(500, '2')
addTask(300, '3')
addTask(400, '4')
// output: 2 3 1 4
// 一開始,1、2兩個任務進入隊列
// 500ms時,2完成,輸出2,任務3進隊
// 800ms時,3完成,輸出3,任務4進隊
// 1000ms時,1完成,輸出1
// 1200ms時,4完成,輸出4面試感受:
二面問的不多,主要是寫代碼吧。Scheduler沒有完整寫出來,koa2的compose寫出來了,其他的回答還行,完事約了三面。抖音二面時快手hr打電話告訴我二面過了,當場愣住,我不是正在二面嗎?怎麼就過了?
抖音三面你覺得你擅長哪些技術(react+node+計算機網絡)在業務開發上,你覺得node和java的區別是什麼?http中間人劫持了解嗎?如何解決呢?(說了https)為什麼https可以做到避免中間人劫持?(說了加密層tls)展開說一下tls握手(對稱,非對稱,對稱+非對稱的組合)業務中的安全問題有沒有遇到過?怎麼解決的?(說了base64,cors,xss,csrf,cookie的httponly和samesite屬性)算法2:如何在從左到右升序,從上到下升序,每一行第一個元素大於上一行最後一個元素的二維數組中查找某個數字的索引?如果是一維數組呢?面試感受:
三面問的更全一點,理論和代碼層面的都有,算法2沒寫出來,其他的應該都抗住了。後續流程很順利,已拿offer。
猿輔導一面猿輔導那天是招聘專場,一面到底,直通hr面。因為某些非預期情況,不再考慮這邊,選了抖音。
面試感受:
和面試官聊的很開心,從技術到業務到技術選型,巴拉巴拉聊了很多。那邊是用的angular11,還有vue2.x,後續打算遷移到react技術棧上。
猿輔導二面react diff算法如何實現的,比對複雜度是多少如何使用react-dnd完成拖放的,說下主要API業務中看你有涉及到node的文件讀寫操作,有沒有想過如果某個文件被鎖怎麼處理?node轉buffer輸出字符串會比直接string輸出快,你的依據是什麼?收尾閒聊:你覺得一面難還是二面難?我說二面吧,數學不太好,全排列沒屢清楚。面試感受:
和面試官聊的依舊很開心,二面聊了很多業務。好傢夥,我和面試官開始在白板上畫圖交流了。咱數學確實菜,全排列也沒整清楚,和邏輯混一起更想不明白。面試官表示理解,然後約了三面,部門大leader。
猿輔導三面看你大學學的挺多的,高中是不是沒好好學習呀(笑,解釋說高中是為了高考被動式學習,大學是為了工作主動學習)然後面試官直接給我安排了研發方向,前期ng,後期react,說是在組建一個複雜架構小組,目前兩人,預計4-6人。(說實話,有點慌)做個題吧,給定學生id和分數組成的列表,寫一個函數,通過id獲取排名,注意分數相同並列名次的處理(寫了七七八八,後邊面試官說思路可以,就這樣吧)然後讓我等下hr,面試官去下一場面試了(面試專場,一下午來了大概20+,每個面試官都很忙,後續基本沒有反問時間)面試感受:
親切,看面試官第一眼就覺得很親切。整體聊的也很順利,過往經歷和一道算法題,完事。看的出來,是想要我的。之後hr面結束,打道回府。
猿輔導hr面說了下福利,餐補800,六險一金,不限量零食下午茶,健身房,晚下班打車企業報銷,巴拉巴拉……說了好多福利hr表示不會因為工作經驗而刻意壓薪資,扁平化管理,會根據每一輪面試官評價來定(給我的預期是校招生水平,實際是超預期)你是97年的嘛?(驚訝) 感覺你表現上更成熟一些(我說和個人經歷和讀的書有關吧)hr表示offer流程會根據我這邊其他公司面試進展隨時同步,很熱情的送我到電梯門口面試感受:
面試體驗確實不錯,後期就有點遺憾了。也難怪,我的年限和期望偏差確實有點大,這邊流程上多加考慮也可以理解。
快手一面Object.create傳null和{} 有啥區別嗎手寫promise(寫完then後面試官說可以了)koa2的洋蔥模型和redux中間件的洋蔥模型一樣嗎對比一下express,koa2(我連同比較了egg)為什麼不要在循環、條件語句或者嵌套方法中調用Hooksnew Promise返回的實例和實例then方法執行後返回的promise是一個嗎面試感受:
女面試官,聊了很多,感覺想早點下班。hh,我要寫代碼,剛寫了大概,面試官說可以了,可以了,之後約了二面。
快手二面react在一秒內點擊按鈕多次(+1),如何獲取最後一次的新狀態某些接口允許跨域,某些不允許,如何實現?能不能使用koa2中間件的方式實現一下?用node如何實現一個帶壓縮和緩存的http-server?面試感受:
面試官給我一種道法自然,萬法皆通的感覺,某些想法秀到我了,很強。問的基本都答上了,很快約了三面。
快手三面如果有成熟穩定的A團隊和從0到1的B團隊,你傾向哪種如果B團隊做不好有可能會因為業績不達標被砍掉,做的好會有高收益,A團隊一直是穩定的,你傾向哪種A團隊業務線偏向底層功能開發,為B團隊服務。B團隊在A團隊產出基礎上,會面對更多複雜業務,你傾向哪種反問1:剛才提到的AB部門的業務覆蓋場景是只有pc端嗎?還是也有其他端?面試感受:
無關技術,只談選擇。我選了BBB。之後約了hr面,然後又加面,其實也沒問太多技術問題。流程和字節基本同步,薪資待遇持平,只是多了一個背調。我比較想早點入職,選了更快的抖音。說實話,有點捨不得負責招聘的hr小姐姐,hh,給了我很多祝福。
美團一面(部門A)我懷疑美團有毒,二面必掛。第一次面到2面,題基本都答上了,莫名掛掉。然後又被打撈,依舊面的很順利,二面掛掉...好傢夥,分手都沒個預兆。遺憾是有,但也無能為力。美團到店,我可能到不了店了。
如何查詢某個進程佔用的埠號(linux中) netstat -tunlp|grep 80 lsof -i:80為什麼react16架構升級後就能中斷更新,根據什麼決定是否中斷hooks為什麼不能在條件或循環中使用,原理清楚嗎?const o1 = {
text: 'o1',
fn: function() {
return this.text
}
}
const o2 = {
text: 'o2',
fn: function() {
return o1.fn()
}
}
const o3 = {
text: 'o3',
fn: function() {
var fn = o1.fn
return fn()
}
}
console.log(o1.fn())
console.log(o2.fn())
console.log(o3.fn())面試感受:
美團的面試還是有點東西的,問的很全。linux那個和git rebase不太清楚,其他的基本都ok,然後約了二面。
美團二面(部門A)//實現一個retry函數
//如果fn返回成功,則列印一下,最終結果成功
//如果fn返回失敗,則列印times下,最終結果失敗
retry(fn,times)
retry(() => {
console.log('doing')
return Promise.reject(Error('done'))
}, 3)
retry(() => {
console.log('doing')
return Promise.resolve('done')
}, 3)var a = 20;
var test = {
a: 40,
init: () => {
console.log(this.a);
function go() {
console.log(this.a);
}
go.prototype.a = 50;
return go;
}
};
var p = test.init();
p();
new p()面試感受:
題基本都答上來了,莫名掛。被打撈的時候問了一下一面面試官,他表示也很迷,說確實有二面面試記錄,但是沒評價??
美團一面(部門B)面試感受:
和面試官聊的很帶勁,好傢夥,相見恨晚。面試結束不到一小時hr打電話約二面,並告知一面給了滿分。
美團二面(部門B)function foo() {
foo();
}
function foo() {
setTimeout(() => {
foo();
}, 0)
}
requestAnimationFrame 和 requestIdleCallback了解嗎//a.js
function foo() {
console.log('foo'); //
}
foo();
//b.js
require('./a.js');
require('./a.js');
//node b.js
http模塊起一個服務,如果想修改請求體並轉發給另一個服務,怎麼實現面試感受:
我和面試官都提前到了視頻會議室,然後我提議可以提前開始。面試官說ok,大概是45分鐘。好傢夥再問一個,再問一個,再問一個...差不多一個半小時,刺激。最後莫名掛掉,原因未知...
去哪兒網一面能說一下你用mvc模式重構node業務代碼的大概方向和效果嗎這個項目裡前後端聯調的話,有問題一般怎麼排查(表示基本都是自己寫)追問:為什麼是都要自己寫呢?(相對偏向全棧,人少)項目中寫的css多嗎,主要是哪些?(說了less,css,styled-components)你說離職是追求技術的突破,能解釋下你想要的是怎樣的嗎對於公司和業務部門,你更傾向哪一邊的考慮(類比了選學校和選專業)setTimeout(() => {
console.log(1)
}, 0)
new Promise((resolve) => {
console.log(2)
for (let i = 0; i < 10000; i++) {
if (i === 9999) { resolve() }
}
console.log(3)
}).then(() => {
console.log(4)
})
console.log(5)面試感受:
女面試官,聊的也還行,比較滿意我的表現吧,很快約了二面,現場。
去哪兒網二面面試感受:
感覺面試官有些漫不經心,簡單聊了聊,然後我說了期望薪資,好傢夥,估計又說多了...沒後續。
致謝在我看來,面試並不是一個人的戰鬥。站在巨人的肩膀上,可以加快你前進的速度。感謝這一路上,直接或間接給我幫助的大佬們,排名不分先後。
磐衝, 曾多次參加磐衝大佬組織的直播面試,表示受益良多。相關連結紅寶書第四版:https://www.ituring.com.cn/book/2472js靈魂之問(上):https://juejin.cn/post/6844903974378668039js靈魂之問(中):https://juejin.cn/post/6844903986479251464js靈魂之問(下):https://juejin.cn/post/6844904004007247880css世界:https://www.cssworld.cn/flex小青蛙:http://flexboxfroggy.com/flex阮一峰博客:http://www.ruanyifeng.com/blog/2015/07/flex-grammar.html卡頌的react技術揭秘:https://react.iamkasong.com/若川的源碼系列:https://juejin.cn/user/1415826704971918/posts難涼熱血的vue源碼分析:https://nlrx-wjc.github.io/Learn-Vue-Source-Code/數據結構與算法之美:https://time.geekbang.org/column/intro/100017301政採雲團隊的博客--算法篇:https://101.zoo.team/天天的前端算法總結:https://juejin.cn/post/6900698814093459463ssh的前端算法進階指南:https://juejin.cn/post/6847009772500156429修言算法小冊:https://juejin.cn/book/6844733800300150797謝希仁的計算機網絡:https://item.jd.com/12219883.html神三元的http靈魂之問:https://juejin.cn/post/6844904100035821575瀏覽器專欄:https://time.geekbang.org/column/intro/100033601nginx筆記:https://blog.csdn.net/qq_42813491/article/details/103117799?ops_request_misc=%25257B%252522request%25255Fid%252522%25253A%252522160938095216780302981460%252522%25252C%252522scm%252522%25253A%25252220140713.130102334.pc%25255Fblog.%252522%25257D&request_id=160938095216780302981460&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_v2~rank_v29-1-103117799.pc_v2_rank_blog_default&utm_term=nginxlinux筆記:https://blog.csdn.net/qq_42813491/article/details/88379799推薦閱讀我在阿里招前端,我該怎麼幫你?(現在還可以加模擬面試群)
末尾
如何拿下阿里巴巴 P6 的前端 Offer
如何準備阿里P6/P7前端面試--項目經歷準備篇
大廠面試官常問的亮點,該如何做出?
如何從初級到專家(P4-P7)打破成長瓶頸和有效突破
若川知乎問答:2年前端經驗,做的項目沒什麼技術含量,怎麼辦?
若川知乎高贊:有哪些必看的 JS庫?你好,我是若川,江湖人稱菜如若川,歷時一年只寫了一個學習源碼整體架構系列~(點擊藍字了解我)
關注若川視野,回復"pdf" 領取優質前端書籍pdf,回復"1",可加群長期交流學習我的博客地址:https://lxchuan12.gitee.io 歡迎收藏覺得文章不錯,可以點個在看呀^_^另外歡迎留言交流~小提醒:若川視野公眾號面試、源碼等文章合集在菜單欄中間【源碼精選】按鈕,歡迎點擊閱讀,也可以星標我的公眾號,便於查找