2021 03 05 位元組二面分析

2021-10-21 00:13:23 字數 2107 閱讀 8772

1.vue 的 v-for為什麼要加上 :key 以及為什麼不能用做陣列索引 從原理分析

因為vuereactdiff演算法 需要判斷更新前後節點的對應關係,比如下圖的更新前的bde,更新後為bcde 插入了乙個c,如果沒有:key的話,演算法無法判斷這個c是插入的,就會認為b之後的節點全部對不上,都執行patch生成新的虛擬dom,就浪費了效能。

當我們用乙個唯一且穩定的值標識了陣列的元素之後,演算法就不用考慮順序以及對應關係,只比較:key相同的元素即可

q:為什麼不能用陣列索引當key?

a:因為陣列索引明顯不是乙個唯一且穩定的值,比如通過array.shift()等方法可以輕鬆改變索引和元素對應關係,但是元素本身是沒有改變的,達不到減少效能開銷的目的

2.為什麼0.1+0.2!==0.3 分析並提出解決方案

參考解決js計算0.1+0.2 !==0.3

3.虛擬dom比操作真實dom效率和效能更高嗎?

真實dom效率更高,虛擬dom還需要diff演算法等額外開銷,因為他們最終都是要掛載到真實dom上並觸發重排的。兩者都對於同步的修改有優化(只掛載/觸發一次重排)

4.生成1000個不重複的六位驗證碼字串陣列:

生成1000個不重複的六位驗證碼字串陣列:

1.單個驗證碼6位數字0-9

2.一次1000個驗證碼。陣列形式返回

3.單次生成一批不能重複

function random():string

分析一下,此題關鍵是利用random()生成隨機數,且不能重複。考慮到查重的演算法,map是最簡單的,同時也可以使用set

/* 

生成1000個不重複的六位驗證碼字串陣列:

1.單個驗證碼6位數字0-9

2.一次1000個驗證碼。陣列形式返回

3.單次生成一批不能重複

function random():string */

function

random()

return result

}// 生成單個不重複的字串

function

(map,result)

map.

set(randomstr,'')

result.

push

(randomstr)

}// 生成六位random字串函式

function

productrandomstr()

` }

return str

}console.

log(

random()

);

5.promise.resolve(a+b)實現累加:

這題當時沒做出來 後面問題鎖住了不給看 大概是這麼個題幹和解答

/* 

funciton add(a,b)=>promise.resolve(a+b)

實現 function addup(arr) 累加返回結果

*/function

add(a,b)

async

function

addup

(arr)

return total

}console.

log(

addup([

1,2,

3,4]

).then

((value)

=>))

;

位元,位元組,千位元組

如果你被人問到什麼是位元?什麼是位元組?這些網路中資料傳輸的單位一定會讓你有點毫無頭緒的感覺。沒關係,這些都很好理解,看過了下面的內容你就可以有條有理的把問題一一解答了。首先說說最小的單位,我們通常都叫做bit,也就是位元,有的時候也稱為位。但不管怎麼稱呼,他們都是二進位制數中最小的單位。單位的概念...

位元組對齊 8位元組對齊

參考博文 參考1 參考2 參考3 在記憶體管理中經常使用位元組對齊來管理分配的記憶體。1 原理 2 演算法 2.1unsigned intcalc align unsigned int n,unsigned align 2.2 更好的演算法 unsigned intcalc align unsign...

2012 09 12 位元組轉換

位 位元 bit 這是記憶體中最小的單位,二進位制數序列中的乙個0或乙個1就是一比位元,在電腦中,乙個位元對應著乙個電晶體。位元組 b byte 是計算機中最常用 最基本的存在單位。乙個位元組等於8個位元,即1 byte 8bit。千位元組 kb kilo byte 電腦的記憶體容量都很大,一般都是...