卓动科技 - Coco游戏开发实习生面试总结

卓动科技 - Coco游戏开发实习生面试总结

js的基本类型以及常用基本类型的内置对象

这个没啥难度,

js的基本类型有:Null, Undefined, Number, String, Boolean, Symboles6新的特性)。

复杂的类型就是引用类型,也就是常说的对象。

基本类型的内置对象有:Number, Array, String,Boolean,RegExp,Function等。

输出打印顺序

1
2
3
4
5
6
7
8
9
console.log(1);
setTimeout(() => {
console.log(2);
}, 0);
console.log(3);
setTimeout(() => {
console.log(4);
}, 0);
console.log(5);

这个也不复杂,setTimeout的回调会到下一次的宏任务才执行。

所以输出的顺序为 1 3 5 2 4

输出打印

1
2
3
4
5
6
7
function fn(x) {
this.x = x;
return this;
}

var x = fn(3);
var y = fn(4);

x.xy.x输出啥?

这道题当时粗心了,没在意这两个x,结果掉坑里了。

这里的fn(3)返回了window

var x = window等价于window.x = window

所以x.x输出的是window.x也就是window

y.x就简单了,和前面的没啥关系,函数内部把x赋值为4

所以y.x的输出的就是4

输出数组

1
2
3
4
5
6
var arr = [];
arr[500] = 1;
console.log(arr[0]);
console.log(arr.length);
arr["1000"] = 1;
console.log(arr.length);

这题我就记得这么多了,这题想一下还是不难的。

没赋值的位置就输出undefined,所以第一个输出undefined

arr[500]赋值为1,则现在数组的索引为0 - 500

所以长度(即输出)为501

arr["1000"] = 1也是给第1001个位置赋值。

所以输出的长度就是为1001

html语义化

问这个语义化有什么用。

这里我答了能够让浏览器更好的识别内容,并且对辅助设备有作用,比如一些盲人的设备。

如果一个div模拟input,那么设备可能不知道。

而直接使用input则可以相应的提示“这里需要输入东西”的语言之类的(后面看百度才知道是叫屏幕阅读器…)。

感觉这个答得太粗糙了。

看了下网上的回答,可以总结为以下几点:

  • 有利于SEO搜索引擎;
  • 有利于屏幕阅读器理解网页的内容;
  • cssjs失效时网页不至于太难看,应为语义化的标签一般都有默认的样式;
  • 有利于代码的编写,整体使用更少的标签。

DOM

创建10a节点,点击a节点输出他的索引序号

1
2
3
4
5
6
7
8
for (let i = 0; i < 10; i++) {
const a = document.createElement("a");
a.onclick = function (ev) {
alert(i);
};
a.innerText = i;
document.getElementsByTagName("body")[0].appendChild(a);
}

这个没啥难度…,还是写的出来的。