面试题汇总
快手(一面)
- react 16 新增了那些生命周期函数,有什么作用,为什么去掉某些 15 的生命周期
- fiber 原理,如何实现异步渲染(链表/可中断)
- redux 和 redux-saga 的区别和原理
- 项目中用到的 saga-duck 是什么东西
- useEffect 的实现原理
- 异步渲染和旧版的 diff 的区别
- babel 实现转码的过程(词法、语法分析)
- 项目技术栈怎么选型
- 小程序底层实现原理了解多少(双线程模型/预加载Webview)
- 项目 nodejs 应用异常退出如何处理(pm2/uncaughtException 事件等)、日志上报怎么做(输出重定向到文件,elk服务传到kibana)
- graphic schema 怎么设计
- 有哪些技术驱动业务的案例
- 算法:最大乘积子序列
美团
- 用 promise 实现一个请求超时功能
- 你是如何学习前端 10.组件通信有哪几种方式
- JavaScript基本类型有哪些?和引用类型的区别? 11.数据双向绑定的原理
- js的原生数组方法? 12.Vue3对数据双向绑定做了哪些改进
- event loop是什么 13.css选择器优先级
- 了解nodeis的event loop吗 14.flex的常见属性
- 浏览器的垃圾回收机制 15.编程题:图像旋转
- 了解http缓存吗
- 常见的前端安全问题?什么是csrf、xss和解决方案
- Vue的生命周期
- 实现数组的slice方法
拼多多
拼多多(一面)
- React 16 生命周期的变化
- 详细介绍一下 getDerivedStateFromProps
- flex: 0 1 auto 具体表示什么含义
- less 的 & 代表什么
- 算法题:求字符串最大公共前缀
- interface 和 type 的区别
- 状态管理工具
- 有用过 ssr 吗
- node 熟悉吗
- redux 理念
- react-redux 中 connect 怎么实现
- mixin、hoc、继承的区别、优缺点
- react diff 实现
- react 旧版的diff用深度优先还是广度优先。为什么用深度优先,广度优先能实现吗
- diff的时间复杂度?为什么?
- react-router 实现原理
- 客户端路由 hash/history 实现的区别、原理
- 有哪些常见的 http 头
- websocket 轮询的好处缺点
- websocket 握手的过程
- tcp 握手过程
- tcp/udp 的区别
- 尽可能多实现pdd app 导航布局实现(4等分div并列排布)
- 如何清除浮动
- BFC 实现原理
- 开放题:pdd 假设没有首页优化,尽可能想办法优化
拼多多(二面)
- css盒子模型(content-box、border-box)
- 实现动画有哪些方法
- react mixin hoc 以及 hook 之间的区别和优缺点
- 浏览器渲染出一个页面的过程
- vue/react 技术选型
- 项目相关,重构开发如何并行
- 项目中工程化进行了哪些优化
- 项目中进行优化会从哪方面去做
- nodejs 性能优化
- linux 文件权限
- 前端监控怎么实现
阿里
未知部门(一面)
- 说说Webpack的实现原理
- 首屏优化有哪些解决方案
- Node.js的加载机制(require和module.exports)
- 你觉得你最擅长什么
- React和Vue的区别
阿里CBU技术部(一面)
- 说说z-index有什么需要注意的地方
- 熟悉CSS3动画么
- 有没有做过什么可视化的项目
- 你觉得你最擅长的是什么
- Flex实现两列布局
- 说说DOM事件流
- 你觉得你有做过推动流程或者改善流程的事件么,举例说明
阿里企业智能事业部(一面)
- Webpack的loader和plugins的区别
- HTTP状态码206是干什么的
- React高阶组件的作用有哪些
- Service Worker有哪些作用
- 跨域
阿里企业智能事业部(二面)
- Vue的整个实现原理
- Chrome插件如何屏蔽广告
- 如何判断两个变量相等
- Vue的数据为什么频繁变化但只会更新一次
- 绝对定位、固定定位和z-index
未知部门
- position属性有哪些值分别介绍一下
- relative的定位规则
- 脱离文档流是会呈现什么样的效果呢?
- 常规流(文档流)是个怎样的排列关系
- inline-block的使用场景
- GET和POST的区别
- 为什么说GET会留下历史记录?
- GET可以上传图片吗?
- GET和POST的安全性问题为什么说POST相对安全一些
- GET就一定是幂等的吗?
- 说一下你所知道的缓存方案
- 你们为什么要做这个动态表单?(业务痛点)
- 动态表单具体的难点在哪?
- 有没有了解行业内其它做动态表单这一块的
- 你还有什么想要问我的吗?
百度
安全平台(一面)
- 请实现一个通用add方法,add参数为任意数量,如add(1, 2, 3) 输出6
- 请实现Promise.all()
- 请实现一个双向数据绑定
- ts 和 js 的区别
- es 和 js 的区别
- amd 和 esm 的区别
- 浏览器是否支持 esm
- webpack怎么进行首屏加载的优化
- 了解过 tree-shaking 吗
- 闭包为什么会有内存泄漏问题
- 了解过 nodejs 吗
- express 和 koa2、koa3 的区别
- 了解过 flex 布局吗
- 有8个子盒子,每个盒子宽100px,父盒子宽700px,那么它是一行显示还是会换行?
- 我想换行怎么实现?
- HTTP 和 HTTPS 的区别
- HTTPS 的加密如何实现
- 数字证书如何验证合法性
安全平台(二面)
- 输入URL到页面展示中的全过程
- 在这过程中的话涉及那些网络协议
- HTTP协议是否包括端口号
- 端口号是TCP协议的一部分?
- 为什么需要三次握手?
- 三次握手的全过程
- TCP连接如何确认连接方
- HTTPS的握手过程
- 证书的作用以及判断过程
- 建立SSL连接之后,是对称还是非对称加密
- 为什么会有跨域的问题
- 跨域的网络情况大概是怎样
- 除了常规的GET、POST以外,DELETE等请求也是这个流程
- 解决方案
- jsonp为什么可以实现跨域呢
- 除了script标签,还有哪些标签支持跨域请求
- 直接使用表单提交请求,会有跨域问题吗
- websocket 建立过程是怎样的
- 代码题
- 面向对象编程中的三个特征
- 面向对象编程中的五个规则
- 开发过程中的设计模式
字节跳动
字节(一面)
- 算法:实现 36 进制转换
- https 原理,与 http 区别
- 操作系统中的进程和线程怎么通信
- node 中的 cluster 是怎么开启多线程的,并且一个端口可以被多个进程监听吗
- 实现原生 ajax
- vue-router 源码
- vue 原理(手写代码,实现数据劫持)
- 算法:树的遍历有几种方式,实现下层次遍历
- 算法:判断对称二叉树
- 平时怎么提升自己的前端水平
- github 上面主要写什么
- 浏览器渲染机制的理解
- 性能优化方面的理解
- 平时怎么提升自己的前端水平
- github 上面主要写什么
- 浏览器渲染机制的理解
- 性能优化方面的理解
- 常用的 http 状态码(101 200 204 301 302 304 307 400 404 500)
- 301 和 302 的区别(永久/临时)
- 前端路由如何实现
- 前端路由刷新404如何处理(404时重定向到index.html)
- 从前端到后端全链路如何设计一个登录的流程(session 方案、jwt)
- 什么是跨域,怎样处理
- 简单请求、复杂请求
- 浏览器的缓存策略
- domain 属性解决跨域,几种domain设置对跨域是否生效
- ts泛型做什么的,infer关键字的作用
- 实现 typescript 的 Paramters、ReturnType
- 实现 Promise.all
- 实现一个并发请求控制函数,限制并发数
字节(二面)
一面后五分钟
- 介绍项目中的难点
- var、let、const区别
- 哪些 http 头部
- 怎么与服务端保持连接
- 跨域
- webpack 怎么优化
- 哪些请求方法
- ts 与 js 区别
- ts 用过哪些类型
- type 和 interface 区别
- react 优化
- 算法:合并乱序区间
- jwt 原理
- xss和csrf防范
- pureComponent 和 Component 区别(前者 shouldComponentUpdate 默认比较 props)
- react hook hoc 解决了什么问题
- 有哪些常用的 hook
- 项目实现一个中间层的意义(前端全链路日志打通)
- setState 同步还是异步
- setState 传递对象和函数有什么区别
- 合成事件是怎样的,有什么好处
- 事件冒泡和事件捕获的区别,react中的冒泡和捕获(react 都是合成事件,无论是冒泡还是捕获,都对应原生中的冒泡)
- 手写 bind
- 实现快排
字节(三面)
算法思路,实现
- 你了解 node 多进程吗
- node 进程中怎么通信
- node 可以开启多线程吗
- 算法:孩子分饼干
- 给定一个正整数数列 a
arr = [3,1,6,4,5,2]
x=4, [6,5,4]
4 * (6 + 4 + 5) = 60
- graphql 相比 restful 的区别,优缺点
- 为啥选择了redux-saga作为解决方案(解决异步优雅/提供很多工具函数)。redux的异步中间件方案有哪些,对比。saga对比dva?
- graphql的鉴权在哪里做
- 协程是什么(语言层面实现的并发),Go/nodeJs怎样去实现协程(Go使用go关键字、node可以使用Generator实现、我理解react16的异步渲染也是协程的实现)
- react fiber的机制是怎样的
- 锁机制的作用,node和Go如何处理死锁
- Go/node实现并发怎么做
- node和Go的优缺点怎样理解
- 实现一个 useState
- 实现一个抓包请求
- 实现一个防抖功能
- 实现一个图片懒加载
- 获取一个异步求和函数
字节(HR面)
- 对未来的规划是什么
- 加强对前端技术的基础学习(js+算法)
- 发挥专业优势,尝试数据可视化方向
- 印象深刻的项目,难点
- 对字节的了解
腾讯
QQ音乐 - 一面(电话面)
- 自我介绍
- 为什么想离职?
react hooks
有哪些优缺点?useLayoutEffect
和useEffect
区别是什么?- 有接触过哪些移动端跨平台框架?说下
jsBridge
? - 说下
react-native
的原理,原生端和js端是怎么通信的? flutter
有了解过吗?为什么说它的性能可以媲美原生?它有什么缺点吗?- 如果一个项目要用移动端跨平台框架开发,你会选择哪个?
反转单向链表
怎么做?需要几个指针?都有什么作用?
QQ音乐 - 二面(现场导师面)
Vue
和React
的区别是什么?你觉得哪个好?redux
主要解决了什么问题?它的工作原理是什么?与mobx
的区别是什么?你觉得redux
和mobx
哪个更好?react
中state
有层级很深,比如a.b.c.d
,如果只更新c属性有哪些办法?immutable.js
实现的原理是什么?Cookie
的同源策略是怎么样的,跨域情况下如何携带Cookie(这里主要考察了SameSite
问题,因为我crsf
问题没答到这点)- 有用过哪些跨平台框架,
react-native
中原生端和js端怎么进行通信的? - 说下浏览器的进程、线程模型,chrome浏览器有多少个进程?
- 说下js的
内存泄漏
,什么情况容易出现内存泄漏?怎么解决? - 自己的项目做了哪些
性能优化
?
QQ音乐 - 三面(现场组长面)
- 说一下输入一个url地址后的全过程?
dom
渲染那块描述过于简单,能否说的更详细点? - 说出一个
react
的特性?它的原理是什么?(我答的fiber) - 你们的前端项目主要用的是
ES
版本是多少?说出ES7
中的3个性特性并说出应用场景?说出ES8
中的三个新特性并说出应用场景? WebWorker
有了解过吗?它有什么应用场景?刚刚的算法题可以用这个进行再次优化吗?- 为什么说
https
是安全的?https的证书校验过程是怎么样的?(这里定要说的非常非常详细)证书校验用到了哪些算法?
QQ音乐 - 四面(总监面)
- 自我介绍
- 为什么要离职
- 要你设计一个
前端监控
方案,你打算怎么做 - 平时喜欢听歌吗?用什么音乐app?(我答的以前用网易云,现在用Q音),这两个各有什么优劣势?
- 对于你来说,你觉得做音乐app中最大的技术难点是什么?
- 在技术上,你对自己以后有什么规划?
- 你有什么要问我的吗?
未知部门 - 一面(电话面)
- 什么是事件委托
- 了解 Promise 吗
- window 的 onload事件和 domcontentloaded 谁先谁后
- 有遇到过跨域问题吗?如何解决
未知部门 - 二面(QQ 远程面)
- 原型链考察
- new 考察
- typeof 和 instanceof 的区别
- new 和 instanceof 源码实现
- 箭头函数 this 的指向问题
- for..in 和 for...of 的区别
- 说说 generator 的了解
- flex 布局中的 flex-grow 和 flex-shrink 属性的作用
- 说一下宏任务和微任务,并说出下面代码的运行结果
- 数组扁平化处理
未知部门 - 三面(电话远程面)
- 输入 URL 到页面加载发生了什么
- 缓存知识
- 描述一下 DNS 解析过程
- TCP 是如何发起连接和断开连接
- 你知道有什么状态码
- 有哪些手段可以优化网页响应速度
- 5点15分,时针和分针的夹角
- 算法
未知部门 - 三面(笔试)
- 原生 js 实现
未知部门 - 四面
- 你在做这个系统如何确保消息实时推送
- 消息撤回功能如何实现?
- WebSocket 有时会出现掉线,如何解决
- 了解过哪些排序算法,描述一下归并排序的实现
- 有没有了解过 react 的 diff 算法
- 讲讲前端安全问题
IMWeb - 一面
- 你是怎么接触前端的
- js new 执行构造函数的的过程
- js 说一下 this 指向
- 说一下 bind 函数结构
- 说一下 js 继承
- 实现正则表达式
- 说一下 DOM事件流模型
- 说一下你知道的 HTTP 状态码
- 浏览器缓存的过程
- 说一下 XSS
- 如何防范
- 说一下 CSRF
- 危险网站 B 如何拿到受信任网站 A 的 cookie
- 危险网站 B 利用哪种 API 受信任网站 A 发送请求
- 项目经历中有写 SSR,说一下你是怎么实现的
- 如何保证同构的模块不会挂掉,例如在服务端访问 document
- ts问题
- 你觉得 ts 很重吗,如何确保你的同事不写 any
- ts 给你带来的价值
- 实现一个 ts 的工具函数
- 你有维护组件库,说一下如何管理组件
- 组件质量如何保存
- 没有测试用例的情况下,组件发布完全靠测试去人工测试?有没有遇到出错的情况
- 组件发布的是不是所有依赖这个组件库的项目都需要升级?
- 发布问题
- 除了 lerna,还有其他的方式吗
- 你们组件库,别人如何能知道如何使用
- 假如现在是下午 5 点 35 分,时针和分针的夹角是多少
IMWeb - 二面
- 迁移 ts 的背景和原因
- 聊到一个服务端渲染的项目,具体聊聊为什么需要使用服务端渲染
- 这几个项目中,哪几个项目的挑战难度比较大
- 大数相加
- 最近有没有了解前端最新技术
- react 17 有了解过吗
- pwa 有了解吗
- deno 和 node 的区别
- 在之前的公司,有没有主动推动一些技术的发展
IMWeb - 三面
- 为什么离职
- 上上家为什么离职
- 你认为上一家公司对技术有追求吗
- 如何理解一个出色的系统
- 你们有多少的客户
- 客户样本太少,如何解决
- 哪个功能客户用得最多
- 整个系统里面一共有多少个订单
- 为什么要从 redux 从 mobx
- 你觉得这两个各自在哪个场景下更加合适
- 系统维护了多久
- 经手了很多人,维护的难度会不会很大
- 为什么接入 ts 会延长系统的生命周期
- 官网重构
- 怎样优化 seo
- 怎样进行首屏渲染测速
- 怎么知道服务端渲染的速度会快呢
- 是同构吗?是数据同构?是UI同构?
- 整个服务端渲染的瓶颈在哪里?单机qps是多少?
- 整个网站有多少用户量?有多少台 node 服务器
- 用的是 http/1 还是 http/2,用的是 http 还是 https?
- 你最擅长的是什么
- 有用 lint 吗
- 一共有多少条规则
- ts 除了静态类型检查以外,还有什么优秀的地方
- 只有 ts 有装饰器吗
- React 的版本?
- 计算题
- 给出的条件中能算出具体值吗?不能的话能算出具体范围吗?
- 如果团队需要加班到晚上 2-3 点,你觉得合理吗?
- 腾讯微视(桌面工程师方向)一面
- 之前做的一家跨境电商的公司,这里面有什么可以说一下的地方
- 主要写的是第二家,说一下
- 具体遇到 ts 迁移遇到的问题说一下
- 什么情况下会遇到这样的问题
- 为什么是用 babel
- 相比 babel 编写 es 或者 JavaScript,TypeScript 的优势是什么
- mongodb 和 typescript 的 orm 是怎么做的
- grapql 和 restful 的区别和优势
- angular 和 react 的区别
- react 的 component 的生命周期是什么样子的
- 实现一个双向绑定
虾皮
toC group( 一面)
- 手写原型链继承
- 实例属性和原型属性的区别
- instancef 的原理
- 浏览器缓存
- Service Worker 大小大概是30Gb,如果用户硬盘没有那么大怎么办
- Service Worker 的大小和强缓存、协商缓存的大小是一起计算的还是分开计算
- Push Cache 的具体处理方式
- HTTP2 的优缺点
- HTTP2 有没有可能比 HTTP1 还要更慢
- var、let、const 的区别
- webpack
- 常用插件
- 如果有一个工程打包特别大,如何进行优化
- cjs 和 esm 模块化的区别
- es6+ 有哪些新的语法
- 跨域解决方案
- 说一下 CORS 中的预请求
- xss 和 csrf
- 用户信息存储的方式
- React 性能优化的方式
- 实现一个节流函数
toC group( 二面)
- 有哪个组件最让你印象深刻
- 这个组件的原理介绍一下
- 这个组件有做兼容性处理吗
- 说出以下代码的输出
- let a = "abc",解释器在解释在这句话的过程中,内存发生的变化,比如内存放在哪里,申请了多大的内存
- 介绍一下 esm 和 cjs 的差异
- 介绍一下前端安全问题
- 假设有一个页面需要实现下拉无限滚动加载,如何实现和优化
一面
- http 302 301 307 的区别
- 301 和 302 哪个对 seo 更友好(301)
- 跨域是什么、如何解决
- jsonp 有什么缺点
- base64和外链的应用场景,各自的优缺点
- http缓存机制
- https 的握手过程
- set/map 的区别
- hook 的局限性
- setState 和 hook 的区别
- decorator 的作用,编译后是什么样子的
- symbol 是什么,一般用来做什么
- csrf 是什么,如何防范
- sql注入是什么,如何防范
- react 调用 setState 之后发生什么
- nodejs 事件循环机制
- pm2原理,有哪些模式(cluster fork)
- docker 和 k8s 有了解多少
- 移动端一个元素的拖动,如何实现和优化(节流,改变位置)
- for in / for of 看代码输出
- 描述链表的反转如何实现,复杂度多少
- 实现 instanceof
- 实现一个对象被 for of 遍历
- 实现链表的添加、删除。复杂度是多少
二面
- 给两段效果上都可以实现继承的代码,说出差异
- this 输出问题
- 如何监听 html 外链资源加载失败
- Mutation Observer、Intersection Observer 使用场景
- 127.0.0.1 和 0.0.0.0 差别(一个只能通过 localhost ,另一个可以通过本机 ip 或者 localhost 都可以)
- 利用 Promise js sleep 函数实现
- jsx 转换后是什么样子的
- redux compose 函数是做什么的,中间件呢
- redux-sage 是什么,和 redux-thunk 有什么区别
- dva 了解吗
- umi.js 有用过吗
- req.pipe(res)
- stream 如何处理数据消费和数据生产的速率不一致问题
- writeable stream drain 事件是做什么的(这是和一个控制读写速率有关的事件)
头条
- 格式化发布时间
- 格式化数字
- 实现 js ES5 数据类型的深拷贝
- 实现简易 MVVM
- 顺序发送4个请求a,b,c,d,要求按顺序输出
滴滴
- 你知道哪些安全问题,如何避免
- CSRF/XSRF(跨站请求伪造)
- 介绍一下Graphql
- 说说Vue中$nextTick的实现原理
- 如何实现居中
- 用过Flex么,能简单介绍一下么
- bind的源码实现
- 伪类和伪元素的区别
- 说一下你们的第一个项目
- 说一下你们的UI组件库
- 动态表格的实现
- 如果有一个组件需要和前面的组件相关联你会怎么做
- 说一下你们的工作流
- 说一下你在项目中碰到的难点
- Vue的双向绑定原理
- Object.defineProperty()有什么缺点?Vue3为什么用Proxy?
- nextTick实现原理
- nextTick中的waiting是什么时候变为true的呢
- 说一下虚拟DOM的作用以及实现原理
- Vue3有哪些新的API或者有做哪些优化?
- 有关HTTP缓存的首部字段说一下
- HTTP中的keep-alive有了解吗?
- 在一次传输中它是如何保证每个数据包之间的顺序的?
- HTTP/2有了解过吗?
- 具体说一下HTTP/2中的多路复用
- 你认为你的优点是什么?
CVTE
- 新的一份工作你主要看中的是什么?
- 先说一下你的期望薪资吧
- 你为什么觉得你这次跳槽能有这么大的工资涨幅
- 如果给不到期望薪资你会怎么办
- 你遍历JSON树的具体过程
- webpack构建流程
- webpack插件原理
- webpack在配置插件的时候是一个数组那它有顺序吗
- 有用过哪些插件做项目的分析吗
- 有做过哪些webpack优化吗
- 有自己写过插件吗
- 让你从零开始构建一个webpack项目你可以吗
- 为什么TCP要三次握手而不是两次
- HTTP和TCP的区别
- 什么情况会阻塞页面的加载
- script放在body头部就一定会阻塞吗
- 添加删除了DOM节点会发生什么?(回流)
- js中改变transform的left和right对比于css修改transform
- 什么是GPU加速
- 进程和线程的区别
- 做过H5页面没有?你怎样适配移动端的
- HTTP/2对比HTTP1.1
- HTTP/2是怎么解决队头阻塞的
- HTTP/2是如何压缩头部的
- 为什么说HTTPS比HTTP安全呢
- 说一下对称加密和非对称加密
- HTTP请求的什么时候用的对称加密什么时候非对称加密
- 对称加密的原理
- 如果让你去实现一个CSRF攻击你会怎做?
- 还知道其它的攻击方式吗?
- Vue中key的作用
- 如果我将key设置为了一个Math.random()可以吗
- 如果让你设计一个双向绑定你会如何设计
- 如何实现if(a===1&&a===2&&a===3)
- 是有看过这道题吗?这么快的就回答上来了
- 说一下你们权限的控制,路由权限以及按钮权限
- 按钮权限除了用你现在的方式你还能想到更好的吗?比如封装一个组件
- 你们的token一般是放在哪里
- token放在Cookie和放在localStorage、sessionStorage中有什么不同吗
- Cookie存在哪些安全问题?如何预防?
- SameSite设置为了lax之后是怎样来控制Cookie的发送的
- 如果顶级域名不同会发送吗
- 还有哪些前端安全性问题
- 如果使用jsonp的话会有什么安全问题吗?
- 你们有做过单点登陆吗
- 有用过ngnix吗?用它做过哪些事?
- 有用过node吗?比如用它写一些中间层
- 项目里做过哪些优化?
- 你认为你做的项目最大的亮点在哪里
- 项目中碰到的技术难点
- 是什么让你有动力写bpmn.js教材呢
- 有看过哪些源码呢
- 有给git上的比较好的项目提过pull吗
- 如果现在给你一个React的项目你觉得自己能多久上手呢
- 你的职业规划是怎样呢
- 说一下你的期望薪资吧?
- 有对比过深圳和广州这边的薪资吗?
- 有了解过我们公司吗?
- 之前不是在深圳吗?为什么打算来广州?
- 人生中有没有经历过什么对你触动比较大的事情?
- 父母是如何看待你的工作的?
- 你现在单身吗?
- 工作之余的兴趣爱好
- 期望薪资给不到怎么办
- 在维护组件库的过程中,有什么难点
- 继承的优缺点
- 说一下输入 url 到页面渲染的全过程
- ts 的编译原理
- 实现一个 ts 工具函数,获取 Promise 中的泛型
- React 中性能优化的做法
- PureComponent 中如何对比两个对象
- node 的事件循环
编程猫
- 动态表单的实现
- 权限的控制
- 你们项目一般是如何做缓存的
- 项目中的环境变量是如何控制的?
- 假设有两个子项目,他们需要共用同一个用户体系如何保证关掉页面之后打开另一个项目用户还是登录状态?
- 项目如何优化
- 首屏加载优化
- SSR的使用场景
- EventLoop
- requestAnimationFrame属于宏任务还是微任务
- 输入URL到页面的呈现
- script与css还有页面的渲染顺序
- script标签的async是什么时候加载的
- 说一下==数据类型转换吧
- 说一下Vue的diff算法
- diff算法的缺点
- 说下你们项目的亮点
- 你们的UI组件库怎么实现按需引入的呢?
- Webpack打包原理
- Webpack打包有哪些优化
- HTTP/2对比HTTP/1.1
- 怎样看待你做的这几个项目呢
- 项目亮点
- 你在项目里负责什么
- 项目难点
- 你的优点
- 还有什么想要问的吗?
- 非技术的自我介绍
- 住哪里?
- 工作之余的爱好
京东
- 微信小程序里面嵌套h5是怎么通信的?
- 怎么实现一个图片的列表,在页面宽度变化时可以自动换行但是不改变图片大小?
- H5C3新特性有哪些?
- web前端性能优化?
- 前端需要发送很多个请求好吗?有什么解决方案?
- 关于多线程。
- 页面渲染及重构。
金山软件
- DNS 解析(浏览器输入 url 全过程)
- HTTPS 原理
- HTTP 长连接实现原理
- 事件循环
- 事件调用栈
- Next.js 如何实现服务端渲染
金山(wps+)
一面
- CSS选择器及优先级
- CSS有什么布局方式
- 各种布局之间有什么优缺点
- 你用过什么CSS预编译器
- less 有什么缺点
- 有遇到过1px的问题?知道如何解决吗?
- js里面有什么数据类型
- 有哪些判断方法可以判断类型?
- es6中let、const和var有什么区别
- const声明的变量怎么修改
- 箭头函数和普通函数的区别
- 事件代理
- 数组有什么方法
- 如何往数组中插入一个值
- 浏览器cookie、localStorage、sessionStorage的区别
- 除此之外,前端还有什么存储方案
- 对前端的安全有什么理解
- 对闭包的理解
- 简单的实现一个闭包
二面
- 项目中有redux迁移mobx,详细说一下原因。这二者有什么区别
- 介绍一下高版本React和低版本React之间的api废除的理由
- setState 是同步还是异步
- 在setTimeout中,是否会进行批量更新
- 说一下React的合成事件
- 说一下函数组件和class组件的区别
- 对比一下hook和hoc的优势
- 说一下graphql解决的问题
- 做过的seo优化
- 说一下JWT机制
- 如何预防网站劫持
- 说一下你对前端开发的理解
- 做过的项目的难点以及如何解决
- 离开的原因
- 职业规划
酷家乐
酷家乐(一面)
- 项目中的性能优化
- 项目中有什么值得说的
- ts 有什么优势
- type 和 interface 的区别
- React 的事件机制
- 聊聊 React 的 diff
- React 优化
- 如何理解闭包
- 节流的实现
- es5 继承
酷家乐( 二面)
- React 基本原理
- React 的性能优化
- Redux 重点概念
- 聊一下 React 的生命周期
- Hooks 如何处理生命周期
- 考察盒子模型和 box-sizing 属性,判断元素的尺寸和颜色
- 实现一个 fill 函数,不能用循环
- 用 ES5 实现私有变量
酷家乐( 三面)
- class组件如何做性能优化
- 实现一个 TypeScript 里面的 Pick
- 手写 Promise.all
- 手写并发限制器
- 算法题,判断单链表相交
- 算法题,如何找到第一个相交的点
酷家乐( 四面)
- 看过开源库的源码吗
- 聊聊 React 的源码
- FiberNode 有哪些属性
- stateNode 有什么作用
兔展
兔展(一面)
- 缓存分类
- 前端安全和攻击
- 内容安全策略(CSP)
- cookie、session|insert(题目没听清楚)
- var let 区别
- 有哪几种作用域
- 闭包的理解
- 异步的理解(事件循环)
- async/await、Promise、generator 的区别
- class 的理解
- new 的实现机制
- webpack 打包原理
- 首屏渲染优化的理解
- seo 有什么理解
- 服务端渲染的原理
- react 某些生命周期被废弃的理由
- fiber reconciler 和 stack reconciler 的区别
- useState 和 useRef 的区别
- hooks如何清除副作用
兔展(二面)
- fiber 架构是什么
- diff 算法实现思路
- key 在 diff 算法中的作用
- diff 算法时间复杂度
- diff 为什么这么高
- fiber 节点是一个什么数据结构
- 开发组件基于什么原则
- 迁移 ts 的过程
- 迁移过程中遇到的问题
- ts 的 type 和 interface 的区别
- ts 里面如何声明函数的重载
- ts 元组和数组的区别
- ts 元组的使用场景
- esm 和 cjs 的模块化的区别
- pc 端上常见的性能优化手段
- HTTP 缓存机制
网易
- H5新特性
- vue组件间通信
- 遍历对象方法
- 数组去重
- 数组的扁平化
- 深度遍历
- 链表的相加问题?
- ES6语法,Promise了解吗
- 聊一聊map和set
- 前端性能优化
YY
- 说一下你们项目动态表单的实现
- 说一下动态表格的实现
- 你们这个JSON树是在哪里生成的,前端会生成吗?
- 有了解过微前端吗?
- 了解浏览器的哪些兼容问题
- IE有哪些兼容性问题
- 说一下EventLoop
- 在项目里有用过node吗
- 如何实现一个findIndex
- 移动端布局有哪些方案?
- 如果一个移动端的项目要显示在PC端上保证结构稳定你会如何做?
- 你自己的项目里有做过哪些webpack上的优化
- 具体说一下splitChunksPlugin
- 有自己写过webpack插件吗
- HTTP3.0.1和HTTP3.0.2的区别
- 说一下Vue-Router的实现原理
- Vue-Router初始化是发生在什么时候
- 你觉得我还有哪些问题没有问到的,也就是你可以说一下你的加分项
有赞
有赞(一面)
- 说说CSS选择器以及这些选择器的优先级CSS
- 什么是BFC?触发BFC的条件?BFC的约束规则?解决了什么问题?
- 了解盒模型么
- 如何实现左侧宽度固定,右侧宽度自适应的布局
- 什么是跨域,一般什么情况下会导致跨域?其他跨域解决方案
- JSONP 的实现原理
- 如何实现一个JSONP
- JSONP安全性问题
- CORS(跨域资款共享)
- JSONP和CORS的对比
- HTTP2和HTTP1有什么区别
- 你能说说缓存么
- 能说说首屏加载优化有哪些方案么
- 如何在Node端配置路径别名(类似于Webpack中的alias配置)
- 谈谈你对作用域链的理解
- Vue响应式原理
- 了解Event Loop么
- 如何避免回流和重绘
有赞美业(电话面)
- 浏览器事件循环的方式
- 宏任务和微任务如何划分
- 如何判断 js 变量类型
- 说一下vdom 和 diff
- diff 算法的时间复杂度
- hooks 相对于之前的开发方式有什么特点
- react 开发中有哪些性能优化的方式
- setState 是异步吗
- 如何实现批量更新的策略
- HTTP2 相对于 HTTP1 的优化