成功斬獲騰訊offer,分享我的面試經(jīng)歷(附面試資料)

秋招運(yùn)氣比較好,拿到百度、阿里、騰訊、華為、360、美團(tuán)、小米的(準(zhǔn))offer,不過(guò)都是意向書。。。。非正式。攢波人品,等之后的結(jié)果吧。

本人本科211,碩士末流985。實(shí)力很渣,實(shí)驗(yàn)室項(xiàng)目也不行。全靠研二的時(shí)候,研三的師兄帶路(他們工作確實(shí)找的好),他們分享他們的招聘經(jīng)驗(yàn)、學(xué)習(xí)資料和方法等,還有就是研二的同實(shí)驗(yàn)室的同學(xué)的幫助也至關(guān)重要,所以研二這一年時(shí)間還算沒(méi)有浪費(fèi),基本都花在學(xué)習(xí)、項(xiàng)目。算是給我們一個(gè)很大的指導(dǎo)作用,在這里真的很感謝他們。

我個(gè)人的簡(jiǎn)歷、筆試、面試情況:(時(shí)間順序 7-9月,我全是提前批,除了騰訊、美團(tuán))

1、多益網(wǎng)絡(luò)(一面) offer (確實(shí)出乎意料,有點(diǎn)略水,就一面。。。)

2、oppo (一面、二面) hr面掛(估計(jì)跟著前面的人吼價(jià)格 吼高了, 跪了。。所以談薪還是要慎重)

3、阿里巴巴(釘釘團(tuán)隊(duì)) (終面、附加編程面、交叉面、hr面) offer (之前拿到實(shí)習(xí)offer,人太慫沒(méi)去。這里給后面投阿里的同學(xué)一個(gè)建議,一定要投實(shí)習(xí),因?yàn)榘⒗锴镎泻芟矚g從實(shí)習(xí)批的人錄取,走綠色通道)

4、百度(企業(yè)云團(tuán)隊(duì)) (一面、二面、三面、性格測(cè)試、hr面) offer (這個(gè)挺看運(yùn)氣,面試官人不錯(cuò))

5、網(wǎng)易(云音樂(lè)) 筆試掛 (投網(wǎng)易的云音樂(lè)要慎重,頭的人太多,不夠出彩就別去嘗試,浪費(fèi)機(jī)會(huì),個(gè)人看法)

6、網(wǎng)易互娛 筆試掛 (雖然三道全部AC了,但是估計(jì)全AC的也比較多,雙非等限制,后面就沒(méi)有面試的邀請(qǐng)了。。)

7、奇虎360(安全衛(wèi)士后臺(tái)團(tuán)隊(duì)) (一面、二面、hr面) (面試官人挺好的,我覺(jué)得我挺多的都不會(huì),但是還讓我過(guò)了。。。可能c++那一塊答得不錯(cuò),這個(gè)確實(shí)看運(yùn)氣)

8、華為(cloudbu團(tuán)隊(duì),優(yōu)招批)(業(yè)務(wù)面、技術(shù)加面、總裁面)(華為玄學(xué)面試,全看運(yùn)氣)

9、拼多多(基礎(chǔ)平臺(tái),提前批掛) 校招批筆試通過(guò),至今沒(méi)面試,算掛了吧

10、小米(java的一個(gè)電商后臺(tái),做訂單系統(tǒng)的) (一面、二面)(筆試沒(méi)做,還是發(fā)意向了。。小米和頭條差不多,強(qiáng)調(diào)手撕代碼,我撕了4道,有道算法不會(huì)做的,面試官把算法和數(shù)據(jù)結(jié)構(gòu)都給我說(shuō)了,,,還好我寫出來(lái)了。。這個(gè)面試官真的不錯(cuò),我就喜歡這樣的)

11、頭條(筆試4.3AC) 一面掛 (一輪游,還是太菜,手撕了一個(gè)比較一般的題,寫了25分鐘,雖然跑過(guò)了所有測(cè)試用例,面試官還是把我掛了。。其他基礎(chǔ)都沒(méi)問(wèn)題,所以。頭條還是重code。如果想進(jìn)頭條,刷leetcode、劍指offer吧,這個(gè)是面試官給我的唯一的建議)

12、美團(tuán)(餐飲鏈 java團(tuán)隊(duì) 一面、二面、三面、hr面,這個(gè)是校招批) 口頭offer (一面code差點(diǎn)沒(méi)寫出來(lái),估計(jì)沒(méi)寫出來(lái)就涼了。。。運(yùn)氣。美團(tuán)主要是看個(gè)人思維、技術(shù)等,不限語(yǔ)言,所以是c++的伙伴也可以考慮美團(tuán))

13、騰訊(sng數(shù)據(jù)中心團(tuán)隊(duì) 一面、二面、hr面今天走完了 這是校招批) 等結(jié)果(hr給我說(shuō) 每輪評(píng)價(jià)都很好,應(yīng)該沒(méi)問(wèn)題) (之前騰訊提前批掛了,算上實(shí)習(xí)面試,我騰訊的面試記錄都有4、5個(gè)了,大部分差評(píng)價(jià),所以根據(jù)我的情況,有的小伙伴不用擔(dān)心面試評(píng)價(jià)的問(wèn)題,還是要簡(jiǎn)歷要做好)

后面就沒(méi)有面其他公司了。希望我今天的分享能給騰訊攢波人品,我最想進(jìn)的就是tencent。。。。騰訊情結(jié) -.-

下面是我個(gè)人的一些建議和面經(jīng)吧,分為幾個(gè)板塊:(可能也不適用于一些人,當(dāng)看著玩吧)

1、書籍推薦

2、學(xué)習(xí)氛圍

3、簡(jiǎn)歷修改

4、面試技巧

5、面經(jīng)分享

書籍推薦

c++ : 《effictive C++》、《SGI STL源碼解析》(侯捷)、《effictive STL》、《深入探索C++對(duì)象模型》、《c++ primer》等

網(wǎng)絡(luò):《計(jì)算機(jī)網(wǎng)絡(luò)》、《圖解tcp/ip》 、《tcp/ip詳解》、《UNIX 網(wǎng)絡(luò)編程》(想進(jìn)騰訊的小伙伴最好看看這個(gè))

