前端面試總結(jié)(1)--筆試知識(shí)點(diǎn)匯總

寫下標(biāo)題時(shí),我不禁回想起那年畢業(yè)季被找工作支配的恐懼。所謂天要下雨娘要嫁人,裸轉(zhuǎn)前端勢(shì)在必行,抱著天生我材必有用的豐滿理想,過(guò)著“哪哪都缺人,哪哪都不缺自己”的骨感現(xiàn)實(shí)生活,才明白玉不琢不成器,作為璞玉的自己努力地打磨著,終于成就了自己,成為了一名合格的,殺豬刀磨刀石。

序言

本文整理總結(jié)自己在畢業(yè)季找工作時(shí),前端筆試遇到的各種細(xì)小知識(shí)點(diǎn),多為基礎(chǔ)知識(shí),既不全面,也不系統(tǒng)。因此,對(duì)于讀者而言,本文適用于筆試前對(duì)前端知識(shí)點(diǎn)的復(fù)習(xí),或作為前端參考知識(shí)閱讀,但不適用于對(duì)前端知識(shí)系統(tǒng)和深入地理解,也不適用于對(duì)前端系統(tǒng)架構(gòu)的理解
基于這一點(diǎn),本文不會(huì)對(duì)各類知識(shí)點(diǎn)進(jìn)行細(xì)致的歸納,但會(huì)盡可能保證知識(shí)點(diǎn)不重復(fù)。如有任何錯(cuò)誤,歡迎指正。

P.S. 為了更好地服務(wù)讀者,本文提到的定義或方法大部分都可以點(diǎn)擊跳轉(zhuǎn)到MDN查看詳細(xì)解釋。

知識(shí)點(diǎn)匯總

JS基礎(chǔ)

  1. typeof 操作符返回一個(gè)字符串,表示未經(jīng)計(jì)算的操作數(shù)的類型。

  2. 變量聲明有 var 和沒 var 的區(qū)別

    • 聲明變量限制在其聲明位置的上下文中,而非聲明變量總是全局的。
    • 聲明變量在任何代碼執(zhí)行前創(chuàng)建,而非聲明變量只有在執(zhí)行賦值操作的時(shí)候才會(huì)被創(chuàng)建。
    • 聲明變量是它所在上下文環(huán)境的不可配置屬性,非聲明變量是可配置的(如非聲明變量可以被刪除)。
  3. undeclared 僅在嚴(yán)格模式中出現(xiàn) ReferenceError 警告,在代碼里賦值了一個(gè)未聲明的變量,即在代碼中有沒有帶著var 關(guān)鍵字的賦值。

  4. Javascript的基本類型

  5. Hoisting:變量提升

  6. noscript如果頁(yè)面上的腳本類型不受支持或者當(dāng)前在瀏覽器中關(guān)閉了腳本,則在 HTML <noscript> 元素中定義腳本未被執(zhí)行時(shí)的替代內(nèi)容。

  7. void運(yùn)算符對(duì)給定的表達(dá)式進(jìn)行求值,然后返回 undefined

  8. DNS (Domain Name System) 域名系統(tǒng),將方便用戶記憶的域名地址domain names轉(zhuǎn)換為IP數(shù)字串IP addresses,從而在因特網(wǎng)Internet 或者私有網(wǎng)絡(luò)上找到特定的機(jī)器。

String

  1. substring() 方法返回一個(gè)字符串在開始索引到結(jié)束索引之間的一個(gè)子集, 或從開始索引直到字符串的末尾的一個(gè)子集。語(yǔ)法:str.substring(indexStart[, indexEnd])

  2. 正則的匹配方法。^[a-z]是匹配小寫的 26 個(gè)字母,[A-Z]是匹配大寫的26 個(gè)字母,{n}表示匹配幾位,\w 表示任意的字母、數(shù)字、下畫線。

  3. indexOf() 方法返回調(diào)用它的 String對(duì)象中第一次出現(xiàn)的指定值的索引,從 fromIndex處進(jìn)行搜索。如果未找到該值,則返回 -1。語(yǔ)法:str.indexOf(searchValue [, fromIndex])

  4. RegExp對(duì)象的方法

    • exec()方法在一個(gè)指定字符串中執(zhí)行一個(gè)搜索匹配。返回一個(gè)結(jié)果數(shù)組或 null。
    • test() 方法執(zhí)行一個(gè)檢索,用來(lái)查看正則表達(dá)式與指定的字符串是否匹配。返回 true 或 false。
    • toString()返回一個(gè)表示該正則表達(dá)式的字符串。

