阿里巴巴2017年度實習生筆試題(含答案解析)_第1頁
阿里巴巴2017年度實習生筆試題(含答案解析)_第2頁
阿里巴巴2017年度實習生筆試題(含答案解析)_第3頁
阿里巴巴2017年度實習生筆試題(含答案解析)_第4頁
阿里巴巴2017年度實習生筆試題(含答案解析)_第5頁
已閱讀5頁,還剩17頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、因捌三二ri七卜in+2字舊云正耗擊+1:改用他T ix k輪鈿Rj胖之正墉;君仁用伸展開彳會伸率可J&M ni JikT僵,小自建司以m、1 -1r日的了 1,帔件卜定.近腳芭花miuaqT同四,二二店迎鎖定戈也“ :二四期內(nèi)的偵史由剝?nèi)1工總江皿1儂*閏乜口 “一砌內(nèi)眇:前1D1-:,-. .潮.陸使用匚3球一步ti皿口相以規(guī)答案:D內(nèi)聯(lián)函數(shù):Tip :只有當函數(shù)只有 10行甚至更少時才將其定義為內(nèi)聯(lián)函數(shù).定義:當函數(shù)被聲明為內(nèi)聯(lián)函數(shù)之后 ,編譯器會將其內(nèi)聯(lián)展開,而不是按通常的函數(shù)調(diào)用機 制進行調(diào)用.優(yōu)點:當函數(shù)體比較小的時候,內(nèi)聯(lián)該函數(shù)可以令目標代碼更加高效.對于存取函數(shù)以及其它函數(shù)體

2、比較短,性能關(guān)鍵的函數(shù),鼓勵使用內(nèi)聯(lián).缺點:濫用內(nèi)聯(lián)將導致程序變慢.內(nèi)聯(lián)可能使目標代碼量或增或減,這取決于內(nèi)聯(lián)函數(shù)的大小.內(nèi)聯(lián)非常短小的存取函數(shù)通常會減少代碼大小,但內(nèi)聯(lián)一個相當大的函數(shù)將戲劇性的增加代碼大小.現(xiàn)代處理器由于更好的利用了指令緩存,小巧的代碼往往執(zhí)行更快。結(jié)論:一個較為合理的經(jīng)驗準則是,不要內(nèi)聯(lián)超過10行的函數(shù).謹慎對待析構(gòu)函數(shù),析構(gòu)函數(shù)往往比其表面看起來要更長,因為有隱含的成員和基類析構(gòu)函數(shù)被調(diào)用!另一個實用的經(jīng)驗準則:內(nèi)聯(lián)那些包含循環(huán)或switch 語句的函數(shù)常常是得不償失(除非在大多數(shù)情況下,這些循環(huán)或switch語句從不被執(zhí)行).這點很重要;比如虛函數(shù)和遞注意:有些函數(shù)即

3、使聲明為內(nèi)聯(lián)的也不一定會被編譯器內(nèi)聯(lián)歸函數(shù)就不會被正常內(nèi)聯(lián).通常,遞歸函數(shù)不應(yīng)該聲明成內(nèi)聯(lián)函數(shù).(遞歸調(diào)用堆棧的展開并不像循環(huán)那么簡單,比如遞歸層數(shù)在編譯時可能是未知的 ,大多數(shù)編譯器都不支持內(nèi)聯(lián)遞歸 函數(shù)).虛函數(shù)內(nèi)聯(lián)的主要原因則是想把它的函數(shù)體放在類定義內(nèi),為了圖個方便,抑或是當作文檔描述其行為,比如精短的存取函數(shù).-inl.h 文件:Tip :復雜的內(nèi)聯(lián)函數(shù)的定義,應(yīng)放在后綴名為-inl.h的頭文件中.內(nèi)聯(lián)函數(shù)的定義必須放在頭文件中,編譯器才能在調(diào)用點內(nèi)聯(lián)展開定義.然而,實現(xiàn)代碼理論上應(yīng)該放在.cc文件中,我們不希望.h文件中有太多實現(xiàn)代碼,除非在可讀性和性能 上有明顯優(yōu)勢.如果內(nèi)聯(lián)函數(shù)

