成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

前端面試之JavaScript(總結(jié))

tomato / 618人閱讀

1. JS基本的數(shù)據(jù)類型和引用類型

基本數(shù)據(jù)類型:number、string、null、undefined、boolean、symbol -- 棧

引用數(shù)據(jù)類型:object、array、function -- 堆

兩種數(shù)據(jù)類型存儲(chǔ)位置不同

原始數(shù)據(jù)類型是直接存儲(chǔ)在棧(stack)中的簡單數(shù)據(jù)段,占據(jù)空間小、大小固定,屬于被頻繁使用數(shù)據(jù);

引用數(shù)據(jù)類型存儲(chǔ)在堆(heap)中的對象,占據(jù)空間大、大小不固定,如果存儲(chǔ)在棧中,將會(huì)影響程序運(yùn)行的性能;

引用數(shù)據(jù)類型在棧中存儲(chǔ)了指針,該指針指向堆中該實(shí)體的起始地址。

當(dāng)解釋器尋找引用值時(shí),會(huì)首先檢索其在棧中的地址,取得地址后從堆中獲得實(shí)體。

2.介紹JS的內(nèi)置對象

數(shù)據(jù)封裝類對象:Object、String、Number、Boolean、Array

其他對象:Function、Data、Math、Arguments、RegExp、Error

ES6新增對象:Promise、Proxy、Map、Set、Symbol、Reflect

3.說幾條JavaScript的基本規(guī)范

變量和函數(shù)在使用前聲明

語句結(jié)束后添加分號(hào)

代碼段使用{}包裹

以大寫字母開頭定義構(gòu)造函數(shù),以全大寫定義常量

用{} 和 []聲明對象和數(shù)組

使用===和!==來比較true和false或者數(shù)字值

4.eval是做什么的

他的功能是把對應(yīng)的字符串解析成JS代碼并運(yùn)行;

他不安全,而且非常耗能(執(zhí)行兩次,一次解析成JS代碼,一次執(zhí)行)

5.對閉包的理解

閉包是指有權(quán)訪問另一個(gè)函數(shù)作用域中變量的函數(shù),創(chuàng)建閉包的最常見的方式就是在一個(gè)函數(shù)里創(chuàng)建另一個(gè)函數(shù),通過另一個(gè)函數(shù)訪問這個(gè)函數(shù)的局部變量,利用閉包可以突破作用域鏈,將函數(shù)內(nèi)部的變量和方法傳遞到外部

閉包的特性:函數(shù)內(nèi)嵌套函數(shù);內(nèi)部函數(shù)可以引用外部的參數(shù)和變量;參數(shù)和變量不會(huì)被垃圾回收機(jī)制回收
6.http狀態(tài)碼有哪些

簡單版

  100  Continue   繼續(xù),一般在發(fā)送post請求時(shí),已發(fā)送了http header之后服務(wù)端將返回此信息,表示確認(rèn),之后發(fā)送具體參數(shù)信息
  200  OK         正常返回信息
  201  Created    請求成功并且服務(wù)器創(chuàng)建了新的資源
  202  Accepted   服務(wù)器已接受請求,但尚未處理
  301  Moved Permanently  請求的網(wǎng)頁已永久移動(dòng)到新位置。
  302 Found       臨時(shí)性重定向。
  303 See Other   臨時(shí)性重定向,且總是使用 GET 請求新的 URI。
  304  Not Modified 自從上次請求后,請求的網(wǎng)頁未修改過。

  400 Bad Request  服務(wù)器無法理解請求的格式,客戶端不應(yīng)當(dāng)嘗試再次使用相同的內(nèi)容發(fā)起請求。
  401 Unauthorized 請求未授權(quán)。
  403 Forbidden   禁止訪問。
  404 Not Found   找不到如何與 URI 相匹配的資源。

  500 Internal Server Error  最常見的服務(wù)器端錯(cuò)誤。
  503 Service Unavailable 服務(wù)器端暫時(shí)無法處理請求(可能是過載或維護(hù))。

