前端題總結二

1.onload和ready區別javascript

1.執行時間 
        window.onload必須等到頁面內包括圖片的全部元素加載完畢後才能執行。 
        $(document).ready()是DOM結構繪製完畢後就執行,沒必要等到加載完畢。 

2.編寫個數不一樣 
         window.onload不能同時編寫多個,若是有多個window.onload方法,只會執行一個。 
         $(document).ready()能夠同時編寫多個,而且均可以獲得執行,並按添加的順序執行css

function addLoadEvent(func){
    var oldLoad = window.onload;
    if(typeof window.onload!='function'){
        window.onload=func;
        }else{
            window.onload=function(){
                oldLoad();
                func();
                }
            }
    }

3.簡化寫法 
         window.onload沒有簡化寫法 
         $(document).ready(function(){})能夠簡寫成$(function(){});html

4.向.ready()回調函數中傳入參數java

   jQuery提供了一個jQuery.noConflict()方法,調用該方法能夠把對$標識符的控制權讓渡還給其餘庫。web

 

2.改變this執行環境ajax

apply  call數組

詳細見博客:http://www.cnblogs.com/YangqinCao/p/5411758.html瀏覽器

 

3.匿名函數的做用,哪些地方用到緩存

匿名函數:就是沒有名字的函數服務器

定義函數字面量和即時函數時都有用到

你能夠認爲他們是一次性函數。當你只須要用一次某個函數式,他們就特別有用。經過使用匿名函數,沒有必要把函數一直放在內存中,因此使用匿名函數更加有效率。

匿名函數的做用是建立一塊封閉區域,外面不可以訪問裏面的變量和方法,

 

4.onclick和click的區別

1.onclick是綁定事件,告訴瀏覽器在鼠標點擊時候要作什麼

click自己是方法做用是觸發onclick事件,只要執行了元素的click()方法,就會觸發onclick事件。

2.click()方法的主要做用是觸發調用click方法元素onclick事件。

click方法中的function代碼會在onclick事件執行完後執行,此時click方法起到追加事件的做用。

<script type= "text/javascript" >
$( function (){
$( "#btn3" ).click( function (){
alert( "aa" );
});
});
function change(){
alert( "bb" );
}
</script>
<button id= "btn3" onclick= "change()" >dd</button>

先彈出bb再彈出aa

 

5.從輸入網址到顯示網頁的過程

通常會經歷如下幾個過程:

一、首先,在瀏覽器地址欄中輸入url

二、瀏覽器先查看瀏覽器緩存-系統緩存-路由器緩存,若是緩存中有,會直接在屏幕中顯示頁面內容。若沒有,則跳到第三步操做。

三、在發送http請求前,須要域名解析(DNS解析),解析獲取相應的IP地址。

四、瀏覽器向服務器發起tcp鏈接,與瀏覽器創建tcp三次握手

五、握手成功後,瀏覽器向服務器發送http請求,請求數據包

六、服務器處理收到的請求,將數據返回至瀏覽器

七、瀏覽器收到HTTP響應

八、讀取頁面內容,瀏覽器渲染,解析html源碼

九、生成Dom樹、解析css樣式、js交互

十、客戶端和服務器交互

十一、ajax查詢

 

其中,步驟2的具體過程是:

  • 瀏覽器緩存:瀏覽器會記錄DNS一段時間,所以,只是第一個地方解析DNS請求;
  • 操做系統緩存:若是在瀏覽器緩存中不包含這個記錄,則會使系統調用操做系統,獲取操做系統的記錄(保存最近的DNS查詢緩存);
  • 路由器緩存:若是上述兩個步驟均不能成功獲取DNS記錄,繼續搜索路由器緩存;
  • ISP緩存:若上述均失敗,繼續向ISP搜索。

 

6.進程和線程的區別

計算機的核心是CPU,CPU承擔全部的計算任務。CPU就比如是一個工廠,時刻在運行。

假設這個工廠的電力有限,一次只能供一個車間使用,也就是說一個車間在使用的時候其餘車間都必須關閉。進程就是這個車間,一個進程在執行時,其餘進程要等待它執行完。

一個車間有不少個工人,他們協同完成一個任務,那麼工人就是線程,一個進程能夠有多個線程。

車間裏有不少小房間,每一個工人均可以進入這些房間,因此一個進程的內存是共享的,全部線程可使用這些共享內存。

可是房間有大有小,好比說廁所一次只能進一我的,這表明有些共享內存一次只能容許一個線程訪問,其餘線程必須等它結束了才能使用這塊內存。一個防止他人進入的辦法就是,先進去的人在房間上加一把鎖,後來的人看到門上的鎖就知道里面有人,就在外面等着,這把鎖就叫互斥鎖,能防止多個線程同時讀寫一個內存。

有些房間好比廚房比較大,一次能夠進入n我的,可是超過n我的就要在外面等待。這比如某些內存區域只能給固定的線程數訪問。爲了防止其餘人進入,能夠在房間門口掛n把鎖,進去一我的拿一把鎖,出來的人再把鎖掛在門上,這樣後來的人看到門上沒鎖了就知道要在外面等待了。這種作法叫作信號量。能夠防止多線程衝突。

操做系統的設計歸結爲3點:

1.以多進程形式,容許多個任務同時運行

2.以多線程形式,容許一個任務分紅不一樣的部分同時運行

3.提供協調機制,防止進程之間與線程之間的衝突,容許線程之間和進程之間共享資源。

 

不一樣歸結爲如下幾點:

1. 一個程序至少有一個進程,一個進程至少有一個線程
2. 線程的劃分尺度小於進程,使得多線程程序的併發性高
3. 另外,進程在執行過程當中擁有獨立的內存單元,而多個線程共享內存,從而極大地提升了程序的運行效率
4. 線程在執行過程當中與進程仍是有區別的。每一個獨立的線程有一個程序運行的入口、順序執行序列和程序的出口。可是線程不可以獨立執行,必須依存在應用程序中,由應用程序提供多個線程執行控制 
5. 從邏輯角度來看,多線程的意義在於一個應用程序中,有多個執行部分能夠同時執行。但操做系統並無將多個線程看作多個獨立的應用,來實現進程的調度和管理以及資源分配。這就是進程和線程的重要區別
 
7.JS有哪些部分
一個完整的JS實現應該由下列三個不一樣的部分組成:核心(ECMAScript)、文檔對象模型(DOM)、瀏覽器對象模型(BOM)
 
8.CSS3新增的內容
 
9.數組合並的方法,用一句代碼實現concat功能
相關文章
相關標籤/搜索