前端HR熬夜整理,2017年BAT面試題大全集,程序員收藏了,只發(fā)一次!

2016年BAT公司常見的Web前端面試題整理

1.JavaScript是一門什么樣的語言,它有哪些特點(diǎn)?

沒有標(biāo)準(zhǔn)答案。

2.JavaScript的數(shù)據(jù)類型都有什么?

基本數(shù)據(jù)類型:String,boolean,Number,Undefined

引用數(shù)據(jù)類型:Object(Array,Date,RegExp,Function,Null)

那么問題來了,如何判斷某變量是否為數(shù)組數(shù)據(jù)類型?

方法一.判斷其是否具有“數(shù)組性質(zhì)”,如slice()方法??勺约航o該變量定義slice方法,故有時(shí)會(huì)失效

方法二.obj instanceof Array 在某些IE版本中不正確

方法三.方法一二皆有漏洞,在ECMA Script5中定義了新方法Array.isArray(), 保證其兼容性,最好的方法如下:

3.已知ID的Input輸入框,希望改變文本框的背景顏色,怎么做?(原生JS)

4.希望獲取到頁(yè)面中所有的checkbox怎么做?(原生JS)

5.Html事件綁定有幾種方式?

直接在DOM里綁定事件:

這種方式稱為原生事件或者屬性事件

在JS里通過onclick綁定:xxx.onclick = test

Dom標(biāo)準(zhǔn)通過事件添加進(jìn)行綁定:addEventListener("click",test, false) //第三個(gè)參數(shù)為是否支持事件捕捉

IE事件:attachEvent("onclick",test)

那么問題來了,Javascript的事件流模型都有什么?

“事件捕捉”:事件由最不具體的節(jié)點(diǎn)先接收,然后逐級(jí)向下,一直到最具體的

目標(biāo)事件

“事件冒泡”:事件開始由最具體的元素接受,然后逐級(jí)向上傳播

“DOM事件流”:三個(gè)階段:事件捕捉,目標(biāo)階段,事件冒泡

IE事件流:目標(biāo)事件和事件冒泡

阻止事件冒泡的方式:

阻止事件的默認(rèn)行為:

6.看下列代碼,將會(huì)輸出什么?(變量聲明提升)

上面的代碼經(jīng)過變量提升后,等價(jià)于下面的代碼

再看下面的輸出結(jié)果:

此時(shí)打印a函數(shù),不會(huì)打印1,因?yàn)橄旅媸且粋€(gè)函數(shù)表達(dá)式,跟變量聲明一樣,只會(huì)把var a;提升到最前面,a=function(){}保留,會(huì)覆蓋前面的a=1;因此打印函數(shù)。

此題目,我再百度面試的時(shí)候問到過。

7.掌握樣式的優(yōu)先級(jí)。

!important > style(內(nèi)聯(lián)) > Id(權(quán)重100) > class(權(quán)重10) > 標(biāo)簽(權(quán)重1) 同類別的樣式,后面的會(huì)覆蓋前面的。

百度視頻部門一道面試題是這樣的:

8.怎樣添加、移除、移動(dòng)、復(fù)制、創(chuàng)建和查找節(jié)點(diǎn)

1)創(chuàng)建新節(jié)點(diǎn)

createDocumentFragment() //創(chuàng)建一個(gè)DOM片段

createElement() //創(chuàng)建一個(gè)具體的元素

createTextNode() //創(chuàng)建一個(gè)文本節(jié)點(diǎn)

2)添加、移除、替換、插入

appendChild() //添加

removeChild() //移除

replaceChild() //替換

insertBefore() //插入

3)查找

getElementsByTagName() //通過標(biāo)簽名稱

getElementsByName() //通過元素的Name屬性的值

getElementById() //通過元素Id,唯一性

9.用js寫一個(gè)正則匹配標(biāo)簽中是否包含一個(gè)class(百度面試題)

10.事件循環(huán)綁定,輸出結(jié)果(考察閉包)

通過閉包封裝后的代碼:

閉包我所知道的兩個(gè)作用:

