前端面试题
author: @TiffanysBear
2年工作经验出去接受社会的毒打,参与的前端社招的公司和题目的记录如下,后续可能还会有增加,先暂时记录这么多:
头条
一面:
在一面之前先是做题,做题时间为40分钟,主要的笔试题和面试中涉及的部分包括以下:
- 宽度自适应,未知高度元素的水平垂直居中,字体水平垂直居中
- arguments是数组吗?怎么转换数组
- promise、await、setTimeout的执行顺序问题
- es6块级作用域、箭头函数
- 隐式转换问题
- 实现一个throttle
- 实现一个函数bind,bind具体使用场景
- 算法:求一个数组中n个数和为sum
- node中的事件循环和浏览器中事件循环有什么不同
- 宏任务和微任务具体有哪些
二面:
- 实现一个函数柯里化
- http协议
- tcp为什么可靠
- 浏览器怎么知道一个网页的内容加载完了
- 手写事件发布和订阅
- 事件节流和防抖的应用场景
- 一个网页从输入网址到浏览器页面展示经历了哪些过程,在哪些地方有缓存
- 性能优化
- 浏览器缓存机制
- 项目问题
- 要实现用for…in迭代,需要怎么做
三面:
- 了解哪些代码设计原则
- 浏览器并发请求限制个数,怎么解决限制
- 为什么react会有redux、mobx等库存在,设计原理上有什么区别
- 观察者模式和订阅发布模式有什么区别
- vuex用的什么模式
- 小程序为什么设计双webview
- FIS和webpack最大的区别的是什么
- 平时有看什么书,怎么总结学习
- 怎么看待前端技术变革和发展
高德
一面:
- 两个升序数组合并为一个有序数组
- vue数据双向绑定有监听不到的情况吗
- 箭头函数哪些情况不能使用
- vue的生命周期
- ES6常用过哪些
- https加密传输过程
- 为什么vue的data数据更新是异步的,vue怎么实现的异步
- vue双向绑定的原理
- webpack打包相关,plugin、loader之类
- margin重叠问题
二面:
- 使用flex实现一个布局
- vue怎么实现的数据双向绑定
- 箭头函数能否改变this指向
- this指向问题,代码相关题目
- 封装一个文件异步读取的函数(考点thunk函数)
- promise的catch作用
- promise有几个状态,怎么转化
- call、bind、apply有什么区别
- …记不太清了
- 项目相关
三面 + 四面 :
项目相关,主要考察整体项目拆分划分设计能力
滴滴
一面:
一面是卷子,大概一共有10+道题,还有一些扩展延伸的问题,顺序和题目可能有点记不太清不太全了,面试感受是侧重全栈,不仅仅是有前端基础;
- this指向问题
- 使用flex实现一个布局
- vue生命周期
- 手写深复制
- promise、setTimeout执行顺序
- let块级作用域问题
- 手写实现一个promise.all
- promise使用reject和catch捕获有什么区别
- css样式计算优先级
- 事件循环Event Loop,浏览器和node端有什么区别
- node前后端交互过程
- node中间件
- hybrid开发,jsbridge与端通信
- …
二面:
两道设计题:
- 页面编辑器,类似于提供很多组件,实现选择式去拼凑一个页面,而不是前端自己再切图。有几个部分组件选择区,已经选择的部分,两个按钮保存和生成页面按钮,直接生成预览的链接url页面。
- 实现一个类似pass统一管理用户登录的单独模块
优酷电面
- AST抽象语法树是什么,具体有哪些应用
- hybrid开发,jsbridge与端通信
- this在各个情况中的指向问题
- vue和react的区别
- vuex的使用
- 中间件、插件的认识,node中间件、webpack插件、fis插件等
- weex、react-native底层js与端是怎么通信映射的
- call、apply、bind有什么区别
- vue实现数据双向绑定的原理,vue的实现原理
- 怎么设计好的一个组件
- …