作者从事前端一年半
基础的我就不讲了,我讲一些回答的不是很好的
腾讯
一面
webpack
的劣势在哪里- 技术选型上为什么选择
vue
,vue
有哪些缺陷 - 是如何进行
code review
的,这里讲了持续化集成 js
的基础类型(这个脑子短路了,给忘了)webpack
针对模块化做的处理- 是如何保证组件库的质量的
一面
- 了解websocket吗,websocket是如何进行握手的
- 生产消费者模式
- 线程和进程(腾讯二面又问我了,我又没回答出来,哈哈)
- 如何批量抓取文章
- 如何处理ios键盘挡住屏幕,ios输入的时候光标定位错乱
- virtual dom的优势在哪儿
- 了解xpath吗
- 客户端和fe是如何通信的,客户端是如何操作fe的代码的
- 性能优化能从哪些方面入手
- 前端如何实现图片剪裁
二面
- webAssembly了解吗,讲一下
- 算法题: 有一个无序数组求中位数
- 网络协议一共有几层,能具体讲讲他们的协议吗
- 了解HTTP3吗,HTTP3做了哪些优化
- 了解Vue3吗,相对于Vue2做了哪些优化
- 谈谈对pwa的理解
- 在Vue渲染组件的时候,都是从父到子组件再到父组件,如果你是框架的设计者,你会怎么做
- 了解v8引擎吗,一段js代码如何执行的
腾讯一轮游,面的怀疑人生,二面问了很多计算机基础的东西,由于作者不是计算机专业的,所以答得不是很好
头条
- 如何批量引入组件,
require.context
- 组件之间如何通信
- 问了监控系统,如何计算白屏时间和首屏渲染时间的,如何进行数据上报的,上报到监控系统展示是怎样的一个过程
- 问了一个
$listener
和$attr
,但是我当初没有get
到面试官的点 - 谈谈
pwa
vuex
的工作流(工作流是什么?)- 知道
function component
吗 - 如何选择图片格式,例如
png
,webp
算法题
有一个数组和一个值,需要求大于等于该值的最小长度,例如[2, 3, 4, 7]
和5
,那么最小就是1
,因为7
大于5
如果数字是8
,那么最小就是2
, 因为4 + 7
大于8
第二道算法题 有序数组中小于某个数的个数,例如
[1, 2, 3, 4]
2
// 1
快手
- 如何对请求进行缓存,例如有10个异步请求,如果有一个异步请求返回结果剩下的请求就用这个结果,并且能过传入成功和失败的回调函数
- 实现
(10).add(10).add(10)
- 有这个一个情况,代码如下:
function Person() {}
const person = new Person();
person
的原型上有Funciton
吗
4. vue
文件中为什么需要一个根元素1
百词斩
- vue hooks的使用
- cdn的原理
- 白屏时间和首屏时间的计算
- 性能监控平台是如何捕获错误的
- 平时遇到有哪些兼容性的问题
- leetcode峰值的问题
- vue中key的作用
- 代码题
cdn
的原理,cdn
选择最近的缓存服务器是怎么实现- 如何对音频和视频资源进行预加载
- 算法题: 做一个数组的压缩
http2
是如何实现多路复用的
let arr = [1, 2, 3];
let fnArray = [];
for (var i = 0; i < arr.length; i++) {
fnArray[i] = function () {
return arr[i] * 2;
}
}
let result = fnArray.find((fn) => {
return fn() === 4;
})
console.log(result);
算法题
实现一个栈,具有push
和pop
方法,还有获取他的最小值,复杂度是O(1)
实现如下:
[1, 2, 3, 6, 7] => 1-3,6-7
[1, 4, 7] => 1, 4, 7
美团
- 如果将一个同步函数包装为异步函数
- 同一张图片第二次请求状态码是多少
- 大数相加
native
和前端如何通信- 如何唤起
app
- 写一个
url
解析函数,包括hash
- 监控相关的,能说说你了解的
performance
相关的信息吗,完全可交互时间 - 实现一个
deepClone
需要兼容set
、map
、symbol
、object
- 比如在代码中有
a.addEventListener('click', fn1)
,a.addEventListener('click', fn2)
这个时候fn1
和fn2
会执行吗,假如加上说阻止冒泡呢 - 如何实现点击元素外部关闭元素
- 在从左向右和从上往下皆为升序的二维数组中,查找一个数是否存在,存在的话输出它的位置
offsetTop
和scrollTop
和scrollHeight
分别代表什么vue
中key
的作用是什么,为什么不推荐使用数组的index
(高频)computed
和watch
有啥区别(这道题出现频率很高,建议认真了解一下)http2
和http1
的区别,具有哪些优势(高频)keep-alive
实现原理- 如何判断是不是数组
- 如何设计一个组件
其他公司
我也没投几家公司,这里记录一下其他公司的面试问题
- 你们对组件库做了哪些优化
- 组件库的样式自定义是如何实现的
tcp
的滑动窗口- 前端如何做权限控制
HMR
的原理- 如果页面出现白屏,如何排查
算法
rightView
有一棵树从右边看他,并输出结果,例如
1
2 4
5 3
上面输出的树就是[1, 4, 3]
我总结了一下,面试中出现频率最高的是,排名分前后:
- 宏任务和微任务
- 浏览器缓存
- bfc
computed
和watch
的差异
我觉得我面的最好的是百度,结果百度一轮游,说我不匹配(呜呜呜~~~)
只要是电话面试就必挂,百度是电话面试,腾讯两次挂了都是电话面试,自闭了
经验
- 电话面试必挂,能视频面就视频面试
- 少给自己挖坑,说出来的尽量自己会了解
- 稍微正规的公司就是算法必问
- 大一点的公司除了问了前端的部分,也会问你后端的部分
- 一般的公司你刷一刷网上的面经基本就能过,稍微大点的公司就需要结合平时使用的经验
- 你不会说不定面试官也不会,如果不会先分析
结果
年前面了四家小公司,全挂了,搞的非常自闭,感觉自己不太行了
然后年后痛定思痛,认真的刷了网上的面试题,发现这些面试题你背住了,小公司基本都没啥问题。
BAT
都挂了,我投了阿里,但是阿里根本不搭理我(今天你对我爱答不理,明天我要你高攀不起)。
然后其他基本的都过了。还是水平太菜了,新的一年也是要好好学习哦
然后我会把我为面试准备的东西都传到github
review
分支
然后作者最后选择了深圳头条