a.通過閉包可以把局部變量傳遞出來,就是通過閉包可以訪問函數(shù)內(nèi)部的變量,比如下面的代碼:

通過閉包就可以訪問函數(shù)內(nèi)部的局部變量,并且實(shí)現(xiàn)數(shù)量累加。

b.使用閉包可以避免空間污染,閉包內(nèi)部的變量都只能在內(nèi)部使用,這樣有效避免和外部變量的混淆。(個(gè)人理解)

11.js數(shù)組去重。

12.兩個(gè)div標(biāo)簽,如何控制標(biāo)簽左邊固定,右邊自適應(yīng),左邊div標(biāo)簽的寬度為100px(滴滴面試題)

滴滴面試起初問我,現(xiàn)在有并排的三個(gè)Div框,如何實(shí)現(xiàn)三個(gè)div都自適應(yīng),我當(dāng)時(shí)就懵了,這個(gè)考察的是display:table的使用

13.實(shí)現(xiàn)一個(gè)函數(shù)clone,可以對(duì)JavaScript中的5種主要的數(shù)據(jù)類型(包括Number、String、Object、Array、Boolean)進(jìn)行值復(fù)制

考察點(diǎn)1:對(duì)于基本數(shù)據(jù)類型和引用數(shù)據(jù)類型在內(nèi)存中存放的是值還是指針這一區(qū)別是否清楚

考察點(diǎn)2:是否知道如何判斷一個(gè)變量是什么類型的

考察點(diǎn)3:遞歸算法的設(shè)計(jì)


14.繼承的使用

15.請(qǐng)?jiān)u價(jià)以下代碼并給出改進(jìn)意見

評(píng)價(jià):

不應(yīng)該在if和else語句中聲明addListener函數(shù),應(yīng)該提前先聲明,定義全局變量;

不需要使用window.addEventListener或document.all來進(jìn)行檢測(cè)瀏覽器,應(yīng)該使用能力檢測(cè);

由于attachEvent在IE中有this指向問題,所以調(diào)用它時(shí)需要處理一下

改進(jìn)如下:

16.對(duì)作用域上下文和this的理解,看下列代碼:

推薦下我自己的前端群:595549645,不管你是小白還是大牛,小編我都挺歡迎,不定期分享干貨,包括我自己整理的一份2017最新的前端資料和零基礎(chǔ)入門教程,歡迎初學(xué)和進(jìn)階中的小伙伴。

如果想看到更加系統(tǒng)的文章和學(xué)習(xí)方法經(jīng)驗(yàn)可以關(guān)注我的微信公眾號(hào):‘web前端課程’關(guān)注后回復(fù)‘給我資料’可以領(lǐng)取一套完整的學(xué)習(xí)視頻

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 在線閱讀 http://interview.poetries.top[http://interview.poetr...
    前端進(jìn)階之旅閱讀 115,559評(píng)論 24 450
  • 1.幾種基本數(shù)據(jù)類型?復(fù)雜數(shù)據(jù)類型?值類型和引用數(shù)據(jù)類型?堆棧數(shù)據(jù)結(jié)構(gòu)? 基本數(shù)據(jù)類型:Undefined、Nul...
    極樂君閱讀 5,878評(píng)論 0 106
  • <a name='html'>HTML</a> Doctype作用?標(biāo)準(zhǔn)模式與兼容模式各有什么區(qū)別? (1)、<...
    clark124閱讀 3,832評(píng)論 1 19
  • 對(duì)一個(gè)不該記起的人念念不忘。每次一想起他心里最柔軟的地方總是會(huì)被刺傷。他不是我男朋友,可他確實(shí)曾經(jīng)的那個(gè)對(duì)我最好的...
    曉風(fēng)殘?jiān)聎w閱讀 524評(píng)論 5 0
  • 今天周三,我們下午上體育課考了三步上籃,每人兩次機(jī)會(huì),進(jìn)球?yàn)閮?yōu),不進(jìn)球,腳步對(duì)了可以及格。 但是,這兩次機(jī)會(huì)我都沒...
    凌殊閱讀 1,195評(píng)論 1 2

友情鏈接更多精彩內(nèi)容