【前端刷題筆記01】 - 字節跳動2019春招面試題

1、sleep函數該如何實現的

sleep函數,將程序執行掛起一段時間,阻塞程序的運行

ES6方案:

function sleep(ms) {
  return new Promise(resolve => setTimeout(resolve, ms));
}
async function test() {
  console.log("Hello");
  await sleep(1000);
  console.log("World");
}
test();

ES5死循環阻塞:

function sleep(ms) {
  ms += new Date().getTime();
  while (new Date().getTime() < ms) {}
}

function test2() {
  console.log("Hello");
  sleep(1000);
  console.log("World");
}

test2();

2、HTTP狀態碼302和304的區別

  • 1** 信息狀態碼

    • 100 繼續
    • 101 切換協議
  • 2** 成功狀態碼

    • 200 OK 請求成功
    • 201 已創建
    • 202 已接受
    • 203 非授權信息
    • 204 無內容
    • 205 重置內容
    • 206 部分內容
  • 3** 重定向

    • 300 多種選擇
    • 301 Moved Permanently 永久重定向
    • 302 Found 臨時重定向
    • 303 查看其它地址
    • 304 Not Modified 未修改
    • 305 使用代理
  • 4** 客戶端錯誤

    • 400 Bad Request 請求的語法錯誤
    • 401 Unauthorized 要求身份驗證
    • 403 Forbidden 服務器拒絕執行該請求
    • 404 Not Found 未找到資源
  • 5** 服務器錯誤

    • 500 Internal Server Error 服務器內部錯誤
    • 501 服務器不支持該功能,無法完成請求
    • 502 Bad Gateway 服務器作爲網關服務器執行請求時,從遠程服務器接收到了無效的響應
    • 503 Service Unavailable 系統維護
    • 504 Gateway Time-out 超時
    • 505 HTTP Version not supported 服務器不支持請求的HTTP協議版本

3、多路複用和長連接是什麼意思,區別,以及如何設置長連接

HTTP1

  • 長連接
  • 若干個請求排隊串行化單線程處理,後面的請求等待前面請求的返回才能獲得執行機會,一旦有某請求超時等,後續請求只能被阻塞,毫無辦法,也就是人們常說的線頭阻塞

HTTP2

  • 多路複用
  • 多個請求可同時在一個連接上並行執行。某個請求任務耗時嚴重,不會影響到其它連接的正常執行

如何實現長連接?

  • WebSocket

clipboard.png

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章