面經(jīng)考點01

1俭驮、瀏覽器都包含哪些進程?

1)Browser進程:瀏覽器的主進程(負責協(xié)調(diào)春贸、主控),只有一個遗遵。作用有:

a萍恕、負責瀏覽器界面顯示,與用戶交互车要。如前進允粤,后退等;

b、負責各個頁面的管理类垫,創(chuàng)建和銷毀其他進程司光;

c、網(wǎng)絡資源的管理悉患,下載等残家。

2)第三方插件進程:每種類型的插件對應一個進程,僅當使用該插件時才創(chuàng)建

3)GPU進程:最多一個售躁,用于3D繪制等

4)瀏覽器渲染進程(瀏覽器內(nèi)核)(Renderer進程坞淮,內(nèi)部是多線程的):默認每個Tab頁面一個進程,互不影響陪捷。主要作用為頁面渲染回窘,腳本執(zhí)行,事件處理等市袖。

Renderer進程啡直,也就是我們每個標簽頁所擁有的進程,互不影響苍碟,負責頁面渲染酒觅,腳本執(zhí)行,事件處理等驰怎。

瀏覽器內(nèi)核阐滩,即我們的渲染進程,有名Renderer進程县忌,內(nèi)部是多線程的掂榔。我們頁面的渲染,js腳本執(zhí)行症杏,事件的循環(huán)都在這一進程內(nèi)進行装获,也就是說,該進程下面擁有著多個線程厉颤,靠著這些現(xiàn)成共同完成渲染任務穴豫。

a、圖形用戶界面GUI渲染線程:負責渲染瀏覽器界面逼友,包括解析HTML精肃、CSS、構(gòu)建DOM樹帜乞、Render樹司抱、布局與繪制等。當界面需要重繪(Repaint)或由于某種操作引發(fā)回流(reflow)時黎烈,該線程就會執(zhí)行习柠。

b匀谣、JS引擎線程:JS內(nèi)核,也稱JS引擎资溃,負責處理執(zhí)行javascript腳本武翎。瀏覽器無論什么時候都只有一個JS引擎在運行JS程序。

c溶锭、事件觸發(fā)線程:會將對應任務添加到事件線程中宝恶。當對應的事件符合觸發(fā)條件被觸發(fā)時,該線程會把事件添加到待處理隊列的隊尾暖途,等待JS引擎的處理卑惜。

d、定時觸發(fā)器線程:setInterval與setTimeout所在線程驻售。定時計時器并不是由JS引擎計時的露久,因為如果JS引擎是單線程的,如果JS引擎處于堵塞狀態(tài)欺栗,那會影響到計時的準確毫痕。當計時完成被觸發(fā),事件會被添加到事件隊列迟几,等待JS引擎空閑了執(zhí)行消请。

e、異步HTTP請求線程:在XMLHttpRequest在連接后新啟動的一個線程类腮。線程如果檢測到請求的狀態(tài)變更臊泰,如果設(shè)置有回調(diào)函數(shù),該線程會把回調(diào)函數(shù)添加到事件隊列蚜枢,同理缸逃,等待JS引擎空閑了執(zhí)行

2、Web Worker

JavaScript語言采用的是單線程模型厂抽,也就是說需频,所有任務只能在一個線程上完成,一次只能做一件事筷凤。

Web Worker的作用昭殉,就是為 JavaScript 創(chuàng)造多線程環(huán)境,允許主線程創(chuàng)建 Worker 線程藐守,將一些任務分配給后者運行挪丢。在主線程運行的同時,Worker 線程在后臺運行卢厂,兩者互不干擾吃靠。等到 Worker 線程完成計算任務,再把結(jié)果返回給主線程足淆。

Worker 線程一旦新建成功巢块,就會始終運行,不會被主線程上的活動(比如用戶點擊按鈕巧号、提交表單)打斷族奢。這樣有利于隨時響應主線程的通信。但是丹鸿,這也造成了 Worker 比較耗費資源越走,不應該過度使用,而且一旦使用完畢靠欢,就應該關(guān)閉廊敌。

主線程采用new命令,調(diào)用Worker()構(gòu)造函數(shù)门怪,新建一個 Worker 線程骡澈。Worker()構(gòu)造函數(shù)的參數(shù)是一個腳本文件,該文件就是 Worker 線程所要執(zhí)行的任務掷空。由于 Worker 不能讀取本地文件肋殴,所以這個腳本必須來自網(wǎng)絡。如果下載沒有成功(比如404錯誤)坦弟,Worker 就會默默地失敗护锤。

主線程調(diào)用worker.postMessage()方法,向 Worker 發(fā)消息酿傍。參數(shù)烙懦,就是主線程傳給Worker 的數(shù)據(jù)。它可以是各種數(shù)據(jù)類型赤炒,包括二進制數(shù)據(jù)

