最近老板让我负责前端面试,然后我就出了以下题目。公司业务偏向小程序这块,所以
vue
啥的基本上没问,都是偏基础问题。因为也没这方面的经验,所以有问题,希望各位大佬指正。
话不多说,直接上题
题目
- JavaScript的数据类型
值类型(基本类型):字符串(String)、数字(Number)、布尔(Boolean)、对空(Null)、未定义(Undefined)、Symbol(ES6)。
引用数据类型:对象(Object)、数组(Array)、函数(Function)。
个人认为这个是很简单的问题了,但是可惜的是八成的人都答不全。 希望听到的答案是:分为值类型和引用类型,分别是巴拉巴拉的。
- 深拷贝和浅拷贝的区别,以及怎么实现对象的深拷贝
希望的答案:
1.通过 JSON.stringfy 对象将对象转成字符串,再将字符串用JSON.parse解析成对象(弊端:值包含undefined、function、symbol时会被忽略)。
2.递归复制。
//递归复制
function deepCopy(obj) {
var result = Array.isArray(obj) ? [] : {};
for (var key in obj) {
if (obj.hasOwnProperty(key)) {
if (typeof obj[key] === 'object') {
result[key] = deepCopy(obj[key]); //递归复制
} else {
result[key] = obj[key];
}
}
}
return result;
}
3.各种库(lodash、jQuery之类)都有深拷贝相关的方法
七成以上甚至连引用类型都不知道,所以走不到这一题上面来。然后部分知道的,只能基本上只能说出一种方法,已经算不错的了。
- 简述一下js的闭包作用和实现
简单讲就是形成一个不被销毁的栈环境。可以用来实现变量私有化和创建静态方法(直接通过类名调用,而不需要实例化)。
简单的实现:
var add = (function () {
var counter = 0;
return function () {return counter += 1;}
})();
add();
add();
add();
// 最后counter的值为3
var
let
const
之间的区别。
区别也挺多的,还是多多益善,一般人都能说出几个。比如作用域区别,const是常量。其实这些已经差不多了,但是如果能再说点其他的,会非常加分。
- 暂时性死区:只要块级作用域内存在let命令,它所声明的变量就“绑定”(binding)这个区域,不再受外部的影响。
下面代码会报错就是因为暂时性死区,定义很绕口,但是能知道下面情况什么时候会发生,就好了,或者知道存在这个。
var tmp = 123;
if (true) {
tmp = 'abc'; // ReferenceError
let tmp;
}
let
和const
不允许重复声明。并且const
只能在声明的时候赋值(这个比较简单,但是很多人真的不知道)。
- ES6和ES5差异,或者说ES6相较于ES5增加了哪些内容
非常多,基本上没人能全部说出来,但是多多益善,尽量多说几个吧。
可以在这里看看,es6.ruanyifeng.com/ 如果能说出几个不常见的点,也是非常加分的。
- css选择器权重方面的:
最基本的:!important(无限大)>内联(1000)>ID选择器(100)>class选择符(10)>标签选择(1)
加分项:属性选择器或伪类(10)、伪元素(1),通配选择器*(0)等等。
- 说一下微信小程序的性能优化(微信小程序是公司主要的业务)
这个也很多,懒加载、减少setData的次数和不必要的setData,列表渲染的时候加上key,合理使用缓存,合理利用事件通信等等。
- token和cookie的区别
又是一个能说很久的话题,尽量多说吧,这里不做赘述,推荐一个文章,www.jianshu.com/p/c33f5777c… 。也可以自己百度
- 简单说一下vue双向绑定的实现
考一下对框架底层的了解,没人指望你实现一个vue,但是学习别人的思想和原理,对于自己平时技能的提升,很有帮助。
简单点答就是:vue3.0之前是利用Object.defineProperty重写get和set,vue3.0是利用Proxy。 具体实现原理,这里也不赘述了,以后会出文章专门写。
写在最后
用这套题面试了十个人左右了,大部分都是三年左右的前端,最厉害的也只能答出来六七成,大部分人只能答出三成,我都怀疑是不是题目太难了。唉~心累。
个人感觉都是一些基础知识,很少问框架相关的,因为我觉得基础好了,框架应该没啥大问题。这些题目,也是我以前面试经常遇到的一些,所以才出的这些。