2019.02.19前端面试五家后总结
为了测试过去的一年的成长,出去面试五家公司(3家创业saas公司,一家上市公司,一家跨境电商),
新的一年,要继续鞭策自己成长。
前端面试注意几个方面:
1. 沟通能力
2. 基础知识深度
3. 解决问题的实际能力
4. 知识边界
1. 沟通能力:
对问题的视角阐述是否准确容易理解。
2. 基础知识深度知识点考察:
2.1 执行上下文:
执行上下文分为二个阶段(编译阶段,执行阶段)
(1)编译阶段包括:变量对象(vo),作用域链的确定,this指向的确定。
变量对象的组成: 1.创建arguments 》2.检查函数的声明并创建属性 》 3检测var声明并为创建属性赋值为undefined,遇到相同的属性跳过
编译阶段的变量对象的属性是不可访问的,只有等到执行阶段才能访问。
(2)执行阶段包括:变量的赋值,函数的引用,其他代码的执行。
活动对象(ao)和变量对象(vo)的区别:都是相同的东西,只是处于执行上下文的不同的生命周期,活动对象处于执行阶段在当前函数调用栈的栈顶。
2.2 闭包:
什么是闭包?
闭包的用途?
闭包和匿名函数的区别?
2.3 模块化:
es6的module和common.js以及amd,cmd模块化的区别?
2.4 vue生命周期:
创建前后(el挂载点用不了),挂载前后(el,data都能使用),更新前后(虚拟dom的算法),销毁前后(销毁后钩子函数不起作用)
父子组件的怎么传值?
嵌套路由怎么实现?
vuex怎么使用,由哪些组成,action是干什么的,与mutation区别?
2.5 异步的promise,async,await:
怎么避免回调地狱?
promise是什么?有哪些状态?
事件循环的同步,异步,微任务,宏任务的区别?
async返回什么?
await在等待什么?
await在等待到结果后又要做什么?
2.6 http1.0,1.1,2.0的协议,请求响应报文,三次握手
短链接和长链接的区别?
connection的keep-alive是什么?
http2.0的特点,怎么理解多路复用?
请求和响应报文的组成?
输入一个url后发生什么(url是否有缓存》dns解析url为ip》tcp连接,三次握手》服务端的响应》浏览器的渲染》绘画》显示)
强制缓存和协商缓存理解?
2.7 使用axios怎么解决跨域问题?
proxyTable的原理?
http-proxy-middle中间件?
2.8 webpack配置问题
你的项目的entry有多少个?
webpack-merge了解吗?
是否使用过对象存储来处理图像?
听过数据万象吗?
怎么优化多页面的打包速度?
2.9 面向对象的问题
es6类的静态成员和动态成员的区别?
重点考察多态和类型的设计,比如说mixin和decorator
2.10 基础函数的考察
map,reduce,filter,forEach, every, some
splice,slice,parseInt,concat,join
['1','2','3'],map(parseInt) 为什么是 [1 ,NAN, NAN]?
2.11 基础的算法
冒泡,快速,插入,归并算法,回文,数组去重
什么是链表?
如何实现一个hash算法?
归并排序的复杂度?
2.12 前端常见的设计模式
2.13 进程和线程的区别,什么是线程同步?
3 解决问题的能力
- 组件接口的设计(比如设计一个表单组件/picker) 基于react或者vue
- 针对项目业务逻辑提具体的问题(比如怎么维持app用户的登录状态)
- 具体的工具(webpack,gulp,git)考察具体的知识点,怎么解决冲突
- 前端方向的把握,nodejs和typescript的学习情况