作系統(tǒng):《深入理解計(jì)算機(jī)系統(tǒng)》、《***作系統(tǒng)-精髓與設(shè)計(jì)原理》、《UNIX 高級(jí)環(huán)境編程》

數(shù)據(jù)庫(kù):《高性能MySQL》、《Redis實(shí)戰(zhàn)》(我沒(méi)讀)、《數(shù)據(jù)庫(kù)原理及設(shè)計(jì)》

數(shù)據(jù)結(jié)構(gòu)和算法:《劍指offer》、《數(shù)據(jù)結(jié)構(gòu)及算法實(shí)現(xiàn)》(名字我可能記不太清)、leetcode(我就只刷了100道,算是我們實(shí)驗(yàn)室刷的最少的了)

實(shí)戰(zhàn):《Linux多線程服務(wù)器編程-使用muduo C++網(wǎng)絡(luò)庫(kù)》(陳碩) (這本書強(qiáng)烈推薦,從實(shí)戰(zhàn)的角度分析處理問(wèn)題,我們實(shí)驗(yàn)室都看了這本書的)

學(xué)習(xí)氛圍

主要說(shuō)說(shuō)我的情況吧,導(dǎo)師這邊要做項(xiàng)目,我的項(xiàng)目比較少,所以有更多時(shí)間看書,看視頻;其他同學(xué)有項(xiàng)目,但是他們也抽空閑時(shí)間看書,看視頻?;就砩?點(diǎn)半才從實(shí)驗(yàn)室回寢室吧。這里還是強(qiáng)調(diào)不要單兵作戰(zhàn),我們這屆實(shí)驗(yàn)室的同學(xué)跟上屆師兄一樣,抱的比較緊,有什么問(wèn)題可以互相問(wèn),解決的過(guò)程中就可以相互提高了,每本書和視頻的學(xué)習(xí),每個(gè)人的理解程度都不一樣,理解的角度也不一樣,我們一般都會(huì)進(jìn)行交流,使得學(xué)到的知識(shí)更加全面吧,學(xué)習(xí)效率也比較高。在招聘這一塊,我們一般有什么招聘信息出來(lái)了都相互傳播一哈,大家能夠第一時(shí)間了解到招聘信息,筆試面試都有同學(xué)一起去,沒(méi)那么孤單。

簡(jiǎn)歷修改

我個(gè)人的觀點(diǎn)吧,看看就行。我覺(jué)得簡(jiǎn)歷主要還是一頁(yè)就好,簡(jiǎn)單明了,最好是第一時(shí)間就能讓面試官知道你會(huì)什么。整個(gè)頁(yè)面干凈、有條理就行,不用彩色的條紋那些(盡量別在外觀上浪費(fèi)太多時(shí)間)。除了一般要寫的個(gè)人基本信息、榮譽(yù)、學(xué)歷、項(xiàng)目以外,做技術(shù)的同學(xué),建議就是再弄一個(gè) 技術(shù)棧的模塊出來(lái),比如c++會(huì)哪些、網(wǎng)絡(luò)會(huì)哪些、數(shù)據(jù)庫(kù)會(huì)哪些。這樣簡(jiǎn)單明了,我騰訊和美團(tuán)現(xiàn)場(chǎng)面的,我看到的就是面試官其實(shí)就是一條一條的對(duì)著我的技術(shù)棧一個(gè)一個(gè)問(wèn)的。此外在字眼的使用上,好好注意把握 “了解”、“熟悉”、“精通”,一般建議寫“熟悉”,不太穩(wěn)的寫“了解”,高手都不建議寫精通,一旦有一個(gè)不會(huì),面試官的印象大打折扣,覺(jué)得不夠謙虛。照片的話可貼可不貼。我就沒(méi)貼,主要人太丑。。。很尷尬。

說(shuō)實(shí)話,我個(gè)人的技術(shù)實(shí)力真的很一般,在實(shí)驗(yàn)室我都算排在后面的,實(shí)驗(yàn)室大佬太多,在技術(shù)上我就跟著學(xué),偷學(xué)一波技能。我覺(jué)得我的優(yōu)勢(shì)在于面試技巧上,在面試的時(shí)候,我覺(jué)得要善于引導(dǎo)面試官,俗稱“帶節(jié)奏”,其實(shí)就是與人相處交流的一些方式方法了。

首先是自我介紹,我覺(jué)得自我介紹個(gè)人信息不用太詳細(xì),就說(shuō)個(gè)名字 學(xué)校 專業(yè) 即可。其他信息面試官也看的到,沒(méi)必要說(shuō)。如果是計(jì)算機(jī)專業(yè)的 好學(xué)校的 建議說(shuō)出來(lái),突出一下,給面試官一個(gè)好印象。 然后下面應(yīng)該直接簡(jiǎn)單明了的告訴面試官 個(gè)人的技術(shù)棧,給面試指方向。不然面試官真的有可能瞎問(wèn),問(wèn)到會(huì)的還好,不會(huì)的就容易涼涼。在下面可以說(shuō)你的項(xiàng)目,大概提一下即可。

技術(shù)棧介紹:首先主動(dòng)引導(dǎo)面試官問(wèn)那方面的問(wèn)題,在回答問(wèn)題的時(shí)候,故意帶一點(diǎn)其他的你會(huì)的知識(shí)點(diǎn),可能有的面試官就會(huì)心血來(lái)潮問(wèn)你那個(gè)引子。比如我給面試官介紹我的項(xiàng)目框架的時(shí)候,提到了epoll,他就問(wèn)我epoll 和select區(qū)別、lt et區(qū)別,這些都是準(zhǔn)備好的,自然你也就會(huì)答得出來(lái)。這算是套路面試官吧。如果遇到面試官問(wèn)道的問(wèn)題不會(huì)答,也不要慌,可以用這樣的語(yǔ)句:“不好意思,這個(gè)我沒(méi)太了解,不過(guò)我知道與這個(gè)相近的xxx,你看我給你分享這個(gè)xxx的個(gè)人體會(huì)可以嗎”,有的面試官就會(huì)同意的,這樣不容易題目被帶偏。 還有就是如果就是真的不知道的,就直接說(shuō)不知道,這個(gè)沒(méi)什么的。比如 面試官問(wèn)我 你數(shù)據(jù)庫(kù)怎么樣? 我一般都說(shuō),不太會(huì)。 一般面試官就不會(huì)問(wèn)了。如果你掌握的不好,你說(shuō)還可以,那他問(wèn)你結(jié)果都不會(huì),就是一直吃 暴擊傷害。。。面試官印象很差,還不如直接說(shuō)不會(huì)。

