日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

JAva面试题(微信分享)

發布時間:2024/4/15 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JAva面试题(微信分享) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前幾天,有朋友去面試之前問我關于后端架構相關的問題,但奈于我去年更多的工作是在移動SDK開發上,對此有所遺忘,實屬無奈,后面準備總結下.

今天要談的主題是關于求職.求職是在每個技術人員的生涯中都要經歷多次,對于我們大部分人而言,在進入自己心儀的公司之前少不了準備工作,有一份全面細致面試題將幫助我們減少許多麻煩.在跳槽季來臨之前,特地做這個系列的文章,一方面幫助自己鞏固下基礎,另一方面也希望幫助想要換工作的朋友.

從12年開始,我先后做過爬蟲,搜索,機器學習,javaEE及Android等方面的事情,而其中主要的工具便是Java和C,所以這個系列的重點也放在這兩方面.感興趣的朋友可以關注:https://github.com/closedevice/interview-about.

為了更好的樹立知識體系,我附加了相關的思維導圖,分為pdf版和mindnote版.比如java相關的導圖如下:?

由于時間倉促,有些地方未寫完,后面會繼續補充.如有不妥之處,歡迎及時與我溝通.


相關概念

面向對象的三個特征

封裝,繼承,多態.這個應該是人人皆知.

多態的好處