完整版

  1**(信息類):表示接收到請求并且繼續(xù)處理
    100——客戶必須繼續(xù)發(fā)出請求
    101——客戶要求服務(wù)器根據(jù)請求轉(zhuǎn)換HTTP協(xié)議版本

  2**(響應(yīng)成功):表示動(dòng)作被成功接收、理解和接受
    200——表明該請求被成功地完成,所請求的資源發(fā)送回客戶端
    201——提示知道新文件的URL
    202——接受和處理、但處理未完成
    203——返回信息不確定或不完整
    204——請求收到,但返回信息為空
    205——服務(wù)器完成了請求,用戶代理必須復(fù)位當(dāng)前已經(jīng)瀏覽過的文件
    206——服務(wù)器已經(jīng)完成了部分用戶的GET請求

  3**(重定向類):為了完成指定的動(dòng)作,必須接受進(jìn)一步處理
    300——請求的資源可在多處得到
    301——本網(wǎng)頁被永久性轉(zhuǎn)移到另一個(gè)URL
    302——請求的網(wǎng)頁被轉(zhuǎn)移到一個(gè)新的地址,但客戶訪問仍繼續(xù)通過原始URL地址,重定向,新的URL會(huì)在response中的Location中返回,瀏覽器將會(huì)使用新的URL發(fā)出新的Request。
    303——建議客戶訪問其他URL或訪問方式
    304——自從上次請求后,請求的網(wǎng)頁未修改過,服務(wù)器返回此響應(yīng)時(shí),不會(huì)返回網(wǎng)頁內(nèi)容,代表上次的文檔已經(jīng)被緩存了,還可以繼續(xù)使用
    305——請求的資源必須從服務(wù)器指定的地址得到
    306——前一版本HTTP中使用的代碼,現(xiàn)行版本中不再使用
    307——申明請求的資源臨時(shí)性刪除

  4**(客戶端錯(cuò)誤類):請求包含錯(cuò)誤語法或不能正確執(zhí)行
    400——客戶端請求有語法錯(cuò)誤,不能被服務(wù)器所理解
    401——請求未經(jīng)授權(quán),這個(gè)狀態(tài)代碼必須和WWW-Authenticate報(bào)頭域一起使用
    402——保留有效ChargeTo頭響應(yīng)
    403——禁止訪問,服務(wù)器收到請求,但是拒絕提供服務(wù)
    404——一個(gè)404錯(cuò)誤表明可連接服務(wù)器,但服務(wù)器無法取得所請求的網(wǎng)頁,請求資源不存在。eg:輸入了錯(cuò)誤的URL
    405——用戶在Request-Line字段定義的方法不允許
    406——根據(jù)用戶發(fā)送的Accept拖,請求資源不可訪問
    407——類似401,用戶必須首先在代理服務(wù)器上得到授權(quán)
    408——客戶端沒有在用戶指定的餓時(shí)間內(nèi)完成請求
    409——對當(dāng)前資源狀態(tài),請求不能完成
    410——服務(wù)器上不再有此資源且無進(jìn)一步的參考地址
    411——服務(wù)器拒絕用戶定義的Content-Length屬性請求
    412——一個(gè)或多個(gè)請求頭字段在當(dāng)前請求中錯(cuò)誤
    413——請求的資源大于服務(wù)器允許的大小
    414——請求的資源URL長于服務(wù)器允許的長度
    415——請求資源不支持請求項(xiàng)目格式
    416——請求中包含Range請求頭字段,在當(dāng)前請求資源范圍內(nèi)沒有range指示值,請求也不包含If-Range請求頭字段
    417——服務(wù)器不滿足請求Expect頭字段指定的期望值,如果是代理服務(wù)器,可能是下一級服務(wù)器不能滿足請求長。

  5**(服務(wù)端錯(cuò)誤類):服務(wù)器不能正確執(zhí)行一個(gè)正確的請求
    500 - 服務(wù)器遇到錯(cuò)誤,無法完成請求
    502 - 網(wǎng)關(guān)錯(cuò)誤
    503:由于超載或停機(jī)維護(hù),服務(wù)器目前無法使用,一段時(shí)間后可能恢復(fù)正常
