今天给大家分享一些三年到五年前端的面试题
1. 达达京东到家
笔试:
都是些基础选择题,考察计算机网络,事件循环机制,闭包,this 这些。
一面:
- 三次握手和四次挥手详细介绍
- TCP 有哪些手段保证可靠交付
- URL 从输入到页面渲染全流程
- 如何预防中间人攻击
- DNS 解析会出错吗,为什么
- ES6 的 Set 内部实现
- 如何应对流量劫持
- 算法:top-K 问题,分成 top-1,top-2,top-K 三小问
二面:
- 跨域
- webpack 的 plugins 和 loaders 的实现原理
- vue 和 react 谈谈区别和选型考虑
- webpack 如何优化编译速度
- 事件循环机制,node 和浏览器的事件循环机制区别
三面:
- 单元测试编写有哪些原则
- 一个大型项目如何分配前端开发的工作
- 怼项目
2. 达观数据
笔试:
同样都是基础题,注意有两道算法:柯里化通用实现和 two-sum 问题。
一面:
- typescript 有什么好处
- vue 项目中如何约束 rxjs 数据的类型
- rxjs 高阶数据流定义,常用高阶数据流操作符
二三面:
- 围绕着我的简历问项目细节,侧重于 rxjs 和 typescript 这块内容。
3. 英语流利说
一面:
- JWT 优缺点
- 选择器优先级
- 基本数据类型
- RxJS 冷热流区别
- RxJS 调试方法
- nginx 负载均衡配置
- 前端性能优化手段
- 针对 React 的性能优化手段
- 301 302 307 308 401 403
- vue 的 nextTick 实现原理以及应用场景
- vue 组件间通信
- 谈谈 XSS 防御,以及 Content-Security-Policy 细节
二面: - 场景题:一个气球从右上角移动到中间,然后抖动,如何实现
- 场景题:一个关于外边距合并的高度计算
- mobx-react 如何驱动 react 组件重渲染
- forceUpdate 经历了哪些生命周期,子组件呢?
- React key 场景题:列表使用 index 做 key,删除其中一个后,如何表现?
- 算法:实现 setter(obj, ‘a.b.c’ ,val)
- RxJS 相对于其他状态管理方案的优势?
三面:
- 手写冒泡排序
- JWT 细节,适用场景
- 跨域
- 方案题:不同前端技术栈的项目,如何实现一套通用组件方案?
4. 拍拍贷
一面:
- ES6 特性
- 闭包和 this 一起谈谈
- postcss 配置
- Promise 内部实现原理
- vuex, mobx, redux 各自的特点和区别
- react 生命周期
- 各方面谈谈性能优化
- serviceworker 如何保证离线缓存资源更新
- virtual dom 有哪些好处
然后换了个有黑板的面试间,狂怼项目,各方面都问到了。
二面:
- 总监面,把刚才一黑板的项目架构图全部擦掉,再来谈一遍。
三面:
- Vue3 proxy 解决了哪些问题?
- Vue 响应式原理
- 发布订阅模式和观察者模式的异同
- 图片懒加载实现
- css 垂直居中
- CI/CD 流程
- 谈谈性能优化
5. 天壤智能
一面:
- react 生命周期
- key 的作用
- hooks
- vue 和 react 区别,选型考虑
- canvas 优化绘制性能
- webpack 性能优化手段
- 事件循环
- 如何解决同步调用代码耗时太高的问题
- 手写 Promise 实现
二面:
- 场景题:如何实现登录功能
- 聊项目
三面:
- 聊项目
5. 拼多多
一面:
- Promise 实现原理
- vue 组件间通信
- 性能优化
- vuex 数据流动过程
- 谈谈 css 预处理器机制
- 算法:Promise 串行
二面:
- CI/CD 整体流程
- 性能优化
- SSR 对性能优化的提升在哪里
- 怼项目
6.猫眼电影
一面:
- vue 组件间通信
- react 和 vue 更新机制的区别
- Vue3 proxy 的优劣
- 性能优化
- symbol 应用
- 深拷贝
- 怼项目
二面:
- dns 解析流程
- 怼项目
6.米哈游
一面:
- 跨域
- vue 和 react 选型和比较
- ssr 优缺点
- 性能优化
- 贝塞尔曲线
- 怼项目
7.bilibili
一面:
- Vue3 proxy 优缺点
- ES6 特性
- Vue 组件间通信
- 性能优化
- ssr 性能优化,node 中间层细节处理
- 怼项目
二面:
这一面比较特别,和之前的面试都不太一样,是知乎早已关注很久的之昊老师面的。
之前的面试大概是属于主导权在我这边,面试官倾听的比较多,搭配上少量提问。而这一面基本全程处于被之昊老师教育加吊打的状态,感觉之昊老师说的话比我还多了,针对问出的每个点会在我回答的基础上做更多的延伸说明,没有局限到具体的技术方案或者细节代码,更多的是谈到了一些方法论或者说作为一个优秀的开发者面对一些问题时比编码更高的思维层面上的处理方式。收获很大,聊到了很多之前工作中都没有考虑过的东西。这就是大佬的世界吗.jpg。
8.阅文
一面:
- 如何编写 loaders 和 plugins
- webpack 热更新原理
- vue 和 react 组件通信
- 性能优化
- 谈谈 eleme 框架源码
- 谈谈项目
- 个人兴趣爱好
8.阿里
笔试题
- 第一题:将数组扁平化并去除其中重复数据,最终得到一个升序且不重复的数组
- 第二题:
说明:实现一个方法,用于比较两个版本号(version1、version2)
如果version1 > version2,返回1;如果version1 < version2,返回-1,其他情况返回0
版本号规则x.y.z
,xyz均为大于等于0的整数,至少有x位
示例:
compareVersion(‘0.1’, ‘1.1.1’); // 返回-1
compareVersion(‘13.37’, '1.2 '); // 返回1
compareVersion(‘1.1’, ‘1.1.0’); // 返回0
- 第三题:找到字符串中最大回文子串,例如 ‘3434356’ 的最长回文子串是 ‘34343’。回文是指对称的字符串,如:‘abccba’。找到字符串中最大回文子串
9.新希望
面试题
- 我做一个搜索,实时的去进行筛选数据,做一个简单的防抖,然后如何保证我的请求回来的结果是我最后一次的查询条件的结果
- 一百个异步请求,如何捕捉请求失败的有哪些,如何获取最后一个请求结果?