记一次失败的面试(1)

寒冬中的面试果真没那么简单,其实最主要的仍是自身能力的不足,今天的面试属实收(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
            }
       }
}复制代码

下面的面试问题才是让我尴尬的点,不怕你们笑话,我回答的不好/(ㄒoㄒ)/~~

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)
    }
}复制代码

你们能够在评论区留下答案,让我学习一下骚操做

相关文章
相关标签/搜索