7.描述瀏覽器渲染的過程,DOM書和渲染樹的區(qū)別

瀏覽器渲染過程:

解析HTML構(gòu)建DOM,并行請求css、image、js

css文件下載完成,開始構(gòu)建CSSOM(CSS樹)

CSSOM構(gòu)建結(jié)束后,和DOM一起生成Render Tree(渲染樹)

布局(layout):計(jì)算出每個(gè)節(jié)點(diǎn)在屏幕中的位置

顯示:通過顯卡把頁面畫到屏幕上

DOM樹和渲染樹的區(qū)別

DOM樹與HTML標(biāo)簽一一對應(yīng),包括head和隱藏元素

渲染樹不包括head和隱藏元素,大段文本的每一個(gè)行都是獨(dú)立節(jié)點(diǎn),每一個(gè)獨(dú)立節(jié)點(diǎn)都有對應(yīng)的css屬性

8.如何最小化重繪(repaint)和回流(reflow)

需要?jiǎng)?chuàng)建多個(gè)DOM節(jié)點(diǎn)時(shí),使用DocumentFragment創(chuàng)建完成后一次性的加入document

緩存layout屬性值,減少回流次數(shù),如const offsetLeft=element.offsetLeft

盡量避免使用table布局(table元素一旦觸發(fā)回流就會(huì)導(dǎo)致table里所有的其他元素回流)

