3.前端常見js問答題

一.進程和線程的區別

1. 一個程序至少有一個進程,一個進程至少有一個線程
2. 線程的劃分尺度小於進程,使得多線程程序的併發性高
3. 另外,進程在執行過程中擁有獨立的內存單元,而多個線程共享內存,從而極大地提高了程序的運行效率
4. 線程在執行過程中與進程還是有區別的。每個獨立的線程有一個程序運行的入口、順序執行序列和程序的出口。但是線程不能夠獨立執行,必須依存在應用程序中,由應用程序提供多個線程執行控制 
5. 從邏輯角度來看,多線程的意義在於一個應用程序中,有多個執行部分可以同時執行。但操作系統並沒有將多個線程看做多個獨立的應用,來實現進程的調度和管理以及資源分配。這就是進程和線程的重要區別
二.如何對網站的資源進行優化
1. 文件合併
2. 文件最小化/文件壓縮
3. 使用 CDN 託管
4. 緩存的使用(多個域名來提供緩存)
5. 其他
三.減少頁面加載時間的方法
1. 優化圖片 
2. 圖像格式的選擇(GIF:提供的顏色較少,可用在一些對顏色要求不高的地方) 
3. 優化CSS(壓縮合並css,如 margin-top, margin-left...) 
4. 網址後加斜槓(如www.campr.com/目錄,會判斷這個目錄是什麼文件類型,或者是目錄。) 
5. 標明高度和寬度(如果瀏覽器沒有找到這兩個參數,它需要一邊下載圖片一邊計算大小,如果圖片很多,瀏覽器需要不斷地調整頁面。這不但影響速度,也影響瀏覽體驗。 
當瀏覽器知道了高度和寬度參數後,即使圖片暫時無法顯示,頁面上也會騰出圖片的空位,然後繼續加載後面的內容。從而加載時間快了,瀏覽體驗也更好了) 
6. 減少http請求(合併文件,合併圖片)
四.htmll5有哪些新特性、移除了哪些元素?如何處理html5新標籤的瀏覽器兼容問題?如何區分html和html5?
新特性:
HTML5 現在已經不是 SGML 的子集,主要是關於圖像,位置,存儲,多任務等功能的增加。
1. 拖拽釋放(Drag and drop) API 
2. 語義化更好的內容標籤(header,nav,footer,aside,article,section)
3. 音頻、視頻API(audio,video)
4. 畫布(Canvas) API
5. 地理(Geolocation) API
6. 本地離線存儲 localStorage 長期存儲數據,瀏覽器關閉後數據不丟失;
7. sessionStorage 的數據在瀏覽器關閉後自動刪除
8. 表單控件,calendar、date、time、email、url、search  
9. 新的技術webworker, websocket, Geolocation
移除的元素:
1. 純表現的元素:basefont,big,center,font, s,strike,tt,u;
2. 對可用性產生負面影響的元素:frame,frameset,noframes;
支持HTML5新標籤:
1. IE8/IE7/IE6支持通過 document.createElement 方法產生的標籤,可以利用這一特性讓這些瀏覽器支持 HTML5 新標籤,瀏覽器支持新標籤後,還需要添加標籤默認的樣式(當然最好的方式是直接使用成熟的框架、使用最多的是html5shiv框架):
如何區分: 
DOCTYPE聲明新增的結構元素、功能元素



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