主線程通過worker.onmessage指定監(jiān)聽函數(shù)氯析,接收子線程發(fā)回來的消息。事件對象的data屬性可以獲取 Worker 發(fā)來的數(shù)據(jù)可霎。

Worker 完成任務以后魄鸦,主線程就可以把它關(guān)掉。worker.terminate();

Worker 線程

3癣朗、JSON.stringify()

JSON.stringify()方法將一個 JavaScript?對象或值轉(zhuǎn)換為 JSON 字符串拾因。

注意:1、非數(shù)組對象的屬性不能保證以特定的順序出現(xiàn)在序列化后的字符串中旷余。

2绢记、布爾值、數(shù)字正卧、字符串的包裝對象在序列化過程中會自動轉(zhuǎn)換成對應的原始值蠢熄。

3、undefined炉旷、任意的函數(shù)以及 symbol 值签孔,在序列化過程中會被忽略(出現(xiàn)在非數(shù)組對象的屬性值中時)或者被轉(zhuǎn)換成null(出現(xiàn)在數(shù)組中時)叉讥。

4、函數(shù)饥追、undefined 被單獨轉(zhuǎn)換時图仓,會返回 undefined;NaN 和 Infinity 格式的數(shù)值及 null 都會被當做 null但绕。

4救崔、es5和es6的區(qū)別

1)ES5新增

a、strict嚴格模式捏顺;

b六孵、Array方法:every、some?幅骄、forEach劫窒、filter?、indexOf昌执、lastIndexOf烛亦、isArray、map懂拾、reduce煤禽、reduceRight方法;

c岖赋、Object方法:Object.getPrototypeOf檬果、Object.create、Object.getOwnPropertyNames唐断、Object.defineProperty选脊、Object.getOwnPropertyDescriptor、Object.defineProperties脸甘、Object.keys恳啥、Object.preventExtensions / Object.isExtensible、Object.seal / Object.isSealed丹诀、Object.freeze / Object.isFrozen等钝的。

2)ES6新增

a、塊級作用域:let铆遭、常量const硝桩;

b、賦值解構(gòu)枚荣;

c碗脊、函數(shù)參數(shù):默認值、參數(shù)打包橄妆、?數(shù)組展開(Default 衙伶、Rest 祈坠、Spread);

d矢劲、箭頭函數(shù)颁虐;

e、Iterators(迭代器)+ for..of卧须;

f、Class:constructor儒陨、extends花嘶、super;

g、Map + Set + WeakMap + WeakSet

H蹦漠、Symbols | Promise等椭员。

5、不使用第三個變量得情況下交換兩個變量得值

第一種:a=a+b笛园;b=a-b隘击;a=a-b;

第二種:a=a^b研铆;b=a^b埋同;a=a^b;

6、HTML引入js的方式

內(nèi)部引入:需要一個標簽<script></script>棵红。

外部引入:創(chuàng)建一個獨立的外部 js 文件,? 用 <script></> 標簽引入. 使用他的src 屬性引用對應的Js文件凶赁。

7、ES6的 Class 類

在ES6中逆甜,class (類)作為對象的模板被引入虱肄,可以通過 class 關(guān)鍵字定義類。class 的本質(zhì)是 function交煞。

注意要點:a咏窿、不可重復聲明。

b素征、類定義不會被提升集嵌,必須在訪問前對類進行定義,否則就會報錯稚茅。

c纸淮、類中方法不需要 function 關(guān)鍵字。

d亚享、方法間不能加分號咽块。

1)類的主體

a、屬性:靜態(tài)屬性(static 關(guān)鍵字定義)欺税;

公共屬性(在類的原型prototype上定義的)侈沪;

name屬性(返回跟在class后的類名(存在時))揭璃。

b、方法:constructor 方法是類的默認方法亭罪,創(chuàng)建類的實例化對象時被調(diào)用瘦馍。

靜態(tài)方法(static 關(guān)鍵字定義);

原型方法应役。

8情组、襯線字體和非襯線字體區(qū)別

襯線字體:文字邊緣有修飾的字體;在字的筆畫開始箩祥、結(jié)束的地方有額外的裝飾院崇,而且筆畫的粗細會有所不同。適用于傳統(tǒng)的印刷體袍祖,易讀性高底瓣。

非襯線字體:文字邊緣沒有修飾的字體,筆畫的粗細差不多蕉陋。適合于標題海報等需要醒目的地方捐凭。

font-family屬性設(shè)置時,為了匹配不同環(huán)境下的字體凳鬓,可以書寫多個值茁肠。其中,為了使得頁面在用戶電腦上沒有任何其他字體安裝的情況下也顯示得較為好看村视,可以加上sans-serif官套,表示由計算機自動選擇默認的非襯線字體進行渲染(計算機操作系統(tǒng)都分別會有一種默認的襯線字體和非襯線字體)

