有赞
只记录了印象比较深刻的点
有赞用 react 比较多,面试问框架更倾向于问 react
笔试
选择题
- currentTarget 和 target 的区别
- 前者,指向事件绑定的元素,后者指向事件触发的元素,事件代理时,区别明显
- 上网必须要子网掩码、网管、IP
- 后缀表达式
- focus、blur 事件
- postMessage,跨域(窗口)
- otherWindow.postMessage(message, targetOrigin, transfer)
- localStorage 大小限制
- 5M
- 非稳定排序——快速排序和堆排序。两路合并算法是归并算法
- 时钟频率,CPU
算法
- 有一道算法,忘了,不过不难
一面
时长一个小时多一点,技术面共两面
- 算法:平铺数组
/*
* 平铺数组,depth为需要平铺的层级
*
* const array = [1, [2, [3, [4]], 5]]
*
* flattenDepth(array, 1)
* // => [1, 2, [3, [4]], 5]
*
* flattenDepth(array, 2)
* // => [1, 2, 3, [4], 5]
*/
function flattenDepth(array, depth) {
if (depth === 0) return array
let arr = []
for (let i = 0; i < array.length; i++) {
if (Array.isArray(array[i])) {
arr.push(...array[i])
} else {
arr.push(array[i])
}
}
depth--
return flattenDepth(arr, depth)
}
-
算法:有效的括号,力扣上的
- 用栈的思路解决,用 Map 存储一下括号类型
-
看你算法用 let 定义数组,为什么不用 const?谈了下区别,然后说 let 只是个人习惯
-
遍历对象的方法
-
可枚举属性,相关方法
-
对象的属性描述符
-
谈谈继承
-
谈谈对象复用有哪些方法
- 深浅拷贝
- Object.create()
- Vue 的 mixin
-
异步了解吗?
二面
- 最近在学什么?浏览器的原理
- 聊了 v8 垃圾回收机制
- 浏览器刚打开有几个进程?进程和线程的区别?
- 输入 URL 之后会发生什么?DNS 存在哪?
- 介绍下实习项目
- 个人博客项目的登录如何实现?token。JWT 由几部分组成?
- react useCallback 用过吗?没用过
- 用过什么?useState、useEffect。想实现只调用函数一次用 useEffect 怎么做?
- hooks 解决了什么问题?有什么弊端?
- useState 如何实现的?不了解。猜测一下底层实现?我猜的闭包,不对。换了个话题,谈谈闭包?
- 如何检查内存泄露?控制台 Performance、Memory。谈谈使用过程?
- JS 单线程,如何进行多个操作?
- 谈谈事件循环
- 系统报错有哪些类型
- 跨域了解吗?聊了下 CORS
- 毕业后的职业规划
hr 面
聊了三四十分钟
- 特别杂,学习、生活、工作各个角度都聊到了