4、的定義比較短小,邏輯比較簡單,實現(xiàn)代碼放在.h文件里沒有任何問題.比如,存取函數(shù)的實現(xiàn)理所當然都應(yīng)該放在類定義內(nèi).出于編寫者和調(diào)用者的方便,較復雜的內(nèi)聯(lián)函數(shù)也可以放到.h文件中,如果你覺得這樣會使頭文件顯得笨重,也可以把它萃取到 單獨的-inl.h中.這樣把實現(xiàn)和類定義分離開來,當需要時包含對應(yīng)的-inl.h即可。A項錯誤,因為使用inline關(guān)鍵字的函數(shù)只是用戶希望它成為內(nèi)聯(lián)函數(shù),但編譯器有權(quán)忽略這個請求,比如:若此函數(shù)體太大,則不會把它作為內(nèi)聯(lián)函數(shù)展開的。B項錯誤,頭文件中不僅要包含inline函數(shù)的聲明,而且必須包含定義,且在定義時必須加上inline ?!娟P(guān)鍵字inline必須與函數(shù)定

5、義體放在一起才能使函數(shù)成為內(nèi)聯(lián),僅 將inline放在函數(shù)聲明前面不起任何作用】C項錯誤,inline函數(shù)可以定義在源文件中,但多個源文件中的同名inline函數(shù)的實現(xiàn)必須相同。一般把inline函數(shù)的定義放在頭文件中更加合適。D項正確,類內(nèi)的成員函數(shù),默認都是inline的。【定義在類聲明之中的成員函數(shù)將自動地成為內(nèi)聯(lián)函數(shù)】EF項無意思,不管是 class聲明中定義的inline函數(shù),還是class實現(xiàn)中定義的inline函數(shù),不存在優(yōu)先不優(yōu)先的問題,因為 class的成員函數(shù)都是inline的,加了關(guān)鍵字inline也沒什么特殊的0 m善啊對HHfc進行輸氧在苦自國優(yōu)茶耳下因下尊袪復翩度母

