<kbd id="daqct"></kbd>

  • <nav id="daqct"></nav>
    <wbr id="daqct"><pre id="daqct"></pre></wbr>
    <wbr id="daqct"></wbr>
    <form id="daqct"><th id="daqct"></th></form>
    更多課程 選擇中心

    C/C++培訓
    達內IT學院

    400-111-8989

    北理大佬一萬多字的C++面試總結

    • 發布:牛客網
    • 來源:西瓜橙子雨
    • 時間:2017-11-28 11:53

    自報家門,北理工軟件學院本科生。

    本文主要部分:

    1、畢業去向選擇

    2、春招過程

    3、暑期實習

    4、秋招辛酸路程

    5、一點感悟

    畢業去向選擇問題

    從大一開始,就決定畢業找工作,方向是有了,但是三年多過去了,到現在才發現,大學期間并沒有為這個方向做出太大的努力,這也成為我一個本科生找工作的很大障礙,實踐能力嚴重不足。

    我的情況是:我決定工作,但是由于高中的思維,太看重學習成績,成績搞的很好,雖然有保研資格,但是又不讀研,找工作的時候,好的互聯網公司不看成績,看能力,所以大廠的筆面試都掛掉了。

    現在反思過后,給學弟學妹一點建議,如果你打算讀研,搞好成績保研是最輕松的。如果你想工作,多實踐,多寫項目,多去開源社區fork別人的項目,多動手,找到自己的興趣所在,并深入研究。我的一個同學,畢業根本不需要找工作,很多公司來搶著要他,技術大牛!如果你想出國,英語方面多積累總是沒錯的,多說多記。

    春招過程

    因為有就業打算,暑期準備實習,所以大三下學期就去參加春招了,基本從3月份開始,各大廠就開始春招實習生了,但是由于沒有經驗,沒有準備,吃了太多的虧:當時課程項目做網站,對web開發熟悉,于是網易就報了前端實習生,結果筆試直接就掛掉,考的全是html+css;騰訊筆試掛,編程題不會;阿里筆試掛,連題都看不懂;百度一面掛,基礎知識太弱,問啥啥不會。

    給學弟學妹的建議:既然已經決定找暑期實習,那么就好好好準備春招,操作系統、計算機網絡、數據庫、算法和數據結構等基礎知識一定要掌握扎實!有出色項目經驗更好,但大部分本科生來說沒有,所以面試官也更看重你的基礎知識掌握程度。 另外在投遞實習公司的時候,最好問清楚轉正幾率大不大;想好自己準備從事的行業,金融、教育、互聯網、游戲等等,找到一份自己畢業準備從事的行業公司去實習,不然就像LZ一樣,實習完才反應過來自己想喜歡游戲,然后秋招的時候發現不同崗位的實習經歷也不會給你加太多分。

    暑期實習

    春招的尾巴拿到了華為的軟件開發實習offer,7月初到本研所實習,入職時才發現被調劑了崗位,有點坑。實習期間很輕松,但是最后由于行業和方向不喜歡放棄了轉正offer。

    兩個月實習的收獲:更加清楚了未來自己要從事什么行業,什么方向,你的職業規劃,這對于一個畢業生來說十分重要!!因為全棧大神不是人人都能做到,公司需要專才,并且對自已的職業生涯有清楚認識的人。

    我是準備先從游戲c++客戶端程序員干起,在項目中熟悉各個分工的任務內容和工作流程,積累經驗,然后向項目、產品和管理方面發展。因為你一個剛畢業的本科生,啥也不會,怎么可能一去公司就去做管理,讓你管人家你管的了嗎,必須把一個項目的每個流程走幾遍,熟悉了之后才行。所以學弟學妹一定要找準自己的位置,行業-》方向-》職位-》職業規劃。

    之前參加幾個偏國企的群面,很多人被問到你想從事哪個方向的開發,都因為太想得到offer說我做這個也行,做那個也行,實在不行做那個也行,看公司需要吧。我個人認為,如果你這樣說公司把你招了,這種公司不去也罷,你未來能有什么成長和發展!

    秋招心酸歷程

    好事多磨!好事多磨!好事多磨!

    9月底從華為離職,然后放棄學校的保研名額,各位可以想象當時LZ是多么的自信和年輕。

    之后就是秋招開始了,各種宣講會筆試面試蜂擁而來,各種撞車,各種一天來回跑,參加過秋招的同學應該都有體會,真的很過癮!

    說下我的情況,我到10月下旬時,還是0offer。從最開始的自信滿滿,到筆試掛掉,面試掛掉,看到別人收offer,看到別人談薪資,心態真的爆炸壞了,有時候晚上跑完宣講會坐在回學校的公交車上,看著窗外繁華的夜景,過來過往的人群,很是迷茫和感傷。

    國慶期間我的心態爆炸到極點,書也看不進去,天天肝陰陽師,打屁股,都不想找工作了。但是我還是熬了過來,重新拾起信心,投身到新一波的跑宣講會和筆面試中!這中間的心理變化和成長我覺得對我個人而言太寶貴了!然后這周開始,我陸續收到了一個游戲公司和一個半國企的兩個offer,其中游戲公司的薪資遠遠超出我的預期,非常滿意!爆炸滿意!我在收到第一個offer的前一天,還奔波在各種筆面試之間!

    結合自己的經歷,給學弟學妹的建議:

    好好準備編程題,因為如果是在線筆試,一般都是大公司,你不能AK的話3道至少也要AC兩道吧,不然前邊客觀題答得再好,作為一個程序員不會寫代碼要你干嘛;

    項目經驗一定要準備好,沒有經驗的話看看別人都是怎么準備項目的,之前看了牛客上一個情商爆炸的哥們的面試準備,那叫一個牛,項目的展開,如何引導面試官向自己擅長的方向提問等等,不服不行;

    另外如果編程能力確實不行的話,去跑宣講會的線下筆試,一般會稍微簡單一些(LZ的offer都是線下筆試);

    多總結,每次筆面試后想一想遇到的問題你真的會了嗎,不會趕緊補習,因為下一場真的會遇到一模一樣的題目(LZ遇到好幾次一樣的題目,然后好幾次不會,后來才每個都認真總結,復習)。

    一點感悟

    上面的經驗是根據每個階段反思后得出的,最后說一下總的思路(個人看法,辯證對待):

    1.趕緊找到自己的畢業去向,工作、讀研、出國、公務員等

    2. 如果是畢業準備工作的話,大學期間多動手,專業知識掌握扎實的同時,多動手,多寫代碼,找到自己的興趣所在,深入研究

    3.想好自己將來要從事的行業,方向,未來幾年的職業規劃

    4.大三暑假找一份有意義!!的實習,通過實習感受理想與現實的不同,直接轉正更好,秋招時也會是你的加分項

    5.秋招復習基礎知識,多編程,別眼高手低,好好準備項目,學學 如何引導面試官, 能力不行多跑宣講會的線下筆試

    6.一定不要放棄,不要灰心,天生我材必有用!堅持住!好事多磨!最后祝大家前程似錦!

    下面是我的一個一萬多字的c++筆面試總結,包含數據庫,計網,操作系統,算法,數據結構,設計模式和c++等多方面的筆面試總結,有的是提綱,大部分都展開詳細有描述了,可能有錯誤,看的時候小心查證。

    范式

    第一范式:數據庫表的每一項都是不可分割的原子數據項,不能是集合。比如班級信息表里面不能有班級的學生。

    第二范式:在第一范式的基礎上,所有屬性完全依賴于主鍵,完全依賴就是不能取決于主鍵的一部分

    第三范式:在第二范式的基礎上,消除傳遞依賴,比如學生表里有學生屬于的班級編號,但不能有班級的名稱,班級人數等班級信息,因為班級信息可有由班級編號通過班級表推出來,有傳遞依賴

    第一范式->第二范式->第三范式

    →→→數據冗余越來越少,查詢越來越復雜

    ←←←有數據冗余,但查詢簡單

    事 務

    并發控制的單位,是用戶定義的一個操作序列,要么全做,要么全不做,是不可分割的。

    1原子性

    2一致性:

    使數據庫從一個一致性狀態到另一個一致性狀態

    3隔離性:

    一個事物的執行不被其他事務干擾

    4永久性:

    一個事務一旦提交,它對數據庫的改變就是永久性的

    常用 SQL語句

    分組查詢(avg max min)、復雜連接查詢、嵌套查詢、結果排序(逆序ansc)、

    錯題

    虛存=min (主存+輔存,邏輯地址)

    進程和線程

    進程是程序的一次執行,包括代碼和數據,是CPU分配資源的基本單位,一個進程可以包括多個線程。進程之間通信方式:管道、SOCKET、信號量(互斥、同步)等。

    子進程是父進程的復制品。子進程獲得父進程數據空間、堆和棧的復制品。

    線程是獨立運行和獨立調度的基本單位(線程比進程更小,基本上不擁有系統資源,故對它的調度所付出的開銷就會小得多,能更高效的提高系統內多個程序間并發執行的程度),線程之間共享進程的數據空間(借此通信)

    進程的調度算法

    文件系統

    內存分配策略

    HTTP協議

    基于TCP協議的應用層協議

    H TTP是一個普通用在瀏覽器和web服務器之間進行數據交換的 文本 協議

    HTTP協議的ETAG響應頭主要用于信息的過期驗證

    HTML錯誤代碼

    (1) 常見錯誤代碼:

    200服務器成功返回了網頁,成功處理了請求

    304未修改,自從上次請求后,請求的頁面未被修改過,此時服務器不會返回網頁內容,節省帶寬和開銷

    404請求的網頁不存在

    500服務器內部錯誤

    503服務器暫時不可用(超載、停機維護),通常只是暫時狀態

    (2) 1xx:臨時響應,服務器端響應成功, 等待請求者進一步操作

    (3) 2xx:響應成功

    202接受請求,未處理

    204處理了請求,但沒有返回任何內容

    (4) 3xx重定向,要完成響應,服務器需要進一步處理

    301網頁已被永久移動到新位置

    302臨時移動到新位置

    305要求只能使用代理才能訪問

    (5) 4xx請求錯誤

    400不理解請求語法

    401要求身份驗證,先登陸才能請求

    403禁止訪問,服務器拒絕請求

    405請求中的方法被禁用

    408請求超時

    (6) 5xx服務器在處理請求時內部發生錯誤,來自服務器本身的錯誤

    501服務器不具備完成該請求的功能

    502服務器作為網關或代理,從上游服務器收到無效響應

    504網關超時

    505 HTTP版本不支持

    TCP/IP與UDP

    TCP與UDP

    TCP面向連接、可靠的數據傳輸,有擁塞控制和流量控制,大量數據,速度慢

    UDP非連接,不可靠的數據傳輸,少量數據,速度快

    TCP建立連接的三次握手

    詳細過程和狀態變化

    為什么要三次?

    TCP關閉連接的四次揮手

    FIN- ->

    <--FINACK

    ? FIN

    FINACK-->

    如何提高UDP的可靠性

    應用層 實現超時重傳,客戶端發送一個包,服務器返回一個包表示收到,如果客戶端超過一定時間沒有收到該包,就需要重傳

    備用

    SOCKET編程

    當recv函數在接受數據時是阻塞的,當返回值<0,說明連接出錯

    當返回值=0,表示對端關閉了連接

    返回值>0,接受到的數據的大小

    TCP/IP分層,各層作用

    應用層:為操作系統、應用程序提供訪問網絡的接口(Telnet、FTP、HTTP、SNMP、DNS域名解析)

    (表示層)

    (會話層)

    傳輸層:兩點之間的根據使用的協議(TCP、UDP),傳輸相應數據報文,

    網絡層:整個網絡的傳輸路徑選擇,路由(IP、RIP)

    網絡訪問層:數據鏈路層、物理層的結合,數據鏈路層相鄰節點之間數據幀傳輸,物理層就是光纖上比特級的數據傳輸。

    PING操作的原理

    使用ICMP,在IP主機、路由器之間傳遞控制消息

    網絡層的協議

    IP協議 根據IP地址決定轉發、路由的協議

    ICMP本質理解為帶差錯報告的IP協議,在主機和路由器之間傳遞控制信息(網絡通不通,主機可不可達,路由可不可達到)

    ARP:將IP地址轉化為MAC地址

    RARP:物理地址轉為IP地址

    RIP

    傳輸層的協議

    TCP

    UDP

    SPX

    應用層協議

    HTTP

    SMTP:簡單郵件傳輸協議

    DNS:

    Telnet

    FTP:文件傳輸協議

    WWW:

    NFS: 網絡文件系統

    DNS的完整流程(域名->IP地址)

    DNS采用 分布式 的域名系統,減少故障發生

    當一個應用需要把主機名解析為IP地址時,該應用程序就會調用解析程序,把待解析的域名放在DNS請求報文中,以 UDP數據報 方式發送給本地域名服務器,本地服務器在查找域名后,把對應的IP地址放在回答報文中返回,應用程序獲得目的主機的IP地址后即可進行通信。若本地域名服務器不能解析該域名,則向上級域名服務器繼續發送查詢請求,直到可以解析為止。

    備用

    HTTP1.0/1.1區別

    HTTP1.1中才有 cache-control響應頭,主要用于控制信息在瀏覽器的緩存

    1. HTTP 1.0規定瀏覽器與服務器只保持短暫的連接,瀏覽器的每次請求都需要與服務器建立一個TCP連接,服務器完成請求處理后立即斷開TCP連接,服務器不跟蹤每個客戶也不記錄過去的請求

    缺陷:訪問一個包含有許多圖像的網頁文件的整個過程包含了多次請求和響應,每次請求和響應都需要建立一個單獨的連接,每次連接只是傳輸一個文檔和圖像,器端每次建立和關閉連接卻是一個相對比較費時的過程,并且會嚴重影響客戶機和服務器的性能

    2. HTTP 1.1支持持久連接,在一個TCP連接上可以傳送多個HTTP請求和響應,減少了建立和關閉連接的消耗和延遲

    HTTP 1.1還允許客戶端不用等待上一次請求結果返回,就可以發出下一次請求,但服務器端必須按照接收到客戶端請求的先后順序依次回送響應結果

    HTTP 1.1還提供了Host、身份認證、狀態管理和Cache緩存等機制相關的請求頭和響應頭

    C++

    一定要弄懂c++的內存分配機制,父類,子類繼承時的內存如何分配,封裝、繼承、多態、虛函數的實現機制和原理。

    小細節

    實現String類

    String類的原型如下

    class String

    {

    public:

    String(const char *str=NULL); //構造函數

    String(const String &other); //拷貝構造函數

    ~String(void); //析構函數

    String& operator=(const String &other); //等號操作符重載

    ShowString();

    private:

    char *m_data; //指針

    };

    String::~String()

    {

    delete [] m_data; //析構函數,釋放地址空間

    }

    String::String(const char *str)

    {

    if (str==NULL)//當初始化串不存在的時候,為m_data申請一個空間存放'\0';

    {

    m_data=new char[1];

    *m_data='\0';

    }

    else//當初始化串存在的時候,為m_data申請同樣大小的空間存放該串;

    {

    int length=strlen(str);

    m_data=new char[length+1];

    strcpy(m_data,str);

    }

    }

    String::String(const String &other)//拷貝構造函數,功能與構造函數類似。

    {

    int length=strlen(other.m_data);

    m_data=new [length+1];

    strcpy(m_data,other.m_data);

    }

    String& String::operator =(const String &other)

    {

    if (this==&other)//當地址相同時,直接返回;

    return *this;

    delete [] m_data;//當地址不相同時,刪除原來申請的空間,重新開始構造;

    int length= strlen (other.m_data);

    m_data=new [length+1];

    strcpy(m_data,other.m_data);

    return *this;

    }

    String::ShowString()//由于m_data是私有成員,對象只能通過public成員函數來訪問;

    {

    cout<<this->m_data<<endl;

    }

    Str cmp strcpy的返回類型

    C++如何限制類對象只能靜態分配或者只能只能動態分配

    動態分配就是用運算符new來創建一個類的對象,在堆上分配內存。

    靜態分配就是A a;這樣來由編譯器來創建一個對象,在棧 上分配內存。

    (1)動態分配(在堆上分配內存)

    將類的構造函數和析構函數設為protected屬性,這樣類對象不能夠訪問,但是派生類能夠訪問,能夠正常的繼承。同時創建另外兩個create和destory函數類創建對象。(將create設為static原因是:創建對象的時候是A *p = A::create();只有靜態成員函數才能夠通過類名來訪問。)

    [cpp] view plaincopy

    1. class A

    2. {

    3. protected :

    4. A(){}

    5. ~A(){}

    6. public :

    7. static A* create()

    8. {

    9. return new A();

    10. }

    11. void destory()

    12. {

    13. delete this ;

    14. }

    15. };

    (2)靜態分配(在棧上)

    把new、delete運算符重載為private屬性就可以了。

    [cpp] view plaincopy

    1. class A

    2. {

    3. private :

    4. void * operator new ( size_t t){} // 注意函數的第一個參數和返回值都是固定的

    5. void operator delete ( void * ptr){} // 重載了new就需要重載delete

    6. public :

    7. A(){}

    8. ~A(){}

    9. };

    實現strcpy()

    char * strcpy(char* dest, const char* src)

    {

    assert(dest!=NULL&&src!=NULL);

    char* res=dest;

    while((*dest++=*src++)!=’\0’);

    return res;

    }

    內聯函數與宏

    用內聯取代宏:

    1.內聯函數在運行時可調試,而宏定義不可以;

    2.編譯器會對內聯函數的參數類型做安全檢查或自動類型轉換(同普通函數),而宏定義則不會;

    3.內聯函數可以訪問類的成員變量,宏定義則不能;

    4.在類中聲明同時定義的成員函數,自動轉化為內聯函數。

    抽象類、接口

    抽象類是包含純虛函數的類

    虛繼承

    作用: 為了解決從不同途徑繼承來的同名的數據成員在內存中有不同的拷貝造成數據不一致問題,將共同基類設置為虛基類。

    這時從不同的路徑繼承過來的同名數據成員在內存中就只有一個拷貝,同一個函數名也只有一個映射。這樣不僅就解決了二義性問題,也節省了內存,避免了數據不一致的問題。

    底層實現原理: 底層實現原理與編譯器相關,一般通過虛基類指針實現,即各對象中只保存一份父類的對象,多繼承時通過

    虛基類指針引用該公共對象,從而避免菱形繼承中的二義性問題。

    多繼承的二義性

    構造函數中可不可以拋出異常?析構函數呢?

    理論上都可以拋出異常。

    但析構函數最好不要拋出異常,將會導致析構不完全,從而有內存泄露

    構造函數和析構函數中調用虛函數

    可以,虛函數底層實現原理

    C++中的空類,默認產生哪些類成員函數

    class Empty

    {

    public:

    Empty(); // 缺省構造函數

    Empty( const Empty& ); // 拷貝構造函數

    ~Empty(); // 析構函數

    Empty& operator=( const Empty& ); // 賦值運算符

    Empty* operator&(); // 取址運算符

    const Empty* operator&() const; // 取址運算符 const

    };

    函數指針

    Int and(int a,int b){return a+b;}

    int (*p)(int ,int );

    p=and;

    int c=(*p)(1,2);

    Int型變量作為bool使用

    除了 0是false其余都為true

    Int a=-2;while(a++);//執行2次

    int c=-2;

    int a=c||0;//a=1

    面向對象的特性

    抽象、繼承、封裝、多態

    重載運算符

    . * :: sizeof ?: 不能重載

    const A operator +(A &b)

    {

    return A(this.data+b.data)

    }

    指針和引用

    ★ 區別:

    1.指針是一個實體,而引用僅是個別名;

    2.引用使用時無需解引用(*),指針需要解引用;

    3.引用只能在定義時被初始化一次,之后不可變;指針可變;

    4.引用沒有const,指針有const;

    5.引用不能為空,指針可以為空;

    6.“sizeof引用”得到的是所指向的變量(對象)的大小,而“sizeof指針”得到的是指針本身(所指向的變量或對象的地址)的大小;

    7.指針和引用的自增(++)運算意義不一樣;

    8.從內存分配上看:程序為指針變量分配內存區域,而引用不需要分配內存區域

    基類析構函數為虛函數

    在實現多態時,當用基類操作派生類,在析構時防止只析構基類而不析構派生類的狀況發生,如果只調用基類的析構函數,則派生類沒有釋放掉,造成內存泄漏

    C++11

    a uto i= 10;

    auto s=” hello ”;

    強制類型轉換符

    dynamic_cast

    該轉換符用于 將一個指向派生類的基類指針或引用轉換為派生類的指針或引用

    //B 是D的基類,D是派生類

    B* pb;

    D* pd,md ;

    pb = &md;

    pd=dynamic_cast<D *>(pb);

    把指向派生類D的基類指針pb轉換為派生類D的指針,然后將這個指針賦給派生類D的指針pd。

    如果指向派生類的基類指針B想訪問派生類D中的除虛函數之外的成員時就需要把該指針轉換為指向派生類D的指針,以達到訪問派生類D中特有的成員的目的,比如派生類D中含有特有的成員函數g(),這時可以這樣來訪問該成員 dynamic_cast<D *>(pb)->g(); 因為dynamic_cast轉換后的結果是一個指向派生類的指針,所以可以這樣訪問派生類中特有的成員。但是該語句不影響原來的指針的類型,即基類指針pb仍然是指向基類B的。如果單獨使用該指針仍然不能訪問派生類中特有的成員。

    dynamic_cast的注意事項

    dynamic_cast轉換符只能用于指針或者引用。dynamic_cast轉換符只能用于含有虛函數的類。dynamic_cast轉換操作符在執行類型轉換時首先將檢查能否成功轉換,如果能成功轉換則轉換之,如果轉換失敗,如果是指針則反回一個0值,如果是轉換的是引用,則拋出一個bad_cast異常,所以在使用dynamic_cast轉換之間應使用if語句對其轉換成功與否進行測試,比如 pd = dynamic_cast(pb); if(pd){…}else{…} ,或者這樣測試if(dynamic_cast(pb)){…}else{…} 。

    因此, dynamic_cast操作符一次執行兩個操作。 首先驗證被請求的轉換是否有效,只有轉換有效,操作符才實際進行轉換。基類的指針可以賦值為指向派生類的對象,同樣,基類的引用也可以用派生類對象初始化,因此,dynamic_cast操作符執行的驗證必須在運行時進行。

    const_cast操作符

    該操作符用于改變const和volatile, const_cast最常用的用途就是刪除const屬性;

    操作符不能改變類型的其他方面,他只能改變const或volatile,即const_cast不能把int改變為double,但可以把const int改變為int。const_cast只能用于指針或引用。

    int a=3; const int *b=&a; int* c=const_cast(b); *c=4; cout<<a<<*c; 輸出為兩個4

    static_cast操作符

    該操作符用于非多態類型的轉換,任何標準轉換都可以使用他,即static_cast可以把int轉換為double,但不能把兩個不相關的類對象進行轉換,比如類A不能轉換為一個不相關的類B類型。static_cast本質上是傳統c語言強制轉換的替代品。

    reinterpret_cast操作符

    該操作符用于將一種類型轉換為另一種不同的類型,比如可以把一個整型轉換為一個指針,或把一個指針轉換為一個整型,因此使用該操作符的危險性較高,一般不應使用該操作符。

    reinterpret_cast(重述轉換)主要是將數據從一種類型的轉換為另一種類型。所謂“通常為操作數的位模式提供較低層的重新解釋”也就是說將數據以二進制存在形式的重新解釋

    String to int

    #include <sstream>

    stringstream ss;

    int a=15454;

    ss<<a;

    string c=”str:”+ss.str();

    cout<<c<<endl;

    構造函數調用順序

    先調用 基類 構造函數

    在調用 成員類 構造函數

    最后調用 本身 的構造函數

    析構順序 相反

    。。。。。。

    本文內容轉載自網絡,本著分享與傳播的原則,版權歸原作者所有,如有侵權請聯系我們進行刪除!

    預約申請免費試聽課

    填寫下面表單即可預約申請免費試聽!怕錢不夠?可就業掙錢后再付學費! 怕學不會?助教全程陪讀,隨時解惑!擔心就業?一地學習,可全國推薦就業!

    上一篇:C++培訓:C++開發程序員如何進階?
    下一篇:2017年阿里面試必會20道C++面試題!

    幾個C語言經典基礎算法(含代碼)

    不得不知道的八個C語言面試題

    C/C++后臺開發面試難不難,京東二面

    C/C++后臺開發面試難不難,來看看京東

    • 掃碼領取資料

      回復關鍵字:視頻資料

      免費領取 達內課程視頻學習資料

    • 視頻學習QQ群

      添加QQ群:1143617948

      免費領取達內課程視頻學習資料

    Copyright ? 2021 Tedu.cn All Rights Reserved 京ICP備08000853號-56 京公網安備 11010802029508號 達內時代科技集團有限公司 版權所有

    選擇城市和中心
    黑龍江省

    吉林省

    河北省

    湖南省

    貴州省

    云南省

    廣西省

    海南省

    欧美三级片,白洁外传,第四色播日韩AV第一页,啪啪免费观看大全av 百度 好搜 搜狗
    <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <文本链> <文本链> <文本链> <文本链> <文本链> <文本链>