Array

  1. reverse() 方法將數(shù)組中元素的位置顛倒,并返回該數(shù)組。數(shù)組的第一個(gè)元素會(huì)變成最后一個(gè),數(shù)組的最后一個(gè)元素變成第一個(gè)。該方法會(huì)改變?cè)瓟?shù)組。 語(yǔ)法:arr.reverse()

  2. sort() 方法用原地算法對(duì)數(shù)組的元素進(jìn)行排序,并返回?cái)?shù)組。默認(rèn)排序順序是在將元素轉(zhuǎn)換為字符串,然后比較它們的UTF-16代碼單元值序列時(shí)構(gòu)建的,語(yǔ)法:arr.sort([compareFunction])

  3. join() 方法將一個(gè)數(shù)組(或一個(gè)類數(shù)組對(duì)象)的所有元素連接成一個(gè)字符串并返回這個(gè)字符串。如果數(shù)組只有一個(gè)項(xiàng)目,那么將返回該項(xiàng)目而不使用分隔符。語(yǔ)法:arr.join([separator])

  4. splice()方法通過(guò)刪除或替換現(xiàn)有元素或者原地添加新的元素來(lái)修改數(shù)組,并以數(shù)組形式返回被修改的內(nèi)容。此方法會(huì)改變?cè)瓟?shù)組。語(yǔ)法:array.splice(start[, deleteCount[, item1[, item2[, ...]]]])

  5. slice()方法返回一個(gè)新的數(shù)組對(duì)象,這一對(duì)象是一個(gè)由 begin 和 end 決定的原數(shù)組的淺拷貝(包括 begin,不包括end)。原始數(shù)組不會(huì)被改變。語(yǔ)法:arr.slice([begin[, end]])

  6. 如何判讀一個(gè)對(duì)象是Array?

    • Array.isArray(obj)
    • Object.prototype.toString.call(obj) == '[object Array]'
    • obj.constructor == Array
  7. 數(shù)組的number類型強(qiáng)制轉(zhuǎn)換:

    • console.log(+new Array(2)); //當(dāng)new Array數(shù)組長(zhǎng)度為2以上,結(jié)果都是NaN,為空,0,1時(shí),結(jié)果是0;
    • console.log(+[]);//0
    • console.log(+[1]);//1
    • console.log(+[1,2])//NaN
    • console.log(+[undefined]);//0
    • console.log(+[undefined,undefined]);//NaN

Window

  1. window.location 只讀屬性,返回一個(gè) Location 對(duì)象,其中包含有關(guān)文檔當(dāng)前位置的信息。

    • Location.assign()加載給定URL的內(nèi)容資源到這個(gè)Location對(duì)象所關(guān)聯(lián)的對(duì)象上。
    • Location.reload() 方法用來(lái)刷新當(dāng)前頁(yè)面。該方法只有一個(gè)參數(shù),當(dāng)值為 true 時(shí),將強(qiáng)制瀏覽器從服務(wù)器加載頁(yè)面資源,當(dāng)值為 false 或者未傳參時(shí),瀏覽器則可能從緩存中讀取頁(yè)面。
    • Location.replace()用給定的URL替換掉當(dāng)前的資源。與 assign() 方法不同的是用 replace()替換的新頁(yè)面不會(huì)被保存在會(huì)話的歷史 History中,這意味著用戶將不能用后退按鈕轉(zhuǎn)到該頁(yè)面
  2. 彈出框

    • alert:顯示一個(gè)警告對(duì)話框,上面顯示有指定的文本內(nèi)容以及一個(gè)"確定"按鈕。
    • confirm:方法顯示一個(gè)具有一個(gè)可選消息和兩個(gè)按鈕(確定和取消)的模態(tài)對(duì)話框 。
    • prompt:顯示一個(gè)對(duì)話框,對(duì)話框中包含一條文字信息,用來(lái)提示用戶輸入文字。
  3. open()Window 接口的 open() 方法,是用指定的名稱將指定的資源加載到瀏覽器上下文(窗口 window ,內(nèi)嵌框架 iframe 或者標(biāo)簽 tab )。如果沒有指定名稱,則一個(gè)新的窗口會(huì)被打開并且指定的資源會(huì)被加載進(jìn)這個(gè)窗口的瀏覽器上下文中。

