1、線程與進程的區別
一個程序至少有一個進程,一個進程至少有一個線程。線程的划分尺度小於進程,使得多線程程序的並發性高。
另外,進程在執行過程中擁有獨立的內存單元,而多個線程共享內存,從而極大地提高了程序的運行效率。
線程在執行過程中與進程還是有區別的。每個獨立的線程有一個程序運行的入口、順序執行序列和程序的出口。但是線程不能夠獨立執行,必須依存在應用程序中,由應用程序提供多個線程執行控制。
從邏輯角度來看,多線程的意義在於一個應用程序中,有多個執行部分可以同時執行。但操作系統並沒有將多個線程看做多個獨立的應用,來實現進程的調度和管理以及資源分配。這就是進程和線程的重要區別。
2、你如何對網站的文件和資源進行優化?
期待的解決方案包括:文件合並文件最小化/文件壓縮使用CDN托管緩存的使用(多個域名來提供緩存)其他。
3、請描述一下cookies,sessionStorage和localStorage的區別?
sessionStorage和localStorage是HTML5 Web Storage API提供的,可以方便的在web請求之間保存數據。有了本地數據,就可以避免數據在瀏覽器和服務器間不必要地來回傳遞。sessionStorage、localStorage、cookie都是在瀏覽器端存儲的數據,其中sessionStorage的概念很特別,引入了一個“瀏覽器窗口”的概念。sessionStorage是在同源的同窗口(或tab)中,始終存在的數據。也就是說只要這個瀏覽器窗口沒有關閉,即使刷新頁面或進入同源另一頁面,數據仍然存在。關閉窗口后,sessionStorage即被銷毀。同時“獨立”打開的不同窗口,即使是同一頁面,sessionStorage對象也是不同的cookies會發送到服務器端。其余兩個不會。Microsoft指出InternetExplorer8增加cookie限制為每個域名50個,但IE7似乎也允許每個域名50個cookie。
-
Firefox每個域名cookie限制為50個。
-
Opera每個域名cookie限制為30個。
-
Firefox和Safari允許cookie多達4097個字節,包括名(name)、值(value)和等號。
-
Opera允許cookie多達4096個字節,包括:名(name)、值(value)和等號。
-
InternetExplorer允許cookie多達4095個字節,包括:名(name)、值(value)和等號。
4、描述下“reset”CSS文件的作用和使用它的好處。
因為瀏覽器的品種很多,每個瀏覽器的默認樣式也是不同的,所以定義一個css reset可以使各瀏覽器的默認樣式統一。
5、解釋下JavaScript中this是如何工作的。
this永遠指向函數運行時所在的對象,而不是函數被創建時所在的對象。匿名函數或不處於任何對象中的函數指向window 。
-
1.如果是call,apply,with,指定的this是誰,就是誰。
-
2.普通的函數調用,函數被誰調用,this就是誰。
6、call和.apply的區別是什么?
call方法:
語法:call(thisObj,Object)
定義:調用一個對象的一個方法,以另一個對象替換當前對象。
說明:call 方法可以用來代替另一個對象調用一個方法。call 方法可將一個函數的對象上下文從初始的上下文改變為由 thisObj 指定的新對象。 如果沒有提供 thisObj 參數,那么 Global 對象被用作 thisObj。
apply方法:
語法:apply(thisObj,[argArray])
定義:應用某一對象的一個方法,用另一個對象替換當前對象。
說明:如果 argArray 不是一個有效的數組或者不是 arguments 對象,那么將導致一個 TypeError。如果沒有提供 argArray 和 thisObj 任何一個參數,那么 Global 對象將被用作 thisObj, 並且無法被傳遞任何參數。
對於apply和call兩者在作用上是相同的,但兩者在參數上有以下區別:
對於第一個參數意義都一樣,但對第二個參數:apply傳入的是一個參數數組,也就是將多個參數組合成為一個數組傳入,而call則作為call的參數傳入(從第二個參數開始)。如 func.call(func1,var1,var2,var3)對應的apply寫法為:func.apply(func1,[var1,var2,var3])同時使用apply的好處是可以直接將當前函數的arguments對象作為apply的第二個參數傳入。