1. 程式人生 > >2019校招前端筆試面試題

2019校招前端筆試面試題

01你做的頁面在哪些流覽器測試過?這些瀏覽器的核心分別是什麼?

答案

IE: trident核心

Firefox:gecko核心

Safari:webkit核心

Opera:以前是presto核心,Opera現已改用Google Chrome的Blink核心

Chrome:Blink(基於webkit,Google與Opera Software共同開發)

02Javascript中的定時器有哪些?

答案

1.setTimeout 只執行一次 

2.setInterval 會一直重複執行  

03img的alt與title有何異同? strong與em的異同?

答案

a:alt(alt text):為不能顯示影象、窗體或applets的使用者代理(UA),alt屬性用來指定替換文字。替換文字的語言由lang屬性指定。(在IE瀏覽器下會在沒有title時把alt當成 tool tip顯示)

title(tool tip):該屬性為設定該屬性的元素提供建議性的資訊。

strong:粗體強調標籤,強調,表示內容的重要性

em:斜體強調標籤,更強烈強調,表示內容的強調點

04一個200*200的div在不同解析度螢幕上下左右居中,用css實現 

答案

<style>
   /*一個200*200的div在不同解析度螢幕上下左右居中,用css實現*/
   div
   {
       background: red;
       position:absolute;
       width:200px;
       height:200px;
       top:50%;
       left:50%;
       margin-left:-50px;
       height:-50px;
       z-index:1000;
   }
</style>

05為什麼利用多個域名來儲存網站資源會更有效?

答案

  1. CDN快取更方便;

    2.突破瀏覽器併發限制;
    3.節約cookie頻寬;
    4.節約主域名的連線數,優化頁面響應速度;
    5.防止不必要的安全問題。

06寫一個左中右佈局佔滿螢幕,其中左右兩塊是固定寬度200 ,中間自適應寬,要求先載入中間塊,請寫出結構及樣式的相關程式碼:

答案

HTML程式碼:

 

CSS程式碼:


07請描述

08有哪項方式可以對一個DOM設定它的CSS樣式?

答案

1.外部樣式表,引入一個外部css檔案
2.內部樣式表,將css程式碼放在 <head> 標籤內部
3.內聯樣式,將css樣式直接定義在 HTML 元素內部

09CSS的盒子模型?

答案

(1)兩種, IE 盒子模型、標準 W3C 盒子模型;IE 的content部分包含了 border 和 pading;
(2)盒模型: 內容(content)、填充(padding)、邊界(margin)、 邊框(border)。

10html語義化是什麼?

答案

當頁面樣式載入失敗的時候能夠讓頁面呈現出清晰的結構;
有利於seo優化,利於被搜尋引擎收錄(更便於搜尋引擎的爬蟲程式來識別);
便於專案的開發及維護,使html程式碼更具有可讀性,便於其他裝置解析。

11$(document).ready()方法和window.onload有什麼區別? 

答案

(1)、window.onload方法是在網頁中所有的元素(包括元素的所有關聯檔案)完全載入到瀏覽器後才執行的。

(2)、$(document).ready() 方法可以在DOM載入就緒時就對其進行操縱,並呼叫執行繫結的函式。  

12前端頁面有哪三層構成,分別是什麼?作用是什麼?

答案

1.結構層 Html 

2.表示層 CSS 

3.行為層 js

13css優先順序演算法如何計算?

答案

!important >  id > class > 標籤 
!important 比 內聯優先順序高
*優先順序就近原則,樣式定義最近者為準;
*以最後載入的樣式為準;

14請寫出你對閉包的理解,並列出簡單的理解  ?

答案

使用閉包主要是為了設計私有的方法和變數。閉包的優點是可以避免全域性變數的汙染,缺點是閉包會常駐記憶體,會增大記憶體使用量,使用不當很容易造成記憶體洩露。

 閉包有三個特性:

 1.函式巢狀函式  

 2.函式內部可以引用外部的引數和變數 

 3.引數和變數不會被垃圾回收機制回收 

15split() 、join() 的區別?

答案

split()是切割成陣列的形式,join()是將陣列轉換成字串

16陣列方法pop() push() unshift() shift()?

答案

pop()尾部刪除

Push()尾部新增 
Unshift()頭部新增 
shift()頭部刪除

17JavaScript的資料型別都有什麼?

答案

基本資料型別:String,boolean,Number,Undefined, Null;
引用資料型別:Object(Array,Date,RegExp,Function)。

18對該陣列numberArray = [3,9,4,6,1,5]; 實現降序排列?

答案

 實現對該陣列的降序排列,輸出[9,6,5,4,3,1]?
numberArray.sort(function(a,b){return b-a});

19寫一個function,清除字串前後的空格?(相容所有瀏覽器)

答案

 

20列舉瀏覽器物件模型BOM裡常用的至少4個物件,並列舉window物件的常用方法至少5個?