DOM(Document Object Model)

強(qiáng)烈推薦書籍《DOM 啟蒙》,這本書包含了基本上JavaScript中關(guān)于DOM的所有內(nèi)容,清晰且系統(tǒng)。

  1. nodeType屬性可用來(lái)區(qū)分不同類型的節(jié)點(diǎn),比如 元素, 文本注釋
  1. 查找、添加、移除、替換、復(fù)制、創(chuàng)建節(jié)點(diǎn)

  2. 事件取消

其他一些重要知識(shí)點(diǎn)

這些知識(shí)點(diǎn)可能會(huì)相對(duì)比較復(fù)雜,一些問(wèn)題直接是用引用了別人的回答。這些知識(shí)點(diǎn)都包括在筆試范圍內(nèi)。

  1. instanceof運(yùn)算符用于檢測(cè)構(gòu)造函數(shù)的 prototype 屬性是否出現(xiàn)在某個(gè)實(shí)例對(duì)象的原型鏈上。

  2. JS的繼承和原型鏈

  3. 立即調(diào)用函數(shù)表達(dá)式(IIFE)是一個(gè)在定義時(shí)就會(huì)立即執(zhí)行的JavaScript函數(shù)。

  4. 閉包:函數(shù)和對(duì)其周圍狀態(tài)(lexical environment,詞法環(huán)境)的引用捆綁在一起構(gòu)成閉包(closure)。也就是說(shuō),閉包可以讓你從內(nèi)部函數(shù)訪問(wèn)外部函數(shù)作用域。在 JavaScript 中,每當(dāng)函數(shù)被創(chuàng)建,就會(huì)在函數(shù)生成時(shí)生成閉包。

  5. 深入理解CSS中的層疊上下文和層疊順序

  6. JavaScript 開發(fā)進(jìn)階:理解 JavaScript 作用域和作用域鏈

  7. css盒模型和定位掃盲

  8. CSS布局奇淫巧計(jì)之-強(qiáng)大的負(fù)邊距

  9. XMLHttpRequest

  10. 請(qǐng)求頭和響應(yīng)頭

    1. 請(qǐng)求(客戶端->服務(wù)端[request])
      • GET(請(qǐng)求的方式) /newcoder/hello.html(請(qǐng)求的目標(biāo)資源) HTTP/1.1(請(qǐng)求采用的協(xié)議和版本號(hào))
      • Accept: /(客戶端能接收的資源類型)
      • Accept-Language: en-us(客戶端接收的語(yǔ)言類型)
      • Connection: Keep-Alive(維護(hù)客戶端和服務(wù)端的連接關(guān)系)
      • Host: localhost:8080(連接的目標(biāo)主機(jī)和端口號(hào))
      • Referer: http://localhost/links.asp(告訴服務(wù)器我來(lái)自于哪里)
      • User-Agent: Mozilla/4.0(客戶端版本號(hào)的名字)
      • Accept-Encoding: gzip, deflate(客戶端能接收的壓縮數(shù)據(jù)的類型)
      • If-Modified-Since: Tue, 11 Jul 2000 18:23:51 GMT(緩存時(shí)間)
      • Cookie(客戶端暫存服務(wù)端的信息)
      • Date: Tue, 11 Jul 2000 18:23:51 GMT(客戶端請(qǐng)求服務(wù)端的時(shí)間)
    2. 響應(yīng)(服務(wù)端->客戶端[response])
      • HTTP/1.1(響應(yīng)采用的協(xié)議和版本號(hào)) 200(狀態(tài)碼) OK(描述信息)
      • Location: http://www.baidu.com(服務(wù)端需要客戶端訪問(wèn)的頁(yè)面路徑)
      • Server:apache tomcat(服務(wù)端的Web服務(wù)端名)
      • Content-Encoding: gzip(服務(wù)端能夠發(fā)送壓縮編碼類型)
      • Content-Length: 80(服務(wù)端發(fā)送的壓縮數(shù)據(jù)的長(zhǎng)度)
      • Content-Language: zh-cn(服務(wù)端發(fā)送的語(yǔ)言類型)
      • Content-Type: text/html; charset=GB2312(服務(wù)端發(fā)送的類型及采用的編碼方式)
      • Last-Modified: Tue, 11 Jul 2000 18:23:51 GMT(服務(wù)端對(duì)該資源最后修改的時(shí)間)
      • Refresh: 1;url=http://www.it315.org(服務(wù)端要求客戶端1秒鐘后,刷新,然后訪問(wèn)指定的頁(yè)面路徑)
      • Content-Disposition: attachment; filename=aaa.zip(服務(wù)端要求客戶端以下載文件的方式打開該文件)
      • Transfer-Encoding: chunked(分塊傳遞數(shù)據(jù)到客戶端)
      • Set-Cookie:SS=Q0=5Lb_nQ; path=/search(服務(wù)端發(fā)送到客戶端的暫存數(shù)據(jù))
      • Expires: -1//3種(服務(wù)端禁止客戶端緩存頁(yè)面數(shù)據(jù))
      • Cache-Control: no-cache(服務(wù)端禁止客戶端緩存頁(yè)面數(shù)據(jù))
      • Pragma: no-cache(服務(wù)端禁止客戶端緩存頁(yè)面數(shù)據(jù))
      • Connection: close(1.0)/(1.1)Keep-Alive(維護(hù)客戶端和服務(wù)端的連接關(guān)系)
      • Date: Tue, 11 Jul 2000 18:23:51 GMT(服務(wù)端響應(yīng)客戶端的時(shí)間)
    3. 在服務(wù)器響應(yīng)客戶端的時(shí)候,帶上Access-Control-Allow-Origin頭信息,解決跨域的一種方法。
  11. url、href、rel、src

    • url:統(tǒng)一資源定位符是對(duì)可以從互聯(lián)網(wǎng)上得到的資源的位置和訪問(wèn)方法的一種簡(jiǎn)潔的表示,url就是互聯(lián)網(wǎng)上標(biāo)準(zhǔn)資源的地址。互聯(lián)網(wǎng)上的每個(gè)文件都有一個(gè)唯一的URL;一般就是瀏覽器地址欄填寫的。
    • href:Hypertext Reference的縮寫。意思是超文本引用,用來(lái)建立當(dāng)前元素和文檔之間的鏈接,屬性的值可以是任何有效文檔的相對(duì)或絕對(duì)URL,包括片段標(biāo)識(shí)符和JavaScript代碼段。常見的就是a標(biāo)簽中的。
    • rel:relationship的英文縮寫,REL屬性用于定義鏈接的文件和HTML文檔之間的關(guān)系,e.g. StyleSheet,用于定義鏈接的文件和HTML文檔之間的關(guān)系。
    • src:也可以是源文件(source)的簡(jiǎn)寫,一般用作目錄名稱用于存放源代碼,一般指的是引用外部文件的路徑,像img標(biāo)簽中src表示圖片的路徑。
  12. JS執(zhí)行順序

    • 在HTML body部分中的JavaScripts會(huì)在頁(yè)面加載的時(shí)候被執(zhí)行。
    • 在HTML head部分中的JavaScripts會(huì)在被調(diào)用的時(shí)候才執(zhí)行。
    • head 部分中的腳本: 需調(diào)用才執(zhí)行的腳本或事件觸發(fā)執(zhí)行的腳本放在HTML的head部分中。當(dāng)你把腳本放在head部分中時(shí),可以保證腳本在任何調(diào)用之前被加載。
    • body 部分中的腳本: 當(dāng)頁(yè)面被加載時(shí)執(zhí)行的腳本放在HTML的body部分。放在body部分的腳本通常被用來(lái)生成頁(yè)面的內(nèi)容。
  13. 主流瀏覽器內(nèi)核私有屬性css前綴:

    • mozilla內(nèi)核 (firefox,flock等) -moz
    • webkit內(nèi)核(safari,chrome等) -webkit
    • opera內(nèi)核(opera瀏覽器) -o
    • trident內(nèi)核(ie瀏覽器) -ms

后記

這篇先整理這么多吧。
總之,謝謝閱讀!

?著作權(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)容

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