項(xiàng)目:主要要分析清楚,條理清晰,面試官并不關(guān)心你的項(xiàng)目如何如何渣 如何如何叼,在于的是你對(duì)項(xiàng)目的思考和理解吧。

面經(jīng)分享(內(nèi)容不全,后面也沒(méi)時(shí)間寫面經(jīng)了。格式不太好弄,筆記上copy過(guò)來(lái)的,將就看吧-。-)可能也有些有錯(cuò)的地方。

多益網(wǎng)絡(luò)

1、項(xiàng)目部分(似乎對(duì)muduo更感興趣)

介紹了項(xiàng)目功能、架構(gòu)

muduo有哪些精彩的地方,說(shuō)一下。 吹了一下異步日志的雙buf的實(shí)現(xiàn)、buf本身的readv 的性能

2、基礎(chǔ)知識(shí)

linux IO模型(5種) 記不太清,說(shuō)了幾種,應(yīng)該沒(méi)說(shuō)完。(應(yīng)該是:同步阻塞、同步非阻塞、多路復(fù)用、信號(hào)驅(qū)動(dòng)、異步IO)應(yīng)該還要說(shuō)細(xì)節(jié)

靜態(tài)鏈接庫(kù)和動(dòng)態(tài)鏈接庫(kù)的區(qū)別

什么是線程不安全

c++ 繼承和組合 ,為何優(yōu)先使用組合(這個(gè)我不知道理由)

ps:應(yīng)該是組合能實(shí)現(xiàn)和繼承一樣的功能,但是對(duì)于父類對(duì)象,在組合中是不會(huì)暴露細(xì)節(jié)的,相當(dāng)于是黑盒,而繼承是“白盒”。

什么時(shí)候使用鏈表或者隊(duì)列?(增加、刪除頻率較高的場(chǎng)景)

c++ const的作用? (變量和函數(shù)兩方面 mutable)

百度地圖如何實(shí)現(xiàn)實(shí)時(shí)路況

快排算法 穩(wěn)定性

函數(shù)指針的使用場(chǎng)景、好處。使用于回調(diào)函數(shù) 虛表指針就是例子

你會(huì)用什么結(jié)構(gòu)來(lái)查詢?(hash表、map、 set這些)

tcp udp的區(qū)別 使用場(chǎng)景

什么是緩沖區(qū)溢出

3、編程

數(shù)組循環(huán)右移 將一個(gè)長(zhǎng)度為n的數(shù)組A的元素循環(huán)右移k位

比如 數(shù)組 1, 2, 3, 4, 5 循環(huán)右移3位之后變成 3, 4, 5, 1, 2

4、其他

如何看待加班?

你的愛(ài)好是什么?玩什么游戲?

你最近在看什么書?

你還有什么要問(wèn)我的嗎?

騰訊OMG團(tuán)隊(duì)(實(shí)習(xí))

1、畫出tcp頭部的協(xié)議格式。

擴(kuò)展: udp頭部、ip頭部、http頭部

2、Http的報(bào)文頭部

3、數(shù)組和指針的區(qū)別

數(shù)組本身體現(xiàn)出來(lái)的就是一個(gè) 指針常量的 “特性”,即不能對(duì)數(shù)組的首地址進(jìn)行修改,內(nèi)存上的地址就已經(jīng)是確定了的。而指針本身是一個(gè)變量,他指向了一個(gè)地址,這個(gè)是可以變化的,也就說(shuō)他可以重新賦值指向新的地址;

當(dāng)調(diào)用sizeof函數(shù)時(shí),對(duì)于數(shù)組,得到的是數(shù)組元素個(gè)數(shù)*數(shù)據(jù)類型的大小,而對(duì)于指針,得到的是指針類型的大小,這個(gè)取決于機(jī)器的位數(shù),比如32位機(jī),對(duì)應(yīng)的指針就是4字節(jié)的大小;

指針相比數(shù)組更加靈活。

相同之處:比如當(dāng)作為形參的時(shí)候,定義成 指針還是數(shù)組都是一樣的,因?yàn)檫@個(gè)時(shí)候傳入的都是數(shù)組的首地址,也就是這個(gè)數(shù)組名,反映出來(lái)的就等于是一個(gè)指針。

4、參數(shù)傳遞的方式

值傳遞、引用傳遞、指針傳

5、c++種struct和class的區(qū)別

如果不申明訪問(wèn)權(quán)限,class的默認(rèn)權(quán)限是private,而struct是public

對(duì)于繼承,如果也沒(méi)有明確是public繼承還是private繼承或者是protected繼承,class

默認(rèn)是private的繼承,而struct是public繼承。

從抽象上來(lái)說(shuō),class更像是對(duì)象的實(shí)現(xiàn)體,而struct更像是數(shù)據(jù)結(jié)構(gòu)的實(shí)現(xiàn)體。

6、構(gòu)造函數(shù)能不能是虛函數(shù)?

不能,因?yàn)轭悓?duì)象中占前4個(gè)字節(jié)的虛表指針 需要在構(gòu)造函數(shù)完成之后才會(huì)生成,通過(guò) 虛表指針才能找到虛函數(shù)表,訪問(wèn)調(diào)用對(duì)應(yīng)的虛函數(shù)。如果構(gòu)造函數(shù)是虛函數(shù),那么就只能通過(guò)虛表指針才能訪問(wèn)到,關(guān)鍵是此時(shí)就需要讓構(gòu)造函數(shù)產(chǎn)生出虛表指針。陷入了先有蛋還是現(xiàn)有雞的問(wèn)題

7、析構(gòu)函數(shù)可不可以是虛函數(shù)?

可以,而且如果說(shuō)這個(gè)類不是final的,也就是說(shuō)他是某一個(gè)類的父類,那么該類的析構(gòu)函數(shù)必須是虛函數(shù),因?yàn)槿绻皇翘摵瘮?shù),那么其子類對(duì)象的父類組成部分將無(wú)法得到釋放,造成資源泄露。

8、析構(gòu)函數(shù)可不可以是純虛函數(shù)?