9、Javascript組成

JavaScript的實現(xiàn)包括以下3個部分:

1)ECMAScript(核心):描述了JS的語法和基本對象蚁孔。

2)文檔對象模型 (DOM):處理網(wǎng)頁內(nèi)容的方法和接口

3)瀏覽器對象模型(BOM):與瀏覽器交互的方法和接口

10奶赔、JavaScript和java c c++的區(qū)別

Java強類型的語言;JavaScript弱類型的語言杠氢。

Java站刑、C、C++是編譯型語言鼻百,需要編譯器編譯成本地可執(zhí)行程序后才能運行绞旅;JavaScript解釋性語言,像温艇,開發(fā)語言寫好后直接將代碼交給用戶因悲,用戶使用腳本解釋器將腳本文件解釋執(zhí)行。


11勺爱、在js中0.1+0.2===0.3嗎晃琳?如果不相等如何解決?

在JavaScript中的二進制的浮點數(shù)0.1和0.2并不是十分精確,在他們相加的結(jié)果并非正好等于0.3卫旱,而是一個比較接近的數(shù)字 0.30000000000000004 人灼,所以條件判斷結(jié)果為false。

那么應該怎樣來解決0.1+0.2等于0.3呢? 最好的方法是設(shè)置一個誤差范圍值顾翼,通常稱為”機器精度“投放。而對于Javascript來說,這個值通常是2^-52,而在ES6中适贸,已經(jīng)為我們提供了這樣一個屬性:Number.EPSILON灸芳,而這個值正等于2^-52。這個值非常非常小拜姿,在底層計算機已經(jīng)幫我們運算好耗绿,并且無限接近0,但不等于0砾隅。

這個時候我們只要判斷(0.1+0.2)-0.3小于Number.EPSILON,在這個誤差的范圍內(nèi)就可以判定0.1+0.2===0.3為true债蜜。

我們還要考慮解決IE的不兼容問題晴埂。我們需要對于Number.EPSILON進行一個改寫。

12寻定、Javascript異步編程的4種方法

回調(diào)函數(shù)儒洛、事件監(jiān)聽、發(fā)布/訂閱狼速、Promises對象

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末琅锻,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子向胡,更是在濱河造成了極大的恐慌恼蓬,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,378評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件僵芹,死亡現(xiàn)場離奇詭異处硬,居然都是意外死亡,警方通過查閱死者的電腦和手機拇派,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評論 2 382
  • 文/潘曉璐 我一進店門荷辕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人件豌,你說我怎么就攤上這事疮方。” “怎么了茧彤?”我有些...
    開封第一講書人閱讀 152,702評論 0 342
  • 文/不壞的土叔 我叫張陵骡显,是天一觀的道長。 經(jīng)常有香客問我,道長蟆盐,這世上最難降的妖魔是什么承边? 我笑而不...
    開封第一講書人閱讀 55,259評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮石挂,結(jié)果婚禮上博助,老公的妹妹穿的比我還像新娘。我一直安慰自己痹愚,他們只是感情好富岳,可當我...
    茶點故事閱讀 64,263評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著拯腮,像睡著了一般窖式。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上动壤,一...
    開封第一講書人閱讀 49,036評論 1 285
  • 那天萝喘,我揣著相機與錄音,去河邊找鬼琼懊。 笑死阁簸,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的哼丈。 我是一名探鬼主播启妹,決...
    沈念sama閱讀 38,349評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼醉旦!你這毒婦竟也來了饶米?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,979評論 0 259
  • 序言:老撾萬榮一對情侶失蹤车胡,失蹤者是張志新(化名)和其女友劉穎檬输,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體匈棘,經(jīng)...
    沈念sama閱讀 43,469評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡褪猛,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,938評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了羹饰。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片伊滋。...
    茶點故事閱讀 38,059評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖队秩,靈堂內(nèi)的尸體忽然破棺而出笑旺,到底是詐尸還是另有隱情,我是刑警寧澤馍资,帶...
    沈念sama閱讀 33,703評論 4 323
  • 正文 年R本政府宣布筒主,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏乌妙。R本人自食惡果不足惜使兔,卻給世界環(huán)境...
    茶點故事閱讀 39,257評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望藤韵。 院中可真熱鬧虐沥,春花似錦、人聲如沸泽艘。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽匹涮。三九已至天试,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間然低,已是汗流浹背喜每。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留雳攘,地道東北人灼卢。 一個月前我還...
    沈念sama閱讀 45,501評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像来农,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子崇堰,可洞房花燭夜當晚...
    茶點故事閱讀 42,792評論 2 345

推薦閱讀更多精彩內(nèi)容