HTML
CSS
JavaScript
- 前端和 native 的通信方式
- new 的时候做了哪些事
- function fun() { fun() } 在浏览器中运行,会不会报错,会不会卡住
- function fun() { setTimeout(fun) } 在浏览器中运行,会不会报错,会不会卡住
- function fun() { new Promise((r) => { r(); fun() } } 在浏览器中运行,会不会报错,会不会卡住
- function fun() { new Promise((r) => { fun(); r() }) } 在浏览器中运行,会不会报错,会不会卡住
- function fun() { Promise.resolve().then(fun) } 在浏览器中运行,会不会报错,会不会卡住
React
- 生命周期有哪些
- react 的事件机制 & 和原生事件的对比和顺序(从捕获、冒泡方面)
- 组件之间的通信方式(父子、子父、跨层级组件、兄弟组件)
- 触发重新渲染有哪些方式
- render 会做哪些事情
- hook 的作用
- hook 中的生命周期管理
- react router 有几种模式,区别是什么
- 虚拟 DOM
- setState 内部做了什么事情
- react 的批处理是怎么实现的?
- 使用 react hooks 过程中有没有遇到什么不舒服的点
- react 为什么要对 hook 做一些限制,为什么一定不能写在条件语句中
- 如果想要实现可以写在条件语句中,从 react 底层要怎么实现
- 有没有关注 react 19(其实刚才就是想问 use() 的原理)
- react useEffect 三个参数的区别
- 父组件和子组件的 useEffect 的执行顺序
- react 如何在页面出现的时候调“show” 和 页面退出的时候调“hidden”(感觉说了一通端能力,面试官没听懂,搞得我也没懂他想要什么,后来又感觉他就是说的 bridge 通信)
- useLayoutEffect 和 useEffect 的区别,什么时候会用这个
- react 18/19 新增了哪些 hooks
- 目前使用的 react 版本是多少?有使用 concurrentMode 吗?concurrentMode 和原来的模式有什么区别?
- react native 怎么实现修改透明度
- rn 怎么实现透明度从 0 改到 1
- rn 有几种实现动画的方式
- rn 和原生的通信方式有哪些
- 说一下 rn 的 requestAnimationFrame,使用场景,如果在 raf 里执行一个很大的计算会阻塞渲染吗?怎么解决很大的计算这个问题?
- 在 rn 里 你 使用了哪些技术手段实现性能优化?前端代码层面
网络
浏览器
- 垃圾回收机制 & 垃圾回收的时机 & 如何手动触发垃圾回收
- 说一下事件循环
- 浏览器里 raf 1s 中执行多少次?setInterval(17ms) 和 使用 raf 有什么区别?那 raf 就是准确的吗, 如果页面的帧率很卡呢,raf 还准确吗?
- 如何实现一个倒计时,除了 raf 还有什么方法实现
工程
- css 用的哪种方案,项目里 css loader 的顺序是怎样
状态管理
- jotai 和 redux 的区别
性能
- 从输入 url 到页面完整渲染的过程 & 说一下这条链路上有哪些优化方式
- 假如页面的一个弹窗(打开页面弹窗自动弹出)加载慢怎么解决
- 白屏问题的解决方案
其他
- 说一下你准备最充分的项目/自己说一两个项目
- 说一下遇到的难点
- 说一下你们 SSR 框架的流程
- ssr 涉及服务端构建,是如何构建的
- ssr 为什么首屏快
- ssr 项目有没有做 SEO 方面的处理
- ssr 的优缺点
- 能不能完全阻止爬虫 & 爬虫的手段(做了那些反爬手段之后为什么爬虫还能爬到)
- 谈一下 AI,有没有做过 AI 相关的产品
- 说一下代码质量方面的建设(单测、代码规范 eslint 方面之类的)
- 测试用例有没有考虑用 AI 去做
- 有没有在开源社区做一些贡献 & 学习方面
- 说一下在项目初始化、构建方面的优化的贡献
Coding
a. 给定一个数组,如果数组项是普通类型,权重为 1,如果是 null,权重是 2,复杂数据类型,权重是 3
b. 实现一个异步函数,对权重做累加
c. 每隔 1s 输出 value 值和当前累加的权重值,最后输入 total:累加的权重
// 实现 calAsyncSum
const arr = [2, true, null]
arr.calAsyncSum().then((res) => {
console.log(`total sum: ${res}`)
})
// 隔 1s
// 输出 value: 2, sum: 1
// 隔 1s
// 输出 value: true, sum: 2
// 隔1s
// 输出 value:null, sum: 4
// 输出 total sum: 4
求两个数组的交集
// [1] [1, 2] -> [1]
// [1, 1, 1, 2] [1, 2] -> [1, 2]
// [1, 2, 2, 1] [3, 2, 2, 4] -> [2, 2]
- 深拷贝
- 使用 CSS Flex 实现这种效果,容器宽高不定,子元素宽高固定
- 防抖 & 节流
- list2tree
- 缓存请求,多次请求只发送一次到后端,其他的请求也要响应 callback,但是请求结果使用缓存的结果
- 实现 a(1, 2).a(3, 4).log() 输出 10,参数不固定
- 如何实现并发控制,设计一个高阶函数(会做并发控制),使用方式和普通 fetch 一样使用,怎么去设计这个高阶函数
算法
- 二叉树的直径
持续更新……