我覺(jué)得不建議是,因?yàn)槲覀冎兰兲摵瘮?shù)是沒(méi)有實(shí)現(xiàn)體的,那么子類對(duì)象在析構(gòu)的時(shí)候,父類組成部分就沒(méi)辦法釋放,顯然不行。但是對(duì)于大部分編譯器來(lái)說(shuō),可以將析構(gòu)函數(shù)申明為純虛函數(shù),然后在類外寫純虛函數(shù)的實(shí)現(xiàn)體,從語(yǔ)法上不會(huì)報(bào)錯(cuò)。

9、舉例一種STL中的容器

答:比如vector(當(dāng)時(shí)答得是這個(gè)),vector的的實(shí)現(xiàn)其實(shí)就是封裝了一個(gè)動(dòng)態(tài)數(shù)組,里面有3個(gè)內(nèi)部迭代器,分別是start、finnish、end_of_storage。如果通過(guò)push_back或者insert插入元素造成超過(guò)容量,此時(shí)容量會(huì)擴(kuò)展至2倍,這個(gè)過(guò)程分為:重新配置、移動(dòng)拷貝元素、釋放原空間,這3個(gè)大部,支持隨機(jī)訪問(wèn)等

10、舉例STL的一種算法

答:比如find、accumulate、next_permutation、unique、position等等

11、如何防止c++頭文件被重復(fù)引用

答:可以使用ifndef或者program once,都可以。但是兩者有一些區(qū)別。從兼容性上說(shuō),ifndfe更好,有些老的編譯器可能不支持program once;此外,對(duì)于2個(gè)名字不同的頭文件,但內(nèi)容相同,ifndef還是可以鑒別出來(lái),防止重復(fù),program once 不行。

12、內(nèi)聯(lián)函數(shù)和宏的區(qū)別

答:內(nèi)聯(lián)函數(shù)的展開(kāi)發(fā)生在編譯期,而宏是在預(yù)處理階段;內(nèi)聯(lián)函數(shù)本身是函數(shù),而宏不是;最重要的一點(diǎn):內(nèi)聯(lián)函數(shù)會(huì)對(duì)參數(shù)進(jìn)行類型檢查,而宏只是簡(jiǎn)單的替換,所以內(nèi)聯(lián)函數(shù)更加安全,所以往往宏需要對(duì)參數(shù)加括號(hào),但是也不一定安全, 內(nèi)聯(lián)函數(shù)有自己明確的作用域或者訪問(wèn)權(quán)限,比如放在類里面的private,而宏是沒(méi)有的。

13、linux下常用命令

ls -al 顯示當(dāng)前目錄下的所有文件目錄信息,包括隱藏的

mkdir 創(chuàng)建文件夾

cat 查看文件內(nèi)容

cp 拷貝

rm -rf 刪除文件(夾)下所有文件

find 查找文件

grep 正則匹配

pwd 顯示當(dāng)前文件路徑

ln 創(chuàng)建文件連接 -s 軟連接

chmod 修改文件權(quán)限

netstat -a |grep 查看網(wǎng)絡(luò)狀態(tài)

top

14、linux下進(jìn)程管理的相關(guān)命令

ps -e 查看所有的進(jìn)程信息

kill -9 pid 強(qiáng)行殺死進(jìn)程

top -p pid 查看進(jìn)程信息

15、linux下如何查看內(nèi)存、磁盤情況

top

df

free

16、什么叫軟連接和硬鏈接,他們的區(qū)別是什么

硬鏈接是以文件副本引用的形式存在的,他跟源文件擁有同一個(gè)inode節(jié)點(diǎn);軟連接是以路徑的形式存在的,他的inode節(jié)點(diǎn)所對(duì)應(yīng)的數(shù)據(jù)塊存儲(chǔ)的是源文件的路徑。他們的區(qū)別的是:軟連接可以跨文件系統(tǒng)創(chuàng)建,而且可以對(duì)目錄進(jìn)行創(chuàng)建,硬鏈接都不行,所以,相對(duì)來(lái)說(shuō),軟連接更加靈活,刪除軟連接不會(huì)產(chǎn)生任何影響,但是如果源文件被刪除了,那么所有的軟連接就失效了,所以很像windows下的快捷方式。

17、什么叫相對(duì)路徑什么叫絕對(duì)路徑?

答:以/開(kāi)頭的就是絕對(duì)路徑,因?yàn)樗砹藦母夸洺霭l(fā)的路徑,反之就是相對(duì)路徑

18、進(jìn)程間通信的方式?

