2021年前端面试题记录
美团
一面:
js: 原生实现深拷贝;基本数据类型有哪些;symbol是什么; let和var区别;变量提升是什么;const a={b:1}, a.b=3;可以修改吗;原生怎么实现ajax;
vue:响应式原理,生命周期,defineProperty与Proxy区别;代码实现一个倒计时组件
css:定位有哪些,设置absolute的元素的,父元素设置什么的时候是,相对于父元素定位;垂直水平居中的几种方式;
其他:cookie和localstorage区别,可以跨域访问cookie吗;跨域的解决方式有哪些;性能优化有哪些
二面:
移动端300毫秒延迟的原因,怎么解决;怎么实现性能好的无尽滚动列表;怎么判断页面滚动到底;手势怎么判断是向上滑还是向下滑;a组件在b系统和c系统引入,分别在b、c中有不同样式,如何实现;{ data:{a:1;b;1;c:{d:1}}},vue中要给a、b、c、d都添加setter、getter吗,给d添加时候有什么条件判断吗;深度优先遍历和广度优先遍历是什么,二叉树是怎么遍历还记得吗;你的优势和劣势分别是什么
京东
一面:(时间久远,有点忘记了)
vue源码、promise、性能优化,webpack打包,vuex
二面:
项目问的多些,碰到什么难解决的问题,如何解决的,图片具体怎么实现base64那一串码
高德
一面:
项目:简单介绍下项目;
vue:diff算法;$set是怎么实现的;在项目中不同页中都通过import引入一个组件,在该组件中申明一个变量a,并进行计算a ;a的值会变吗;
css:一个div标签,宽是500px,里边有两个div,宽为100px和200px;都设置为flex=1;这两个div的宽分别是多少,如果设置max-width:200px,那宽又是多少;
js:promise的静态函数有哪些,什么是静态函数;判断数据类型的方法,for in和for of的区别
好未来
一面:
js:基本数据类型;解释器和执行器是什么;怎么实现一个promise,promise为什么可以支持链式调用;如何随机从1-100内取出10以内的随机数;this指向,箭头函数和普通函数区别
vue:响应式原理,父组件如何监听子组件的生命周期,diff算法,列表设置key的作用,如果key是index会有什么影响,vue通过splice或者push操作数组页面会刷新吗;nextTick是怎么实现的;
其他:服务端返回304代表什么;强缓存和协商缓存的区别;webpack打包配置,tree shaking 指什么;https和http的区别;
大搜车
一面:
js:this指向;实现深拷贝,如何解决循环引用的问题;let和var区别;forEach和for in区别,
vue:diff算法;$set原理;vue路由hash模式和history模式的区别
其他:http-only是什么,cookie可以设置哪些属性;顶级域名和二级域名区别;图片怎么实现懒加载;怎么设置懒加载和预加载;从输入url发生了什么,js、css会阻塞吗;浏览器攻击有哪些
爱学习
一面:
css:怎么实现转盘旋转,让它的速度先快后迅速然后变慢
js:原生实现bind; new关键字做了什么;
算法:var a = {a: {b: {c: 1}, d: [1,2]}, e: 's'} 输出 [{key: 'abc', value: 1}, {key: 'ad', value: [1,2]}, {key: 'e', value: 's'}]
其他:性能优化
途家网
一面:
先在线三道题:
1、实现点击div元素使得该盒子宽度变宽的动画
2、算法:实现输入3输出3;输入12输出2,2,3,输入14输出2,7输入0输出0
3、原生实现table表格按照时间那列排序,如果原来是正序则实现倒序,如果是倒序则实现正序
后电话问答:
小程序的实现 原理,运行环境;vue中watcher是具体做什么,vue中碰到的坑有哪些,图片太大怎么优化,知道断点续传吗