近期大厂面试记录(分类)

215 阅读4分钟

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 一样使用,怎么去设计这个高阶函数

算法

  • 二叉树的直径

持续更新……