这个面试机会来的挺意外的,先在 Boss 投递的简历,后再某客网看到了内推人的微信,加了微信问了下进度,挂了,内推人给我打电话根据简历简单询问了一下情况(内推人很谦逊,毕业于一所 211 大学,和我说他的学历也很一般),然后和 hr 沟通捞了我一下,才有的这个面试机会,太感谢了。
一面
-
自我介绍
-
怪异盒模型和标准盒模型的区别
-
给了一段代码说两个盒子背景为蓝色的区域
-
两个盒子分别设置了 box-sizing: border-box, box-sizing: content-box
-
如何触发 BFC
-
给一段代码问效果是什么样的
-
会有一个外边距合并的问题,怎么解决这个问题
-
垂直水平居中
-
你了解得数组遍历方式有哪些,你觉得那个性能最优那
-
this 指向谁,如何更改 this 的指向
// 非原题 非原题 非原题
const o1 = {
text: 'o1',
fn: function() {
return this.text;
}
}
const o2 = {
text: 'o2',
fn: o1.fn
}
console.log(o2.fn());
-
你常用的 React Hooks 有哪些,描述功能
-
打出来
-
服务端渲染了解吗 和 SPA(单页面应用) 的区别
-
Commonjs 和 ES6 Module 得区别
-
还了解过其他的吗,不了解(AMD、CMD、UMD…)
算法题
-
题不难,但是思路跑偏了
-
先用的递归O(n ^ 2)
-
可以优化一下吗?
-
改成了循环可以提前终止
-
面试官: 其实你思路跑偏了,O(n)的复杂度就可以,用栈(瞬间顿悟),不过解出来就好
反问
大概 45 分钟吧
说一面就给我过了,等会 17:00 二面
二面
讲讲项目,说说你的亮点
-
亮点,性能优化吧,怎么测量的,怎么优化的,优化前后的对比
-
Network, Lighthouse, Performace, Memory, Webpack、网络
-
面试官也会提出一些问题,问我怎么优化,原理是什么
有写过 webpack 的 plugins 吗
没有
看代码,css 选择器权重
-
算法:二叉树
-
考点递归回溯,非原题
有这么一个数据结构:
const data = [
{
"id": "1",
"sub": [
{
"id": "2",
"sub": [
{
"id": "3",
"sub": null
},
{
"id": "4",
"sub": [
{
"id": "6",
"sub": null
}
]
},
{
"id": "5",
"sub": null
}
]
}
]
},
{
"id": "7",
"sub": [
{
"id": "8",
"sub": [
{
"id": "9",
"sub": null
}
]
}
]
},
{
"id": "10",
"sub": null
}
]
现在给定一个id,要求实现一个函数
findPath(data, id) {
}
返回给定id在 data 里的路径
示例:
id = "1" => ["1"]
id = "9" => ["7", "8", "9"]
id = "100"=> []
PS: id 全局唯一,无序
-
说下 EventLoop
-
看代码
async function async1() {
console.log('async1 start');
await async2();
console.log('async1 end');
}
async function async2()