避免使用css表達(dá)式,因?yàn)槊看握{(diào)用都會(huì)重新計(jì)算值(也會(huì)重新加載頁面)

盡量使用css屬性簡寫

將多次修改元素樣式合并成一次操作

9.介紹JavaScript的原型、原型鏈?有啥特點(diǎn)

原型:

JavaScript的所有對象中都包含了一個(gè) (__proto__ ) 內(nèi)部屬性,這個(gè)屬性所對應(yīng)的就是該對象的原型

JavaScript的函數(shù)對象,除了原型 (__proto__) 之外,還預(yù)置了 prototype 屬性

當(dāng)函數(shù)對象作為構(gòu)造函數(shù)創(chuàng)建實(shí)例時(shí),該 prototype 屬性值將被作為實(shí)例對象的原型( __proto__)。

原型鏈:

當(dāng)一個(gè)對象調(diào)用的屬性/方法自身不存在時(shí),就會(huì)去自己(__proto__ )關(guān)聯(lián)的前輩 prototype 對象上去找

如果沒找到,就會(huì)去該 prototype 原型 ( __proto__) 關(guān)聯(lián)的前輩 prototype 去找。依次類推,直到找到屬性/方法或 undefined 為止。從而形成了所謂的“原型鏈”

原型特點(diǎn):

JavaScript對象是通過引用來傳遞的,當(dāng)修改原型時(shí),與之相關(guān)的對象也會(huì)繼承這一改變

10.JavaScript如何實(shí)現(xiàn)繼承

構(gòu)造函數(shù)綁定:使用 call 或 apply 方法,將父對象的構(gòu)造函數(shù)綁定在子對象上

function Apple(size, num) {
    Fruit.apply(this, arguments);
    this.size = size;
    this.num = num;
}

ES6使用extends繼承

class Apple extends Fruit{
    constructor() {
        super()
    }
}

實(shí)例繼承:將子對象的prototype指向父對象的一個(gè)實(shí)例

Apple.prototype = new Fruit()
Apple.prototype.constructor = Apple

原型繼承

function inherits(Child, Parent) {
    var F = function () {};
    F.prototype = Parent.prototype;
    Child.prototype = new F();
    Child.prototype.constructor = Child;
}

拷貝繼承:如果把父對象的所有屬性和方法,拷貝進(jìn)子對象

function extend(Child, Parent) {
    var p = Parent.prototype;
    var c = Child.prototype;
    for (var i in p) {
        c[i] = p[i];
    }
}
11.什么是window對象,什么是Document對象

Window 對象表示當(dāng)前瀏覽器的窗口,是JavaScript的頂級對象。

我們創(chuàng)建的所有對象、函數(shù)、變量都是 Window 對象的成員。

Window 對象的方法和屬性是在全局范圍內(nèi)有效的。

Document 對象是 HTML 文檔的根節(jié)點(diǎn)與所有其他節(jié)點(diǎn)(元素節(jié)點(diǎn),文本節(jié)點(diǎn),屬性節(jié)點(diǎn), 注釋節(jié)點(diǎn))

Document 對象使我們可以通過腳本對 HTML 頁面中的所有元素進(jìn)行訪問

Document 對象是 Window 對象的一部分,可通過 window.document 屬性對其進(jìn)行訪問

12. 在一個(gè)DOM上同時(shí)綁定兩個(gè)點(diǎn)擊事件:一個(gè)用捕獲,一個(gè)用冒泡。事件會(huì)執(zhí)行幾次,先執(zhí)行冒泡還是捕獲?

該DOM上的事件如果被觸發(fā),會(huì)執(zhí)行兩次(執(zhí)行次數(shù)等于綁定次數(shù))

如果該DOM是目標(biāo)元素,則按事件綁定順序執(zhí)行,不區(qū)分冒泡/捕獲

如果該DOM是處于事件流中的非目標(biāo)元素,則先執(zhí)行捕獲,后執(zhí)行冒泡

13. 事件的代理/委托

事件委托是指將事件綁定目標(biāo)元素的到父元素上,利用冒泡機(jī)制觸發(fā)該事件

優(yōu)點(diǎn):

可以減少事件注冊,節(jié)省大量內(nèi)存占用

可以將事件應(yīng)用于動(dòng)態(tài)添加的子元素上

缺點(diǎn):

使用不當(dāng)會(huì)造成事件在不應(yīng)該觸發(fā)時(shí)觸發(fā)

14. 編寫一個(gè)方法 求一個(gè)字符串的字節(jié)長度
function GetBytes(str){
    var len = str.length;
    var bytes = len;
    for(var i=0; i 255) bytes++;
    }
    return bytes;
}
alert(GetBytes("你好,as"));
15. 列舉一下JavaScript數(shù)組和對象有哪些原生方法?

數(shù)組:

arr.concat(arr1, arr2, arrn);
arr.join(",");
arr.sort(func);
arr.pop();
arr.push(e1, e2, en);
arr.shift();
arr.unshift(e1, e2, en);
arr.reverse();
arr.slice(start, end);
arr.splice(index, count, e1, e2, en);
arr.indexOf(el);
arr.includes(el); // ES6

對象:

object.hasOwnProperty(prop);
object.propertyIsEnumerable(prop);
object.valueOf();
object.toString();
object.toLocaleString();
Class.prototype.isPropertyOf(object);

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/95472.html

