Web前端開發——BAT面試題彙總及答案04(持續更新中)

一、前言

  1. 做這個的初心是希望鞏固自己的基礎知識,當然也希望能夠幫助更多的開發者!
  2. 有些題目有多種答案,本文只給出了其中的一種,哪裏有問題的話歡迎指出~
  3. 這個欄目將持續更新,前端的小夥伴歡迎關注噢~

二、JS 基礎篇

26、要將頁面的狀態欄中顯示“已經選中該文本框”,下列 JavaScript 語句正確的是( A )

A. window.status=”已經選中該文本框”
B. document.status=”已經選中該文本框”
C. window.screen=”已經選中該文本框”
D. document.screen=”已經選中該文本框”

27、以下哪條語句會產生運行錯誤:(A)

A.var obj = ();
B.var obj = [];
C.var obj = {};
D.var obj = //;

28、以下哪個單詞不屬於 javascript 保留字:(B)

A.with
B.parent
C.class
D.void

29、請選擇結果爲真的表達式:(C)

A.null instanceof Object
B.null === undefined
C.null == undefined
D.NaN == NaN

30、分析代碼,得出正確的結果。

var a=10, b=20 , c=30;
++a;
a++;
e=++a+(++b)+(c++)+a++;
alert(e);

答案:彈出提示對話框:77
var a=10, b=20 , c=30;
++a;//a=11
a++;//a=11
e=++a+(++b)+(c++)+a++;
//a=12 13+21+30+13=77
alert(e);

31、寫出函數 DateDemo 的返回結果,系統時間假定爲今天

function DateDemo(){
var d, s="今天日期是:";
d = new Date();
s += d.getMonth() + "/";
s += d.getDate() + "/";
s += d.getFullYear();
return s;}

結果:今天日期是:9/21/2019

32、 寫出程序運行的結果

for(i=0, j=0; i<10, j<6; i++, j++){
k = i + j;}
結果:10

for(i=0, j=0; i<10, j<6; i++, j++){
//j=5 i=5
k = i + j;//k=10
}
//結果:10

33、截取字符串 abcdefg 的 efg

alert(‘abcdefg’.substring(4));

34、列舉瀏覽器對象模型 BOM 裏常用的至少 4 個對象,並列舉 window 對象的常用方法至少 5 個

對象:Window document location screen history navigator
方法:Alert() confirm() prompt() open() close()

35、簡述列舉文檔對象模型 DOM 裏 document 的常用的查找訪問節點的方法並做簡單說明

Document.getElementById 根據元素 id 查找元素
Document.getElementByName 根據元素 name 查找元素
Document.getElementTagName 根據指定的元素名查找元素

36、JavaScript 的數據類型都有什麼?

基本數據類型:String,Boolean,Number,Undefined,Null
引用數據類型:Object(Array,Date,RegExp,Function)

37、簡述創建函數的幾種方式

第一種(函數聲明):
function sum1(num1,num2){
return num1+num2;
}
第二種(函數表達式):
var sum2 = function(num1,num2){
return num1+num2;
}
匿名函數:
function(){}:只能自己執行自己
第三種(函數對象方式):
var sum3 = new Function(“num1”,“num2”,“return num1+num2”);

38、Javascript 如何實現繼承?

原型鏈繼承,借用構造函數繼承,組合繼承,寄生式繼承,寄生組合繼承

39、Javascript 創建對象的幾種方式?

工廠方式,構造函數方式,原型模式,混合構造函數原型模式,動態原型方式

40、把 Script 標籤 放在頁面的最底部的 body 封閉之前 和封閉之後有什麼區別?瀏覽器會如何解析它們?

如果說放在 body 的封閉之前,將會阻塞其他資源的加載
如果放在 body 封閉之後,不會影響 body 內元素的加載

41、DOM 操作——怎樣添加、移除、移動、複製、創建和查找節點。

1.創建新節點
createDocumentFragment() // 創建一個 DOM 片段
createElement() // 創建一個具體的元素
createTextNode() // 創建一個文本節點
2.添加、移除、替換、插入
appendChild()
removeChild()
replaceChild()
insertBefore() // 在已有的子節點前插入一個新的子節點
3.查找
getElementsByTagName() // 通過標籤名稱
getElementsByName() // 通過元素的 Name 屬性的值(IE 容錯能力較強,會得到一個數組,
其中包括 id 等於 name 值的)
getElementById() // 通過元素 Id,唯一性

42、js 延遲加載的方式有哪些?

1.defer 和 async
2.動態創建 DOM 方式(創建 script,插入到 DOM 中,加載完畢後 callBack)
3.按需異步載入 js

43、documen.write 和 innerHTML 的區別?

document.write 只能重繪整個頁面
innerHTML 可以重繪頁面的一部分

44、哪些操作會造成內存泄

內存泄漏指任何對象在您不再擁有或需要它之後仍然存在。
垃圾回收器定期掃描對象,並計算引用了每個對象的其他對象的數量。如果一個對象的引用
數量爲 0(沒有其他對象引用過該對象),或對該對象的惟一引用是循環的,那麼該對象的
內存即可回收。
1.setTimeout 的第一個參數使用字符串而非函數的話,會引發內存泄漏。
2.閉包
3.控制檯日誌
4.循環(在兩個對象彼此引用且彼此保留時,就會產生一個循環)

45、split() join() 的區別

答:前者是切割成數組的形式,後者是將數組轉換成字符串


前端面試題系列將會持續更新,歡迎關注該博客~

相關文章推薦:
Web前端開發——BAT面試題彙總及答案01(持續更新中)
Web前端開發——BAT面試題彙總及答案02(持續更新中)
Web前端開發——BAT面試題彙總及答案03(持續更新中)

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