面試前的準備
1.中/英文自我介紹
2.離職的原因
html
1.把帶 css 鏈接的<link>
標簽放在 <head>
標簽內,而帶 js 鏈接的 <script>
標簽盡量靠近 </body>
, 為什么會有這種提議?如果必須不這樣做,如何處理?
css
1.列舉水平垂直居中的實現
2.簡述一下什么是盒子模型
3.了解過 flex 布局、 grid 布局嗎
4.計算樣式權重
JavaScript
1.數組去重
2.數組多層扁平化
3.深拷貝數組和對象
4.數組里面有 10 萬個數據,取第 1 個數據與第 10 萬個數據的時間相差多少?
5.數組的 map 和 forEach 有什么區別?
6.Fetch 與 XHR 的區別?
7.bind、call、apply 的區別?
8.如何檢測變量的類型(盡可能多,描述可能出現的問題)?
9.簡述一下原型鏈
10.使用過 ES6 嗎?你常用的有哪一些?
11.簡述一下 Promise 的特點
12.Promise 怎么做異常處理?
13.Promise 串聯加載?
14.Promise 并行加載?
15.Promise 限流并發?
16.async/await?
17.一定要使用 async/await 嗎,如果我不做異步處理,可能只是處理簡單的關閉彈框不能用 Promise 嗎?
18.事件循環 (event-loop)
計算題
1.按順序寫出程序的輸出結果:
考察 this 問題
var length = 10;
function fn() { alert(this.length); }
var obj = {
length: 5,
callApi: function(fn) {
fn();
arguments[0]();
}
}
obj.callApi(fn, 3)
2.列出下面代碼的不足及優化方案
var node = document.querySelectorAll('ul');
for (var i = 0;i < node.length; i++) {
node[i].addEventListener('click', function() {
alert('click' + i);
});
}
3.改造下面的代碼,使之輸出 0 ~ 9,寫出你能想到的所有解法。
for (var i = 0;i < 10; i++) {
setTimeout(() => {
console.log(i)
}, 1000);
}
4.請寫出下面代碼的運行結果
async function async1() {
console.log("async1 start");
await async2();
console.log("async1 end");
}
async function async2() {
console.log("async2");
}
console.log("script start");
setTimeout(() => {
console.log('setTimeout');
}, 0);
async1();
new Promise((reslove) => {
console.log("promise1");
reslove();
}).then(() => {
console.log("promise2");
})
console.log("script end");
概念類
1.什么是閉包?列舉閉包的應用場景
2.什么是科里化?
3.節流與防抖
4.說說從瀏覽器地址欄輸入 URL 到頁面加載完的過程中都發生了什么事情?
TypeScript
1.為什么要引入 TypeScript,引入的好處是什么?
React
1.虛擬 dom 是如何提升性能的
2.React 通過什么方式來更新數據
3.React 不能直接修改 State 嗎?
4.setState 是同步還是異步的?
5.React 生命周期
6.組件通信
7.簡述一下 React.Context 怎么使用
8.函數組件是什么?
9.高階函數、高階組件
10.受控組件與非受控組件的區別
11.異步組件怎么使用?
12.怎么對組件的參數做類型約束呢?
13.組件設計原則
14.React 性能優化
15.父組件在執行 render 時會不會觸發子組件的 render 事件?如果會該怎么避免?
16.有了解過 Portals 嗎?
17.Hook 相比 class 的優點
18.自定義 Hook 約束
19.自定義 Hook 使用
20.redux 是什么?
21.redux 的三大原則是什么?
22.描述 redux 單向數據流
Vue
1.列舉 Vue 的生命周期以及它們的應用場景
2.父組件和子組件生命周期鉤子執行順序是什么?
3.DOM 渲染在 Vue 的哪個生命周期就已經完成
4.v-for 遍歷模板時為什么要用 key? key 有什么用?
5.v-if 與 v-show 有什么區別? 在什么場景下可以應用
6.組件通信
7.vue 的雙向綁定原理是什么?
8.怎么在組件中實現 v-modal
9.vue router 的 beforeEach 和 afterEach 一般用法/使用場景?
webpack
1.module、chunk、bundle 分別是什么?
2.loader 和 plugin 有什么區別?有自己實現過嗎?
3.除了做基礎腳手架外,還用來做過什么?
4.webpack 實現懶加載
5.webpack 優化項
6.babel-runtime 和 babel-polyfill
7.什么是 Tree-Shaking
優化類
1.SPA(vue/react) 如何優化首頁的加載速度?首屏空白是什么問題引起的?
2.頁面優化有哪些方案?
解決方案
1.列舉移動端適配方案
2.怎么處理跨域?
3.Vue 與 React 的區別,怎么做技術選型?
HTTP
1.列舉 HTTP 狀態碼以及它們的含義
2.有了解過 HTTP 緩存嗎?
運維相關
1.了解過 docker 嗎?
2.你們項目的 CI/CD 是怎么搭建的?
3.阿里云的 CDN 資源有緩存,如何強制更新緩存?
4.git 除了 pull
、 push
外還了解哪些命令?
其他
1.你哪些項目實現的比較滿意?
2.你碰到最難的一個問題是什么?
3.是否寫過測試用例
4.是否了解敏捷開發
目前只是整理了常見的題目