寒冬中的面试果真没那么简单,其实最主要的仍是自身能力的不足,今天的面试属实收(da)获(ji)很大。学习技术不能浅尝辄止停留在api的使用,最主要的是要掌握原理,这样才能更好的理解与使用,对自身之后的发展也很重要。vue
进入正题,首先是笔试题:web
1.inline和block元素有哪些?它们的区别是什么?面试
2.请写出如下代码的打印值api
var scope = 'global'
function log() {
var args = Array.prototype.join.call(arguments, '')
console.log(this.scope + ':' + args)
}
var dog = {
scope: 'dog',
yelp: function() {
var sope = 'dog.yelp'
log('wow')
}
}
dog.yelp() // global:wow
dog.yelp.call(dog) // global:wow
log.call(dog, 'ceeated') //dog:ceeated复制代码
这道题考察的是this的指向问题,普通函数的this在函数执行的时候才能肯定,谁调用就指向谁(大体就是这意思^_^)promise
3.请解释元素fixed、absolute、relative、static的区别bash
4.HTTP中200、40四、500分别表明什么意思?30四、403呢?dom
5.把字符串'abcde'处理成'edbca'async
6.请用promise改写一下代码函数
$(document).ready(function() {
$.get('/get/user/info', function(result) {
$.get('/get/city?city='+result.user.city, function(city) {
// do sth
})
})
})
==>
function fetch(url) {
return new Promise((resolve, reject) => {
$.get(url, function(res) {
resolve(res)
},
function(err) {
reject(err)
})
})
}
async function getInfo() {
let result = await fetch('/get/user/info')
fetch(`//get/city?city=${result.user.city}`).then(res => {
do sth
})
}
getInfo()复制代码
7.如何实现add函数?得出一下结果学习
add(2, 5) // 7 add(2)(5) //7
function add(...rest) {
if(rest.length > 1) {
return rest[0] + rest[1]
} else {
return function(sec) {
return rest[0] + sec
}
}
}复制代码
1.介绍一下vue中的vdom,与真实dom的关系,是如何映射到真实dom的?
2.项目中是如何进行优化的?减小首页的加载速度
我回答了一些常规操做,包括使用雪碧图。
面试官:为何使用雪碧图?
我:能够减小http请求
面试官:为何减小http请求能够优化首页的加载速度?若是合并的雪碧图太大那岂不是加载的更慢?
我:...
3.执行map函数时,dom被更新的多少次?
<div>{{timer}}</div>
// script
data() {
return {
timer: 2
}
},
methods: {
map() {
for(let i=0;i<1000,i++){
this.timer = i
}
}
}复制代码
4.重绘、回流
5.有个计算量很大的操做(执行时间3s)请问如何优化?(大概是这样)
面试官给出的答案:
1.web worker
2.分步骤执行
6.手写防抖函数
function debounce() {
let timer
return function() {
clearInterval(timer)
timer = setInterval(() => {
// do sth
},1000)
}
}复制代码
你们能够在评论区留下答案,让我学习一下骚操做