答:無(wú)名管道、有名管道FIFO,消息隊(duì)列、共享內(nèi)存、信號(hào)量、socket等,(應(yīng)該進(jìn)行簡(jiǎn)略闡述

19、c++下如何調(diào)用C的包?

答:extern “C”,通知編譯器其所包含的代碼用c的方式進(jìn)行編譯,這樣連接的時(shí)候不會(huì)報(bào)錯(cuò),否則會(huì)找不到函數(shù)符號(hào)。

20、找出去重后的數(shù)字的命令

$ sort test.txt | uniq

21、socket編程tcp客戶端連接過(guò)程

建立套接字對(duì)象,connect、read/wirte

22\socket編程tcp服務(wù)器端連接過(guò)程

建立套接字對(duì)象、bind、listen、 accept、read/wirte

23、epoll和select的區(qū)別?

答:select能支持的文件描述符數(shù)是有限的,最大1024個(gè),并且每次調(diào)用前都需要將其監(jiān)聽(tīng)的讀集、寫集、錯(cuò)誤集從用戶態(tài)向內(nèi)核態(tài)拷貝,返回后又拷貝回去,而且,select返回的時(shí)候是將所有的文件描述符返回,也就意味著一旦有個(gè)事件觸發(fā),只能通過(guò)遍歷的方式才能找到具體是哪一個(gè)事件,效率比較低、開(kāi)銷也比較大,但是也有好處,就是他的超時(shí)的單位是微秒級(jí)別;

epoll能支持的文件描述符數(shù)很大,可以上萬(wàn),他的高效由3個(gè)部分組成:紅黑樹(shù)、雙向鏈表、回調(diào)函數(shù),每次將監(jiān)聽(tīng)事件拷貝到內(nèi)核后就存放在紅黑樹(shù)種,以EventPoll的結(jié)構(gòu)體存在,如果有相應(yīng)的事件發(fā)生,對(duì)應(yīng)的回調(diào)函數(shù)就會(huì)觸發(fā),進(jìn)而就會(huì)將該事件拷貝至雙向鏈表中返回,而且,epoll每次返回的都是有事件發(fā)生的事件,不是所有時(shí)間,所以比較高效,總的來(lái)說(shuō)epoll適用于連接數(shù)較多,活躍數(shù)較少的場(chǎng)景、而select適用于連接數(shù)不多,但大多都活躍的場(chǎng)景。

24、同一個(gè)IP同一個(gè)端口可以同時(shí)建立tcp和udp的連接嗎

答可以,同一個(gè)端口雖然udp和tcp的端口數(shù)字是一樣的,但實(shí)質(zhì)他們是不同的端口,所以是沒(méi)有影響的,從底層實(shí)質(zhì)分析,對(duì)于每一個(gè)連接內(nèi)核維護(hù)了一個(gè)五元組,包含了源ip,目的ip、源端口目的端口、以及傳輸協(xié)議,在這里盡管前4項(xiàng)都一樣,但是傳輸協(xié)議是不一樣的,所以內(nèi)核會(huì)認(rèn)為是2個(gè)不同的連接,在ip層就會(huì)進(jìn)行開(kāi)始分流,tcp的走tcp,udp走udp。

25、mysql的建表、刪除表、更新表、查詢表用什么命令

答:Create|Drop|Update|Select TABLE [表名]

26、mysql的索引有哪幾種?

普通索引 CREAT INDEX [index_name] ON table(column(length))

唯一索引

全文索引

單列、多列索引

組合索引

27、索引的優(yōu)缺點(diǎn),索引是不是越多越好?

答:主要就是可以有效的縮短數(shù)據(jù)的檢索時(shí)間,建立索引的列可以保證行的唯一性,可以加快表與表的連接;但是創(chuàng)建索引、維護(hù)索引需要時(shí)間和空間成本,每條索引都要占據(jù)數(shù)據(jù)庫(kù)的存儲(chǔ)空間,此外,每次的增刪改都需要對(duì)索引進(jìn)行動(dòng)態(tài)的維護(hù),也會(huì)導(dǎo)致時(shí)間變長(zhǎng)。

28、索引的適用場(chǎng)景

數(shù)據(jù)量大的并且查詢頻率高的應(yīng)當(dāng)使用索引

表與表連接時(shí)的聯(lián)合查詢,約束條件的字段應(yīng)該建立索引

用于排序的字段可以使用索引

29、索引的原理

答:以空間換時(shí)間,建立索引之后,會(huì)將索引的KEY值放在一個(gè)BTree上,這個(gè)方式是一種n分法,btree適合在磁盤上動(dòng)態(tài)查找表,每次以索引進(jìn)行查找的時(shí)候,會(huì)根據(jù)key值進(jìn)行搜索,logn級(jí)別的。

騰訊天美工作室

1、hash表使用開(kāi)鏈,里面的鏈表過(guò)長(zhǎng)說(shuō)明了什么?

答:hash函數(shù)設(shè)計(jì)的不好,導(dǎo)致沖突嚴(yán)重,進(jìn)而導(dǎo)致同一個(gè)“桶”內(nèi)的鏈表數(shù)目增多。

2、c++不能被繼承的類

可以將構(gòu)造函數(shù)放入到private里面,這樣是無(wú)法構(gòu)造出子類對(duì)象的,同時(shí)增加一個(gè)static的 get instance的函數(shù),來(lái)調(diào)用構(gòu)造函數(shù)。(但是這樣得不到一個(gè)棧上的對(duì)象)

讓該類去虛繼承一個(gè)模板類,傳人的模板類型就是該類,使得該類成為模板類的友元,這樣子類在構(gòu)造時(shí),他直接先構(gòu)造祖先類的成分,顯然他不是友元,所以失敗。

使用c++11新增的final關(guān)鍵字,使得申明的類是一個(gè)最終類,無(wú)法被繼承。

3、什么叫字長(zhǎng)?

答:計(jì)算機(jī)在同一個(gè)時(shí)間能處理的一組二進(jìn)制數(shù)稱為計(jì)算機(jī)的一個(gè)字,這組二進(jìn)制數(shù)的位數(shù)就是字長(zhǎng),所以現(xiàn)在計(jì)算機(jī)有16位、32位、64位等。

4、計(jì)算機(jī)的存儲(chǔ)系統(tǒng)?

答:分為內(nèi)存和外存,其中內(nèi)存有主存、cache、寄存器等,外存分為磁盤、光盤等

5、static關(guān)鍵字的作用,存放位置

答:static關(guān)鍵字有隔離隱藏作用,比如多個(gè)cpp文件,如果將全局變量聲明為static,那么該變量只對(duì)該文件可見(jiàn);變量聲明為static,可以使得這個(gè)值的生命期是整個(gè)程序結(jié)束;此外,c++類中的staitic 申明的變量和函數(shù)表示都是屬于類的屬性,而不是對(duì)象的成員。未初始化的放在bss段,初始化的放在data段中。

6、堆和棧的區(qū)別

從管理方式上:棧是由編譯器自動(dòng)管理,無(wú)需我們手動(dòng)控制;

對(duì)于堆,開(kāi)辟和釋放工作由程序員控制,所以有內(nèi)存泄漏等情況的發(fā)生。

從申請(qǐng)大小上:棧是有高地址向低地址擴(kuò)展的,是一塊連續(xù)的內(nèi)存區(qū)域,所以棧的棧頂?shù)刂坊蛘叽笮?是一開(kāi)始就分配好的。在使用過(guò)程中,比如遞歸調(diào)用層數(shù)過(guò)多,那么就有可能造成棧溢出,所以棧能獲得的空間比較少;

堆是向高地址擴(kuò)展的,是鏈表組織的方式,所以有可能是不連續(xù)的,他的大小只受限于有效的虛擬內(nèi)存大小,所以堆能開(kāi)辟的空間較大。

從碎片問(wèn)題上:棧是沒(méi)有碎片的情況,因?yàn)樗袊?yán)格的出棧入棧,不會(huì)存在一個(gè)內(nèi)存塊從棧的中間位置彈出;

堆有碎片的情況,頻繁的調(diào)用new/delete分配釋放內(nèi)存,必然會(huì)造成內(nèi)存碎片。

從分配方式上:堆都是動(dòng)態(tài)分配的

