1. 程式人生 > 其它 >從面試中查漏補缺

從面試中查漏補缺

工作以來換了幾個地方,這次打算認真找一個合適的公司。總結一下部分最近遇到的面試題

1.巨集佇列和微佇列

巨集佇列:dom事件回撥、ajax回撥、定時器回撥

微佇列:promise回撥、mutation回撥

執行時下一個巨集佇列時會先執行微佇列。

const first = () => (new Promise((resolve, reject)=>{
    console.log(3);
    let p = new Promise((resolve, reject)=>{
        console.log(7);
        setTimeout(() => {
            console.log(
5) resolve(6) }, 0); resolve(1); }) resolve(2); p.then(value=>{ console.log(value) }) })) first().then(value=>{ console.log(value) }) console.log(4); 輸出結果為:3 7 4 1 2 5

2.閉包

用途:函式傳參

函式防抖,

封裝私有變數,

作為回撥

定義行為,然後把它關聯到某個使用者事件上(點選或者按鍵)。程式碼通常會作為一個回撥(事件觸發時呼叫的函式)繫結到事件。

<body>
    < a href=" " id="size-12">12</ a>
    < a href="#" id="size-20">20</ a>
    < a href="#" id="size-30">30</ a>

    <script type="text/javascript">
        function changeSize(size){
            return function(){
                document.body.style.fontSize 
= size + 'px'; }; } var size12 = changeSize(12); var size14 = changeSize(20); var size16 = changeSize(30); document.getElementById('size-12').onclick = size12; document.getElementById('size-20').onclick = size14; document.getElementById('size-30').onclick = size16; </script> </body> </html>

優點:
1.保護函式內的變數安全,加強了封裝性
2.在記憶體中維持一個變數(用的太多就變成了缺點,佔記憶體)
閉包之所以會佔用資源是當函式a執行結束後, 變數i不會因為函式a的結束而銷燬, 因為b的執行需要依賴a中的變數。

缺點:會佔用大量記憶體,

3.深拷貝和淺拷貝

拷貝只是增加了一個指標指向已經存在的記憶體,而深拷貝就是增加一個指標並且申請一個新的記憶體。

4.promise

5.指向與強制更改指向(call,apply,bind)

6...