原创的几个前端校招面试题
如果您发现本文排版有问题,可以先点击下面的链接切换至老版进行查看!!!
原创的几个前端校招面试题
鉴于太多新入行的朋友理论知识太扎实,简历太精彩,特出了几个手写题目,不求每个都作对,面试过程都是先问理论,如果答的不错的话再要求写代码。
变量提升
console.log(1, test);
var test = 1;
console.log(2, test);
function test(){
console.log(3, test);
}
test();
实测没有全部做对的,第三个console不会打印,因为
test()
会报错
内存堆栈
var a = 1;
var b = a;
var b = 100;
console.log(a, b);
var aa = [22, 33]
var bb = aa;
bb[0] = 44;
console.log(aa, bb)
for循环 分别打印 0 1 2 3 4
for(var i=0;i<5;i++){
setTimeout(function(){
console.log(i)
},1000*i)
}
let i = 0; ...
for(var i=0;i<5;i++){
(function(i){
setTimeout(function(){
console.log(i)
},1000*i)
})(i)
}
考查valueOf、toString
附加题 前面几个手写答的不错(至此已通过面试)的才会问
实现一个a,使得 a + 0
= 1,再次执行a + 0
= 2,一次类推
var a = {
i: 0,
valueOf() {
return this.i++; // 此处额外在定一个变量也行,不要求用this
}
}
console.log(a + 0); // 0
console.log(a + 0); // 1
console.log(a + 0); // 2
addEventListener(event, function, useCapture)
mouseenter mouseover
mouseover:当鼠标移入元素或其子元素都会触发事件,所以有一个重复触发,冒泡的过程。对应的移除事件是mouseout mouseenter:当鼠标移除元素本身(不包含元素的子元素)会触发事件,也就是不会冒泡,对应的移除事件是mouseleave
数组去重
考查HTTP实战
简单请求
简单请求需满足以下两个条件
- 请求方法是以下三种方法之一:
- HEAD
- GET
- POST
- HTTP 的头信息不超出以下几种字段
- Accept
- Accept-Language
- Content-Language
- Last-Event-ID
- Content-Type:
只限于 (application/x-www-form-urlencoded、multipart/form-data、text/plain)
复杂请求
非简单请求即是复杂请求
在跨域的情况下,非简单请求会先发起一次空body的OPTIONS请求,称为"预检"请求,用于向服务器请求权限信息,等预检请求被成功响应后,才发起真正的http请求。
跨域的原因和常见解决方案
对tcp三次握手的理解
输入网址到渲染过程
DNS解析 TCP连接 发送HTTP请求 服务器处理请求并返回HTTP报文 浏览器解析渲染页面 连接结束
浏览器重排重绘的理解
css布局position的理解
css盒子模型
了解BFC吗
- 分类:
- Web前端
更新时间: