JavaScript常見(jiàn)面試試題
在日常學(xué)習(xí)和工作生活中,我們都可能會(huì)接觸到試題,試題是用于考試的題目,要求按照標(biāo)準(zhǔn)回答。那么一般好的試題都具備什么特點(diǎn)呢?以下是小編收集整理的JavaScript常見(jiàn)面試試題,歡迎閱讀,希望大家能夠喜歡。
一、你能描述一下漸進(jìn)增強(qiáng)和優(yōu)雅降級(jí)之間的不同嗎?
優(yōu)雅降級(jí):
Web站點(diǎn)在所有新式瀏覽器中都能正常工作,如果用戶使用的是老式瀏覽器,則代碼會(huì)檢查以確認(rèn)它們是否能正常工作。由于IE獨(dú)特的盒模型布局問(wèn)題,針對(duì)不同版本的IE的hack實(shí)踐過(guò)優(yōu)雅降級(jí)了,為那些無(wú)法支持功能的瀏覽器增加候選方案,使之在舊式瀏覽器上以某種形式降級(jí)體驗(yàn)卻不至于完全失效。
漸進(jìn)增強(qiáng):
從被所有瀏覽器支持的基本功能開(kāi)始,逐步地添加那些只有新式瀏覽器才支持的功能,向頁(yè)面增加無(wú)害于基礎(chǔ)瀏覽器的額外樣式和功能的。當(dāng)瀏覽器支持時(shí),它們會(huì)自動(dòng)地呈現(xiàn)出來(lái)并發(fā)揮作用。
二、線程與進(jìn)程的區(qū)別
一個(gè)程序至少有一個(gè)進(jìn)程,一個(gè)進(jìn)程至少有一個(gè)線程。線程的劃分尺度小于進(jìn)程,使得多線程程序的并發(fā)性高。另外,進(jìn)程在執(zhí)行過(guò)程中擁有獨(dú)立的內(nèi)存單元,而多個(gè)線程共享內(nèi)存,從而極大地提高了程序的運(yùn)行效率。
線程在執(zhí)行過(guò)程中與進(jìn)程還是有區(qū)別的。每個(gè)獨(dú)立的線程有一個(gè)程序運(yùn)行的入口、順序執(zhí)行序列和程序的出口。但是線程不能夠獨(dú)立執(zhí)行,必須依存在應(yīng)用程序中,由應(yīng)用程序提供多個(gè)線程執(zhí)行控制。
從邏輯角度來(lái)看,多線程的意義在于一個(gè)應(yīng)用程序中,有多個(gè)執(zhí)行部分可以同時(shí)執(zhí)行。但操作系統(tǒng)并沒(méi)有將多個(gè)線程看做多個(gè)獨(dú)立的.應(yīng)用,來(lái)實(shí)現(xiàn)進(jìn)程的調(diào)度和管理以及資源分配。這就是進(jìn)程和線程的重要區(qū)別。
三、說(shuō)說(shuō)你對(duì)語(yǔ)義化的理解?
1、去掉或樣式丟失的時(shí)候能讓頁(yè)面呈現(xiàn)清晰的結(jié)構(gòu):html本身是沒(méi)有表現(xiàn)的,我們看到例如是粗體,字體大小2em,加粗;是加粗的,不要認(rèn)為這是html的表現(xiàn),這些其實(shí)html默認(rèn)的css樣式在起作用,所以去掉或樣式丟失的時(shí)候能讓頁(yè)面呈現(xiàn)清晰的結(jié)構(gòu)不是語(yǔ)義化的HTML結(jié)構(gòu)的優(yōu)點(diǎn),但是瀏覽器都有有默認(rèn)樣式,默認(rèn)樣式的目的也是為了更好的表達(dá)html的語(yǔ)義,可以說(shuō)瀏覽器的默認(rèn)樣式和語(yǔ)義化的HTML結(jié)構(gòu)是不可分割的。
2、屏幕閱讀器(如果訪客有視障)會(huì)完全根據(jù)你的標(biāo)記來(lái)“讀”你的網(wǎng)頁(yè)。
3、PDA、手機(jī)等設(shè)備可能無(wú)法像普通電腦的瀏覽器一樣來(lái)渲染網(wǎng)頁(yè)(通常是因?yàn)檫@些設(shè)備對(duì)CSS的支持較弱)。
4、有利于SEO:和搜索引擎建立良好溝通,有助于爬蟲(chóng)抓取更多的有效信息:爬蟲(chóng)依賴于標(biāo)簽來(lái)確定上下文和各個(gè)關(guān)鍵字的權(quán)重。
5、便于團(tuán)隊(duì)開(kāi)發(fā)和維護(hù),語(yǔ)義化更具可讀性,是下一步吧網(wǎng)頁(yè)的重要?jiǎng)酉?,遵循W3C標(biāo)準(zhǔn)的團(tuán)隊(duì)都遵循這個(gè)標(biāo)準(zhǔn),可以減少差異化。
四、你如何對(duì)網(wǎng)站的文件和資源進(jìn)行優(yōu)化?
期待的解決方案包括:文件合并文件最小化/文件壓縮使用CDN托管緩存的使用(多個(gè)域名來(lái)提供緩存)其他。
五、為什么利用多個(gè)域名來(lái)提供網(wǎng)站資源會(huì)更有效?
1、CDN緩存更方便
2、突破瀏覽器并發(fā)限制(一般每個(gè)域名建立的鏈接不超過(guò)6個(gè))
3、Cookieless,節(jié)省帶寬,尤其是上行帶寬一般比下行要慢
4、對(duì)于UGC的內(nèi)容和主站隔離,防止不必要的安全問(wèn)題(上傳js竊取主站cookie之類的)。正是這個(gè)原因要求用戶內(nèi)容的域名必須不是自己主站的子域名,而是一個(gè)完全獨(dú)立的第三方域名。
5、數(shù)據(jù)做了劃分,甚至切到了不同的物理集群,通過(guò)子域名來(lái)分流比較省事。這個(gè)可能被用的不多。
六、請(qǐng)說(shuō)出三種減少頁(yè)面加載時(shí)間的方法。
1、優(yōu)化圖片
2、圖像格式的選擇(GIF:提供的顏色較少,可用在一些對(duì)顏色要求不高的地方)
3、優(yōu)化CSS(壓縮合并css,如margin—top,margin—left)
4、網(wǎng)址后加斜杠(如www、campr、com/目錄,會(huì)判斷這個(gè)“目錄是什么文件類型,或者是目錄。)
5、標(biāo)明高度和寬度(如果瀏覽器沒(méi)有找到這兩個(gè)參數(shù),它需要一邊下載圖片一邊計(jì)算大小,如果圖片很多,瀏覽器需要不斷地調(diào)整頁(yè)面。這不但影響速度,也影響瀏覽體驗(yàn)。當(dāng)瀏覽器知道了高度和寬度參數(shù)后,即使圖片暫時(shí)無(wú)法顯示,頁(yè)面上也會(huì)騰出圖片的空位,然后繼續(xù)加載后面的內(nèi)容。從而加載時(shí)間快了,瀏覽體驗(yàn)也更好了。)
6、減少http請(qǐng)求(合并文件,合并圖片)。