面試記錄2

韋磊發表於2019-02-16

面試記錄2

1. Ajax的原理,和程式相關

2. 程式和執行緒的關係

程式和執行緒的區別

3. css選擇器的優先順序

  1. 不同級別

!important > 行內樣式>ID選擇器 > 類選擇器 > 標籤 > 萬用字元 > 繼承 > 瀏覽器預設屬性

  1. 相同級別

後面覆蓋前面的

4. 閉包相關

閉包的作用:

  • 在函式外部讀取函式內部區域性變數;
  • 在函式外部讀取函式內部區域性變數,變數被封裝到區域性作用域,只提供介面獲取該變數,就像傳統oop的私有變數,公有方法一樣,這樣可以避免汙染全域性變數;
  • 讓這些值始終儲存在記憶體中。

使用場景

  • 由於setTimeout方法不能傳遞引數,可以用閉包來解決
    function func(param) {
        return function() {
            alert(param);
        }
    }
    var f = func(1)
    setTimeout(f, 1000);
  • 節流函式
    function debounce(func, delay) {
        let timer;
        //該函式是一個閉包,所以timer會一直存在於記憶體中,並且timer只能在函式內部訪問
        return function (...args) {
            if (timer) {
                clearTimeout(timer);
            }
            timer = window.setTimeout(() => {
                func.apply(this, args);
            }, delay);
        }
    }

5. html5新特性

  • Canvas Api
  • <audio> <vedio>
  • Geolocation Api
  • Websocket Api
  • Form Api
  • Storage Api
  • 離線應用

6. 垂直居中

垂直居中
用彈性盒子實現水平垂直居中

<div class="parent">
  <div class="children">我是通過flex的水平垂直居中噢!</div>
</div>
html,body{
  width: 100%;
  height: 200px;
}
.parent {
  display:flex;
  align-items: center;/*垂直居中*/
  justify-content: center;/*水平居中*/
  width:100%;
  height:100%;
  background-color:red;
}
.children {
  background-color:blue;
}

7. Promise

兩個作用

  1. 避免回撥地獄
  2. 為了我們的程式碼更加具有可讀性和可維護性,我們需要將資料請求與資料處理明確的區分開來

8. alert(1&&2) alert(1||2)

alert(1 && 2)  //2 括號裡面先計算,var a = 1 && 2; alert(a)
alert(1 || 2)  //1 括號裡面先計算,var a = 1 || 2; alert(a)

9. display: none 和 visibility:hidden

display:none //隱藏元素,不佔據文件流
visibility:hidden   //隱藏元素,不佔據文件流

10. 物件先會先找自身的屬性,然後再去找原型上的屬性

function C1(name) {
    if (name) this.name = name;
};
C1.prototype.name = `weilei`;
console.log(new C1().name);  // weilei

function C2(name) {
    this.name = name;
};
C2.prototype.name = `weilei`;
console.log(new C2().name);  // undefined

function C3(name) {
    this.name = name || `sam`;
};
C3.prototype.name = `weilei`;
console.log(new C3().name);  // sam

11. mouseover和mouseenter區別

唯一的區別是 onmouseenter 事件不支援冒泡

12. js改變html的title

document.title = `xxx`

相關文章