6、酗空0Fjtrlf.c?颯笄-答案:D插入排序 改良的冒泡最優(yōu)也是n數(shù)組排序算法以法時間復雜度空間復奈度最f圭平均最差Qud0 rt0(n log(n)O(n log(n)0(M2Oflog 同)Meiqc5(Hl0(n log(n)0(n log(n)0(n log(n)0(n)TgMt0(n log(nj)0(n 心gfn)Q(用HgD2rtO(n log(n)O(n log(n)O(n login)Bubble Sort0(nA2OU)Invert ion Sortfnf0(n2)EeleHion oilO(nA2)O(nA2(M2)Shell SortOtnloqn)A2l0(nlog

7、(n)AZ)Bucket 301rlOU)O(nRadix lentO(nk)Ofn+k)Z畸1林的褲?名目勺罌打小半客銳垓和HS卷相用野子里的fit瑯國A乙薛壬之后將乙產(chǎn)/假人一些到白杯子.闞 中訴手的液體恭宴皂程初的整古值定水溫合之臺之箭的麗之瓶.吟以下跪用王是口伶:四打亍甲前軍植體沙工干一桿干手獷學歸口田桿子不獷馬槽下丫r不干乙杯子紀鈕滑牌的區(qū)日曰杯子晅佗ftr”刊等于加了T血聃時上方曲林子TR T.f.1 i風手于己稈子塞的才的 槐:arrr里地河匾于二用子里不用工認I都乂對答案:A0 1mM卬“1由力i (丁 hn7 :-rWLl J#: W Wt: : harBBpia=-aipl

8、nt E % J稗);下列鞋=小14tas】 ifeahfl-sjkcrkatal.ibba遍;小也行,訕workat答案:AO 申濟河一.HS看若干紐事理地.隨機現(xiàn)在乩限子中三出與重王figtw*啟.藤機國車呈q SDK尸q 3略反下記摟IE造的瞟口鼻;飛14的FT二小于零燈的1都flt tl4忖;粗大于臚邦下H+最rFtiftTThm回葉丁工|量厘I球好俏睡害HUM*,王上理唯陽二11加卜仃肉?:tJ答案:BI(DEBPZA1(FEDCBAJ(EDBPZA)答案:D先序遍歷中左右中序遍歷左中右后序遍歷左右中中阿可片TCF二審立存谷寸暮中君尸不寺二:三小落力士志學說 仁武慰1* ,X1TJI

9、七b起野原1YH/EN謝志S:A5-iadE3丐氏口H_W -智吉原?器E. fill. M;町崎2 A遵耶限例是手嚼唐變科昌口:曲工晨包后書從4連嚏八列“仲答案:DTCP建立連接時首先客戶端和服務(wù)器處于 close狀態(tài)。然后客戶端發(fā)送 SYN同步位,此時客戶端處于 SYN-SEND 狀態(tài),服務(wù)器處于1ISTEN狀態(tài),當服務(wù)器收到SYN以后,向客戶端發(fā)送同步位 SYN和確認碼ACK,然后服務(wù)器變?yōu)镾YN-RCVD ,客戶端收到服務(wù)器發(fā)來的SYN和ACK后,客戶端的狀態(tài)變成 ESTABLISHED(已建立連接),客戶端再向服務(wù)器發(fā)送 ACK確認碼,服務(wù)器接收到以后也變成 ESTABLISHED然

10、后服務(wù)器客戶端開始數(shù)據(jù)傳輸蹴在g!TF 下直根禺)2412=?8Si)加tM答案:F假設(shè)為 n 進值貝 U 2*(nA2)+4*(nA1)+0 * 1*n+2=2*(M3) +8*(M2)+8*(M1)化簡后居然為很等式,n為任意值Q即網(wǎng)叮卜面關(guān)于案樂k三,奇才中岳能存!三網(wǎng)圖融用迂府.修審&踴揍喇1行.二弟相前巾蚌灌用曲程運行衣用日呻亍1而季:小旦用液/,利dCT早穗比胡汨F林手生F片】卻爭附口二;耳人員御喻修用“:一用尸庠茄了總最iF問物?翼電回目保中了一些口被版桐式他行的?工歸獵F答案:B用戶空間與系統(tǒng)空間所在的內(nèi)存區(qū)間不一樣,同樣,對于這兩種區(qū)間,CPU的運行狀態(tài)也不一樣。 在用戶空間

11、中,CPU處于“用戶態(tài);在系統(tǒng)空間中,CPU處于系統(tǒng)態(tài)。*于hnic的LU谷洋看ZIee舊匚閑二川 下利滬至方點為與口E1哂用時宜圖亍靖世里用心1好用向11眄世機亂不會呵M歷jelesE71昆大尋解的+IK_F-IT二子有*困力專式於且E品咕律圻多的插片:代商用于TL工登并支V,但落肚江總不了啊噴后, -苣上不用?嘲IE噌加幣H性日式野1HT在陌觀加 印即戶的酊他;:4答案:Cselectselect能監(jiān)控的描述符個數(shù)由內(nèi)核中的FD_SETSIZE限制,僅為1024 ,這也是select最大的缺點,因為現(xiàn)在的服務(wù)器并發(fā)量遠遠不止1024。即使能重新編譯內(nèi)核改變FD_SETSIZE的值,但這并不

12、能提高select的性能。每次調(diào)用select都會線性掃描所有描述符的狀態(tài),在 select結(jié)束后,用戶也要線性掃描 fd_set數(shù)組才知道哪些描述符準備就緒,等于說每次調(diào)用復雜度都是O (n)的,在并發(fā)量大的情況下,每次掃描都是相當耗時的,很有可能有未處理的連接等待超時。每次調(diào)用select都要在用戶空間和內(nèi)核空間里進行內(nèi)存復制fd描述符等信息。pollpoll使用pollfd結(jié)構(gòu)來存儲fd ,突破了 select中描述符數(shù)目的限制。與select的后兩點類似,poll仍然需要將pollfd數(shù)組拷貝到內(nèi)核空間,之后依次掃描fd的狀態(tài),整體復雜度依然是O (n)的,在并發(fā)量大的情況下服務(wù)器性能

13、會快速下降。epollepoll維護的描述符數(shù)目不受到限制,而且性能不會隨著描述符數(shù)目的增加而下降。服務(wù)器的特點是經(jīng)常維護著大量連接,但其中某一時刻讀寫的操作符數(shù)量卻不多。epoll先通過epoll_ctl注冊一個描述符到內(nèi)核中,并一直維護著而不像poll每次操作都將所有要監(jiān)控的描述符傳遞給內(nèi)核;在描述符讀寫就緒時,通過回掉函數(shù)將自己加入就緒隊列中,之后epoll_wait返回該就緒隊列。也就是說,epoll基本不做無用的操作,時間復雜度僅與活躍的客戶端數(shù)有關(guān),而不會隨著描述符數(shù)目的增加而下降。epoll在傳遞內(nèi)核與用戶空間的消息時使用了內(nèi)存共享,而不是內(nèi)存拷貝,這也使得epoll的效率比po

14、ll和select更高。O因耍有砌的小號一個乘幅WJf 7歷麓展餐工三可田宜兩個程膽修有不=)際答案:F答案:4Q障旃I在00-999這9W+白回中.若再組成曾T班先牛EI室溫為是三看聶士長度理監(jiān)是三電永住tfgill例曲虱人45121142工犍165答案:165/在100-999這900個自然數(shù)中,若將組成這個數(shù)的三個數(shù)字認為是三條線段的長度,那么是三條線段組成一個等腰三角形(包括等邊)的共有()個.#include using namespace std;int main()int a = 0;int b = 0;int c = 0;int time = 0;for (int i = 10

15、0; i c) | (b = c & (c + ba) | (c = a & (a + cb)( time +;cout time endl;return 0;Q降詵同F(xiàn)主國午不呈過性哉寸答案:關(guān)聯(lián)數(shù)組1.循環(huán)鏈表是另一種形式的鏈式存貯結(jié)構(gòu)。特點是表中最后一個結(jié)點的指針域指向頭結(jié)點,整個鏈表形成環(huán)。(1 )單循環(huán)鏈表一一在單鏈表中,將終端結(jié)點的指針域NULL改為指向表頭結(jié)點或開始結(jié)點即可。(2 )多重鏈的循環(huán)鏈表一一將表中結(jié)點鏈在多個環(huán)上。2隊列(Queue )是只允許在一端進行插入,而在另一端進行刪除的運算受限的線性表;.棧(stack )在計算機科學中是限定僅在棧頂進行插入或刪除操作的線性

16、表。. “關(guān)聯(lián)數(shù)組”是一種具有特殊索引方式的數(shù)組。不僅可以通過整數(shù)來索引它,還可以使用字符串或者其他類型的值(除了NULL )來索引它。關(guān)聯(lián)數(shù)組和數(shù)組類似,由以名稱作為鍵的字段和方法組成。它包含標量數(shù)據(jù),可用索引值來單獨選擇這些數(shù)據(jù),和數(shù)組不同的是, 關(guān)聯(lián)數(shù)組的索引值不是非負的整數(shù)而是任意的標量。這些標量稱為Keys ,可以在以后用于檢索數(shù)組中的數(shù)值。關(guān)聯(lián)數(shù)組的元素沒有特定的順序,你可以把它們想象為一組卡片。每張卡片上半部分是索引而下半部分是數(shù)值。.鏈表(Linked list )是一種常見的基礎(chǔ)數(shù)據(jù)結(jié)構(gòu),是一種線性表,是一種物理存儲單元上非連續(xù)、非順序的存儲結(jié)構(gòu)。雙向鏈表也叫雙鏈表,是鏈表的

17、一種,它的每個數(shù)據(jù)結(jié)點中都有兩個指針,分別指向直接后繼和直接前驅(qū)。所以,從雙向鏈表中的任意一個結(jié)點開始,都可以很方便地訪問它的前驅(qū)結(jié)點和后繼結(jié)點。一般我們都構(gòu)造雙向循環(huán)鏈表。0障詵明F %旺畔:三田 三加4 加支工苴工是口小弗-II的7母逋幫打tttff,*用H序到修喇技序副博答案:B類別排序方法時間復雜度空間復雜度穩(wěn)定性平均情況破好情況最壞情況輔助存儲插入直接插入0(吩800(吟0(1)穩(wěn)定排序鼬閾排序0(口口)OW6球)3)樂穩(wěn)強一選擇3S選擇右吟5嶗0(1)不穩(wěn)定排序堆摔序0(nlog2n)O(nlog.n)O(nlc&n)0(1)不松定交換冒泡排序0(方0(11)Ofn2)0(1)定

18、J排序快速排序CXnlogn)tXrJoggn)(Xtf)O(niog2n)不稔定歸并排序OCnlogMQ(nlog:n)。(加臉n)O(n)穩(wěn)定一基數(shù)排用a戔片小)lo(d(n+rd)O(d(rni)O(rdF)穩(wěn)定桶排序的平均時間復雜度為線性的O(N+C),其中C=N*(logN-logM) 。如果相對于同樣的N,桶數(shù)量M越大,其效率越高,最好的時間復雜度達到O(N)。當然桶排序的空間復雜度為O(N+M),如果輸入數(shù)據(jù)非常龐大, 而桶的數(shù)量也非常多,則空間代價無疑是昂貴的。此外,桶排序是穩(wěn)定的。里田業(yè)HlllAffifa一0七剪茫* 可1忸能)里有配有1包也由于EWlRKE而0Si不到一為

19、了工位妁聯(lián)網(wǎng),,。在工但町MFK&告為比同更承f超孰巴用當于中國即可以中等百工世上的計利他WIFI之晅的信號1日號jfiMVWFI發(fā)后與fcLSlAP兩 一IFCE毋左,撫珀同中也的祚雷S一志工匈砸睡不上1MFI國0 鼻去襲位疆里也去于AP哇其舉位望船說EIE櫻用最混鼬置缸由碓3卜一岳:官尼后1近1”I電哥,F(xiàn)*啜巾耳IIL晶工都不計內(nèi)個全芒,gm千人策一個盒千4?柢當他守卻:千人之一之每一 T定而分謝哈蓊K4人的三率ZElt于之小人已擔拉與七金千里*1在這祥 m臺劍 * -.矢=曰,一F 度會=力麗二臺右知造三嗇正生三。個個j.揖到刑以加十數(shù)確理府內(nèi).色人的刎時制惻世加i市箕一;幣薄K J用

20、人的*! 士幣挈的幅現(xiàn)之星大有中I的某彳防區(qū)工幣中取:修臣茁我.走k:行士Ffi的司能I區(qū)乂答案:B&國迎在色之中月中上可F n工生后好出云用自己的 仃 凈丁葉三丁標五二于定i 立包下問:辯:=不?:.才常同理曳比,口更好工貨商,刃比愎啜更可球) .在in 1王爰江甘u里爰有生生焚化,一養(yǎng)出1,王前也用柳加1史理膽小壬拉位寸堤,.皿這卜立物司;.就不二常工小7H曉欣等他答案:F選項AB是對稱的,所以肯定正確,由AB可以看出題目的意圖是,這次交換靠的是物品的相對價值相當(小張覺得橡皮比小刀更好,小王覺得小刀比橡皮更好),但明顯最后一個選項等值指的是他們的絕對價值Q降黨劇I i-ti4Ktifit

21、int charIhIStETt工下犀左生E4位北哩司三巖吁三出比罡葉土r工I答案:16l.struct的對齊原則,注意不同的編譯器有不同的效果。2.不同的數(shù)據(jù)類型在 32位和64位下所占字節(jié)的區(qū)別32位編譯器:char : 1個字節(jié)char* (即指針變量):4個字節(jié)(32位的尋址空間是 2A32,即32個bit ,也就 是4個字節(jié)。同理64位編譯器)short int : 2 個字節(jié)int : 4個字節(jié)unsigned int : 4 個字節(jié)float: 4個字節(jié)double: 8 個字節(jié)long: 4個字節(jié)long long: 8 個字節(jié)unsigned long: 4 個字節(jié)64位編譯

22、器:char : 1個字節(jié)char*(即指針變量):8個字節(jié)short int : 2 個字節(jié)int : 4個字節(jié)unsigned int : 4 個字節(jié)float: 4個字節(jié)double: 8 個字節(jié)long: 8 個字節(jié)long long: 8 個字節(jié)unsigned long: 8 個字節(jié)此處指針先占用8字節(jié)。int占用4字節(jié),滿足要求不用補齊,char占用一個字節(jié), 同時總的字節(jié)數(shù)必須滿足 8的倍數(shù)即160用近胤dJus togliit nailn(.-old;i(j.“rty.pu-rh tact l 311 pai-1-ay pujJhtack 39S);a-ray .push_t

23、Bc.k;J0e ji”7了.即赧 JWJjir.puh (9M) |a r-r H pu i h_b:ck EiK)-vectcr: :i.te-rsiar iter j+g (ltor-i rr jy negln (: ;! -a ay, end ( ; itc t-t) ( tto-ar - ay. erase i;)% i: 1 ay .bifln 0 mmii卡i it)答案:100 300 300 500vector:erase():從指定容器刪除指定位置的元素或某段范圍內(nèi)的元素vector:erase()方法有兩種重載形式如下:iterator erase(iterator _Where);iterator erase(iterator _First,iterator _Last);如果是刪除指定位置的元素時:返回值是一個迭代器,指向刪除元素下一個元素;如果是刪除某范圍內(nèi)的元素時:返回值也表示一個迭代器,指向最后一個刪除元素的下一個元素;本題中,當*itor=300成立時,刪除第一個值為300的元

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論