面試題 —— 前端精選(1)

文章目錄

前言

闡述 JS 的事件循環

JS 中的計時器能做到精確計時嗎?為什么?

如何理解 JS 的異步?


前言

本文章介紹三道圍繞 JavaScript 的精選面試題


闡述 JS 的事件循環

????????事件循環?叫做消息循環,是瀏覽器渲染主線程的?作?式。 在 Chrome 的源碼中,它開啟?個不會結束的 for 循環,每次循環從消息 隊列中取出第?個任務執?,?其他線程只需要在合適的時候將任務加?到 隊列末尾即可。 過去把消息隊列簡單分為宏隊列和微隊列,這種說法?前已?法滿?復雜的 瀏覽器環境,取?代之的是?種更加靈活多變的處理?式。 根據 W3C 官?的解釋,每個任務有不同的類型,同類型的任務必須在同? 個隊列,不同的任務可以屬于不同的隊列。不同任務隊列有不同的優先級, 在?次事件循環中,由瀏覽器??決定取哪?個隊列的任務。但瀏覽器必須 有?個微隊列,微隊列的任務?定具有最?的優先級,必須優先調度執?。


JS 中的計時器能做到精確計時嗎?為什么?

不?,因為:

  1. 計算機硬件沒有原?鐘,?法做到精確計時

  2. 操作系統的計時函數本身就有少量偏差,由于 JS 的計時器最終調?的 是操作系統的函數,也就攜帶了這些偏差

  3. 按照 W3C 的標準,瀏覽器實現計時器時,如果嵌套層級超過 5 層, 則會帶有 4 毫秒的最少時間,這樣在計時時間少于 4 毫秒時?帶來 了偏差

  4. 受事件循環的影響,計時器的回調函數只能在主線程空閑時運?,因此 ?帶來了偏差


如何理解 JS 的異步?

????????JS是??單線程的語?,這是因為它運?在瀏覽器的渲染主線程中,?渲染 主線程只有?個。

??????? ?渲染主線程承擔著諸多的?作,渲染??、執? JS 都在其中運?。 如果使?同步的?式,就極有可能導致主線程產?阻塞,從?導致消息隊列 中的很多其他任務?法得到執?。這樣一來,???會導致繁忙的主線程? ?的消耗時間,另???導致???法及時更新,給?戶造成卡死現象。

??????? 所以瀏覽器采?異步的?式來避免。具體做法是當某些任務發?時,?如計 時器、?絡、事件監聽,主線程將任務交給其他線程去處理,?身?即結束 任務的執?,轉?執?后續代碼。當其他線程完成時,將事先傳遞的回調函 數包裝成任務,加?到消息隊列的末尾排隊,等待主線程調度執?。 在這種異步模式下,瀏覽器永不阻塞,從?最?限度的保證了單線程的流暢運?。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/165006.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/165006.shtml
英文地址,請注明出處:http://en.pswp.cn/news/165006.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

CentOS虛擬機重置賬號密碼

虛擬機忘記密碼了 一般來說,虛擬機的賬號密碼,工作中都會有文檔記錄,如果忘記了可以查看文檔。但是也有特例,虛擬機的密碼沒有記錄到文檔中,嘗試了很多次依然登錄失敗,這時候就只能重置賬號密碼了。 1.重…

upload-labs關卡13(基于白名單的0x00截斷繞過)通關思路

文章目錄 前言一、回顧上一關知識點二、靶場第十三關通關思路1、看源代碼2、bp進行0x00截斷繞過3、蟻劍連接 總結 前言 此文章只用于學習和反思鞏固文件上傳漏洞知識,禁止用于做非法攻擊。注意靶場是可以練習的平臺,不能隨意去尚未授權的網站做滲透測試…

nginx中proxy_pass的配置

Nginx的官網將proxy_pass分為兩種類型: 不帶URI方式:只包含IP和端口號的,不帶uri(單個/也算uri),比如proxy_pass http://localhost:8080;帶URI方式:在端口號之后有其他路徑的&#…

思維模型 潘多拉效應

本系列文章 主要是 分享 思維模型 ,涉及各個領域,重在提升認知。越是禁止,越是好奇。 1 潘多拉效應的應用 1.1 潘多拉效應在管理中的應用 通用電氣公司曾經推出了一項名為“六西格瑪”的管理方法,該方法旨在通過優化業務流程和提…

Linux終端和命令行

文章目錄 學習Linux終端和命令行一、常用Linux命令的基本使用(一)放大/縮小終端窗口的字體顯示(二)自動補全 二、軟件安裝三、文件和目錄常用命令(一)ls:查看目錄內容1.ls命令說明2.Linux下文件…

Peter算法小課堂—前綴和數組的應用

桶 相當于計數排序&#xff0c;看一個視頻 桶排序 太戈編程1620題 算法解析 #include <bits/stdc.h> using namespace std; const int R11; int cnt[R];//cnt[t]代表第t天新增幾人 int s[R];//s[]數組是cnt[]數組的前綴和數組 int n,t; int main(){cin>>n;for(…

flutter 輸入框組件 高度問題

使用的組件名字為 TestField 組件 TestField 配置 占位文字 設置 decoration 屬性 InputDecoration 中hintText去掉輸入到 輸入框的間距 InputDecoration 中contentPadding EdgeInsets.zero去掉邊框中的間距 InputDecoration 中 使用 isDense:true設置輸入框內文字的顏色 …

Android 11.0 SystemUI 去掉狀態欄wifi流量上下行圖標功能實現

