乐趣区

记2019前端面经

Motivation
2019 寒冬来临,卷入动荡之中只能又开启了漫漫求职路。有辛酸,有坎坷,但也有点小幸运。
Experience
前前后后面试了 6 家公司,总结一下问题做一个 backup。(仅记录问题,不区分面试轮次)

脉脉

框架

简述 vue 的基本原理
vue 的生命周期
vue 与 react 的不同
vue 父子通信的方式
vuex 的原理及理解
vue v-model 如何实现的,语法糖实际是什么
react 生命周期
react context 的理解
redux 的原理
react-redux 的原理
如何避免 render 的触发
说一下 react vnode 的 diff 算法
vnode 的引入与直接操作原生 dom 相比,哪一个相率更高,为什么

基础知识

对缓存的理解
对 http2 的理解
对 https 的理解
对原型链的理解,画一个经典的原型连接图
对 es6 了解多少
箭头函数与正常函数有哪些区别
class 的实现 用原型写一个继承
ajax axios fetch 的区别
如何用 promise 封装一个 ajax
项目中的难点和亮点

二面送走,说会联系也没联系我 > <.(面试体验和福利还是挺好的)

高德

框架

React 组件的生命周期
React 父子组件如何通信的
React 层级很深的组件如何通信传值(Context API)
React 做了哪些性能优化 PureComponent 的实现原理是什么
React setState 后都会发生什么,是否了解
React 1000 个列表节点渲染,给出一个优化方案
是否了解 React 事件机制,如果让你实现如何来设计
Redux 的原理及理解
react-redux 是如何来实现的,connect 是不是一个高阶函数,原理是什么
react 与 vue 相比,有什么不同

基础知识

对缓存的理解,需要什么设置
对代码构建上线流程是否了解,说一下如果让你实现的思路
谈谈对 webpack 的理解,常用哪些 plugin,对 webpack 配置是否了解,对项目打包是否做过什么优化
ES6 常用到哪些,对 class 的理解,手写一个对继承的实现
Promise 是否了解,如何实现一个 promise
class 继承中子类想使用父类的方法,应该用什么方式调用(super 的意义)
箭头函数与正常函数的区别
css 实现 border 渐变
css 实现下阴影(气泡类 带箭头的阴影)
css 对 flex 的理解
对浏览器渲染机制的理解(具体到细节,从渲染树到 paint 之间究竟发生了什么)
纯 css 实现一个高宽比为 1:3 的盒子 列举几种方式
浏览器的架构,bom,dom

马蜂窝

框架

vue 的生命周期
组件 A 下有子组件 B、C,那么 3 个组件生命周期的调用顺序,同级组件 mounted 触发一定是先调用先 call 吗?同步还是异步?
vue 的基本原理
vue eventbus 的实现
vue 父子组件的通信
vuex 的使用

基础知识

对 https 的理解, 对称、非对称加密在哪部使用
css 布局 各种定位的方式
css 实现水平垂直居中
css 实现一个旋转的圆
cookie 跨域的处理方案
cookie 种在子域下能否携带发送到服务端(SSO 登录)
写一个函数,第一次调用返回 0,之后每次调用返回比之前大 1
闭包、作用域的理解
用原生 xhr 发送一个请求
跨域请求可以携带 cookie 吗
axios 与 xhr 的区别,如何用 promise 包装 xhr
讲讲项目中的难点

要吐槽一下。1 面好看的小姐姐面完直接告诉我当备胎了,送我出去了 = =。。。(不过马蜂窝的办公环境是真的挺美的,跟花园一样)

猿辅导

框架

vue 的生命周期
vue 双向绑定的原理
vue 父子组件通信的方式
vue eventbus 的原理
对 vuex 的理解
谈谈对 vue 和 react 对比,并从中能学到什么
vue 中可以对对象进行数据监听,如果对于数组中的某个元素能否监听,是如何做到的

基础知识

http 的头部有什么字段,简要描述(缓存,content-type,cookie 等等)
cookie 跨域服务端需要如何适配(CORS 头)
一个请求跨域是否会抵达服务端
对之前的项目做过什么优化,讲一讲
对之前的项目遇到过什么难点,讲一讲
对 http2 有哪些了解
对 canvas 有哪些性能上的优化
对 settimeout 和对 setinterval 的理解(涉及代码题倒计时函数,eventloop 的考点)计时是否准确?如何实现较为准确的计时?
对一个短时间并发高的场景需要如何处理(后端设计)(开始答题获取试卷的场景)

写代码

写一个倒计时函数
写一个函数,给定一棵树,输出这棵树的深度
写一个函数,给定一个 url 和最大深度 maxdeep,输出抓取当前 url 及其子链接深度范围内的所有图片
写一个函数,给定 nodes=[],每一个节点拥有 id,name,parentid,输出一个属性列表的展示(涉及 dom 操作)

抖音

框架

vue 数据绑定的实现原理
vue computed 具体在什么阶段进行的依赖收集,具体的过程详细描述
vuex 和 redux 的差别

基础知识

跨域的解决办法
原型链的理解,写一个原型继承
实现一个 sendRequest,有最大请求并发限制
EventLoop 的理解
浏览器渲染触发在 EventLoop 的哪个阶段,触发机制是怎么样的
https 建立连接的过程及通信 如何劫持,鉴别是否被劫持
ES module 与 cjs 的区别
Tree shaking 的实现原理
给定一个 sum 检验一棵树中,是否存在一条路径和为 sum,输出该路径

二面送走,感觉到自己在一些问题的深度上还有待加深。

快手

框架

对 vuex 源码上如何实现只能 mutation 更改,而不能直接更改
vuex 中如何在层层都可以引用 $store
vuex 和 redux 的差别

基础知识

笔试题 6 页
css 优先级关系
eventloop 的先后顺序(node 内)
node 中的垃圾收集机制
BFC,IFC,FFC 的区别
a11y 是什么,如何理解
prototype 的考察
TDZ 的考察
写一个数组方法,打乱整个数组顺序,并且每个数字落在各个位置的概率相同
one(add(two())) // 3 two(add(one())) // 3 写出 one() two() add()的实现
实现一个 catchPromise 发同一个请求缓存 data 在实际网络层相同 url 只会发出一个请求
给定 n 个 {x, y, w, h}的盒子 按需排列,左上聚拢 (层叠后的 max(h)*max(w) 最小),求给一个{w,h},输出放置的位置
从输入一个 url 到呈现网页,都有哪些步骤
http keep—alive 都解决了哪些问题 keep-alive 是从 c – nginx 建立的还是直接到服务建立的长连接,与 websocket 有什么区别与联系
给定一个 html,输出其中包含的 html 标签数量,可以用 domapi 注意 iframe
实现一个 NumberStack,实现 pop,push,max(n)方法,max(n)返回第 n 大的数,max(n)需要 O(1)的时间复杂度
实现一个 bind 函数
跨域的解决办法,jsonp 的实现原理

注:一些各个公司问的相同的问题就没有再重复写出来
Result
祸兮福所倚,福兮祸所伏。虽然经历了寒冬和求职的奔波,但也因为面试才对自己有了一个更加清楚地认识,知道自己未来的路更应该如何去走。这半年来因为种种原因对技术上有些许的松懈和怠慢,所幸还能拿到了自己很满意的 offer,未来的路还要更加努力的走~

退出移动版