记录一次前端面试记录

251 阅读4分钟
字节一面

讲项目

css 权重

hooks

发布订阅模式

js 执行逻辑(箭头函数不能改变this指针、this执行问题)

csrf

美团一面

sso 登录

token 怎么做同一登录机制,不同的三级域名怎么访问token

react 怎么识别组件和原生标签

360一面

margin、padding设置百分比时,依赖宽度还是高度计算

有没有用BEM之类的

var、let、const 的区别

深拷贝、浅拷贝

...扩展运算符对数据的要求

项目中的难点

好未来一面

讲项目

做题:寻找字符串中重复次数最多的字符以及次数

优化

对新技术的了解

浏览器渲染流程

http2的优化

字节二面

nginx 负载均衡怎么做

函数柯里化

跨域策略以及解决方案

预检请求、怎么触发预检请求

常见的前端性能监控指标

requestAnimationFrame、setTimeout 的区别

react、vue 的区别

react 怎么做的并发更新、原理

组件怎么复用逻辑,hooks、HOC、render props

render props 不好的地方

event loop 和 浏览器刷新帧率有没有关系

webpack 常见插件

loader 和 plugin 的差别、执行时机的差别

loader 的输入和输出是什么

常见的打包格式

怎么维护好一个 npm 包

发送一个请求,整个链路中可能遇到的缓存

百度一面

清除浮动

左右固定,中间自定义布局

两数之和

盒子模型

vue key 的作用

闭包

webpack 构建过程

讲项目

好未来一面

项目怎么做到按路由分包

csrf、xss

怎么构建压缩资源

微前端js隔离

寻找类似二叉树的数组对象的最大深度

怎么给 js 的 npm 包添加ts声明

type omit 工具函数

美团二面

http2和http1的差别

http stream

百度二面

webpack 热更新

http缓存

讲项目

好未来二面

无重复字符的最长子串

ts的函数重载、类型断言

讲项目

360二面

requestIdleCallback 的应用

vue2 的数据劫持

react 并发模式

pnpm 和 npm 的区别,解决了什么问题

讲项目

事件循环

vite 为什么快

浏览器的一帧做了哪些事

commonjs 和 es module 的区别

360三面

浏览器窗口跨域通信

实现发布订阅模式

cookie samesite

螺旋矩阵

自定义hook实现类组件的类似constructor函数

字节一面

flex 字段的属性

实现 instanceof

SPA和MPA优缺点

react fiber

实现useToggle,简单的hook

讲项目

微前端解决了什么问题

跨域名窗口通信

强缓存和协商缓存

小红书一面

函数式编程和面向对象编程的区别

实现单例模式

实现compose函数

mvvm和mvc的区别

react diff过程

useCallback 和 useMemo的区别

v-model 的原理

vue组件间通信

vue双向数据绑定

react和vue的区别

react 单向数据流优点缺点

ts函数重载

type和interface的区别

ts infer的作用

react fiber 架构

react 18新特性

hooks存储的位置

讲讲常见的设计模式、以及工作中用到的

微前端 shadow dom

proxy沙箱和快照沙箱

字节二面

es6等高级语法怎么在浏览器运行 babel,polyfill

react 性能优化

react18 新功能

实现 useForceUpdate

做题

讲项目

内存泄露

ts infer

ts any、unknown、never 的区别

ts 中一个类型能赋值给另外一个类型的条件,子类型

babel runtime 的作用

美团一面

讲项目

实现深拷贝

微前端js隔离、css隔离

贝壳一面

如何实现上传图片、预览

cooke的httpOnly属性和SameSite属性

跨站和跨域的区别

两数之和

讲项目

百度一面

讲项目

深拷贝

实现Rate评分组件

实现button、同时支持防抖

umd、amd、es module

amd 怎么实现

去哪儿一面

讲项目

浏览器缓存

fiber架构

useMemo、useCallback

promise 限制请求并发数

去哪儿三面

讲项目

域名怎么生效的

美团一面

讲项目

歌词提取函数

美团二面

讲项目

实现 promise.all

将两个有序数组合并成一个,在第一个数组上进行操作,要求O(n)的时间复杂度和O(1)的空间复杂度。例如:[1,2,3],[2,5,6]结果为[1,2,2,3,5,6]。

[{id: 1, w: 1}, {id: 2, w: 2},{id: 1, w: 2},{id: 2, w: 1}],去重id相同的数据,保留id相同数据的最大w,同时保留之前的顺序。结果:[{id: 2, w: 2}, {id: 1, w: 2}]。

useState 返回的第二个函数是同步还是异步、产生的任务是宏任务还是微任务。