棧大多是靜態(tài)分配的,也可以動(dòng)態(tài)分配,可以由alloc函數(shù)分配。

從分配效率上:計(jì)算機(jī)會(huì)在底層對(duì)棧提供支持,比如有專門的寄存器分配,用來(lái)存放棧的地址,壓棧出棧的指令等;

堆是由c/c++函數(shù)庫(kù)提供的,機(jī)制比較復(fù)雜(未了解)

7、struct和class的區(qū)別

答:這個(gè)在OMG面試中也出現(xiàn)過(guò)。

8、malloc和new的區(qū)別

答:最大的區(qū)別在于malloc只是簡(jiǎn)單的分配了內(nèi)存空間,而new在分配了內(nèi)存空間之后調(diào)用了對(duì)象的構(gòu)造函數(shù)。詳細(xì)的見(jiàn):new和malloc的區(qū)別,或者delete和free.note

9、引用和指針的區(qū)別

答:引用是一個(gè)已有對(duì)象的別稱,指針是一個(gè)地址,從非空性上說(shuō),引用不能為空,指針本身是個(gè)值,可以為空;在編碼的時(shí)候,對(duì)引用我們不需要判斷,但是對(duì)于指針,我們必須對(duì)其非空性進(jìn)行判斷;當(dāng)指向的對(duì)象可能在發(fā)生變化的時(shí)候,往往使用指針,而引用一定固定的。

10、map的底層實(shí)現(xiàn)

答底層是紅黑樹(shù)實(shí)現(xiàn)的,它是一個(gè)比較平衡的搜索二叉樹(shù),內(nèi)部有序,所以在查找和刪除的時(shí)候比較高效,時(shí)間復(fù)雜度是logn

11、tcp的三次握手過(guò)程和四次揮手過(guò)程

答:這個(gè)建議將函數(shù)調(diào)用的情況添加進(jìn)去說(shuō)明。詳細(xì):TCP建立連接三次握手和釋放連接四次握手.note

12、c++多態(tài)的實(shí)現(xiàn)原理

答:c++多態(tài)主要是通過(guò)虛函數(shù)表實(shí)現(xiàn)的,c++多態(tài)的體現(xiàn),主要是通過(guò)父類指針指向一個(gè)子類對(duì)象,此時(shí)調(diào)用的函數(shù)就是子類的函數(shù),體現(xiàn)了多態(tài)性,因?yàn)樵谡{(diào)用過(guò)程中,通過(guò)錢4個(gè)字節(jié)的虛表指針找到了虛函數(shù)表,此時(shí)由于實(shí)際對(duì)象是子類對(duì)象,那么其虛函數(shù)表是子類的虛函數(shù)表,對(duì)于同一個(gè)虛函數(shù),子類的虛函數(shù)將會(huì)覆蓋掉父類的虛函數(shù),構(gòu)建出自己的虛函數(shù)表,所以此時(shí)通過(guò)虛表指針訪問(wèn)放的虛函數(shù)就是子類的虛函數(shù),這就是c++的多態(tài)的體現(xiàn)。

13、c++對(duì)象的內(nèi)存模型

答:在內(nèi)存中,前4個(gè)字節(jié)代表了其虛表指針,指向的是子類的虛函數(shù)表,接下來(lái)存放的是父類的對(duì)象的成員,再是子類成員部分。

14c++的內(nèi)存模型

答:內(nèi)存分為5個(gè)段,從低地址往高地址,一次是代碼段、數(shù)據(jù)段、bss段、堆、棧。然后balabala。。。。

15、滑動(dòng)窗口的作用

答:主要就是為了實(shí)現(xiàn)流量控制,控制了發(fā)送包的速率,每次發(fā)送方只能發(fā)送滑動(dòng)窗口內(nèi)部的數(shù)據(jù)包,才能保證接收方不會(huì)因?yàn)榘l(fā)送過(guò)快造成流量淹沒(méi),數(shù)據(jù)包的丟失。他的大小是 擁塞窗口和通告窗口 兩者的最小值。

項(xiàng)目

如何實(shí)現(xiàn)斷點(diǎn)續(xù)傳,如何提高上傳速

算法

計(jì)算表達(dá)式 (改成后綴表達(dá)式進(jìn)行處理)

朋友圈問(wèn)題,求總共有多少個(gè)朋友圈 (使用并查集)

鏈表逆序 (劍指offer上有,但是如果不改變內(nèi)存結(jié)構(gòu),那就只能改變值,使用棧進(jìn)行存儲(chǔ))

一個(gè)數(shù)組找中位數(shù)(通過(guò)快排思想,常數(shù)級(jí)的若干次求position,直到恰好是中心,時(shí)間復(fù)雜度是O(n),如果是海量數(shù)據(jù)呢2g數(shù)據(jù),500內(nèi)存如何處理?->hash之后分成小文件,再外部排序,使用歸并,可以使用最大堆,直到數(shù)據(jù)過(guò)半)

騰訊SNG(實(shí)習(xí)一面)

只持續(xù)了20分鐘,似乎面試官很忙。

1、系統(tǒng)調(diào)用和庫(kù)函數(shù)有什么區(qū)別和聯(lián)系

2、epoll和select的區(qū)別

3、epoll的高效,有幾種工作模式( LT、ET)

4、TCP 和 UDP的區(qū)別

5、TIMEWAIT是什么,為什么要設(shè)置TIMEWAIT狀態(tài)

6、TCP的可靠性是如何實(shí)現(xiàn)的?(流量控制、擁塞控制、確認(rèn)序號(hào)、校驗(yàn))

oppo(一面)

首先介紹項(xiàng)目,我給他介紹了一下這個(gè)項(xiàng)目的架構(gòu),功能。

1、你覺(jué)得這個(gè)項(xiàng)目的難點(diǎn)在于哪里?(懵逼了)

答:難點(diǎn)到不太多,可以說(shuō)一下學(xué)到了什么,優(yōu)化了什么,比如數(shù)據(jù)傳輸協(xié)議用到了protobuf,更快,更安全、數(shù)據(jù)量更小。

2、io復(fù)用和異步io有什么區(qū)別?

