記一次失敗的面試(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)
    }
}複製代碼

你們能夠在評論區留下答案,讓我學習一下騷操做

相關文章
相關標籤/搜索