相關(guān)文章

  • 前端最強(qiáng)面經(jīng)匯總

    摘要:獲取的對象范圍方法獲取的是最終應(yīng)用在元素上的所有屬性對象即使沒有代碼,也會(huì)把默認(rèn)的祖宗八代都顯示出來而只能獲取元素屬性中的樣式。因此對于一個(gè)光禿禿的元素,方法返回對象中屬性值如果有就是據(jù)我測試不同環(huán)境結(jié)果可能有差異而就是。 花了很長時(shí)間整理的前端面試資源,喜歡請大家不要吝嗇star~ 別只收藏,點(diǎn)個(gè)贊,點(diǎn)個(gè)star再走哈~ 持續(xù)更新中……,可以關(guān)注下github 項(xiàng)目地址 https:...

    wangjuntytl 評論0 收藏0
  • 2017 前端面試準(zhǔn)備 - 收藏集 - 掘金

    摘要:最近遇到的前端面試題更新版前端掘金個(gè)人博客已上線,歡迎前去訪問評論無媛無故的個(gè)人博客以下內(nèi)容非本人原創(chuàng),是整理后覺得更容易理解的版本,歡迎補(bǔ)充。 一道面試題引發(fā)的對 javascript 類型轉(zhuǎn)換的思考 - 前端 - 掘金 最近群里有人發(fā)了下面這題:實(shí)現(xiàn)一個(gè)函數(shù),運(yùn)算結(jié)果可以滿足如下預(yù)期結(jié)果: ... 收集 JavaScript 各種疑難雜癥的問題集錦 - 前端 - 掘金 從原博客遷移...

    王晗 評論0 收藏0
  • 2017 前端面試準(zhǔn)備 - 收藏集 - 掘金

    摘要:最近遇到的前端面試題更新版前端掘金個(gè)人博客已上線,歡迎前去訪問評論無媛無故的個(gè)人博客以下內(nèi)容非本人原創(chuàng),是整理后覺得更容易理解的版本,歡迎補(bǔ)充。 一道面試題引發(fā)的對 javascript 類型轉(zhuǎn)換的思考 - 前端 - 掘金 最近群里有人發(fā)了下面這題:實(shí)現(xiàn)一個(gè)函數(shù),運(yùn)算結(jié)果可以滿足如下預(yù)期結(jié)果: ... 收集 JavaScript 各種疑難雜癥的問題集錦 - 前端 - 掘金 從原博客遷移...

    xiaochao 評論0 收藏0
  • 2017 前端面試準(zhǔn)備 - 收藏集 - 掘金

    摘要:最近遇到的前端面試題更新版前端掘金個(gè)人博客已上線,歡迎前去訪問評論無媛無故的個(gè)人博客以下內(nèi)容非本人原創(chuàng),是整理后覺得更容易理解的版本,歡迎補(bǔ)充。 一道面試題引發(fā)的對 javascript 類型轉(zhuǎn)換的思考 - 前端 - 掘金最近群里有人發(fā)了下面這題:實(shí)現(xiàn)一個(gè)函數(shù),運(yùn)算結(jié)果可以滿足如下預(yù)期結(jié)果: ... 收集 JavaScript 各種疑難雜癥的問題集錦 - 前端 - 掘金從原博客遷移過來...

    KitorinZero 評論0 收藏0
  • Deep in JS - 收藏集 - 掘金

    摘要:今天同學(xué)去面試,做了兩道面試題全部做錯(cuò)了,發(fā)過來給道典型的面試題前端掘金在界中,開發(fā)人員的需求量一直居高不下。 排序算法 -- JavaScript 標(biāo)準(zhǔn)參考教程(alpha) - 前端 - 掘金來自《JavaScript 標(biāo)準(zhǔn)參考教程(alpha)》,by 阮一峰 目錄 冒泡排序 簡介 算法實(shí)現(xiàn) 選擇排序 簡介 算法實(shí)現(xiàn) ... 圖例詳解那道 setTimeout 與循環(huán)閉包的經(jīng)典面...

    enali 評論0 收藏0
  • 2017年3月份前端資源分享

    平日學(xué)習(xí)接觸過的網(wǎng)站積累,以每月的形式發(fā)布。2017年以前看這個(gè)網(wǎng)址:http://www.kancloud.cn/jsfron... 03月份前端資源分享 1. Javascript 175453545 Redux compose and middleware 源碼分析 深入 Promise(二)——進(jìn)擊的 Promise Effective JavaScript leeheys blog -...

    ermaoL 評論0 收藏0

發(fā)表評論

0條評論

最新活動(dòng)
閱讀需要支付1元查看
<