答:IO復(fù)用其實(shí)一種同步IO,他只是將事件通知統(tǒng)一交給了select或者epoll,所以,對(duì)于IO復(fù)用,其實(shí)Select或者epoll在檢測(cè)可用時(shí)是阻塞的,里面的讀寫一般也是阻塞的,而異步IO是不會(huì)阻塞的,數(shù)據(jù)從內(nèi)核態(tài)拷貝到用戶態(tài)緩沖區(qū)完成后,***作系統(tǒng)會(huì)發(fā)送信號(hào),通知進(jìn)程處理,這個(gè)過(guò)程進(jìn)程是可以繼續(xù)執(zhí)行的,這個(gè)就是異步io。

3、多進(jìn)程和多線程有什么區(qū)別?如果給你一個(gè)業(yè)務(wù)場(chǎng)景,你是如何選擇多進(jìn)程還是多線程?

答:多線程共享同一個(gè)地址空間,帶來(lái)的好處就是他們進(jìn)行通信比較方便,可以通過(guò)全局變量等,但是也有隱患,需要處理好競(jìng)爭(zhēng)問(wèn)題,而且一旦一個(gè)線程崩掉了,整個(gè)進(jìn)程就死了,影響其他進(jìn)程。多進(jìn)程相反。。此外,線程的創(chuàng)建開(kāi)銷更小。多進(jìn)程的場(chǎng)景舉例:比如你要進(jìn)行主機(jī)遷移,多進(jìn)程的話,你可以將某個(gè)進(jìn)程遷移到另外的主機(jī),不受影響,但是多線程沒(méi)法遷移。

4、講一講c++的虛函數(shù)表呢?

答:c++的多態(tài)就是通過(guò)虛函數(shù)表來(lái)實(shí)現(xiàn)的,該表是在編譯期生成,存放在rodata段,我們知道一個(gè)類的對(duì)象的內(nèi)存結(jié)構(gòu)是前4個(gè)字節(jié)是其虛表指針,即vptr,指向了其虛表,虛表中裝的就是該類的虛函數(shù)。c++多態(tài)的體現(xiàn),往往是通過(guò)父類指針,指向子類對(duì)象,我們發(fā)現(xiàn)調(diào)用的虛函數(shù)是子類的虛函數(shù),而不是父類的就是因?yàn)榇藭r(shí)的對(duì)象是子類對(duì)象,其虛表是子類的虛表,其中的同名虛函數(shù)早在編譯期就已經(jīng)被覆蓋成子類的虛函數(shù)了,所以此時(shí)調(diào)用的是子類的虛函數(shù),多態(tài)就是這么體現(xiàn)的。

5、構(gòu)造函數(shù)、析構(gòu)函數(shù)的順序,為什么析構(gòu)函數(shù)是反向的?

答:構(gòu)造:先父類再子類; 析構(gòu):先子類再父類。 這是c++的規(guī)則。

中間 做了一套筆試題,各種各樣的都有。

編程/算法

1、一個(gè)文件無(wú)序存放了1w個(gè)數(shù)字,每行1個(gè)。數(shù)字范圍1-1w,現(xiàn)在隨機(jī)刪除2個(gè)數(shù)字。請(qǐng)把他們2個(gè)找出來(lái)。

答:使用hash數(shù)組,遍歷文件,每遍歷到一個(gè)數(shù)字,就以該數(shù)字為下標(biāo)的數(shù)組元素置1,不用加1,因?yàn)閿?shù)字不重復(fù)的。最后再遍歷一遍數(shù)組,值為0的元素的下標(biāo)就是所求數(shù)字。

2、如何對(duì)你申請(qǐng)的內(nèi)存進(jìn)行優(yōu)化?

答:可以使用bitmap,每一bit可以代表一個(gè)數(shù)字,這樣可以壓縮內(nèi)存。

3、壓縮率是多少?

答:每個(gè)bit一個(gè)數(shù)字,而之前數(shù)組一個(gè)元素是int類型的,占32位,所以壓縮率是32倍。

4、什么場(chǎng)景用bitmap?

答:我說(shuō)數(shù)據(jù)較為密集,而且你這里數(shù)據(jù)是連續(xù)不重復(fù),就符合,而且你的數(shù)據(jù)是有范圍的。

5、如果數(shù)據(jù)有重復(fù)呢?

答:可以使用2-bitmap,00代表不出現(xiàn),01代表出現(xiàn)1次,10代表出現(xiàn)2次,11表示無(wú)定義,這樣遍歷一遍就可以找到是哪幾個(gè)數(shù)字

他回答:不是,比如數(shù)字3,具體有多少出現(xiàn),這個(gè)這需要知道的。 我說(shuō):10bit可以表示的數(shù)是1024,而你每個(gè)數(shù)字不可能超過(guò)1w次。所以要記錄次數(shù)的話,就還是用bitmap但是不是1位,大概1個(gè)數(shù)用14bit吧,但相比32位一個(gè)數(shù)要好些。

oppo二面

1、自我介紹

2、介紹usb的項(xiàng)目、功能、架構(gòu)

3、這個(gè)io復(fù)用模型跟普通多線程、多進(jìn)程的區(qū)別

答: io復(fù)用,多個(gè)鏈接復(fù)用一個(gè)線程,而普通多線程是一個(gè)鏈接一個(gè)線程,所以必然創(chuàng)建線程的數(shù)目就多,現(xiàn)成的創(chuàng)建是有開(kāi)銷的,所以io復(fù)用這種開(kāi)銷小。

4、網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù)協(xié)議

主要有3個(gè)段,前8bit是數(shù)據(jù)type,中間是length,最后是具體的data。

5、如果協(xié)議是這樣。如果兩個(gè)數(shù)據(jù)包連在一起,怎么分開(kāi)?

答:在首部再加幾個(gè)bit,作為隔離位。

6、如何實(shí)現(xiàn)你的fd是負(fù)載均衡的

答:分類處理

7、多個(gè)用戶訪問(wèn)同一個(gè)資源,如何加鎖

答:不太明白他的意思,epoll內(nèi)部處理事件是同步依次執(zhí)行的,而且這里的鎖是線程資源

8、tcp是如何處理粘包?

9、tcp是如何關(guān)閉的?就是說(shuō)4次揮手過(guò)程

10、如果tcp關(guān)閉的第四個(gè)分節(jié)沒(méi)有被收到,那么怎么辦?

11、tcp的擁塞控制過(guò)程

12、delete和free的區(qū)別