答案

 

物件:window, document, location, screen, history, navigator
方法:alert(), confirm(), prompt(), open(), close()

21閉包是什麼,有什麼特性,對頁面有什麼影響?

答案

我的理解是,閉包就是能夠讀取其他函式內部變數的函式。在本質上,閉包就是將函式內部和函式外部連線起來的一座橋樑。
function outer(){
    var num = 666;
    function inner(){
        var n = 999;
        alert(n + num);
    }
    return inner;
}
outer()();

22什麼是javascript 中的垃圾回收機制?

答案

在Javascript中,如果一個物件不再被引用,那麼這個物件就會被GC回收。

如果兩個物件互相引用,而不再被第3者所引用,那麼這兩個互相引用的物件也會被回收。因為函式a被b引用,b又被a外的c引用,這就是為什麼函式a執行後不會被回收的原因

23請儘可能詳盡的解釋ajax的工作原理?

答案

Ajax的工作原理相當於在使用者和伺服器之間加了—箇中間層,使使用者操作與伺服器響應非同步化。這樣把以前的一些伺服器負擔的工作轉嫁到客戶端,利於客戶端閒置的處理能力來處理,減輕伺服器和頻寬的負擔,從而達到節約ISP的空間及頻寬租用成本的目的。

簡單來說通過XmlHttpRequest物件來向伺服器發非同步請求,從伺服器獲得資料,然後用javascript來操作DOM而更新頁面。這其中最關鍵的一步就是從伺服器獲得請求資料。要清楚這個過程和原理,我們必須對 XMLHttpRequest有所瞭解。

相關程式碼:

<script>
   window.onload = function (ev) {
       var oBtn = document.querySelector("button");
       oBtn.onclick = function (ev1) {
           // 1.建立一個非同步物件
           var xmlhttp=new XMLHttpRequest();
           // 2.設定請求方式和請求地址
           /*
           method:請求的型別;GET 或 POST
           url:檔案在伺服器上的位置
           async:true(非同步)或 false(同步)
           */
           xmlhttp.open("GET", "04-ajax-get.php", true);
           // 3.傳送請求
           xmlhttp.send();
           // 4.監聽狀態的變化
           xmlhttp.onreadystatechange = function (ev2) {
               /*
               0: 請求未初始化
               1: 伺服器連線已建立
               2: 請求已接收
               3: 請求處理中
               4: 請求已完成,且響應已就緒
               */
               if(xmlhttp.readyState === 4){
                   // 判斷是否請求成功
                   if(xmlhttp.status >= 200 && xmlhttp.status < 300 ||
                       xmlhttp.status === 304){
                       // 5.處理返回的結果
                       console.log("接收到伺服器返回的資料");
                   }else{
                       console.log("沒有接收到伺服器返回的資料");
                   }

               }
           }
       }
   }
</script>

24如何解決跨域問題?

答案

理解跨域的概念:協議、域名、埠都相同才同域,否則都是跨域;

出於安全考慮,伺服器不允許ajax跨域獲取資料,但是可以跨域獲取檔案內容,所以基於這一點,可以動態建立script標籤,使用標籤的src屬性訪問js檔案的形式獲取js指令碼,並且這個js指令碼中的內容是函式呼叫,該函式呼叫的引數是伺服器返回的資料,為了獲取這裡的引數資料,需要事先在頁面中定義回撥函式,在回撥函式中處理伺服器返回的資料,這就是解決跨域問題的主流解決方案。

25闡述一下非同步載入?

答案

1. 非同步載入的方案: 動態插入 script 標籤
2. 通過 ajax 去獲取 js 程式碼,然後通過 eval 執行
3. script 標籤上新增 defer 或者 async 屬性
4. 建立並插入 iframe,讓它非同步執行 js

26說說你對this的理解?

答案

在JavaScript中,this通常指向的是我們正在執行的函式本身,或者是,指向該函式所屬的物件。

全域性的this → 指向的是Window
函式中的this → 指向的是函式所在的物件
物件中的this → 指向其本身

27判斷一個字串中出現次數最多的字元,並統計次數?(程式設計題)

答案

<script>
   var s = 'bbcitcxyllkkjjfffdddsbbbbbb';
   var obj = {};
   var maxn = -1;
   var letter;
   for(var i = 0; i < s.length; i++) {
       if(obj[s[i]]) {
           obj[s[i]]++;
           if(obj[s[i]] > maxn) {
               maxn = obj[s[i]];
               letter = s[i];
           }
       } else {
           obj[s[i]] = 1;
           if(obj[s[i]] > maxn) {
               maxn = obj[s[i]];
               letter = s[i];
           }
       }
   }
   alert(letter + ': ' + maxn);
</script>

 

面試只是一個開始,未來的路還很長,最後希望即將畢業的你能順利拿到Offer

技術不需要不斷更新,讓我們一起探索更多的技術吧