程序員面試30題,你面試失敗的原因都在這里!

      網(wǎng)友投稿 604 2025-04-08

      時(shí)間飛逝,轉(zhuǎn)眼間從離開百度到創(chuàng)辦愛創(chuàng)課堂前端培訓(xùn)學(xué)校近3年了。工作也發(fā)生了巨大變化,從以前的企業(yè)項(xiàng)目開發(fā)到現(xiàn)在在學(xué)校日復(fù)一日地為學(xué)生授課,但無(wú)論對(duì)著計(jì)算機(jī)編程,還是為學(xué)生講述前端知識(shí),都十分讓我享受。


      每到畢業(yè)季,看著自己帶出的學(xué)生找到理想的工作,心中亦是十分欣慰。學(xué)生求職中,經(jīng)常會(huì)問(wèn)我一些面試中的問(wèn)題,每次耐心地幫他們解答,對(duì)他們幫助很大。

      臨近畢業(yè)的學(xué)生很多恐懼面試,所以在學(xué)校內(nèi)部我整理了一些面試題冊(cè)子與學(xué)生分享,學(xué)生受益頗多。再后來(lái),為使在這里畢業(yè)的更多學(xué)生持續(xù)地學(xué)習(xí)更廣闊的知識(shí),愛創(chuàng)課堂組織了一個(gè)“愛創(chuàng)課堂每日一題”活動(dòng),每天推出一道與工作相關(guān)的技術(shù)問(wèn)題,受到廣大畢業(yè)學(xué)生好評(píng)……

      通過(guò)這些活動(dòng)我認(rèn)識(shí)到,不論是在面試中,還是工作中,通過(guò)學(xué)習(xí)了解確實(shí)可以避免少踩一些坑,少走一些彎路,于是我將培訓(xùn)學(xué)校內(nèi)部用的前端面試知識(shí),整理成一本書。

      希望能夠與更多的讀者分享愛創(chuàng)課堂的知識(shí);希望《前端程序員面試秘籍》能夠幫助那些正在找工作的人順利找到工作;也希望這本書能夠幫助那些在工作中遇到問(wèn)題而躊躇不前的人順利解決問(wèn)題;同時(shí)也希望這本書能夠幫助那些學(xué)習(xí)前端、期望了解前端更多知識(shí)的人。

      1.JavaScript有哪些垃圾回收機(jī)制?

      答:有以下垃圾回收機(jī)制。

      標(biāo)記清除(mark and sweep)

      這是JavaScript最常見的垃圾回收方式。當(dāng)變量進(jìn)入執(zhí)行環(huán)境的時(shí)候,比如在函數(shù)中聲明一個(gè)變量,垃圾回收器將其標(biāo)記為“進(jìn)入環(huán)境”。當(dāng)變量離開環(huán)境的時(shí)候(函數(shù)執(zhí)行結(jié)束),將其標(biāo)記為“離開環(huán)境”。

      垃圾回收器會(huì)在運(yùn)行的時(shí)候給存儲(chǔ)在內(nèi)存中的所有變量加上標(biāo)記,然后去掉環(huán)境中的變量,以及被環(huán)境中變量所引用的變量(閉包)的標(biāo)記。在完成這些之后仍然存在的標(biāo)記就是要?jiǎng)h除的變量。

      引用計(jì)數(shù)(reference counting)

      在低版本的IE中經(jīng)常會(huì)發(fā)生內(nèi)存泄漏,很多時(shí)候就是因?yàn)樗捎靡糜?jì)數(shù)的方式進(jìn)行垃圾回收。

      引用計(jì)數(shù)的策略是跟蹤記錄每個(gè)值被使用的次數(shù)。當(dāng)聲明了一個(gè)變量并將一個(gè)引用類型賦值給該變量的時(shí)候,這個(gè)值的引用次數(shù)就加1。如果該變量的值變成了另外一個(gè),則這個(gè)值的引用次數(shù)減1。當(dāng)這個(gè)值的引用次數(shù)變?yōu)?的時(shí)候,說(shuō)明沒有變量在使用,這個(gè)值沒法被訪問(wèn)。

      因此,可以將它占用的空間回收,這樣垃圾回收器會(huì)在運(yùn)行的時(shí)候清理引用次數(shù)為0的值占用的空間。

      在IE中雖然JavaScript對(duì)象通過(guò)標(biāo)記清除的方式進(jìn)行垃圾回收,但是BOM與DOM對(duì)象是用引用計(jì)數(shù)的方式回收垃圾的。也就是說(shuō),只要涉及BOM和DOM,就會(huì)出現(xiàn)循環(huán)引用問(wèn)題。

      2.列舉幾種類型的DOM節(jié)點(diǎn)

      答:有以下幾類DOM節(jié)點(diǎn)。

      整個(gè)文檔是一個(gè)文檔節(jié)點(diǎn)。

      每個(gè)HTML標(biāo)簽是一個(gè)元素節(jié)點(diǎn)。

      每一個(gè)HTML屬性是一個(gè)屬性節(jié)點(diǎn)。

      包含在HTML元素中的文本是文本節(jié)點(diǎn)。

      3.談?wù)剆cript標(biāo)簽中defer和async屬性的區(qū)別。

      答:區(qū)別如下。

      (1)defer屬性規(guī)定是否延遲執(zhí)行腳本,直到頁(yè)面加載為止。async屬性規(guī)定腳本一旦可用,就異步執(zhí)行。

      (2)defer并行加載JavaScript文件,會(huì)按照頁(yè)面上script標(biāo)簽的順序執(zhí)行。async并行加載JavaScript文件,下載完成立即執(zhí)行,不會(huì)按照頁(yè)面上script標(biāo)簽的順序執(zhí)行。

      4.說(shuō)說(shuō)你對(duì)閉包的理解。

      答:使用閉包主要是為了設(shè)計(jì)私有的方法和變量。閉包的優(yōu)點(diǎn)是可以避免全局變量的污染;缺點(diǎn)是閉包會(huì)常駐內(nèi)存,增加內(nèi)存使用量,使用不當(dāng)很容易造成內(nèi)存泄漏。在JavaScript中,函數(shù)即閉包,只有函數(shù)才會(huì)產(chǎn)生作用域。

      閉包有3個(gè)特性。

      (1)函數(shù)嵌套函數(shù)。

      (2)在函數(shù)內(nèi)部可以引用外部的參數(shù)和變量。

      (3)參數(shù)和變量不會(huì)以垃圾回收機(jī)制回收。

      5.解釋一下unshift()方法。

      答:該方法在數(shù)組啟動(dòng)時(shí)起作用,與push()不同。它將參數(shù)成員添加到數(shù)組的答頂部。下面給出一段示例代碼。

      var name=["john"]

      name.unshift("charlie");

      name.unshift("joseph","Jane");

      console.log(name);

      輸出如下所示。

      [" joseph "," Jane ", " charlie ", " john "]

      6.encodeURI()和decodeURI()的作用是什么?

      答:encodeURl()用于將URL轉(zhuǎn)換為十六進(jìn)制編碼。而decodeURI()用于將編碼的URL轉(zhuǎn)換回正常URL。

      7.為什么不建議在JavaScript中使用innerHTML?

      答:通過(guò)innerHTML修改內(nèi)容,每次都會(huì)刷新,因此很慢。在innerHTML中沒有驗(yàn)證的機(jī)會(huì),因此更容易在文檔中插入錯(cuò)誤代碼,使網(wǎng)頁(yè)不穩(wěn)定。

      8.如何在不支持JavaScript的舊瀏覽器中隱藏JavaScript代碼?

      答:在標(biāo)簽之前添加“// -->”,代碼中沒有引號(hào)。

      舊瀏覽器現(xiàn)在將JavaScript代碼視為一個(gè)長(zhǎng)的HTML注釋,而支持JavaScript的瀏覽器則將“”作為一行注釋。

      9.在DOM操作中怎樣創(chuàng)建、添加、移除、替換、插入和查找節(jié)點(diǎn)?

      答:具體方法如下。

      (1)通過(guò)以下代碼創(chuàng)建新節(jié)點(diǎn)。

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

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

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

      (2)通過(guò)以下代碼添加、移除、替換、插入節(jié)點(diǎn)。

      appendChild()

      removeChild()

      replaceChild()

      insertBefore() ? ? ? ? ? ? ? //并沒有insertAfter()

      (3)通過(guò)以下代碼查找節(jié)點(diǎn)。

      getElementsByTagName() ? ? ? //通過(guò)標(biāo)簽名稱查找節(jié)點(diǎn)

      getElementsByName() ? ? ? ? ?//通過(guò)元素的name屬性的值查找節(jié)點(diǎn)(IE容錯(cuò)能力較強(qiáng),會(huì)得到一個(gè)數(shù)

      //組,其中包括id等于name值的節(jié)點(diǎn))

      getElementById() ? ? ? ? ? ? //通過(guò)元素Id查找節(jié)點(diǎn),具有唯一性

      10.如何實(shí)現(xiàn)瀏覽器內(nèi)多個(gè)標(biāo)簽頁(yè)之間的通信?

      答:調(diào)用localstorge、cookie等數(shù)據(jù)存儲(chǔ)通信方式。

      11.null和undefined的區(qū)別是什么?

      答:null是一個(gè)表示“無(wú)”的對(duì)象,轉(zhuǎn)為數(shù)值時(shí)為0;undefined是一個(gè)表示“無(wú)”的原始值,轉(zhuǎn)為數(shù)值時(shí)為NaN。

      當(dāng)聲明的變量還未初始化時(shí),變量的默認(rèn)值為undefined。

      null用來(lái)表示尚未存在的對(duì)象,常用來(lái)表示函數(shù)企圖返回一個(gè)不存在的對(duì)象。

      undefined表示“缺少值”,即此處應(yīng)該有一個(gè)值,但是還沒有定義,典型用法是如下。

      (1)如果變量聲明了,但沒有賦值,它就等于undefined。

      (2)當(dāng)調(diào)用函數(shù)時(shí),如果沒有提供應(yīng)該提供的參數(shù),該參數(shù)就等于undefined。

      (3)如果對(duì)象沒有賦值,該屬性的值為undefined。

      (4)當(dāng)函數(shù)沒有返回值時(shí),默認(rèn)返回undefined。

      null表示“沒有對(duì)象”,即此處不應(yīng)該有值,典型用法是如下。

      (1)作為函數(shù)的參數(shù),表示該函數(shù)的參數(shù)不是對(duì)象。

      (2)作為對(duì)象原型鏈的終點(diǎn)。

      12.new操作符的作用是什么?

      答:作用如下。

      (1)創(chuàng)建一個(gè)空對(duì)象。

      (2)由this變量引用該對(duì)象。

      (3)該對(duì)象繼承該函數(shù)的原型(更改原型鏈的指向)。

      (4)把屬性和方法加入到this引用的對(duì)象中。

      (5)新創(chuàng)建的對(duì)象由this引用,最后隱式地返回this,過(guò)程如下。

      var obj ?= {};

      obj.__proto__ = Base.prototype;

      Base.call(obj);

      13.JavaScript延遲加載的方式有哪些?

      答:包括defer和async、動(dòng)態(tài)創(chuàng)建DOM(創(chuàng)建script,插入DOM中,加載完畢后回調(diào)、按需異步載入JavaScript。

      14.call()和apply() 的區(qū)別和作用是什么?

      答:作用都是在函數(shù)執(zhí)行的時(shí)候,動(dòng)態(tài)改變函數(shù)的運(yùn)行環(huán)境(執(zhí)行上下文)。

      call和apply的第一個(gè)參數(shù)都是改變運(yùn)行環(huán)境的對(duì)象。

      區(qū)別如下。

      call從第二個(gè)參數(shù)開始,每一個(gè)參數(shù)會(huì)依次傳遞給調(diào)用函數(shù);apply的第二個(gè)參數(shù)是數(shù)組,數(shù)組的每一個(gè)成員會(huì)依次傳遞給調(diào)用函數(shù)。

      如:

      func.call(func1, var1, var2, var3)

      對(duì)應(yīng)的apply寫法為:

      func.apply(func1, [var1, var2, var3])

      15.哪些操作會(huì)造成內(nèi)存泄漏?

      答:內(nèi)存泄漏指不再擁有或需要任何對(duì)象(數(shù)據(jù))之后,它們?nèi)匀淮嬖谟趦?nèi)存中。

      提示:垃圾回收器定期掃描對(duì)象,并計(jì)算引用了每個(gè)對(duì)象的其他對(duì)象的數(shù)量。如果一個(gè)對(duì)象的引用數(shù)量為0(沒有其他對(duì)象引用過(guò)該對(duì)象),或?qū)υ搶?duì)象的唯一引用是循環(huán)的,那么該對(duì)象占用的內(nèi)存立即被回收。

      如果setTimeout 的第一個(gè)參數(shù)使用字符串而非函數(shù),會(huì)引發(fā)內(nèi)存泄漏。

      閉包、控制臺(tái)日志、循環(huán)(在兩個(gè)對(duì)象彼此引用且彼此保留時(shí),就會(huì)產(chǎn)生一個(gè)循環(huán))等會(huì)造內(nèi)存泄漏。

      16.列舉IE與finefox的不同之處。

      答:不同之處如下。

      (1)IE支持currentStyle;Firefox使用getComputStyle。

      (2)IE使用innerText;Firefox使用textContent。

      (3)在透明度濾鏡方面,IE使用filter:alpha(opacity= num);Firefox使用-moz-opacity: num。

      (4)在事件方面,IE使用attachEvent:Firefox使用addEventListener。

      (5)對(duì)于鼠標(biāo)位置:IE使用event.clientX;Firefox使用event.pageX。

      (6)IE使用event.srcElement;Firefox使用event.target。

      (7)要消除list的原點(diǎn),IE中僅須使margin:0即可達(dá)到最終效果;Firetox中需要設(shè)置margin:0、padding:0和list-style:none。

      (8)CSS圓角:IE7以下不支持圓角。

      17.講解一下JavaScript對(duì)象的幾種創(chuàng)建方式。

      答:有以下創(chuàng)建方式。

      (1)Object構(gòu)造函數(shù)式。

      (2)對(duì)象字面量式。

      (3)工廠模式。

      (4)安全工廠模式。

      (5)構(gòu)造函數(shù)模式。

      (6)原型模式。

      (7)混合構(gòu)造函數(shù)和原型模式。

      (8)動(dòng)態(tài)原型模式。

      (9)寄生構(gòu)造函數(shù)模式。

      (10)穩(wěn)妥構(gòu)造函數(shù)模式。

      18.如何實(shí)現(xiàn)異步編程?

      答:具體方法如下。

      方法 1,通過(guò)回調(diào)函數(shù)。優(yōu)點(diǎn)是簡(jiǎn)單、容易理解和部署;缺點(diǎn)是不利于代碼的閱讀和維護(hù),各個(gè)部分之間高度耦合(Coupling),流程混亂,而且每個(gè)任務(wù)只能指定一個(gè)回調(diào)函數(shù)。

      方法 2,通過(guò)事件監(jiān)聽。可以綁定多個(gè)事件,每個(gè)事件可以指定多個(gè)回調(diào)函數(shù),而且可以“去耦合”(Decoupling),有利于實(shí)現(xiàn)模塊化;缺點(diǎn)是整個(gè)程序都要變成事件驅(qū)動(dòng)型,運(yùn)行流程會(huì)變得很不清晰。

      方法 3,采用發(fā)布/訂閱方式。性質(zhì)與“事件監(jiān)聽”類似,但是明顯優(yōu)于后者。

      方法 4,通過(guò)Promise對(duì)象實(shí)現(xiàn)。Promise對(duì)象是CommonJS工作組提出的一種規(guī)范,旨在為異步編程提供統(tǒng)一接口。它的思想是,每一個(gè)異步任務(wù)返回一個(gè)Promise對(duì)象,該對(duì)象有一個(gè)then方法,允許指定回調(diào)函數(shù)。

      19.請(qǐng)解釋一下JavaScript的同源策略。

      答:同源策略是客戶端腳本(尤其是JavaScript)的重要安全度量標(biāo)準(zhǔn)。它最早出自Netscape Navigator 2.0,目的是防止某個(gè)文檔或腳本從多個(gè)不同源裝載。

      這里的同源策略指的是協(xié)議、域名、端口相同。同源策略是一種安全協(xié)議。指一段腳本只能讀取來(lái)自同一來(lái)源的窗口和文檔的屬性。

      20.為什么要有同源限制?

      答:我們舉例說(shuō)明。比如一個(gè)黑客,他利用Iframe把真正的銀行登錄頁(yè)面嵌到他的頁(yè)面上,當(dāng)你使用真實(shí)的用戶名、密碼登錄時(shí),他的頁(yè)面就可以通過(guò)JavaScript讀取到你表單上input中的內(nèi)容,這樣黑客就會(huì)輕松得到你的用戶名和密碼。

      21.在JavaScript中,為什么說(shuō)函數(shù)是第一類對(duì)象?

      答:第一類函數(shù)即JavaScript中的函數(shù)。這通常意味著這些函數(shù)可以作為參數(shù)傳遞給其他函數(shù),作為其他函數(shù)的值返回,分配給變量,也可以存儲(chǔ)在數(shù)據(jù)結(jié)構(gòu)中。

      22.什么是事件? IE與Firefox的事件機(jī)制有什么區(qū)別? 如何阻止冒泡?

      答:事件是在網(wǎng)頁(yè)中的某個(gè)操作(有的操作對(duì)應(yīng)多個(gè)事件)。例如,當(dāng)單擊一個(gè)按鈕時(shí),就會(huì)產(chǎn)生一個(gè)事件,它可以被JavaScript偵測(cè)到。

      在事件處理機(jī)制上,IE支持事件冒泡;Firefox同時(shí)支持兩種事件模型,也就是捕獲型事件和冒泡型事件。

      阻止方法是ev.stopPropagation()。注意舊版IE中的方法ev.cancelBubble = true。

      23.函數(shù)聲明與函數(shù)表達(dá)式的區(qū)別?

      答:在JavaScript中,在向執(zhí)行環(huán)境中加載數(shù)據(jù)時(shí),解析器對(duì)函數(shù)聲明和函數(shù)表達(dá)式并非是一視同仁的。解析器會(huì)首先讀取函數(shù)聲明,并使它在執(zhí)行任何代碼之前可用(可以訪問(wèn))。至于函數(shù)表達(dá)式,則必須等到解析器執(zhí)行到它所在的代碼行,才會(huì)真正解析和執(zhí)行它。

      24.如何刪除一個(gè)cookie?

      答:為了刪除cookie,要修改expires,代碼如下。

      document.cookie = 'user=icketang;expires = ' + new Date(0)

      25.編寫一個(gè)方法,求一個(gè)字符串的長(zhǎng)度(單位是字節(jié))。

      答:假設(shè)一個(gè)英文字符占用一字節(jié),一個(gè)中文字符占用兩字節(jié):

      function GetBytes(str){

      var len = str.length;

      var bytes = len;

      for(var i=0; i

      if (str.charCodeAt(i) > 255) bytes++;

      }

      return bytes;

      }

      alert(GetBytes("hello 愛創(chuàng)課堂!"));

      26.對(duì)于元素,attribute和property的區(qū)別是什么?

      答:attribute是DOM元素在文檔中作為HTML標(biāo)簽擁有的屬性;property就是DOM元素在JavaScript中作為對(duì)象擁有的屬性。

      對(duì)于HTML的標(biāo)準(zhǔn)屬性來(lái)說(shuō),attribute和property是同步的,會(huì)自動(dòng)更新,但是對(duì)于自定義的屬性來(lái)說(shuō),它們是不同步的。

      27.解釋延遲腳本在JavaScript中的作用。

      答:默認(rèn)情況下,在頁(yè)面加載期間,HTML代碼的解析將暫停,直到腳本停止執(zhí)行。這意味著,如果服務(wù)器速度較慢或者腳本特別“沉重”,則會(huì)導(dǎo)致網(wǎng)頁(yè)延遲。在使用Deferred時(shí),腳本會(huì)延遲執(zhí)行,直到HTML解析器運(yùn)行。這縮短了網(wǎng)頁(yè)的加載時(shí)間,并且它們的顯示速度更快。

      28.什么是閉包(closure)?

      答:為了說(shuō)明閉包,創(chuàng)建一個(gè)閉包。

      function hello() {

      // 函數(shù)執(zhí)行完畢,變量仍然存在

      var num = 100;

      var showResult= function() { alert(num); }

      num++;

      return showResult;

      }

      var showResult= hello();

      showResult()//執(zhí)行結(jié)果:彈出101

      執(zhí)行hello()后,hello()閉包內(nèi)部的變量會(huì)存在,而閉包內(nèi)部函數(shù)的內(nèi)部變量不會(huì)存在,使得JavaScript的垃圾回收機(jī)制不會(huì)收回hello()占用的資源,因?yàn)閔ello()中內(nèi)部函數(shù)的執(zhí)行需要依賴hello()中的變量。

      29.如何判斷一個(gè)對(duì)象是否屬于某個(gè)類?

      答:使用instanceof關(guān)鍵字,判斷一個(gè)對(duì)象是否是類的實(shí)例化對(duì)象;使用constructor屬性,判斷一個(gè)對(duì)象是否是類的構(gòu)造函數(shù)。

      程序員面試30題,你面試失敗的原因都在這里!

      30.JavaScript中如何使用事件處理程序?

      答:事件是由用戶與頁(yè)面的交互(例如單擊鏈接或填寫表單)導(dǎo)致的操作。需要一個(gè)事件處理程序來(lái)保證所有事件的正確執(zhí)行。事件處理程序是對(duì)象的額外屬性。此屬性包括事件的名稱和事件發(fā)生時(shí)采取的操作。

      《前端程序員面試秘籍》

      張容銘?著

      本書針對(duì)前端知識(shí)所涉及的方方面面,總結(jié)歸納了30個(gè)模塊,提出了1076道前端面試題,模擬了真實(shí)的面試場(chǎng)景。從面試官的角度出發(fā),針對(duì)某一知識(shí)點(diǎn),并以面試官的口吻提出疑問(wèn)。在解答問(wèn)題過(guò)程中,站在應(yīng)試者的角度給出答案。讓讀者進(jìn)入真實(shí)的企業(yè)面試氛圍。書中面試題極具針對(duì)性,并具有一定的獨(dú)立性,讀者可以根據(jù)個(gè)人喜好,可以針對(duì)性地閱覽某一章節(jié)。

      本文轉(zhuǎn)載自異步社區(qū)。

      編程語(yǔ)言 算法

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:excel如何使用tight函數(shù)
      下一篇:Excel怎么隱藏輯欄上的函數(shù)公式
      相關(guān)文章
      久久久亚洲AV波多野结衣| 国产亚洲美女精品久久久久狼 | heyzo亚洲精品日韩| 亚洲中文字幕久久精品无码2021| 亚洲成a人片在线观看日本| 亚洲精品无码专区2| 亚洲色偷偷偷综合网| 亚洲13又紧又嫩又水多| 亚洲视频一区在线播放| 久久精品亚洲视频| 亚洲成AV人片天堂网无码| 亚洲午夜日韩高清一区| 国产亚洲男人的天堂在线观看| 亚洲va久久久久| 亚洲熟妇无码一区二区三区| 亚洲看片无码在线视频| 亚洲日韩一区二区一无码| 亚洲国产精品无码久久98 | 亚洲欧洲日产国码久在线| 久久精品国产亚洲AV忘忧草18| 亚洲av综合色区| 亚洲国产a∨无码中文777| 亚洲妇熟XXXX妇色黄| 亚洲国产精品无码久久SM | 亚洲综合国产一区二区三区| 最新亚洲成av人免费看| 国产亚洲精品福利在线无卡一 | 亚洲精品视频免费看| 亚洲福利视频网站| 亚洲国产成人精品电影| 亚洲三级在线免费观看| 亚洲福利秒拍一区二区| 亚洲制服丝袜精品久久| 亚洲免费在线视频播放| 精品国产日韩久久亚洲| 亚洲色一区二区三区四区| 亚洲高清一区二区三区电影| 日韩国产欧美亚洲v片| mm1313亚洲国产精品美女| 亚洲精品国产精品乱码不卡| 国产专区一va亚洲v天堂|