25暑期 淘天前端一面 面经分享
面试时长: 1h30min
JavaScript
- [[JavaScript 和其他语言的区别]]
- [[JavaScript 内存回收]]
- [[事件循环]] 引入事件循环是用来解决什么问题的?以下代码的输出是什么?如果去掉await呢?执行过程中 V8 引擎是如何进行压栈弹栈的?同步代码会放在事件循环里吗?
console.log(1); await Promise.resolve().then(()=>{ console.log(2); }); console.log(3);
- [[即时编译]]是用来解决什么问题的?
- 浏览器输入 url 到页面呈现的过程 处理 CSS 如果都是外联的会发生什么html 从返回到解析到页面的过程,假设流式返回了 1 兆的 HTML,浏览器是如何解析的?布局的计算、绘制、页面 HTML 的渲染分别是在 CPU 还是 GPU 里完成的?每次绘制多大面积?(猜了个视口)追问如果视口面积很大,是把整个视口一次性提交给 GPU 吗?
- 屏幕的刷新频率是多少?浏览器的呢? 在浏览器上做动画,如何保证动画更细腻?RAF 的回调时机,是在什么时候回调?(有点没理解)RAF 可以传入一个回调函数,这个回调函数是在什么时候被调用的?(传入 RAF 的回调函数还有一个参数,是 RAF 开始执行回调函数的时刻)面试官提示和事件循环有关系,RAF 在事件循环内的什么时候被执行?(RAF 是宏任务)RAF 的回调会掉帧吗?如果在 RAF 的回调函数中放了一个斐波那契函数,这样会掉帧吗?(猜会有一种机制预防,被问是什么机制,实在不会)
React
- react 框架有什么特点(尽可能多说)
- React 的出现是为了解决什么问题?(举了 React 文档井字棋状态前进回溯的例子,面试官说不止这一点点)
- React 的 [[React diff]] 算法,具体讲讲比较子树的时候用到广度还是深度优先
- 函数式组件有什么好处?(说了方便进行组件通信、提高复用性,面试官说类组件也可以复用啊)
- 使用过哪些 hooks?
- Hooks 的出现是为了解决什么问题?(面试官提示函数式组件本质上是函数,函数需要状态,hooks 提供了简洁的方式维护当前组件的状态。)(面试官给出学习建议:以 React 版本更新这方面为脉络,每个版本解决了什么样的问题)
计算机基础
- [[排序]]
- 知道哪几种排序算法,选择排序和插入排序区别是什么?
- 快速排序是怎么实现的?说一下,时空复杂度分别是多少?最好最坏情况下呢
除了上面的还问了项目的一些细节(主要是登录鉴权相关,token如何快速失效?知道无感刷新吗?)和个人的基本情况。
反问部门业务和如何读源码,面试官讲了非常多技术上的学习思路和方法,受益匪浅,真的很感谢这位面试官。
4.9一面 4.10二面 4.15hr面 4.16oc 4.18意向
希望大家都能拿到想要的offer~^_^