个人情况
三年 web 前端工作经验,坐标深圳。主要技术栈是 VUE + 微信小程序原生开发,工作做的大多是中后台管理系统以及配套的微信小程序。
在三四五月的时候陆续面了几家公司,对面试过程中遇到的基础问题和项目问题进行中总结。各个面试官风格不一,有的很基础有的深入,这里只进行分类总结:
HTML
- 对 HTML 语义化的理解以及语义化的好处
- HTML5 新增的标签
CSS
- flex 布局和 grid 布局的区别及使用场景
- css 选择器有哪些;说一下选择器的优先级
JS
-
JS 的基本类型有哪些
-
深拷贝和浅拷贝的区别
- 手写一个简单的深拷贝
-
JS 有哪些作用域
-
为什么会产生内存泄漏的问题
-
对闭包的理解
- 使用闭包需要注意什么
-
有什么方法可以改变 this 的指向
- bind 和 call 方法的区别
-
new 主要做了哪些事
-
说一下对 Promise 的理解
- Promise 有哪几种状态;状态是否是可逆的;
- Promise 有哪些常用的方法;与 Promise.all 对应的方法是什么;
- 手写一个简单的 Promise
-
怎么实现限制同时只能发送3个请求;
-
说一些你常用 ES6 的新特性
- for...in、for...of 、forEach 的区别以及使用场景
- for...of 的实现原理
- let、const、var 的区别;let 和 const 的作用
- 在 es6 之前怎么实现 const
- 箭头函数和普通函数的区别
-
简单说下事件循环
-
什么是微任务和宏任务
-
同源指的是什么
-
怎么解决跨域
-
iframe 使用有什么问题
-
说说 JS 有哪些设计模式;可以结合 Vue 的底层实现
Vue
-
vue 的优缺点;可以结合你使用过程遇到的问题
-
怎么理解 MVVM
-
简单说下双向绑定的原理
- 如果不想对某个数据进行双向绑定怎么操作
-
生命周期及钩子函数
-
组件 name 的作用
-
data 为什么返回一个函数
-
组件的主动销毁的方式
-
$nextTick 是什么以及使用场景;
- $nextTick 的实现原理
-
常用的指令
-
自定义指令的用法(自定义指令的原理;在项目中使用过的自定义指令及实现)
-
过滤器的用法(全局过滤器和组件内过滤器的用途;在项目中使用场景)
-
v-for 和 v-if 的优先级以及原因
-
v-for 中 key 的作用
-
说下组件通信的方式
- eventBus 和 vuex 的区别
-
computed 是怎么实现监听数据变化的
-
computed 和 watch 的区别
- computed 是怎么实现缓存的
-
在 mounted 里面直接定义的数据时挂载在 vue 的哪里
-
虚拟 DOM 是什么;为什么需要虚拟 DOM;
- 说一下 Vue 的 diff 策略
Vue-Router
-
路由的钩子函数以及使用场景
-
hash 和 history 的区别
- hash 和 history 分别是基于什么实现的
Vuex
-
mutation 和 action 的区别
- mutation 为什么只能写同步函数
Webpack
-
构建工具具体做了什么
-
webpack 的生命周期
-
webpack 的构建过程
-
有没有使用过什么 plugin
-
做过哪些化方案
- 有没有做过预编译;预编译的方案;
浏览器和网络
-
浏览器输入 url 到页面展现的过程(必问)
-
重绘和重排是什么;怎么优化
-
说下什么是强缓存和弱缓存
- E-tag 是怎么生成的
- HTTP1 到 HTTP1.1 增加了哪些关于缓存的请求头字段
-
说一下 websocket 协议
-
TCP 和 UDP 的区别
-
说下 TCP 的三次握手和四次挥手
-
HTTP 和 HTTPS 的区别
性能和优化
-
你做过哪些前端性能优化
-
如何做前端项目的性能分析;具体指标
- 怎么检测前端项目运行时的性能
-
有没有遇到浏览器的兼容性问题;
-
服务端渲染是什么;有什么好处;
- 服务端渲染为什么会加快首屏渲染速度
编程
- 字符串轮转
给定两个字符串s1和s2,请编写代码检查s2是否为s1旋转而成(比如,waterbottle是erbottlewat旋转后的字符串)。
- 模板字符串
let templateStr = 'i am { name },age { age },job { job } ';
let data = {
name:'xbd',
age:18,
job:'CTO'
}
console.log(templateFunc(str,data));
//i am xbd,age 18,job CTO
templateFunc(str, obj) {
// TODO
}
微信小程序
- 怎么缩小主包的体积;
项目方面
- 介绍一个项目
- 项目中遇到的问题/困难(必问)
- 平时的学习方式;最近学到的东西
- 项目重构过程新老版本怎么交替
- 对于前端工程化的理解
- 前端项目选型的考量和过程
- 你的职业规划是什么