1.概述 在11.0系統定制rom開發中,在關于systemui的定制功能總,在SystemUI 狀態欄上顯示時鐘,電池電量 wifi圖標,在顯示wifi圖標時,網絡實時更新時,但是會時不時顯示上下行圖標 顯得很不美觀,客戶需求要求不顯示上下行圖標,所以需要去掉上下行圖標功能,接下來實現相關功能…

MATLAB算法實戰應用案例精講-【圖像處理】計算機視覺(基礎篇)(二)

目錄 知識儲備 opencv基礎知識 01 什么OpenCV 02 如何部署OpenCV? 03 OpenCV模塊簡介 04 OpenCV基本數據結構

Shell循環:for(一)

語法結構&#xff1a; for 變量名 [ in 取值列表] do 循環體 done 示例1&#xff1a; 1、需求&#xff1a;自動循環創建10個用戶 2、演示&#xff1a; [rootlocalhost ~]# vim for.sh #腳本編寫 #!/bin/bash for i in {1..10} do useradd "user$…

Linux進程通信之共享內存

文章目錄 共享內存原理申請共享內存函數&#xff08;shmget&#xff09;參數key生成key值示例申請共享內存 掛接到進程地址空間函數(shmat)去關聯函數(shmdt)控制共享內存(shmctl)IPC_STATIPC_RMID ipcs其余進程獲取該共享內存進程間通信 進程間通信&#xff1a;IPC&#xff0c…

在openSUSE-Leap-15.5-DVD-x86_64中使用deepin-wine-6.0.0.19再使用金山打字通2016

在openSUSE-Leap-15.5-DVD-x86_64中使用deepin-wine-6.0.0.19再使用金山打字通2016 在openSUSE Software官網輸入關鍵字deepin-wine搜索得到fedora-deepin-wine6的作者是xuthus5 https://software.opensuse.org/package/fedora-deepin-wine6 在百度貼吧fedora吧的《fedora下的…

C++11『lambda表達式 ‖ 線程庫 ‖ 包裝器』

?個人主頁&#xff1a; 北 海 &#x1f389;所屬專欄&#xff1a; C修行之路 &#x1f383;操作環境&#xff1a; Visual Studio 2022 版本 17.6.5 文章目錄 &#x1f307;前言&#x1f3d9;?正文1.lambda表達式1.1.仿函數的使用1.2.lambda表達式的語法1.3.lambda表達式的使用…

數據結構-深度優先搜索Java實現

目錄 一、引言二、算法步驟三、原理演示遞歸實現非遞歸實現&#xff08;使用堆棧&#xff09; 四、代碼實戰五、結論 一、引言 深度優先搜索&#xff08;DFS&#xff09;是一種在圖或樹中進行搜索的算法&#xff0c;它沿著樹的深度遍歷樹的節點&#xff0c;盡可能深的搜索樹的分…

使用C++從0到1實現人工智能神經網絡及實戰案例

引言 既然是要用C++來實現,那么我們自然而然的想到設計一個神經網絡類來表示神經網絡,這里我稱之為Net類。由于這個類名太過普遍,很有可能跟其他人寫的程序沖突,所以我的所有程序都包含在namespace liu中,由此不難想到我姓劉。在之前的博客反向傳播算法資源整理中,我列舉…

CTF-PWN-QEMU-前置知識

文章目錄 QEMU 內存管理(QEMU 如何管理某個特定 VM 的內存)MemoryRegion gpa->hpaFlatView&#xff1a;表示MR 樹對應的地址空間FlatRange&#xff1a;存儲不同MR對應的地址信息AddressSpace&#xff1a;不同類型的 MemoryRegion樹RAMBlock總體簡化圖 QEMU 設備模擬 &#x…

【Java進階開發實戰】用Java中的Base64數據加密與解密處理

簡介 ? Base64編碼,是我們程序開發中經常使用到的編碼方法。它是一種基于用64個可打印字符來表示二進制數據的表示方法。它通常用作存儲、傳輸一些二進制數據編碼方法, 也是MIME(多用途互聯網郵件擴展,主要用作電子郵件標準)中一種可打印字符表示二進制數據的常見編碼方法…

Proteus下仿真AT89C51報“串行口通信失敗,請檢查電平適配是否正確。”解決辦法

在Proteus下進行AT89C51串行口仿真時&#xff0c;如果遇到“串行口通信失敗&#xff0c;請檢查電平適配是否正確”的錯誤提示&#xff0c;以下是一些解決辦法&#xff1a; 1. 了解AT89C51和外部設備的電平要求&#xff1a; 首先&#xff0c;了解AT89C51和外部設備之間的電平…

【華為OD機試python】分班【2023 B卷|100分】

【華為OD機試】-真題 !!點這里!! 【華為OD機試】真題考點分類 !!點這里 !! 題目描述 幼兒園兩個班的小朋友在排隊時混在了一起,每位小朋友都知道自己是否與前面一位小朋友是否同班,請你幫忙把同班的小朋友找出來。 小朋友的編號為整數,與前一位小朋友同班用Y表示,不同班…

C語言——文件操作

歸納編程學習的感悟&#xff0c; 記錄奮斗路上的點滴&#xff0c; 希望能幫到一樣刻苦的你&#xff01; 如有不足歡迎指正&#xff01; 共同學習交流&#xff01; &#x1f30e;歡迎各位→點贊 &#x1f44d; 收藏? 留言?&#x1f4dd; 我輩皆凡人&#xff0c;用一生鋪就的…