以下为本人面试前端工程师(初级)面试题总结,希望对你有所帮助
答案仅供参考
js
箭头函数与普通函数区别?
this,arguments,构造函数
如何区分array与function?
instanceof(),tostring(),typeof(),isArray()
描述浏览器事件循环,宏任务微任务都有哪些
解决js是单线程问题,宏任务:ajax,dom事件回调函数,延时器,定时器
微任务:promise.then(),await后面,queueMicrotask()
Ajax与axios区别
for循环与forEach的区别
数组去重
es6新增
let,const,模板字符串,剩余参数,class,set,map,async,await,promise,symbol,解构语法,函数参数默认值
说下深拷贝,有手写过深拷贝函数吗?
说下promise,谈谈你对promise的理解
解释下什么是原型链
实现继承的几种方式
原型链继承,class的extends
下对闭包的理解,闭包有什么好处,什么坏处,应用到哪里
js中的函数引用了外层作用域的变量,他就是闭包
好处:可以访问函数内部变量,增加变量声明周期
坏处:变量没有及时释放,容易造成内存泄露
应用:防抖,节流,柯里化,模块化
new创建对象步骤
堆内存开辟空间创建对象,新对象隐式原型指向构造函数显示原型,this绑定新对象,执行代码,返回
什么是内存泄露,那些操作会造成内存泄露
占用内存没有及时释放,意外的全局变量,闭包,没有及时清理的定时器与回调函数
为什么js是单线程的
作为浏览器脚本语言,JavaScript的主要用途是与用户互动,以及操作DOM。这决定了它只能是单线程,否则会带来很复杂的同步问题
es6模块化与commonjs区别
1.CommonJS 模块是运行时加载,ES6 模块是编译时输出接口。
2.CommonJS 模块的require()是同步加载模块,ES6 模块的import命令是异步加载,有一个独立的模块依赖的解析阶段。
3.CommonJS是对模块的浅拷⻉,ES6 Module是对模块的引⽤,即ES6 Module只存只读,不能改变其值,具体点就是指针指向不能变,类似const 。
跨域有遇到过吗?怎么解决的
本地存储cookie,localStorage、SessionStorage区别
防抖与节流函数
谈谈异步编程的实现方式
promise,async,await,回调函数,定时器延时器
call,apply,bind区别,能实现吗
vue
描述vue函数组件
不需要维护生命周期,响应式数据,渲染速度更快,需要将functional属性设为true,无this,访问props中的值要通过props.xxx
详细说下vuex流程
说下vuex的映射函数
mapState,mapGetter,调用这两个函数返回一个对象,对象里面是一个个函数,一般放到组件计算属性中
mapMutation,mapAction 也是返回对象,对象中是函数,可以直接调用
谈谈vue双向绑定原理
谈谈computed与watch
计算属性有缓存
vue中nextTick
将nextTick中代码放到dom更新后执行,可以看成是微队列
vue中set方法作用
由于vue2响应式是通过object.defineProperty(),劫持get()set()进行响应式,对于新增删除属性监听不到,要通过set,delete
向响应式对象中添加一个 property,并确保这个新 property 同样是响应式的,且触发视图更新。它必须用于向响应式对象上添加新 property,因为 Vue 无法探测普通的新增 property (比如 this.myObject.newProperty = 'hi'
)
谈谈diff算法
虚拟dom优缺点
优点:虚拟DOM具有批处理和高效的Diff算法,跨平台
缺点:首次渲染大量DOM时,由于多了一层虚拟DOM的计算,会比innerHTML插入慢
v-for中key的作用
谈谈路由导航守卫
单页面应用与多页面应用的区别,优缺点
单优:局部刷新,前后端分离易维护,容易加动画用户体验好,数据传递容易,对服务器压力小
单缺:开发成本高,不利于seo检索
父组件加载子组件生命周期执行顺序,更新呢
v-for为什么不建议与v-if一起使用?
v-model的修饰符
lazy,number,trim
页面加载闪烁问题,v-cloak的使用
$route与$router的区别
针对vue项目你做过哪些性能优化
路由懒加载,webpack分包,使用keep-alive,第三方库按需引入,cdn加载一些资源
vue3相对与vue2有哪些变化
html与css
em ,rem,px,vw,vh区别
div水平垂直居中
display:none与visibility: hidden区别
什么是回流,什么是重绘
块级元素,行内元素
什么是BFC
如何清除浮动
link标签与import标签的区别
盒子模型
css选择器优先级
其他
http,https区别
三次握手干了什么?
说说你知道的状态吗
说说git常用命令
git提交代码,有冲突,怎么解决
网络osi七层模型都是什么,tcp属于那一层?
物理层,数据联络层,网络层,传输层,会话,表示,应用
传输层