允許不同類對象對同一消息做出響應,即同一消息可以根據發送對象的不同而采用多種不同的行為方式(發送消息就是函數調用).主要有以下優點:

  • 可替換性:多態對已存在代碼具有可替換性.
  • 可擴充性:增加新的子類不影響已經存在的類結構.
  • 接口性:多態是超累通過方法簽名,想子類提供一個公共接口,由子類來完善或者重寫它來實現的.
  • 靈活性:
  • 簡化性:
  • 代碼中如何實現多態

    實現多態主要有以下三種方式:?
    1. 接口實現?
    2. 繼承父類重寫方法?
    3. 同一類中進行方法重載

    虛擬機是如何實現多態的

    動態綁定技術(dynamic binding),執行期間判斷所引用對象的實際類型,根據實際類型調用對應的方法.

    接口的意義

    接口的意義用三個詞就可以概括:規范,擴展,回調.

    抽象類的意義

    抽象類的意義可以用三句話來概括:

  • 為其他子類提供一個公共的類型
  • 封裝子類中重復定義的內容
  • 定義抽象方法,子類雖然有不同的實現,但是定義時一致的
  • 接口和抽象類的區別

    比較抽象類接口
    默認方法抽象類可以有默認的方法實現,java 8之前,接口中不存在方法的實現.
    實現方式子類使用extends關鍵字來繼承抽象類.如果子類不是抽象類,子類需要提供抽象類中所聲明方法的實現.子類使用implements來實現接口,需要提供接口中所有聲明的實現.
    構造器抽象類中可以有構造器,接口中不能
    和正常類區別抽象類不能被實例化接口則是完全不同的類型
    訪問修飾符抽象方法可以有public,protected和default等修飾接口默認是public,不能使用其他修飾符
    多繼承一個子類只能存在一個父類一個子類可以存在多個接口
    添加新方法想抽象類中添加新方法,可以提供默認的實現,因此可以不修改子類現有的代碼如果往接口中添加新方法,則子類中需要實現該方法.

    父類的靜態方法能否被子類重寫

    不能.子類繼承父類后,有相同的靜態方法和非靜態,這是非靜態方法覆蓋父類中的方法(即方法重寫),父類的該靜態方法被隱藏(如果對象是父類則調用該隱藏的方法),另外子類可集成父類的靜態與非靜態方法,至于方法重載我覺得它其中一要素就是在同一類中,不能說父類中的什么方法與子類里的什么方法是方法重載的體現.

    什么是不可變對象

    不可變對象指對象一旦被創建,狀態就不能再改變。任何修改都會創建一個新的對象,如 String、Integer及其它包裝類。

    能否創建一個包含可變對象的不可變對象?

    當然可以創建一個包含可變對象的不可變對象的,你只需要謹慎一點,不要共享可變對象的引用就可以了,如果需要變化時,就返回原對象的一個拷貝。最常見的例子就是對象中包含一個日期對象的引用.

    java 創建對象的幾種方式

  • 采用new
  • 通過反射
  • 采用clone
  • 通過序列化機制
  • 前2者都需要顯式地調用構造方法. 造成耦合性最高的恰好是第一種,因此你發現無論什么框架,只要涉及到解耦必先減少new的使用.

    switch中能否使用string做參數

    在idk 1.7之前,switch只能支持byte,short,char,int或者其對應的封裝類以及Enum類型。從idk 1.7之后switch開始支持String.

    Object中有哪些公共方法?

  • equals()
  • clone()
  • getClass()
  • notify(),notifyAll(),wait()
  • java當中的四種引用

    強引用,軟引用,弱引用,虛引用.不同的引用類型主要體現在GC上:

  • 強引用:如果一個對象具有強引用,它就不會被垃圾回收器回收。即使當前內存空間不足,JVM也不會回收它,而是拋出 OutOfMemoryError 錯誤,使程序異常終止。如果想中斷強引用和某個對象之間的關聯,可以顯式地將引用賦值為null,這樣一來的話,JVM在合適的時間就會回收該對象
  • 軟引用:在使用軟引用時,如果內存的空間足夠,軟引用就能繼續被使用,而不會被垃圾回收器回收,只有在內存不足時,軟引用才會被垃圾回收器回收。
  • 弱引用:具有弱引用的對象擁有的生命周期更短暫。因為當 JVM 進行垃圾回收,一旦發現弱引用對象,無論當前內存空間是否充足,都會將弱引用回收。不過由于垃圾回收器是一個優先級較低的線程,所以并不一定能迅速發現弱引用對象
  • 虛引用:顧名思義,就是形同虛設,如果一個對象僅持有虛引用,那么它相當于沒有引用,在任何時候都可能被垃圾回收器回收。
  • 更多了解參見深入對象引用

    WeakReference與SoftReference的區別?

    這點在四種引用類型中已經做了解釋,這里簡單說明一下即可:?
    雖然 WeakReference 與 SoftReference 都有利于提高 GC 和 內存的效率,但是 WeakReference ,一旦失去最后一個強引用,就會被 GC 回收,而軟引用雖然不能阻止被回收,但是可以延遲到 JVM 內存不足的時候。

    為什么要有不同的引用類型

    不像C語言,我們可以控制內存的申請和釋放,在Java中有時候我們需要適當的控制對象被回收的時機,因此就誕生了不同的引用類型,可以說不同的引用類型實則是對GC回收時機不可控的妥協.有以下幾個使用場景可以充分的說明:

  • 利用軟引用和弱引用解決OOM問題:用一個HashMap來保存圖片的路徑和相應圖片對象關聯的軟引用之間的映射關系,在內存不足時,JVM會自動回收這些緩存圖片對象所占用的空間,從而有效地避免了OOM的問題.
  • 通過軟引用實現Java對象的高速緩存:比如我們創建了一Person的類,如果每次需要查詢一個人的信息,哪怕是幾秒中之前剛剛查詢過的,都要重新構建一個實例,這將引起大量Person對象的消耗,并且由于這些對象的生命周期相對較短,會引起多次GC影響性能。此時,通過軟引用和 HashMap 的結合可以構建高速緩存,提供性能.
  • java中==和eqauls()的區別,equals()和`hashcode的區別

    ==是運算符,用于比較兩個變量是否相等,而equals是Object類的方法,用于比較兩個對象是否相等.默認Object類的equals方法是比較兩個對象的地址,此時和==的結果一樣.換句話說:基本類型比較用==,比較的是他們的值.默認下,對象用==比較時,比較的是內存地址,如果需要比較對象內容,需要重寫equal方法

    equals()和hashcode()的聯系

    hashCode()是Object類的一個方法,返回一個哈希值.如果兩個對象根據equal()方法比較相等,那么調用這兩個對象中任意一個對象的hashCode()方法必須產生相同的哈希值.?
    如果兩個對象根據eqaul()方法比較不相等,那么產生的哈希值不一定相等(碰撞的情況下還是會相等的.)

    a.hashCode()有什么用?與a.equals(b)有什么關系

    hashCode() 方法是相應對象整型的 hash 值。它常用于基于 hash 的集合類,如 Hashtable、HashMap、LinkedHashMap等等。它與 equals() 方法關系特別緊密。根據 Java 規范,兩個使用 equal() 方法來判斷相等的對象,必須具有相同的 hashcode。

    將對象放入到集合中時,首先判斷要放入對象的hashcode是否已經在集合中存在,不存在則直接放入集合.如果hashcode相等,然后通過equal()方法判斷要放入對象與集合中的任意對象是否相等:如果equal()判斷不相等,直接將該元素放入集合中,否則不放入.

    有沒有可能兩個不相等的對象有相同的hashcode

    有可能,兩個不相等的對象可能會有相同的 hashcode 值,這就是為什么在 hashmap 中會有沖突。相等 hashcode 值的規定只是說如果兩個對象相等,必須有相同的hashcode 值,但是沒有關于不相等對象的任何規定。

    可以在hashcode中使用隨機數字嗎?

    不行,因為同一對象的 hashcode 值必須是相同的

    “a==b”與a.equals(b)有什么區別

    如果a 和b 都是對象,則 a==b 是比較兩個對象的引用,只有當 a 和 b 指向的是堆中的同一個對象才會返回 true,而 a.equals(b) 是進行邏輯比較,所以通常需要重寫該方法來提供邏輯一致性的比較。例如,String 類重寫 equals() 方法,所以可以用于兩個不同對象,但是包含的字母相同的比較。

    3*0.1==0.3返回值是什么

    false,因為有些浮點數不能完全精確的表示出來。

    a=a+b與a+=b有什么區別嗎?

    隱式的將加操作的結果類型強制轉換為持有結果的類型。如果兩這個整型相加,如 byte、short 或者 int,首先會將它們提升到 int 類型,然后在執行加法操作。如果加法操作的結果比 a 的最大值要大,則 a+b 會出現編譯錯誤,但是 a += b 沒問題,如下:?
    byte a = 127;?
    byte b = 127;?
    b = a + b; // error : cannot convert from int to byte?
    b += a; // ok?
    (譯者注:這個地方應該表述的有誤,其實無論 a+b 的值為多少,編譯器都會報錯,因為 a+b 操作會將 a、b 提升為 int 類型,所以將 int 類型賦值給 byte 就會編譯出錯)

    內部類的作用

    內部類可以用多個實例,每個實例都有自己的狀態信息,并且與其他外圍對象的信息相互獨立.在單個外圍類當中,可以讓多個內部類以不同的方式實現同一接口,或者繼承同一個類.創建內部類對象的時刻病不依賴于外部類對象的創建.內部類并沒有令人疑惑的”is-a”關系,它就像是一個獨立的實體.

    內部類提供了更好的封裝,除了該外圍類,其他類都不能訪問

    final,finalize和finally的不同之處

    final 是一個修飾符,可以修飾變量、方法和類。如果 final 修飾變量,意味著該變量的值在初始化后不能被改變。finalize 方法是在對象被回收之前調用的方法,給對象自己最后一個復活的機會,但是什么時候調用 finalize 沒有保證。finally 是一個關鍵字,與 try 和 catch 一起用于異常的處理。finally 塊一定會被執行,無論在 try 塊中是否有發生異常。

    clone()是哪個類型的方法?

    java.lang.Cloneable 是一個標示性接口,不包含任何方法,clone 方法在 object 類中定義。并且需要知道 clone() 方法是一個本地方法,這意味著它是由 c 或 c++ 或 其他本地語言實現的。

    深拷貝和淺拷貝的區別是什么?

    淺拷貝:被復制對象的所有變量都含有與原來的對象相同的值,而所有的對其他對象的引用仍然指向原來的對象。換言之,淺拷貝僅僅復制所考慮的對象,而不復制它所引用的對象。

    深拷貝:被復制對象的所有變量都含有與原來的對象相同的值,而那些引用其他對象的變量將指向被復制過的新對象,而不再是原有的那些被引用的對象。換言之,深拷貝把要復制的對象所引用的對象都復制了一遍。


    數據類型相關

    java中int char,long各占多少字節?

    類型字節數位數
    short216
    int432
    long864
    float432
    double864
    char216

    64位的JVM當中,int的長度是多少?

    Java 中,int 類型變量的長度是一個固定值,與平臺無關,都是 32 位。意思就是說,在 32 位 和 64 位 的Java 虛擬機中,int 類型的長度是相同的。

    java int和Integer的區別

    Integer是int的包裝類型,在拆箱和裝箱中,而知自動轉換.int是基本類型,直接存數值,而integer是對象,用一個引用指向這個對象.

    int 和Integer誰占用的內存更多?

    Integer 對象會占用更多的內存。Integer是一個對象,需要存儲對象的元數據。但是 int 是一個原始類型的數據,所以占用的空間更少。

    String,StringBuffer和StringBuilder區別

    String是字符串常量,final修飾;StringBuffer字符串變量(線程安全);?
    StringBuilder 字符串變量(線程不安全).

    String和StringBuffer

    String和StringBuffer主要區別是性能:String是不可變對象,每次對String類型進行操作都等同于產生了一個新的String對象,然后指向新的String對象.所以盡量不在對String進行大量的拼接操作,否則會產生很多臨時對象,導致GC開始工作,影響系統性能.

    StringBuffer是對對象本身操作,而不是產生新的對象,因此在通常在有大量拼接的情況下我們建議使用StringBuffer.

    但是需要注意現在JVM會對String拼接做一定的優化:?
    String s=“This is only ”+”simple”+”test”會被虛擬機直接優化成String s=“This is only simple test”,此時就不存在拼接過程.

    StringBuffer和StringBuilder

    StringBuffer是線程安全的可變字符串,其內部實現是可變數組.StringBuilder是Java?5.0新增的,其功能和StringBuffer類似,但是非線程安全.因此,在沒有多線程問題的前提下,使用StringBuilder會取得更好的性能.

    什么是編譯器常量?使用它有什么風險?

    公共靜態不可變(public static final )變量也就是我們所說的編譯期常量,這里的 public 可選的。實際上這些變量在編譯時會被替換掉,因為編譯器知道這些變量的值,并且知道這些變量在運行時不能改變。這種方式存在的一個問題是你使用了一個內部的或第三方庫中的公有編譯時常量,但是這個值后面被其他人改變了,但是你的客戶端仍然在使用老的值,甚至你已經部署了一個新的jar。為了避免這種情況,當你在更新依賴 JAR 文件時,確保重新編譯你的程序。

    java當中使用什么類型表示價格比較好?

    如果不是特別關心內存和性能的話,使用BigDecimal,否則使用預定義精度的 double 類型。

    如何將byte轉為String

    可以使用 String 接收 byte[] 參數的構造器來進行轉換,需要注意的點是要使用的正確的編碼,否則會使用平臺默認編碼,這個編碼可能跟原來的編碼相同,也可能不同。

    可以將int強轉為byte類型么?會產生什么問題?

    我們可以做強制轉換,但是Java中int是32位的而byte是8 位的,所以,如果強制轉化int類型的高24位將會被丟棄,byte 類型的范圍是從-128.到128


    關于垃圾回收

    你知道哪些垃圾回收算法?

    垃圾回收從理論上非常容易理解,具體的方法有以下幾種:?
    1. 標記-清除?
    2. 標記-復制?
    3. 標記-整理?
    4. 分代回收?
    更詳細的內容參見深入理解垃圾回收算法

    如何判斷一個對象是否應該被回收

    這就是所謂的對象存活性判斷,常用的方法有兩種:1.引用計數法;2:對象可達性分析.由于引用計數法存在互相引用導致無法進行GC的問題,所以目前JVM虛擬機多使用對象可達性分析算法.

    簡單的解釋一下垃圾回收

    Java 垃圾回收機制最基本的做法是分代回收。內存中的區域被劃分成不同的世代,對象根據其存活的時間被保存在對應世代的區域中。一般的實現是劃分成3個世代:年輕、年老和永久。內存的分配是發生在年輕世代中的。當一個對象存活時間足夠長的時候,它就會被復制到年老世代中。對于不同的世代可以使用不同的垃圾回收算法。進行世代劃分的出發點是對應用中對象存活時間進行研究之后得出的統計規律。一般來說,一個應用中的大部分對象的存活時間都很短。比如局部變量的存活時間就只在方法的執行過程中。基于這一點,對于年輕世代的垃圾回收算法就可以很有針對性.

    調用System.gc()會發生什么?

    通知GC開始工作,但是GC真正開始的時間不確定.


    進程,線程相關

    說說進程,線程,協程之間的區別

    簡而言之,進程是程序運行和資源分配的基本單位,一個程序至少有一個進程,一個進程至少有一個線程.進程在執行過程中擁有獨立的內存單元,而多個線程共享內存資源,減少切換次數,從而效率更高.線程是進程的一個實體,是cpu調度和分派的基本單位,是比程序更小的能獨立運行的基本單位.同一進程中的多個線程之間可以并發執行.

    你了解守護線程嗎?它和非守護線程有什么區別

    程序運行完畢,jvm會等待非守護線程完成后關閉,但是jvm不會等待守護線程.守護線程最典型的例子就是GC線程

    什么是多線程上下文切換

    多線程的上下文切換是指CPU控制權由一個已經正在運行的線程切換到另外一個就緒并等待獲取CPU執行權的線程的過程。

    創建兩種線程的方式?他們有什么區別?

    通過實現java.lang.Runnable或者通過擴展java.lang.Thread類.相比擴展Thread,實現Runnable接口可能更優.原因有二:

  • Java不支持多繼承.因此擴展Thread類就代表這個子類不能擴展其他類.而實現Runnable接口的類還可能擴展另一個類.
  • 類可能只要求可執行即可,因此集成整個Thread類的開銷過大.
  • Runnable和Callable的區別

    Runnable接口中的run()方法的返回值是void,它做的事情只是純粹地去執行run()方法中的代碼而已;Callable接口中的call()方法是有返回值的,是一個泛型,和Future、FutureTask配合可以用來獲取異步執行的結果。?
    這其實是很有用的一個特性,因為多線程相比單線程更難、更復雜的一個重要原因就是因為多線程充滿著未知性,某條線程是否執行了?某條線程執行了多久?某條線程執行的時候我們期望的數據是否已經賦值完畢?無法得知,我們能做的只是等待這條多線程的任務執行完畢而已。而Callable+Future/FutureTask卻可以獲取多線程運行的結果,可以在等待時間太長沒獲取到需要的數據的情況下取消該線程的任務,真的是非常有用。

    什么導致線程阻塞

    阻塞指的是暫停一個線程的執行以等待某個條件發生(如某資源就緒),學過操作系統的同學對它一定已經很熟悉了。Java 提供了大量方法來支持阻塞,下面讓我們逐一分析。

    方法說明
    sleep()sleep() 允許 指定以毫秒為單位的一段時間作為參數,它使得線程在指定的時間內進入阻塞狀態,不能得到CPU 時間,指定的時間一過,線程重新進入可執行狀態。 典型地,sleep() 被用在等待某個資源就緒的情形:測試發現條件不滿足后,讓線程阻塞一段時間后重新測試,直到條件滿足為止
    suspend() 和 resume()兩個方法配套使用,suspend()使得線程進入阻塞狀態,并且不會自動恢復,必須其對應的resume() 被調用,才能使得線程重新進入可執行狀態。典型地,suspend() 和 resume() 被用在等待另一個線程產生的結果的情形:測試發現結果還沒有產生后,讓線程阻塞,另一個線程產生了結果后,調用 resume() 使其恢復。
    yield()yield() 使得線程放棄當前分得的 CPU 時間,但是不使線程阻塞,即線程仍處于可執行狀態,隨時可能再次分得 CPU 時間。調用 yield() 的效果等價于調度程序認為該線程已執行了足夠的時間從而轉到另一個線程
    wait() 和 notify()兩個方法配套使用,wait() 使得線程進入阻塞狀態,它有兩種形式,一種允許 指定以毫秒為單位的一段時間作為參數,另一種沒有參數,前者當對應的 notify() 被調用或者超出指定時間時線程重新進入可執行狀態,后者則必須對應的 notify() 被調用.

    wait(),notify()和suspend(),resume()之間的區別

    初看起來它們與 suspend() 和 resume() 方法對沒有什么分別,但是事實上它們是截然不同的。區別的核心在于,前面敘述的所有方法,阻塞時都不會釋放占用的鎖(如果占用了的話),而這一對方法則相反。上述的核心區別導致了一系列的細節上的區別。

    首先,前面敘述的所有方法都隸屬于 Thread 類,但是這一對卻直接隸屬于 Object 類,也就是說,所有對象都擁有這一對方法。初看起來這十分不可思議,但是實際上卻是很自然的,因為這一對方法阻塞時要釋放占用的鎖,而鎖是任何對象都具有的,調用任意對象的 wait() 方法導致線程阻塞,并且該對象上的鎖被釋放。而調用 任意對象的notify()方法則導致因調用該對象的 wait() 方法而阻塞的線程中隨機選擇的一個解除阻塞(但要等到獲得鎖后才真正可執行)。

    其次,前面敘述的所有方法都可在任何位置調用,但是這一對方法卻必須在 synchronized 方法或塊中調用,理由也很簡單,只有在synchronized 方法或塊中當前線程才占有鎖,才有鎖可以釋放。同樣的道理,調用這一對方法的對象上的鎖必須為當前線程所擁有,這樣才有鎖可以釋放。因此,這一對方法調用必須放置在這樣的 synchronized 方法或塊中,該方法或塊的上鎖對象就是調用這一對方法的對象。若不滿足這一條件,則程序雖然仍能編譯,但在運行時會出現IllegalMonitorStateException 異常。

    wait() 和 notify() 方法的上述特性決定了它們經常和synchronized 方法或塊一起使用,將它們和操作系統的進程間通信機制作一個比較就會發現它們的相似性:synchronized方法或塊提供了類似于操作系統原語的功能,它們的執行不會受到多線程機制的干擾,而這一對方法則相當于 block 和wakeup 原語(這一對方法均聲明為 synchronized)。它們的結合使得我們可以實現操作系統上一系列精妙的進程間通信的算法(如信號量算法),并用于解決各種復雜的線程間通信問題。

    關于 wait() 和 notify() 方法最后再說明兩點:?
    第一:調用 notify() 方法導致解除阻塞的線程是從因調用該對象的 wait() 方法而阻塞的線程中隨機選取的,我們無法預料哪一個線程將會被選擇,所以編程時要特別小心,避免因這種不確定性而產生問題。

    第二:除了 notify(),還有一個方法 notifyAll() 也可起到類似作用,唯一的區別在于,調用 notifyAll() 方法將把因調用該對象的 wait() 方法而阻塞的所有線程一次性全部解除阻塞。當然,只有獲得鎖的那一個線程才能進入可執行狀態。

    談到阻塞,就不能不談一談死鎖,略一分析就能發現,suspend() 方法和不指定超時期限的 wait() 方法的調用都可能產生死鎖。遺憾的是,Java 并不在語言級別上支持死鎖的避免,我們在編程中必須小心地避免死鎖。

    以上我們對 Java 中實現線程阻塞的各種方法作了一番分析,我們重點分析了 wait() 和 notify() 方法,因為它們的功能最強大,使用也最靈活,但是這也導致了它們的效率較低,較容易出錯。實際使用中我們應該靈活使用各種方法,以便更好地達到我們的目的。

    為什么wait()方法和notify()/notifyAll()方法要在同步塊中被調用

    這是JDK強制的,wait()方法和notify()/notifyAll()方法在調用前都必須先獲得對象的鎖

    wait()方法和notify()/notifyAll()方法在放棄對象監視器時有什么區別

    wait()方法和notify()/notifyAll()方法在放棄對象監視器的時候的區別在于:wait()方法立即釋放對象監視器,notify()/notifyAll()方法則會等待線程剩余代碼執行完畢才會放棄對象監視器。

    wait()與sleep()的區別

    關于這兩者已經在上面進行詳細的說明,這里就做個概括好了:

    • sleep()來自Thread類,和wait()來自Object類.調用sleep()方法的過程中,線程不會釋放對象鎖。而 調用 wait 方法線程會釋放對象鎖
    • sleep()睡眠后不出讓系統資源,wait讓其他線程可以占用CPU
    • sleep(milliseconds)需要指定一個睡眠時間,時間一到會自動喚醒.而wait()需要配合notify()或者notifyAll()使用

    synchronized和ReentrantLock的區別

    synchronized是和if、else、for、while一樣的關鍵字,ReentrantLock是類,這是二者的本質區別。既然ReentrantLock是類,那么它就提供了比synchronized更多更靈活的特性,可以被繼承、可以有方法、可以有各種各樣的類變量,ReentrantLock比synchronized的擴展性體現在幾點上:?
    (1)ReentrantLock可以對獲取鎖的等待時間進行設置,這樣就避免了死鎖?
    (2)ReentrantLock可以獲取各種鎖的信息?
    (3)ReentrantLock可以靈活地實現多路通知?
    另外,二者的鎖機制其實也是不一樣的:ReentrantLock底層調用的是Unsafe的park方法加鎖,synchronized操作的應該是對象頭中mark word.

    FutureTask是什么

    這個其實前面有提到過,FutureTask表示一個異步運算的任務。FutureTask里面可以傳入一個Callable的具體實現類,可以對這個異步運算的任務的結果進行等待獲取、判斷是否已經完成、取消任務等操作。當然,由于FutureTask也是Runnable接口的實現類,所以FutureTask也可以放入線程池中。

    一個線程如果出現了運行時異常怎么辦?

    如果這個異常沒有被捕獲的話,這個線程就停止執行了。另外重要的一點是:如果這個線程持有某個某個對象的監視器,那么這個對象監視器會被立即釋放

    如何在兩個線程間共享數據

    通過在線程之間共享對象就可以了,然后通過wait/notify/notifyAll、await/signal/signalAll進行喚起和等待,比方說阻塞隊列BlockingQueue就是為線程之間共享數據而設計的

    如何正確的使用wait()?使用if還是while?

    wait() 方法應該在循環調用,因為當線程獲取到 CPU 開始執行的時候,其他條件可能還沒有滿足,所以在處理前,循環檢測條件是否滿足會更好。下面是一段標準的使用 wait 和 notify 方法的代碼:

    synchronized (obj) {while (condition does not hold)obj.wait(); // (Releases lock, and reacquires on wakeup)... // Perform action appropriate to condition}
    • 1
    • 2
    • 3
    • 4
    • 5
    • 1
    • 2
    • 3
    • 4
    • 5

    什么是線程局部變量

    線程局部變量是局限于線程內部的變量,屬于線程自身所有,不在多個線程間共享。Java提供ThreadLocal類來支持線程局部變量,是一種實現線程安全的方式。但是在管理環境下(如 web 服務器)使用線程局部變量的時候要特別小心,在這種情況下,工作線程的生命周期比任何應用變量的生命周期都要長。任何線程局部變量一旦在工作完成后沒有釋放,Java 應用就存在內存泄露的風險。

    ThreadLoal的作用是什么?

    簡單說ThreadLocal就是一種以空間換時間的做法在每個Thread里面維護了一個ThreadLocal.ThreadLocalMap把數據進行隔離,數據不共享,自然就沒有線程安全方面的問題了.

    生產者消費者模型的作用是什么?

    (1)通過平衡生產者的生產能力和消費者的消費能力來提升整個系統的運行效率,這是生產者消費者模型最重要的作用?
    (2)解耦,這是生產者消費者模型附帶的作用,解耦意味著生產者和消費者之間的聯系少,聯系越少越可以獨自發展而不需要收到相互的制約

    寫一個生產者-消費者隊列

    可以通過阻塞隊列實現,也可以通過wait-notify來實現.

    使用阻塞隊列來實現

    //消費者 public class Producer implements Runnable{ private final BlockingQueue<Integer> queue; public Producer(BlockingQueue q){ this.queue=q; } @Override public void run() { try { while (true){ Thread.sleep(1000);//模擬耗時 queue.put(produce()); } }catch (InterruptedException e){ } } private int produce() { int n=new Random().nextInt(10000); System.out.println("Thread:" + Thread.currentThread().getId() + " produce:" + n); return n; } } //消費者 public class Consumer implements Runnable { private final BlockingQueue<Integer> queue; public Consumer(BlockingQueue q){ this.queue=q; } @Override public void run() { while (true){ try { Thread.sleep(2000);//模擬耗時 consume(queue.take()); }catch (InterruptedException e){ } } } private void consume(Integer n) { System.out.println("Thread:" + Thread.currentThread().getId() + " consume:" + n); } } //測試 public class Main { public static void main(String[] args) { BlockingQueue<Integer> queue=new ArrayBlockingQueue<Integer>(100); Producer p=new Producer(queue); Consumer c1=new Consumer(queue); Consumer c2=new Consumer(queue); new Thread(p).start(); new Thread(c1).start(); new Thread(c2).start(); } }
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67

    使用wait-notify來實現

    該種方式應該最經典,這里就不做說明了

    ConcurrentHashMap的并發度是什么?

    ConcurrentHashMap的并發度就是segment的大小,默認為16,這意味著最多同時可以有16條線程操作ConcurrentHashMap,這也是ConcurrentHashMap對Hashtable的最大優勢,任何情況下,Hashtable能同時有兩條線程獲取Hashtable中的數據嗎?

    CyclicBarrier和CountDownLatch區別

    這兩個類非常類似,都在java.util.concurrent下,都可以用來表示代碼運行到某個點上,二者的區別在于:

    • CyclicBarrier的某個線程運行到某個點上之后,該線程即停止運行,直到所有的線程都到達了這個點,所有線程才重新運行;CountDownLatch則不是,某線程運行到某個點上之后,只是給某個數值-1而已,該線程繼續運行
    • CyclicBarrier只能喚起一個任務,CountDownLatch可以喚起多個任務
    • CyclicBarrier可重用,CountDownLatch不可重用,計數值為0該CountDownLatch就不可再用了

    java中的++操作符線程安全么?

    不是線程安全的操作。它涉及到多個指令,如讀取變量值,增加,然后存儲回內存,這個過程可能會出現多個線程交差

    你有哪些多線程開發良好的實踐?

  • 給線程命名
  • 最小化同步范圍
  • 優先使用volatile
  • 盡可能使用更高層次的并發工具而非wait和notify()來實現線程通信,如BlockingQueue,Semeaphore
  • 優先使用并發容器而非同步容器.
  • 考慮使用線程池

  • 關于volatile關鍵字

    可以創建Volatile數組嗎?

    Java 中可以創建 volatile類型數組,不過只是一個指向數組的引用,而不是整個數組。如果改變引用指向的數組,將會受到volatile 的保護,但是如果多個線程同時改變數組的元素,volatile標示符就不能起到之前的保護作用了

    volatile能使得一個非原子操作變成原子操作嗎?

    一個典型的例子是在類中有一個 long 類型的成員變量。如果你知道該成員變量會被多個線程訪問,如計數器、價格等,你最好是將其設置為 volatile。為什么?因為 Java 中讀取 long 類型變量不是原子的,需要分成兩步,如果一個線程正在修改該 long 變量的值,另一個線程可能只能看到該值的一半(前 32 位)。但是對一個 volatile 型的 long 或 double 變量的讀寫是原子。

    一種實踐是用 volatile 修飾 long 和 double 變量,使其能按原子類型來讀寫。double 和 long 都是64位寬,因此對這兩種類型的讀是分為兩部分的,第一次讀取第一個 32 位,然后再讀剩下的 32 位,這個過程不是原子的,但 Java 中 volatile 型的 long 或 double 變量的讀寫是原子的。volatile 修復符的另一個作用是提供內存屏障(memory barrier),例如在分布式框架中的應用。簡單的說,就是當你寫一個 volatile 變量之前,Java 內存模型會插入一個寫屏障(write barrier),讀一個 volatile 變量之前,會插入一個讀屏障(read barrier)。意思就是說,在你寫一個 volatile 域時,能保證任何線程都能看到你寫的值,同時,在寫之前,也能保證任何數值的更新對所有線程是可見的,因為內存屏障會將其他所有寫的值更新到緩存。

    volatile類型變量提供什么保證?

    volatile 主要有兩方面的作用:1.避免指令重排2.可見性保證.例如,JVM 或者 JIT為了獲得更好的性能會對語句重排序,但是 volatile 類型變量即使在沒有同步塊的情況下賦值也不會與其他語句重排序。 volatile 提供 happens-before 的保證,確保一個線程的修改能對其他線程是可見的。某些情況下,volatile 還能提供原子性,如讀 64 位數據類型,像 long 和 double 都不是原子的(低32位和高32位),但 volatile 類型的 double 和 long 就是原子的.


    關于集合

    Java中的集合及其繼承關系

    關于集合的體系是每個人都應該爛熟于心的,尤其是對我們經常使用的List,Map的原理更該如此.這里我們看這張圖即可:?

    更多內容可見集合類總結

    poll()方法和remove()方法區別?

    poll() 和 remove() 都是從隊列中取出一個元素,但是 poll() 在獲取元素失敗的時候會返回空,但是 remove() 失敗的時候會拋出異常。

    LinkedHashMap和PriorityQueue的區別

    PriorityQueue 是一個優先級隊列,保證最高或者最低優先級的的元素總是在隊列頭部,但是 LinkedHashMap 維持的順序是元素插入的順序。當遍歷一個 PriorityQueue 時,沒有任何順序保證,但是 LinkedHashMap 課保證遍歷順序是元素插入的順序。

    WeakHashMap與HashMap的區別是什么?

    WeakHashMap 的工作與正常的 HashMap 類似,但是使用弱引用作為 key,意思就是當 key 對象沒有任何引用時,key/value 將會被回收。

    ArrayList和LinkedList的區別?

    最明顯的區別是 ArrrayList底層的數據結構是數組,支持隨機訪問,而 LinkedList 的底層數據結構是雙向循環鏈表,不支持隨機訪問。使用下標訪問一個元素,ArrayList 的時間復雜度是 O(1),而 LinkedList 是 O(n)。

    ArrayList和HashMap默認大小?

    在 Java 7 中,ArrayList 的默認大小是 10 個元素,HashMap 的默認大小是16個元素(必須是2的冪)。這就是 Java 7 中 ArrayList 和 HashMap 類的代碼片段

    private static final int DEFAULT_CAPACITY = 10; //from HashMap.java JDK 7 static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // aka 16
    • 1
    • 2
    • 3
    • 4
    • 1
    • 2
    • 3
    • 4

    Comparator和Comparable的區別?

    Comparable 接口用于定義對象的自然順序,而 comparator 通常用于定義用戶定制的順序。Comparable 總是只有一個,但是可以有多個 comparator 來定義對象的順序。

    如何實現集合排序?

    你可以使用有序集合,如 TreeSet 或 TreeMap,你也可以使用有順序的的集合,如 list,然后通過 Collections.sort() 來排序。

    如何打印數組內容

    你可以使用 Arrays.toString() 和 Arrays.deepToString() 方法來打印數組。由于數組沒有實現 toString() 方法,所以如果將數組傳遞給 System.out.println() 方法,將無法打印出數組的內容,但是 Arrays.toString() 可以打印每個元素。

    LinkedList的是單向鏈表還是雙向?

    雙向循環列表,具體實現自行查閱源碼.

    TreeMap是實現原理

    采用紅黑樹實現,具體實現自行查閱源碼.

    遍歷ArrayList時如何正確移除一個元素

    該問題的關鍵在于面試者使用的是 ArrayList 的 remove() 還是 Iterator 的 remove()方法。這有一段示例代碼,是使用正確的方式來實現在遍歷的過程中移除元素,而不會出現 ConcurrentModificationException 異常的示例代碼。

    什么是ArrayMap?它和HashMap有什么區別?

    ArrayMap是Android SDK中提供的,非Android開發者可以略過.?
    ArrayMap是用兩個數組來模擬map,更少的內存占用空間,更高的效率.?
    具體參考這篇文章:ArrayMap VS HashMap

    HashMap的實現原理

    1 HashMap概述: HashMap是基于哈希表的Map接口的非同步實現。此實現提供所有可選的映射操作,并允許使用null值和null鍵。此類不保證映射的順序,特別是它不保證該順序恒久不變。?
    2 HashMap的數據結構: 在java編程語言中,最基本的結構就是兩種,一個是數組,另外一個是模擬指針(引用),所有的數據結構都可以用這兩個基本結構來構造的,HashMap也不例外。HashMap實際上是一個“鏈表散列”的數據結構,即數組和鏈表的結合體。

    當我們往Hashmap中put元素時,首先根據key的hashcode重新計算hash值,根絕hash值得到這個元素在數組中的位置(下標),如果該數組在該位置上已經存放了其他元素,那么在這個位置上的元素將以鏈表的形式存放,新加入的放在鏈頭,最先加入的放入鏈尾.如果數組中該位置沒有元素,就直接將該元素放到數組的該位置上.

    你了解Fail-Fast機制嗎

    Fail-Fast即我們常說的快速失敗,更多內容參看fail-fast機制


    關于日期

    SimpleDateFormat是線程安全的嗎?

    非常不幸,DateFormat 的所有實現,包括 SimpleDateFormat 都不是線程安全的,因此你不應該在多線程序中使用,除非是在對外線程安全的環境中使用,如 將 SimpleDateFormat 限制在 ThreadLocal 中。如果你不這么做,在解析或者格式化日期的時候,可能會獲取到一個不正確的結果。因此,從日期、時間處理的所有實踐來說,我強力推薦 joda-time 庫。

    如何格式化日期?

    Java 中,可以使用 SimpleDateFormat 類或者 joda-time 庫來格式日期。DateFormat 類允許你使用多種流行的格式來格式化日期。參見答案中的示例代碼,代碼中演示了將日期格式化成不同的格式,如 dd-MM-yyyy 或 ddMMyyyy。


    關于異常

    簡單描述java異常體系

    相比沒有人不了解異常體系,關于異常體系的更多信息可以見:白話異常機制

    什么是異常鏈

    詳情直接參見白話異常機制,不做解釋了.

    throw和throws的區別

    throw用于主動拋出java.lang.Throwable 類的一個實例化對象,意思是說你可以通過關鍵字 throw 拋出一個 Error 或者 一個Exception,如:throw new IllegalArgumentException(“size must be multiple of 2″),?
    而throws 的作用是作為方法聲明和簽名的一部分,方法被拋出相應的異常以便調用者能處理。Java 中,任何未處理的受檢查異常強制在 throws 子句中聲明。


    關于序列化

    Java 中,Serializable 與 Externalizable 的區別

    Serializable 接口是一個序列化 Java 類的接口,以便于它們可以在網絡上傳輸或者可以將它們的狀態保存在磁盤上,是 JVM 內嵌的默認序列化方式,成本高、脆弱而且不安全。Externalizable 允許你控制整個序列化過程,指定特定的二進制格式,增加安全機制。


    關于JVM

    JVM特性

    平臺無關性.?
    Java語言的一個非常重要的特點就是與平臺的無關性。而使用Java虛擬機是實現這一特點的關鍵。一般的高級語言如果要在不同的平臺上運行,至少需要編譯成不同的目標代碼。而引入Java語言虛擬機后,Java語言在不同平臺上運行時不需要重新編譯。Java語言使用模式Java虛擬機屏蔽了與具體平臺相關的信息,使得Java語言編譯程序只需生成在Java虛擬機上運行的目標代碼(字節碼),就可以在多種平臺上不加修改地運行。Java虛擬機在執行字節碼時,把字節碼解釋成具體平臺上的機器指令執行。

    簡單解釋一下類加載器

    有關類加載器一般會問你四種類加載器的應用場景以及雙親委派模型,更多的內容參看深入理解JVM加載器

    簡述堆和棧的區別

    VM 中堆和棧屬于不同的內存區域,使用目的也不同。棧常用于保存方法幀和局部變量,而對象總是在堆上分配。棧通常都比堆小,也不會在多個線程之間共享,而堆被整個 JVM 的所有線程共享。

    簡述JVM內存分配

  • 基本數據類型比變量和對象的引用都是在棧分配的
  • 堆內存用來存放由new創建的對象和數組
  • 類變量(static修飾的變量),程序在一加載的時候就在堆中為類變量分配內存,堆中的內存地址存放在棧中
  • 實例變量:當你使用java關鍵字new的時候,系統在堆中開辟并不一定是連續的空間分配給變量,是根據零散的堆內存地址,通過哈希算法換算為一長串數字以表征這個變量在堆中的”物理位置”,實例變量的生命周期–當實例變量的引用丟失后,將被GC(垃圾回收器)列入可回收“名單”中,但并不是馬上就釋放堆中內存
  • 局部變量: 由聲明在某方法,或某代碼段里(比如for循環),執行到它的時候在棧中開辟內存,當局部變量一但脫離作用域,內存立即釋放

  • 其他

    java當中采用的是大端還是小端?

    XML解析的幾種方式和特點

    DOM,SAX,PULL三種解析方式:

    • DOM:消耗內存:先把xml文檔都讀到內存中,然后再用DOM API來訪問樹形結構,并獲取數據。這個寫起來很簡單,但是很消耗內存。要是數據過大,手機不夠牛逼,可能手機直接死機
    • SAX:解析效率高,占用內存少,基于事件驅動的:更加簡單地說就是對文檔進行順序掃描,當掃描到文檔(document)開始與結束、元素(element)開始與結束、文檔(document)結束等地方時通知事件處理函數,由事件處理函數做相應動作,然后繼續同樣的掃描,直至文檔結束。
    • PULL:與 SAX 類似,也是基于事件驅動,我們可以調用它的next()方法,來獲取下一個解析事件(就是開始文檔,結束文檔,開始標簽,結束標簽),當處于某個元素時可以調用XmlPullParser的getAttributte()方法來獲取屬性的值,也可調用它的nextText()獲取本節點的值。

    JDK 1.7特性

    然 JDK 1.7 不像 JDK 5 和 8 一樣的大版本,但是,還是有很多新的特性,如 try-with-resource 語句,這樣你在使用流或者資源的時候,就不需要手動關閉,Java 會自動關閉。Fork-Join 池某種程度上實現 Java 版的 Map-reduce。允許 Switch 中有 String 變量和文本。菱形操作符(\<>)用于類型推斷,不再需要在變量聲明的右邊申明泛型,因此可以寫出可讀寫更強、更簡潔的代碼

    JDK 1.8特性

    java 8 在 Java 歷史上是一個開創新的版本,下面 JDK 8 中 5 個主要的特性:?
    Lambda 表達式,允許像對象一樣傳遞匿名函數?
    Stream API,充分利用現代多核 CPU,可以寫出很簡潔的代碼?
    Date 與 Time API,最終,有一個穩定、簡單的日期和時間庫可供你使用?
    擴展方法,現在,接口中可以有靜態、默認方法。?
    重復注解,現在你可以將相同的注解在同一類型上使用多次。

    Maven和ANT有什么區別?

    雖然兩者都是構建工具,都用于創建 Java 應用,但是 Maven 做的事情更多,在基于“約定優于配置”的概念下,提供標準的Java 項目結構,同時能為應用自動管理依賴(應用中所依賴的 JAR 文件),Maven 與 ANT 工具更多的不同之處請參見答案。?
    這就是所有的面試題,如此之多,是不是?我可以保證,如果你能回答列表中的所有問題,你就可以很輕松的應付任何核心 Java 或者高級 Java 面試。雖然,這里沒有涵蓋 Servlet、JSP、JSF、JPA,JMS,EJB 及其它?Java EE?技術,也沒有包含主流的框架如?spring?MVC,Struts 2.0,hibernate,也沒有包含 SOAP 和 RESTful web service,但是這份列表對做 Java 開發的、準備應聘 Java web 開發職位的人還是同樣有用的,因為所有的 Java 面試,開始的問題都是 Java 基礎和 JDK API 相關的。如果你認為我這里有任何應該在這份列表中而被我遺漏了的 Java 流行的問題,你可以自由的給我建議。我的目的是從最近的面試中創建一份最新的、最優的 Java 面試問題列表。

    JDBC最佳實踐

    • 優先使用批量操作來插入和更新數據
    • 使用PreparedStatement來避免SQL漏洞
    • 使用數據連接池
    • 通過列名來獲取結果集

    IO操作最佳實踐

  • 使用有緩沖的IO類,不要單獨讀取字節或字符
  • 使用NIO和NIO 2或者AIO,而非BIO
  • 在finally中關閉流
  • 使用內存映射文件獲取更快的IO
  • 轉載于:https://www.cnblogs.com/lxchma/p/6427981.html

    總結

    以上是生活随笔為你收集整理的JAva面试题(微信分享)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    久在线观看视频 | 久久久久久蜜桃一区二区 | 欧美日韩高清一区 | 国产精品久久久久久久妇 | 国产色拍拍拍拍在线精品 | www99久久| 成人91在线观看 | 精品在线观看一区二区三区 | 黄色com| 国产99久久99热这里精品5 | 国产伦精品一区二区三区四区视频 | 免费99| 一区二区理论片 | 久草在线99| av不卡中文字幕 | 99久久99久久精品国产片果冰 | 一区二区视频免费在线观看 | 久人人| 手机看片国产日韩 | 免费三级黄色片 | 国产精品理论视频 | 五月婷丁香网 | 亚洲精品久久久久久久不卡四虎 | 久久国产亚洲视频 | 欧美日韩在线观看一区二区三区 | 91九色蝌蚪国产 | 五月天堂色 | 国产伦精品一区二区三区无广告 | 日本一区二区三区免费看 | 中文字幕综合在线 | 国产精品久久久久三级 | 手机看片 | 欧美视频不卡 | 精品久久久久国产 | 欧美黑人巨大xxxxx | 在线精品视频免费观看 | 国产亚洲成人网 | 国产1级视频 | 国内精品久久久久久 | 亚洲免费小视频 | 亚洲精品人人 | 久久99精品国产91久久来源 | 国产又粗又猛又爽又黄的视频免费 | 99精品视频在线看 | 首页国产精品 | 欧美在线一级片 | 午夜影视av | 黄色在线观看免费网站 | 日本中文字幕在线播放 | 婷婷伊人五月天 | 国产99久久九九精品免费 | 欧美日韩一区二区三区免费视频 | 亚洲综合色av | 国产精品伦一区二区三区视频 | 欧美黑人猛交 | 99久久久久久久久 | 天天操天天操一操 | 91日韩在线专区 | 欧美一级片免费播放 | 五月婷婷久久丁香 | 黄色成人毛片 | 日本中文在线播放 | 亚洲一级在线观看 | www.xxx.性狂虐 | 国产精品久久综合 | .国产精品成人自产拍在线观看6 | 五月婷婷视频在线 | 国偷自产中文字幕亚洲手机在线 | 久久短视频 | 99免费在线视频观看 | 亚洲视频999 | 免费三级大片 | 美女国内精品自产拍在线播放 | 日韩资源视频 | 亚洲黄色成人网 | a黄色大片| 黄污视频网站 | 久久久一本精品99久久精品 | 精品国产乱码久久久久久天美 | 精品国产欧美一区二区三区不卡 | 在线不卡中文字幕播放 | 97日日碰人人模人人澡分享吧 | 国产成人久久精品一区二区三区 | 成年人三级网站 | 中文字幕免费在线看 | 黄色片软件网站 | 麻豆视频一区二区 | 又紧又大又爽精品一区二区 | 成人污视频在线观看 | 欧美一级日韩免费不卡 | 99精品视频在线观看视频 | 又色又爽又黄高潮的免费视频 | 亚洲综合在线五月天 | 亚洲精品免费在线视频 | 天天综合网久久 | 久久综合免费视频 | 久久精品视频在线观看 | 午夜丁香视频在线观看 | 亚洲视频网站在线观看 | 毛片99| 国产成人精品女人久久久 | 午夜精品久久久久久久爽 | av三区在线 | av成人黄色 | 免费观看日韩 | 新版资源中文在线观看 | 91麻豆网站 | 国产精品久久久久久久久久不蜜月 | 亚洲1区在线 | 夜夜天天干 | 免费成人结看片 | 国产成人三级一区二区在线观看一 | 国产在线观看你懂的 | 91人人网| 色综合天天狠天天透天天伊人 | av线上免费看 | 一级片视频在线 | 亚洲国产成人精品在线观看 | 久久狠狠亚洲综合 | 在线精品视频免费播放 | 激情小说网站亚洲综合网 | 91在线一区 | 国产在线更新 | 国产日本高清 | 日韩精品免费一区二区三区 | 天天干天天操天天射 | 成年人在线看视频 | 久久99精品久久只有精品 | 午夜国产影院 | 亚洲一区免费在线 | 色资源网免费观看视频 | 欧美日韩另类在线观看 | 99久久精品免费看国产 | 成人a免费看 | 日本一区二区高清不卡 | 日日爱视频| 在线中文字幕视频 | 一区二区三区免费在线播放 | 超级碰99| 久久国产一二区 | 国产剧情在线一区 | 91精品在线播放 | 去看片 | 婷婷综合五月天 | 最新99热| 在线91精品| 91九色精品女同系列 | 66av99精品福利视频在线 | 久久综合免费视频影院 | 国产午夜精品福利视频 | 综合影视 | 蜜臀久久99精品久久久酒店新书 | 色中射 | 国产一区二区三区免费观看视频 | 九色免费视频 | 91精选在线| 久久精品5| 国内丰满少妇猛烈精品播 | 草草草影院| 99精品在线| 国产亚洲精品成人av久久影院 | 久久久黄视频 | 国产一区二区三区午夜 | 成人蜜桃视频 | 四虎国产精品成人免费4hu | 在线中文字幕网站 | 69av久久| av高清一区二区三区 | 探花视频在线版播放免费观看 | 国产福利精品在线观看 | 午夜视频在线观看欧美 | 91亚洲精品乱码久久久久久蜜桃 | 九九九免费视频 | 日韩av在线高清 | 91免费观看视频网站 | 欧美日韩中文在线观看 | 天天操天天操天天操天天操天天操 | 成人在线观看av | 99久久久久久国产精品 | 国产美女搞久久 | 91视频在线免费 | 综合网天天 | 亚洲精品玖玖玖av在线看 | 亚洲视频,欧洲视频 | 午夜色影院 | 99视频精品 | 国产精品丝袜久久久久久久不卡 | www.狠狠色.com| 日韩精品高清不卡 | 亚洲午夜av久久乱码 | 国产黄在线 | 精品国产一区在线观看 | 国产中文在线播放 | 激情 一区二区 | 成全免费观看视频 | 中文在线字幕免 | 福利一区二区在线 | 爱干视频 | 国产日韩在线看 | 91九色国产蝌蚪 | 国产视频不卡一区 | 精品美女视频 | 国产成人精品综合久久久久99 | 99视频在线精品国自产拍免费观看 | 六月丁香在线观看 | 日日日操 | 婷婷九月丁香 | 国产综合激情 | 欧美精品v国产精品v日韩精品 | 又黄又爽又无遮挡免费的网站 | 九色自拍视频 | 激情视频区 | .国产精品成人自产拍在线观看6 | 手机在线看a | 9在线观看免费 | 亚洲精品中文字幕在线 | 日韩大陆欧美高清视频区 | 色婷婷视频在线观看 | 久久新 | 国产精品11 | 欧美日韩高清一区二区三区 | 国产又粗又猛又黄又爽视频 | 精品国产精品一区二区夜夜嗨 | 国产精品一区二区在线播放 | 国产精品v欧美精品 | 最近中文字幕mv免费高清在线 | 成年人电影毛片 | 一本—道久久a久久精品蜜桃 | 91视频免费视频 | 97精品国产97久久久久久粉红 | a黄在线观看 | 一级黄色大片 | 爱av在线网 | 香蕉影视在线观看 | 亚洲黄色av网址 | 最近2019中文免费高清视频观看www99 | 91九色精品女同系列 | 久久综合九色综合97_ 久久久 | 久久久精品 一区二区三区 国产99视频在线观看 | 91av色 | 免费黄色激情视频 | 久草网在线观看 | 国产一区二区观看 | 久久久久久久久久网站 | 四虎精品成人免费网站 | 午夜性色| 中文国产字幕 | 国产精品美女久久久网av | 91成人精品国产刺激国语对白 | 在线免费黄色毛片 | 一个色综合网站 | 免费在线观看一级片 | 97成人超碰| www.夜夜操.com | 欧美不卡视频在线 | 2023年中文无字幕文字 | 久久天堂精品视频 | 中文字幕在线观看视频网站 | 99精品视频在线 | 国产精品女视频 | 国产精品普通话 | 中文字幕在线观看免费高清完整版 | 不卡中文字幕在线 | 色在线视频网 | 青青久草在线视频 | 中文在线a在线 | 亚洲色综合| 成人四虎影院 | 日日爱av| 狂野欧美激情性xxxx欧美 | 超碰在线观看av | 欧美午夜久久久 | 免费日韩 精品中文字幕视频在线 | 国内精品亚洲 | 综合色亚洲| 欧美一区二视频在线免费观看 | 欧美在线视频日韩 | www久久| 久久成年人网站 | 久久美女免费视频 | 一级特黄aaa大片在线观看 | 免费a网址 | 亚欧日韩av | 免费欧美| 亚洲男模gay裸体gay | 天天操 夜夜操 | 免费的黄色的网站 | 国产精品 日韩 | 91日韩精品视频 | 一级a毛片高清视频 | 黄色一级大片免费看 | 久久精品影视 | 免费成人av电影 | 麻豆一精品传二传媒短视频 | 天天操狠狠操 | 午夜婷婷在线观看 | 91久色蝌蚪 | 91精选在线观看 | 久久99精品久久久久久 | 欧美另类一二三四区 | 99精品久久久久久久久久综合 | 久久这里只有精品视频首页 | 亚洲国产大片 | 久色网 | 久青草电影 | 久操视频在线免费看 | 91精品国产一区二区三区 | 91香蕉视频黄 | 九色porny真实丨国产18 | 中文字幕国产精品一区二区 | www.黄色网.com | 国产亚州av| 午夜美女视频 | 狠狠色噜噜狠狠狠狠 | 麻豆视频在线播放 | 日韩三级视频 | 91黄色小视频 | 91中文字幕永久在线 | 99久久精品国产观看 | 日韩欧美一区二区在线 | 在线a人v观看视频 | 欧美专区日韩专区 | 97视频免费在线观看 | 深夜男人影院 | 91人人爱 | 天天操操操操操操 | 91亚色在线观看 | 久久久久久久综合色一本 | 欧美日韩在线播放 | 国产高清绿奴videos | 日本xxxxav| 狠狠的干狠狠的操 | 中字幕视频在线永久在线观看免费 | 六月婷色| 三级黄色片在线观看 | 精品福利视频在线 | 玖玖色在线观看 | 日本3级在线观看 | 91看片在线 | 啪啪动态视频 | 一区二区精 | 午夜电影 电影 | 黄色大片视频网站 | 中文字幕av影院 | 中文字幕日韩高清 | 日韩二区三区在线 | 午夜国产福利在线 | 欧美精品一区二区在线播放 | 国产五月天婷婷 | 久草9视频 | 99r精品视频在线观看 | 免费看国产a | av电影免费看| 久章草在线观看 | 欧美激情在线看 | 手机在线看片日韩 | 激情九九| 一区二区三区精品在线视频 | av电影一区 | 欧美日韩1区2区 | 97夜夜澡人人爽人人免费 | 欧美成人基地 | 久久网页 | 伊人中文在线 | 久久男女视频 | 美女久久网站 | 午夜精品导航 | 天天玩天天操天天射 | 国产美女在线精品免费观看 | 亚洲人久久久 | 香蕉成人在线视频 | 观看免费av| 精品在线看 | 中文字幕在线观看三区 | 亚洲aⅴ乱码精品成人区 | www.狠狠| 国产专区视频在线观看 | 久久久久久久久毛片精品 | 91福利社区在线观看 | 97视频免费看 | 国产成人高清 | 久久亚洲欧美日韩精品专区 | 天天射天 | 手机看片国产 | 亚洲视频 中文字幕 | 色噜噜狠狠狠狠色综合 | 国产精品久久婷婷六月丁香 | 超碰97国产在线 | 成人av.com| 中文字幕一区在线 | av高清免费| 色就色,综合激情 | 久久国产片 | 青草视频免费观看 | 天天摸天天干天天操天天射 | 夜夜夜夜爽 | 在线国产精品视频 | av黄色亚洲| 西西人体4444www高清视频 | 久久精品国产亚洲精品 | 色全色在线资源网 | 91大神电影 | 99久久毛片 | 欧美在线a视频 | 天天干干| 日本三级中文字幕在线观看 | 91av手机在线 | 国产不卡在线看 | 欧美色图视频一区 | 色在线免费 | 国产一级二级三级视频 | 久久精品国产99国产 | 就要干b| 国产高清在线精品 | 毛片888| 69久久夜色精品国产69 | 激情欧美在线观看 | 一级成人免费视频 | 国产亚洲视频系列 | 色97在线| 日韩精品久久久久久久电影竹菊 | 国产精品久久久久久久久久白浆 | 日韩中文字幕第一页 | 丁香影院在线 | 国产中文字幕一区 | 99福利片| 激情 婷婷| 欧美日韩亚洲第一页 | 一区二区不卡 | 狠狠狠狠狠狠狠狠干 | 欧美日韩久久不卡 | 在线观看视频福利 | 美女久久视频 | 国产亚洲婷婷免费 | 亚洲精品女人久久久 | 九九九九免费视频 | 久插视频 | 亚洲欧美色婷婷 | 久久精品中文字幕免费mv | 国产美女精彩久久 | 久久国产经典 | 久久精精品| 韩国av一区二区三区 | 久章草在线 | 青草视频免费观看 | 中文在线字幕免费观看 | 亚洲精品日韩av | 精品国产一区二区在线 | 黄网站色视频免费观看 | 狠狠狠狠狠狠狠狠 | 天天干天天干天天色 | 中文av影院 | 国产v在线播放 | 国产精品日韩高清 | 六月天综合网 | 亚洲一区二区视频在线 | 91av视频网站 | 精品久久一区 | 国产高清福利在线 | 国产a级免费 | 久草视频国产 | 在线视频日韩欧美 | 久视频在线播放 | 国产高清不卡 | 国产精品久久久久久久午夜片 | 亚洲一区网 | 久久艹精品| 另类老妇性bbwbbw高清 | 一区二区 久久 | 一区中文字幕电影 | 国产精品国产三级国产专区53 | 婷五月激情 | 999久久久久久久久6666 | www.狠狠操| 激情五月av | 久久在线观看视频 | 91av视频在线免费观看 | 成人免费观看完整版电影 | 中文字幕一区在线观看视频 | 91成年人在线观看 | 超碰在线日韩 | 国产精品一区二区无线 | 一级理论片在线观看 | 久久久久久久久久久综合 | 日本久久精品视频 | 国产999免费视频 | 天天插综合网 | 最近的中文字幕大全免费版 | 日本久久电影网 | 99久热在线精品 | 午夜精品久久久久久久爽 | 99精品在线免费在线观看 | 99久久久免费视频 | 日韩一级电影在线 | 亚洲精品乱码久久久久久蜜桃欧美 | 久久久久久久免费观看 | 国产福利一区二区在线 | 国产色久 | av免费在线播放 | av免费片 | 精品久久久久久久久久国产 | 欧美日韩国产二区三区 | 免费色视频网址 | 亚洲视频456| 精品欧美乱码久久久久久 | 天天插综合网 | 午夜视频播放 | 二区精品视频 | 97超碰在线免费 | 91刺激视频 | 欧美日本中文字幕 | 国产精品成人av久久 | 精品国产一区二区三区蜜臀 | 在线看一区二区 | 国产精品九九九 | 久久夜av | 久草在线最新免费 | 成人av在线直播 | 成人国产网址 | 国产第页| 免费高清在线视频一区· | 国产精品久久久久永久免费看 | 婷婷精品在线 | 午夜精品电影一区二区在线 | 高清不卡毛片 | 免费在线观看毛片网站 | 欧美日韩一区二区三区在线观看视频 | 国产精品久久久久aaaa | 亚洲精品视频www | 日韩一级片观看 | 视频一区亚洲 | 婷婷精品国产一区二区三区日韩 | 色在线中文字幕 | 久草网站在线 | 亚洲精品午夜久久久久久久久久久 | 91成人免费电影 | 国产精品毛片久久久 | av在线电影免费观看 | 色姑娘综合天天 | 日本超碰在线 | 中文字幕av免费观看 | 久久精品99国产精品酒店日本 | 久久一区二区三区超碰国产精品 | 国产一级二级av | 一区二区三区免费在线播放 | 日韩有码网站 | 久久久久久久看片 | 一本一本久久a久久精品牛牛影视 | 麻豆网站免费观看 | 黄色在线网站噜噜噜 | 久久精品欧美一 | 天天爱综合 | 在线观看视频99 | 丝袜美腿亚洲综合 | 日日爱网站 | 五月婷婷综合在线视频 | 99热精品久久 | 草久久久久久 | 国产精品久久久久久久久久免费 | 精品国产一区二区三区久久影院 | 久久精品99视频 | 成人羞羞视频在线观看免费 | 2020天天干夜夜爽 | 亚洲综合网站在线观看 | 在线看黄网站 | 18pao国产成视频永久免费 | 亚洲综合小说电影qvod | 久久草精品 | 日本高清免费中文字幕 | 草在线| 国产91av视频在线观看 | 99视频精品 | 91视频免费 | 国产夫妻av在线 | 日韩精品在线看 | 在线欧美小视频 | 亚洲一区二区三区91 | 国产精品入口久久 | av免费网页| 婷婷六月久久 | 日韩xxxbbb | 美女视频黄在线 | 黄色网中文字幕 | 精品久久久久久久久久岛国gif | 国产精品高潮久久av | 精品国产_亚洲人成在线 | 色综合久久中文综合久久牛 | 99久久久久久久久 | 国产精品欧美久久久久久 | 久久久一本精品99久久精品66 | 亚洲成人麻豆 | 久久久久久久久久久精 | 日韩欧美一区视频 | 国产欧美精品一区二区三区四区 | 国产亚洲欧美一区 | 岛国av在线免费 | 成人av影视在线 | 五月天高清欧美mv | 99久久精品国产欧美主题曲 | 久久久精品国产一区二区三区 | 久久日本视频 | av解说在线观看 | 日本不卡久久 | av一级久久 | 国产二区视频在线观看 | 亚洲美女视频在线观看 | 精品在线播放视频 | 国产成人精品电影久久久 | 日韩在线不卡视频 | 欧美一区二区日韩一区二区 | 欧美激情综合五月色丁香小说 | 欧美精品久久久久久久亚洲调教 | 亚洲精品久久激情国产片 | 在线观看国产高清视频 | 麻豆国产精品va在线观看不卡 | 天天干干 | 精品国产一二区 | www.av中文字幕.com | 在线免费观看黄色大片 | 国产精品久久一区二区三区不卡 | 亚洲午夜精品在线观看 | 97人人超碰在线 | 国产精品手机在线 | 精品美女国产在线 | 国产97在线观看 | 亚洲免费av在线播放 | 精品国产一区二区三区在线观看 | 在线播放视频一区 | 久久久99精品免费观看 | 欧美日韩在线视频免费 | 天天玩夜夜操 | 片网址| 亚洲天堂首页 | 成年人在线观看视频免费 | 人人玩人人添人人澡97 | 丰满少妇在线观看网站 | 韩国精品一区二区三区六区色诱 | 午夜神马福利 | 欧美日韩中| 久久精品99国产精品 | 国产小视频在线免费观看视频 | 久久精品国产免费看久久精品 | 精品久久久久久亚洲综合网 | 国产精品成人自产拍在线观看 | 婷婷国产在线 | 91精品爽啪蜜夜国产在线播放 | 日韩黄色免费电影 | 91在线国内视频 | 一区三区视频在线观看 | 尤物97国产精品久久精品国产 | 五月婷婷开心 | 欧美日韩91 | 日韩影视在线观看 | 最新av在线网站 | 久久久久久久久爱 | 精品国产电影 | 激情欧美一区二区三区 | 中文字幕不卡在线88 | 久草视频在线资源 | 日韩精品视频在线观看网址 | 日韩精品高清不卡 | 一区二区三区精品在线 | 久草五月 | 日韩av手机在线看 | 成人毛片一区 | 最近日本韩国中文字幕 | 欧美另类交在线观看 | 天天干中文字幕 | 狠狠狠色狠狠色综合 | 国产精品久久久久久久久久久久 | 96超碰在线 | 丁香婷婷综合五月 | 成人黄色大片网站 | 99视频精品| 日韩免费一级电影 | 999久久国精品免费观看网站 | 国产精品福利视频 | 国产资源精品 | 国产精品麻豆一区二区三区 | 在线不卡视频 | 99久久精品午夜一区二区小说 | 亚洲精品国偷拍自产在线观看蜜桃 | 免费在线观看成人 | 国产一二三四在线视频 | 免费观看黄色av | 免费看的黄色网 | 欧洲视频一区 | 区一区二在线 | av性在线| 国产精品99久久久久久宅男 | 亚洲综合色婷婷 | 黄色av影视 | 99免费在线播放99久久免费 | 国产香蕉av| 亚洲精品午夜aaa久久久 | 欧美91精品久久久久国产性生爱 | 91亚洲精品久久久久图片蜜桃 | 精品亚洲一区二区 | 国产精品美女在线 | 五月激情丁香婷婷 | 国内视频一区二区 | 久色免费视频 | 91麻豆精品国产自产在线 | 天天插天天狠 | 国产系列 在线观看 | 亚洲精品久久久久www | 久久伊人操 | 在线成人欧美 | 午夜久久福利 | 黄色av三级在线 | 国产又黄又硬又爽 | 国产精品黄色 | 天天干国产 | 香蕉精品视频在线观看 | 91av观看| 欧美日韩免费网站 | 美女视频黄频大全免费 | 亚洲五月激情 | 亚洲天堂网在线观看视频 | 久久久高清 | 伊人婷婷色 | 国产精品中文字幕在线观看 | 国产一区二区久久精品 | av黄色在线 | 四虎影视成人永久免费观看视频 | 中文在线免费一区三区 | 国产麻豆视频 | 成人va在线观看 | 日本韩国精品在线 | 婷婷成人亚洲综合国产xv88 | 欧美日韩免费在线视频 | 日韩在线免费电影 | 久久香蕉电影网 | 欧美少妇bbwhd| 午夜精品影院 | 亚洲国产视频a | 在线观看中文字幕av | 国产在线观看中文字幕 | 日日麻批40分钟视频免费观看 | 亚洲午夜精品电影 | 欧美韩国日本在线观看 | 久久久久久综合网天天 | 91在线中文字幕 | 亚洲成人资源网 | 国产xxxx | 视频99爱| 中文字幕激情 | 日韩xxxbbb | 99久久精品国产欧美主题曲 | 精品综合久久 | 免费久久99精品国产 | 日韩av专区 | 在线观看视频在线观看 | 久久99国产精品久久99 | 亚洲欧美视频一区二区三区 | 国产中文字幕91 | 中文字幕观看在线 | 欧美精品亚洲精品 | 久久国产精品一区二区三区四区 | 国产成人性色生活片 | 国产天天综合 | 97在线观| 日本在线观看一区二区 | 久草在线视频首页 | 欧美三级在线播放 | 国产v在线观看 | 久久久免费毛片 | 岛国av在线 | 日韩精品在线视频免费观看 | 国产免费xvideos视频入口 | 黄色aa久久| 亚洲精品视频免费看 | 日韩在线视频线视频免费网站 | 国产视频一区精品 | 久久国产精品99久久人人澡 | 日韩中文字幕国产精品 | 日韩成年视频 | 17婷婷久久www | 在线观看日本韩国电影 | 亚洲欧美激情精品一区二区 | 91成人免费 | 国产精彩视频一区二区 | 色婷婷在线视频 | 97成人精品 | 久久在线一区 | 日韩欧美国产成人 | 国产精品视频在线看 | 成人a毛片| 日本mv大片欧洲mv大片 | 最新中文在线视频 | av黄色在线播放 | 99国产一区 | 日韩午夜电影 | 九九热精品在线 | 日日干天夜夜 | 日韩欧美一区二区三区在线 | 成人一区不卡 | 免费观看91视频大全 | 欧美在线1区 | 日本女人在线观看 | 久99久久| 国产小视频你懂的在线 | 97视频网址 | 精品中文字幕视频 | 中文免费观看 | www.888av| 色综合久久久久久久久五月 | 一区二区欧美激情 | 国产香蕉视频在线播放 | av在线播放快速免费阴 | 亚洲 欧洲av | 亚洲国产中文字幕 | 色欧美成人精品a∨在线观看 | 伊人伊成久久人综合网小说 | 久久视频网址 | 五月天六月色 | 日日综合 | 久久精品视频4 | 国产在线播放一区二区三区 | 欧洲在线免费视频 | 成人a v视频 | 国精产品999国精产 久久久久 | 婷婷丁香九月 | 亚洲国产美女精品久久久久∴ | 99久久精品免费看国产 | 最新国产精品久久精品 | 在线观看免费一区 | 久久伊人国产精品 | 久久无码av一区二区三区电影网 | 黄色午夜网站 | 狠狠色丁香婷婷综合最新地址 | 草莓视频在线观看免费观看 | 成人影片在线免费观看 | 蜜臀久久99精品久久久无需会员 | 天天色天天草天天射 | 国产精品欧美一区二区 | 91视频免费 | av电影在线免费观看 | 国产在线视频在线观看 | 天天干天天在线 | 日韩在线免费电影 | 久久人人爽人人爽人人片av免费 | 久久99精品国产91久久来源 | 国产一区在线观看视频 | 日本一区二区三区视频在线播放 | 亚洲精品福利在线 | 免费看一级片 | 中国精品一区二区 | 亚洲激情久久 | 97超碰在线久草超碰在线观看 | 天天操夜操视频 | 中文高清av | 久久久久久久久福利 | 国产裸体永久免费视频网站 | 日韩色一区二区三区 | 日本二区三区在线 | 这里只有精品视频在线观看 | 丁香视频全集免费观看 | 99视频一区二区 | 国产九九九九九 | 国产精品久久久久9999吃药 | 中文欧美字幕免费 | 少妇搡bbbb搡bbb搡aa | 久久久高清 | 久久久国产精品一区二区三区 | 国产福利91精品 | 五月天综合婷婷 | 中文字幕4| 天天操网站 | 日韩电影一区二区三区 | 欧美激情精品久久久 | 最新国产在线视频 | 婷婷丁香狠狠爱 | 欧美日视频 | 国产精品福利在线观看 | 久久99精品久久只有精品 | 国产午夜精品福利视频 | 国产原创在线视频 | 五月婷婷激情六月 | 四川妇女搡bbbb搡bbbb搡 | 久草在线精品观看 | 99在线视频免费观看 | 国产男女无遮挡猛进猛出在线观看 | 日韩一区二区三区高清免费看看 | 中文字幕亚洲不卡 | 麻豆精品传媒视频 | 香蕉精品视频在线观看 | 少妇bbr搡bbb搡bbb | 成人资源在线观看 | 精品国产伦一区二区三区观看体验 | 国产免费观看视频 | 免费午夜视频在线观看 | 久久第四色 | 亚洲天堂网视频在线观看 | 午夜91在线 | 中文字幕第一页在线视频 | 天天天天干 | 欧洲精品久久久久毛片完整版 | 久久福利综合 | 免费观看av网站 | 国产一二三区av | 成人av免费网站 | 欧美日韩国产精品久久 | 国产一区黄色 | 免费三级黄色 | 97超碰在线免费 | 久草免费新视频 | 99精品国产一区二区三区不卡 | 亚洲欧美日韩精品久久久 | 91天堂素人约啪 | 在线亚洲人成电影网站色www | 久久久久欧美精品 | 97视频免费| 国产亚洲成av人片在线观看桃 | 亚洲天堂精品视频在线观看 | 久久精品视频在线播放 | 国产一级片免费播放 | 99精品成人| 久久久久久久久久国产精品 | 婷婷精品进入 | 国产亚洲精品久久久久久无几年桃 | 99热这里只有精品在线观看 | 亚洲精品视频在线观看免费视频 | 在线中文字幕观看 | 中文字幕在线观看亚洲 | 久久久一本精品99久久精品66 | 日韩美女黄色片 | 超碰免费av | 成人av资源 | 久久草av | 美女免费视频黄 | 手机av电影在线 | 91在线文字幕 | 中文字幕资源在线观看 | 九九九电影免费看 | 69av国产| 在线免费91| 人人揉人人揉人人揉人人揉97 | 国产亚洲精品久久久久5区 成人h电影在线观看 | 色网站黄 | 国产视频丨精品|在线观看 国产精品久久久久久久久久久久午夜 | 久草在线播放视频 | 成人黄大片| 天天天天色射综合 | 九九99| 亚洲h在线播放在线观看h | 亚洲免费视频在线观看 | 国产免费一区二区三区网站免费 | 伊人婷婷色 | 精品综合久久久 | 在线观看免费色 | 久久av免费电影 | 国产你懂的在线 | 日韩在线观看你懂得 | 久久激情视频 久久 | 日韩av一区二区三区四区 | 99久久9| 午夜精品一区二区三区免费视频 | 国内精品久久久精品电影院 | 亚洲乱码在线 | 久久综合九色综合久99 | 99视频导航 | 亚洲a成人v| 玖玖精品在线 | 国产精品久久久久av | 久久久久久综合网天天 | 亚洲 中文 在线 精品 | 久久免费av电影 | 超碰在线人 | 亚洲免费av在线播放 | 97在线免费观看 | 天天干夜夜爱 | 特级西西444www高清大视频 | 狠狠地日| 国产美女久久久 | av高清影院 | 97品白浆高清久久久久久 | 美女久久久久久久久久久 | 黄色在线观看免费网站 | 国产淫a| 国产高清专区 | 亚洲九九九在线观看 | 日韩视频一区二区三区在线播放免费观看 | 激情视频久久 | 日韩网站在线播放 | 久久人人爽人人片 | 黄色片网站大全 | jizz18欧美18 | 国产成人99av超碰超爽 | 国产精品久久久久久一区二区 | 国产精品综合在线 | 天天综合网 天天综合色 | 五月天com | 亚洲精品美女在线 | 欧美在线视频第一页 | 日韩一级电影网站 | 日韩中文字幕在线 | 日韩在线小视频 |