13、STL的出現(xiàn)是為了什么

14、STL的迭代器的類型有哪幾種?

15、STL hashmap的實(shí)現(xiàn)?

16、線程間同步的手段

17、進(jìn)程間通信的方式

18、如何使用信號(hào)量制作出一個(gè)互斥鎖

19、系統(tǒng)調(diào)用的返回有什么變化?

20、描述一下系統(tǒng)中斷的過(guò)程

21、c++多態(tài)是如何實(shí)現(xiàn)的?

22、c++多繼承是如何實(shí)現(xiàn)?如何處理同名變量

23、怎么實(shí)現(xiàn)無(wú)鎖作*

24、你評(píng)價(jià)一下你自己。

25、你覺(jué)得你同學(xué)朋友如何評(píng)價(jià)你?

26、你對(duì)哪些技術(shù)感興趣?

27、參加過(guò)哪些社團(tuán)

28、你怎么協(xié)調(diào)與他人的關(guān)系的?

29、你有什么要問(wèn)我的嗎?

百度云一面

1、C++多態(tài)的實(shí)現(xiàn)

2、多重繼承下,多個(gè)父類含有同一同名函數(shù),子類對(duì)象調(diào)用會(huì)有問(wèn)題嗎?

答:首先 AB2個(gè)父類中的函數(shù)假設(shè)就是普通成員函數(shù)f(),那么子類C沒(méi)有自己的f函數(shù),其對(duì)象c.f()的時(shí)候就會(huì)報(bào)錯(cuò),編譯報(bào)錯(cuò),存在二義性。如果C有自己的f函數(shù),此時(shí)不會(huì)報(bào)錯(cuò),調(diào)用的是自己c類的f()函數(shù),也就是說(shuō)此時(shí)父類的函數(shù)就被隱藏了。如果AB中的f()是虛函數(shù),那么也不受影響,還是調(diào)c的。如果2個(gè)f的參數(shù)類型也不一樣,也會(huì)報(bào)二義性錯(cuò)誤。(為什么呢?)

3、static變量

4、tcp三次握手 、2次、4次?

5、tcp可靠性的實(shí)現(xiàn)原

6、滑動(dòng)窗口的作用

7、原子作如何實(shí)現(xiàn)(鎖、cas作)

8、如何實(shí)現(xiàn)一個(gè)互斥鎖,互斥鎖的實(shí)現(xiàn)原理

筆試:

特殊鏈表(每個(gè)節(jié)點(diǎn)帶一個(gè)隨機(jī)指針),對(duì)該鏈表進(jìn)行復(fù)制,輸出復(fù)制后的新鏈表。(劍指offer原題)

百度云二面

1、socket和epoll的關(guān)系區(qū)別?(不太懂他意思,反正對(duì)epoll的底層進(jìn)行了闡述)

2、紅黑樹(shù)是線程安全的嗎

3、有哪些同步手段

4、用過(guò)哪種鎖(mutex)

5、讀寫鎖了解過(guò)嗎,自己實(shí)現(xiàn)一下,提出思路即可(對(duì)讀作進(jìn)行計(jì)數(shù))*

6、計(jì)數(shù)如何保證線程安全?(cas作、作系統(tǒng)底層指令支持)

7、vector的插入pushback的時(shí)間復(fù)雜度是多少(O(n))

8、如果vectorpushback的時(shí)候擴(kuò)容了,比如pushback n個(gè)數(shù),時(shí)間復(fù)雜度是多少?(我給他闡述了內(nèi)存拷貝的過(guò)程,但是不知道怎么求,他回答說(shuō):其實(shí)是一個(gè)等差數(shù)列,最后求得還是O(n))

9、vector底層是幾個(gè)指針實(shí)現(xiàn)的(3個(gè) start、finish、end_of_storage)

10、vector擴(kuò)容幾倍 (SGI STL的vector是2倍)

11、c++多態(tài)的實(shí)現(xiàn)(run time的多態(tài):指針或者引用 結(jié)合 虛函數(shù)表實(shí)現(xiàn))

12、c++11 move語(yǔ)意解釋一下

13、 move除了用于指針,還可以用于哪些?比如哪些數(shù)據(jù)結(jié)構(gòu) (vector)

14、拿過(guò)哪些offer

360二面

1、使用stl如何保證線程安全(除了鎖以外)

2、交給sub 線程的文件描述符如何回收的?

3、tcp粘包

4、linux下查看網(wǎng)絡(luò)連接

5、linux下查看內(nèi)存cpu (top)

6、linux下查看內(nèi)核版本 uname-a

7、linux下查看發(fā)行版本 cat /etc/issue

8、IO和reactor模式 (吹的select和epoll)

9、linux下 進(jìn)程cpu占用是怎么計(jì)算的(大致是:通過(guò)/proc/stat 讀取CPU總的時(shí)間,再通過(guò)/proc/pid/stat下讀取進(jìn)程的占用時(shí)間,做除法。(比較粗略的闡述))

10、linux下 tmp目錄里面的內(nèi)容會(huì)被清除嗎(會(huì),系統(tǒng)會(huì)執(zhí)行tmpwatch腳本,一般傳入?yún)?shù)是時(shí)間,比如 tmpwatch 10 /tmp/ 表示的就是會(huì)刪除10天內(nèi)沒(méi)有修改、訪問(wèn)的文件。)

11、怎么查動(dòng)態(tài)依賴的庫(kù)有哪些?(readelf -a [程序名] |grep library)

騰訊IEG魔方工作室(簡(jiǎn)歷面)

1、tcp udp 游戲

2、容器線程安全

3、hashmap實(shí)現(xiàn)

4、新鏈接 何時(shí)注冊(cè)寫事件

5、主線程如何將fd交給sub線程?

6、為什么這個(gè)回調(diào)函數(shù)在本函數(shù)執(zhí)行,是線程安全的?

7、rehash

8、多線程,多進(jìn)程區(qū)別

9、切換的性能損耗

10、strncpy

最后,喜歡這篇文章的話,可以給作者點(diǎn)個(gè)喜歡,點(diǎn)下關(guān)注,每天都會(huì)分享Java相關(guān)文章!

記得一定要關(guān)注我哦,歡迎大家加群交流723770387會(huì)不定時(shí)的福利贈(zèng)送,包括整理的面試題,學(xué)習(xí)資料,源碼等~~

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