1. 程式人生 > 實用技巧 >Shopee一面——牛客網@ZhengjieTang

Shopee一面——牛客網@ZhengjieTang

用過哪些ES6的新特性?

說下我自己平時做專案常用的吧,不是很常用的就沒列出來了(其實是我只掌握了常用的。。。)

  • es6的模組化解決方案(匯入匯出)
  • class
  • promise
  • let/const
  • 箭頭函式、剩餘引數
  • 陣列/物件解構賦值
  • 模板字串
  • 函式預設引數
  • Array物件擴充套件方法:擴充套件運算子、find、findIndex、includes
  • Set資料結構(集合)

css中的box-sizing

box-sizing:允許你以某種方式定義某些元素,以適應指定區域(說簡單點就是改變其盒子模型)

其有三個值,預設為content-box

  • content-box:標準盒模型(width=content+padding+border+maigin)
  • border-box:怪異盒模型(windth=conten+padding+border)+ margin
  • inherit:css關鍵字,繼承父元素的box-sizing值

css如何讓超出的文字隱藏並顯示省略號

/* 必須要設定塊級盒子寬度 */
width: 100px;
/* 超出文字的部分不顯示 */
overflow: hidden;
/* 強制文字在一行顯示 */
white-space: nowrap;
/* 顯示省略符號來代表被修剪的文字 */
text-overflow: ellipsis;

async,await函式,await後面能否跟一個普通函式?

es2017新增的async,await函式是為了更便意的解決非同步而出現的的解決方案,本質上還是一個“語法糖”,使程式碼結構更清晰,有更好的語義,寫複雜業務的時候閱讀起來更快

await後面是可以跟一個普通函式,根據不同情況有兩種情況:

  • 對於promise物件,await會阻塞函式執行,等待promise的resolve返回值,作為await的結果,然後再執行下下一個表示式
  • 對於非promise物件,比如箭頭函式,同步表示式等等,await等待函式或者直接量的返回,而不是等待其執行結果

EventLoop

可以從以下四個方面進行解釋:

JS執行緒、巨集任務(同步、非同步)、微任務(promise)、事件迴圈

詳情可以參考我的這篇關於JavaScript Event Loop部落格

強快取和協商快取

(博主對這個不是很瞭解,後續會有部落格更新)

強快取(本地快取)

:強快取是根據返回頭中的 Expires 或者 Cache-Control 兩個欄位來控制的,都是表示資源的快取有效時間。

協商快取(弱快取):由伺服器來確定快取資源是否可用

借用網路上的一張圖來說明整個瀏覽器快取流程:

http的狀態碼有哪些?

這裡說幾個常見的:

  • 200 OK
  • 204 No Content
  • 301 Moved Permanently(永久性重定向)
  • 400 Bad Request
  • 404 Not Found
  • 500 Internal Server Error

forEach和for遍歷陣列的不同

for in會遍歷陣列內所有可列舉的屬性,包括原型上的屬性和方法,所以for in用來遍歷物件更合適

let arr = [1, 3, 5, 4]
arr.name = 'Object'
for (let index in arr) {
  console.log(index + ':' + arr[index])
}

forEach會從頭到尾對數組裡的每個元素遍歷一遍 ,他不會生成新陣列,也不改變原陣列,回撥函式接收三個值,分別是 陣列的元素,索引和當前陣列

let arr = [1, 3, 5, 4]
arr.name = 'Object'
arr.forEach((item, index, array) => {
  console.log(index + ':' + item, array)
})

Map和WeakMap

Map(字典):ES6 新增的一種新的資料結構,類似於陣列,但成員是唯一且無序的,沒有重複的值。集合是以 [value, value] 的形式儲存元素,字典是以 [key, value] 的形式儲存,可以遍歷。

WeakMap:WeakMap 物件是一組鍵值對的集合,只接受物件作為鍵名(null除外),不接受其他型別的值作為鍵名,其中的鍵是弱引用物件,而值可以是任意,不能遍歷。