前言
本人17年畢業至今,一年多工做經驗,三月中旬加入了找工做的大潮。這裏整理了一下最近面試的題目,分享給你們。javascript
再惠
一面
- 自我介紹一下
- 看到你用過mobx,說一下mobx的優點?實現原理呢?
- 你工做以來,在項目中遇到的印象深入的問題有哪些?有沒有在項目實踐過一些本身的想法和新技術?
- 說說TS和ES的區別,以及TS帶來的好處?
- 你說你學習能力強,那你畢業這一年多來,你都是怎麼熟悉業務和項目的?有系統的看完過哪本書?
- 對小程序有了解嗎?(我只寫過demo)
- 對打包工具備瞭解嗎?
- 除了react,你還用過哪些框架?
- 求契波那切數列的第N項
- 獲取到契波那切數列的前N項
- 求一個對象的層級數(我寫完後,又問若是不用遞歸,只用循環實現呢)
- 實現下面這道題中的machine函數
function machine() {
}
machine('robot').execute()
machine('robot').do('eat').execute();
machine('robot').wait(5).do('eat').execute();
machine('robot').waitFirst(5).do('eat').execute();
複製代碼
二面
- 介紹一下大家那邊的業務?那大家業務都是在app裏面嗎?(安卓、IOS、H5甚至小程序和快應用都有,基本上都是webview套h5作的)
- 你最近有比較感興趣的、主要研究的技術嗎?爲何感興趣?
- 我看了你的github,上面star了一個react.backbone,這個是什麼?
- 我看你的github裏面有個mobx-jquery,這個是作什麼的?
- 這個mobx-jquery裏面的observer你是怎麼實現的?(封裝的autorun)那麼autorun的原理是什麼?
- 你對團隊的要求是怎麼樣的?你畢業這一年多收穫最大的是什麼?
- 看到你寫了TS,那麼TS的優點是什麼呢?你說修改字段後其餘還用原字段的地方會報錯,那麼是怎麼跟蹤到是否修改的呢?vscode裏面是怎麼實現根據類型文件來給一個方法添加類型的呢?
- 看到你的簡歷裏面寫着維護一個老項目,這個lizard是什麼框架?(基於backbone封裝的一個Hybrid框架xxxxx)
- 那來作道題吧。實現一個函數,能夠按順序獲取到一個DOM節點下面全部的文本。
- 你有什麼想問個人嗎?(你平時在公司的一天都是在作什麼呢?)
總結
感受技術棧和這家可能不是很匹配,他們主要作h5和小程序,h5也以vue居多,因此這些問題基本上都沒怎麼深刻。css
面試除了mobx,也沒問過我react相關的技術,也沒問過app開發方面的東西,他們惟一感興趣的就是TS,惋惜我TS寫的很少。前端
可是面試體驗還不錯,我屬於比較緊張的人。面試官讓現場寫代碼,能夠查資料,能夠現場調試,甚至有不懂的還能夠問一下他,我以爲這個挺好的。聽他們描述,感受團隊技術氛圍不錯,和HR聊了一下,以爲福利還算不錯。vue
附上一面第12題的答案。java
function machine(name) {
return new Action(name)
}
const defer = (time, callback) => {
return new Promise((resolve) => {
setTimeout(() => {
resolve(callback())
}, time * 1000)
})
}
class QueueItem {
constructor(defer, callback) {
this.defer = defer;
this.callback = callback;
}
}
class Action {
queue = []
constructor(name) {
this.name = name;
this.queue.push(new QueueItem(0, () => console.log(`start ${this.name}`)))
}
do(eat) {
this.queue.push(new QueueItem(0, () => console.log(`${this.name} ${eat}`)))
return this;
}
wait(time) {
this.queue.push(new QueueItem(time, () => console.log(`wait ${time}s`)))
return this;
}
waitFirst(time) {
this.queue.unshift(new QueueItem(time, () => console.log(`wait ${time}s`)))
return this;
}
async execute() {
while(this.queue.length > 0) {
const curItem = this.queue.shift();
if (!curItem.defer) {
curItem.callback();
continue;
}
await defer(curItem.defer, curItem.callback)
}
}
}
複製代碼
富途
一面(記不清了)
- 自我介紹
- 爲何離職?你說你以爲作的業務無聊,那怎麼樣纔是不無聊的呢?你指望的團隊是怎樣的?
- 什麼是xss攻擊?有什麼危害?怎麼解決?
- 實現一個深拷貝
- 有兩個有序數組M和N,怎麼判斷N是否爲M的子集?
- 箭頭函數和普通函數有什麼區別?
- for循環裏面setTimeout打印的值是多少?怎麼解決這個問題呢?(let和閉包解決,解釋一下原理就行了)
- 大家團隊中的每一個成員都是什麼角色?你在裏面扮演什麼角色?
- 怎麼優化頁面的加載速度?若是有不少個小圖標,怎麼優化?iconfont有什麼缺點?
- 移動端兼容不一樣設備有哪些解決方案?這些方案都有哪些缺點?
達達-京東到家
面試過去的時候,先讓作了一張試卷,主要是考察http、css和js的。node
筆試題(只記得這幾道http相關的)
- http2.0的新特性有哪些?(選項是多路複用、頭部壓縮、設置優先級、服務端推送、二進制傳輸)
- DNS的做用有哪些?(選項是域名解析、防火牆、負載均衡、控制流量還有一個我不記得了)
- 如下哪些協議是可靠的?(選項是TCP、UDP、FTP、HTTP還有一個我不記得了)
- 如下關於POST請求說法正確的是?(POST請求只能經過body帶參數、服務器必定可以收到POST請求發送的數據、POST請求發送了兩個數據包、POST請求能夠被緩存)
一面
- 什麼是BFC?垂直margin重疊是爲何?怎麼解決這個問題?
- CSS裏面有哪些相對單位?都是相對什麼的?
- fixed是相對於誰定位的?若是加上transform會出現問題嗎?
- 什麼是XSS攻擊?怎麼解決?
- innerHTML有什麼問題?有什麼簡單的辦法能夠避免插入文本被XSS攻擊嗎?
- 爲何不推薦用style內聯元素?內聯元素有什麼缺點?(css文件能夠緩存)
- 什麼是原型鏈?原型鏈的終點指向什麼?
- cookie、sessionStorage、localStorage的區別和做用是?
- http狀態碼有哪些?301和302的區別是什麼?304是指什麼?
- 什麼是閉包?使用場景有哪些?閉包會引發什麼問題?
- 什麼是淺拷貝和深拷貝?怎麼實現一個深拷貝?
- lodash和ramda的區別是什麼?
- HTML中attribute和property的區別是什麼?
- 怎麼解決跨域?
- 字符串和new String出來的字符串有啥區別?
二面
- 解釋一下react中setState?(說說setState的表現和原理實現)
- 若是我須要上傳一個文件,前端展現進度條,用setState會致使合併更新,你有什麼好辦法?(Promise封裝setState、利用setState底層特性,使用異步函數(setTimeout、async)包裹)
- 有狀態組件和無狀態組件,有人說有狀態的更好複用,有人說無狀態的更好複用,你平時寫的時候是怎麼分的?(這個仍是要看業務場景)
- 若是有個react項目,你該管理組件狀態?(從local state、global state和global store三個方向來解釋)
- react中組件是怎麼響應數據的變化從而更新的呢?
- react中的生命週期分爲哪幾個階段?react16廢棄了哪幾個生命週期api?
- 虛擬DOM相比真實DOM,爲何會帶來性能上的優化?
- diff算法是怎麼比較新舊節點並更新的?key有什麼做用?
- 若是我這裏有一個文本組件,我修改了裏面的文本,那麼會影響到其餘的組件嗎?(因此這個仍是要看場景)
- 若是store中有一個cityList字段,咱們須要在用戶刷新後保持原來的樣子,作緩存,若是這個時候上方下達了一個命令,須要關閉某個城市的物流配送,這個時候須要將該城市移除,用戶不刷新瀏覽器的狀況下,如何作到?(這道題說實話我沒理解,我說更新store和緩存,但被面試官否認了,後來只能說不知道,也忘了問他答案是什麼了)
- 對webpack有了解嗎?chunk、bundle和module有什麼區別?
- 說說hash、chunkhash和contenthash的區別?
- TypeScript有哪些好處?
- 瀏覽器頁面渲染的流程是什麼?
- css會阻塞頁面渲染嗎?會的話該怎麼解決呢?怎麼作到只加載首頁的css?
- 你以爲你最擅長的技術是哪一塊呢?
綜合面(綜合+HR+部門leader)
- 從你的項目中隨便找一個,說一說這個項目解決了哪方面的問題,業務或者技術上的都行。
- 這個項目中你的角色是什麼?你作了哪些?哪裏又可以體現你的能力呢?
- 爲何只在攜程呆了一年多就出來找工做了?你如今的職級是多少?
- 你最近有看過什麼書?最近在研究的技術是什麼?
- 用過vue嗎?感受和react的區別是什麼?若是讓你作vue項目,你能接受嗎?
- 這邊是一個vue重構到react的項目,最近招人來作這塊的內容,包括webpack之類的都是從新搭,你以爲你能hold住嗎?
- 打算在上海定居嗎?是打算啥時候回二線?
- 你將來3-5年的職業規劃是什麼?
- 其餘私密問題等等
總結
二面的時候,面試官問我有什麼想問的嗎?我說,對於我這種剛畢業1-2年的人來講,我對webpack和node接觸比較少,在公司也很難接觸到,本身寫項目又遇不到不少深刻的場景,接下來我該往哪方面發展呢?什麼纔是更重要的呢?react
面試官說,你以前說本身爲何離職的時候已經說的很清楚了,我相信你已經找到答案了。我以爲對於畢業1-3年的人來講,若是可以作到獨立去帶一個項目和團隊,這是很是難得的。jquery
部門leader面的時候,問了我不少項目方面的問題,很多正中我要害,剛畢業一年多來確實沒有想過那麼多東西。在技術不夠突出,工做經驗也比較少的狀況下,彷佛也很難說哪裏可以體現出本身的能力。若是能多呆半年,確定會有不同的回答。webpack
HR面的時候,這個HR對前東家的薪資待遇、職稱等等能夠說很是瞭解了,問了不少深刻和細節的問題,也和我聊了不少,致使我很是尷尬和緊張(我一貫不會撒謊,不少都是照實說了)。git
這是本身遇到時間最久一次面試,算上HR面先後有五輪。不過,還算是愉快,至少讓我積累了一大筆很寶貴的面試經驗。