計算機(jī)筆試題大全_第1頁
計算機(jī)筆試題大全_第2頁
計算機(jī)筆試題大全_第3頁
計算機(jī)筆試題大全_第4頁
計算機(jī)筆試題大全_第5頁
已閱讀5頁,還剩38頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

找工作也快兩月了,感受頗多,最近看了一篇《怎樣花兩年時間去面試一個人》的博客,很有感觸,將自己的想法寫出來。在找工作的兩月中,自己從四大門戶:新浪、搜狐、網(wǎng)易、騰訊到業(yè)界領(lǐng)先的百度,搜狗、淘寶以及行業(yè)巨頭的微軟;從幾個人創(chuàng)業(yè)的阿甘網(wǎng)到幾十個人美麗說、友錄、微游半創(chuàng)業(yè)公司;從做瀏覽器的opera到石油設(shè)備的哈里伯頓、斯倫貝謝到咨詢的Thoughtworks再到做游戲的金山網(wǎng)游,如果加上一些想不起的公司名,而試有二三十家,再加上一倍以上的筆試。北京帶“網(wǎng)”字的公司幾乎被過了一圈。從這圈的經(jīng)驗,通過現(xiàn)在互聯(lián)網(wǎng)公司招聘的漏洞,總結(jié)出?些可以在兩月的時間內(nèi)得到?家頂級互聯(lián)網(wǎng)公司的offer的經(jīng)驗。簡單來說,成功100分的話,得分組成比例可以如下:1、50分的算法和C語言,2、15分的項目分,3、15分的知識面和扯淡分,4、10分的開發(fā)語言細(xì)節(jié)分,5、5分的其他。首先很贊同文首博客中的觀點,在短短的幾輪面試以及校園招聘意義不大的一輪筆試,想選取一個人是很困難的,而且還很容易漏掉一些有實力的人,我敢保證連IDE都沒啟動過而進(jìn)入頂級互聯(lián)網(wǎng)公司的同學(xué)不在少數(shù),不是懷疑這些同學(xué)的能力,只是說招這些同學(xué)對公司來說是一個極大的風(fēng)險,紙上的程序永遠(yuǎn)不能變成產(chǎn)品,而且紙上寫程序發(fā)現(xiàn)不了真正的問題,我加入的一些技術(shù)群中,一些我仰慕公司的員工不懂得求助百度,只會?有問題就擺到群上,讓人作答,甚至有些工作相當(dāng)時間的人不懂得如何斷點調(diào)試。好了,切入正題50分的算法和C語言題:假入你這兩個比較好(非超牛),那么你就有50%以上的機(jī)會進(jìn)入心儀的互聯(lián)網(wǎng)公司,現(xiàn)在的校園招聘筆試和面試,不分公司和部門都是一窩蜂的考這兩項,其實對于應(yīng)屆生來說,沒仃履歷,沒有工作對口方向知識的積累,而用人單位為了省事,經(jīng)常就一套題,所以有不少想做前端的同學(xué)去忍受C指針和算法的折磨。假如您的C語言不好,問題不大,翻出譚浩強(qiáng)的那個工科生必修的C教材,看了兩個禮拜足夠。假如您的算法不好,沒關(guān)系,現(xiàn)在的校園招聘算法題都是照抄生搬,從我筆試和面試題的重復(fù)度來看,八成以上的算法題能被找到原題,大家只要翻翻某火和某美就夠了,再做做百度上能搜出的算法筆試題的第一頁題目就夠用了。個人對這種東西不感冒甚至有點抵觸,一直鄙視中國應(yīng)試教育的用人單位如今變成的應(yīng)試招聘,本人在找工作極其不順的10月,多人建議看某美和某典,但是我看完的三本書是《浪潮之巔》,《數(shù)據(jù)之美》和《RESTful入門》。這些算法題其實難度也不大,要是大家都沒看過,也無所謂,但是在大多數(shù)人看過的時候,你就喪失了競爭公平性,好多這種題第一次想在很短時間內(nèi)正確完成還是有困難.個人經(jīng)驗,這類題集中一下兒個方面:排序,知道各種排序的時間和復(fù)雜度,能寫出快排,堆排以及計數(shù)排序的代碼且知道什么時候用哪種即可。鏈表:知道構(gòu)建動態(tài)鏈表,刪除節(jié)點,翻轉(zhuǎn)鏈表,兩兩翻轉(zhuǎn),求環(huán)節(jié)點,求兩鏈表交點足夠。字符串:知道高效翻轉(zhuǎn),回文足夠,如果還能完整的寫出KMP杳找就基本完美。樹:知道二叉樹的三種遞歸遍歷,非遞歸遍歷,杳找,知道兩種遍歷求第三種,再深一點,知道如何分層遍歷,如何求兩節(jié)點距離,就通吃了.其它:隊列、棧、哈希表的特性,動態(tài)規(guī)劃。只要上邊的只是準(zhǔn)備的差不多,算法的筆試和面試題問題就不大了。本人的本科和研究生都是機(jī)械,沒學(xué)過這些東西,從9月17的第一場微軟筆試開始,邊考邊學(xué),就靠這點東西闖筆試和過面試.15分的項目分:如果你沒有什么項目,但是你的1很好,那你這部分分基本拿到了,其實這部分很容易作假,個項目你只是打醬油的,但是你做過了解,說出個大概就夠了。本人有10幾個玩具似的小網(wǎng)站,有一頁半簡歷,那些面試官一看就煩,除了百度問了一個感興趣的項口,其它的都是說挑一個說,這就很簡單,憑看的一些東西,我甚至可以說G公司的BigTable是我做的,面試官也不一定懂您的項目。15分的知識而和扯淡分:這方面不太好提高,根據(jù)面試官和應(yīng)聘職位可能不同,最好是事先取經(jīng)。本人被問過:PageRank,搜索引擎倒正排索引,數(shù)據(jù)庫優(yōu)化,web性能優(yōu)化,瀏覽器渲染,web安全,爬蟲,設(shè)計模式,軟件架構(gòu),推薦系統(tǒng),加密算法,服務(wù)器推等等.一般來說公司不會根據(jù)這部分?jǐn)廊?,而且問的東西基本都能扯.但是有些公司會根據(jù)這部分?jǐn)廊恕?0分的開發(fā)語言細(xì)節(jié)分:根據(jù)個人擅長的語言,可能會問?些細(xì)節(jié)問題,來考察?個人對語言的掌握程度以及學(xué)習(xí)態(tài)度。比如C的指針函數(shù)、函數(shù)指針,高級語言的值類型,引用類型,值傳參和引用傳參,托管語言的GC等等。5分的其他:主要是溝通能力,印象以及有些公司要求的英語。個人認(rèn)為如果上邊說的你準(zhǔn)備差不多了,那么你就有很大可能進(jìn)入一個頂級互聯(lián)網(wǎng)公司。舉個人三個例子:.碰巧你霸面被批準(zhǔn)了,碰巧你看過搜索弓I擎中爬蟲如何爬取和分析正文,碰巧你了解過AJAX,碰巧你知道MVC,那么你過一面了,碰巧你會堆排序,碰巧你會兩個鏈表求交,那么你過二面了,碰巧你的C語言能寫出程序,那么你會把這個不復(fù)雜但代碼有點多程序?qū)懗鰜?,碰巧你有一點重構(gòu)的概念,把你丑陋的代碼改的優(yōu)雅漂亮些,那么你有一個17W的offer/..碰巧筆試后備胎中的你得到了面試機(jī)會。碰巧你做的一個項口很合面試官的口味,碰巧你知道web常見的安全漏洞,碰巧你寫過兩個鏈表求教,那么你過?面了,碰巧你準(zhǔn)備上述的2,碰巧你能寫出堆排和知道0RM,碰巧你能做出簡單的鏈表翻轉(zhuǎn),那么你過二面了。碰巧你準(zhǔn)備上述的2,碰巧你了解過WEB服務(wù),碰巧你知道。RM,碰巧你知道什么時候用堆排,而且碰巧會基數(shù)排序,那么你有一個19W的offer了。.碰巧筆試后備胎中的你得到了面試機(jī)會。碰巧你知道MVC,碰巧你了解過一些CSS和JS基本知識,碰巧你了解過瀏覽器渲染而且用這個解釋?個網(wǎng)站的加載順序,碰巧你學(xué)過web性能擴(kuò)充,那么你過一面了。碰巧你對web性能優(yōu)化比較了解,知道pagerank,碰巧你看過大型站點的架構(gòu)并能說出個大概,那么你有一個20W的offer了。拿到許多互聯(lián)網(wǎng)公司的offer后,我發(fā)現(xiàn)難度最大的是一個創(chuàng)業(yè)公司的。對于招聘如此不嚴(yán)謹(jǐn)?shù)钠髽I(yè),我不僅有點擔(dān)心,若企業(yè)招的少無所謂,招的多話,若不能和聘用者解除勞動關(guān)系,那么招聘上風(fēng)險不亞于一個重大項目的風(fēng)險,好的方面是招人多的企業(yè)總是有一些沒技術(shù)含量的活需要大量的人來干。本人計算機(jī)小碩,去年找工作時筆試面試參加了不少,打了不少醬油,沒啥大offer,只是拋磚引玉的將求職路上的一些經(jīng)驗與大家分享下,希望對后來人能有所幫助。1.騰訊后臺開發(fā)(1面-2面-hr面-實習(xí)offer)沒參加筆試,直接同學(xué)推薦過去面的,前兩面都是技術(shù)而,1面簡單問些項目經(jīng)驗和門己所擅長的專業(yè)知識;2面項口問的比較深入,還有一些算法和系統(tǒng)架構(gòu)設(shè)計方面的問題;hr面就是簡單的聊聊。暑期在騰訊實習(xí)了兩個月,有導(dǎo)師專門負(fù)責(zé)指導(dǎo),期間做了一個小項目,收獲不少,與leader在留用溝通時,表示不愿留在深圳,最后也沒發(fā)正式offer。騰訊大部分都是年輕人,整體氛圍比較輕松,電子化辦公也很完善,彈性1:作制,加班完全憑自愿,晚上8點后會有免費的水果面包飲料?,9點后的加班出租車票可以報銷,整個公司以產(chǎn)品為主導(dǎo),產(chǎn)品經(jīng)理有很強(qiáng)的話語權(quán)。2.360服務(wù)器端開發(fā)(筆試):校招參加的第一次筆試,題口不難,可惜編程題寫程序時犯了個低級錯誤,顯得的水平很業(yè)余,沒有面試機(jī)會,其實個人和職位要求還是很match的。.百度云計算研發(fā)(筆試-1面-2面-3面-offer)筆試都是大題,比較開放式,涉及比較廣有線程調(diào)度、算法、語言、系統(tǒng)設(shè)計等,比較符合個人胃口。1面剛開始直接就寫兩個程序,然后問了問項目以及一些數(shù)據(jù)結(jié)構(gòu)和網(wǎng)絡(luò)方面的知識,只記得其中有個問題是如何判斷程序中堆和棧增長方向;2面是電面,主要問了些算法問題,讓設(shè)計一個圖片存儲系統(tǒng),并進(jìn)行優(yōu)化,問的很細(xì),讓把主要的數(shù)據(jù)結(jié)構(gòu)和調(diào)度算法都設(shè)計出來,然后根據(jù)你設(shè)計的系統(tǒng)提一些更高的要求并進(jìn)行優(yōu)化;3面是部門經(jīng)理的電面,也是技術(shù)面,但也問了些個人興趣、性格特點等問題,比如我說喜歡玩Dota,就問我喜歡玩哪種類型的英雄(當(dāng)然是根據(jù)團(tuán)隊需要,缺啥玩啥,哈哈),技術(shù)主耍以項目為主,問的很深,問了好多項目中涉及到細(xì)節(jié)的問題,而且問題一針見血,不得不佩服百度還是牛人多,參加的其他面試都沒問過這么深入的,不過自己做的項目還是比較胸有成竹的。3面完第二天也就是國慶前一天就收到了offer,是收到的第一個校招正式offer,今年百度全國招了快2000人,還有不少都是后面補(bǔ)招進(jìn)來。.搜狗C++開發(fā)(筆試-面試-offer)筆試就是選擇題和2道程序題,面試總共就1面不到30分鐘,問題包括項目經(jīng)驗、多線程網(wǎng)絡(luò)編程方面的問題和一個微博系統(tǒng)的設(shè)計問題,當(dāng)場就給了口頭offer,2周后發(fā)了正式offer。搜狗今年擴(kuò)張,待遇開的比百度高點,還有股票,不過整個招聘過程讓人感覺不靠譜啊,太容易得到的反而有點猶豫哈。.淘寶系統(tǒng)工程師(筆試-1面-2面-3面)筆試包括選擇題、大題、附加題和選做題,選擇題都是基礎(chǔ)知識,大題包括系統(tǒng)設(shè)計和算法題。3面同?天完成,通過的話會讓你留下等待下一輪面面試,1面先讓講了講項目經(jīng)驗,然后問了些算法和系統(tǒng)設(shè)計方面的問題;2面和1面差不多,然后說了卜.系統(tǒng)工程師的具體職責(zé),涉及面很廣,有Linux內(nèi)核開發(fā)、分布式開發(fā)還有些類似于運維方面的1作,問了下自己希望從事哪方面的研發(fā):3面是2個人,hr和技術(shù)經(jīng)理吧,依然問了些技術(shù)問題,然后hr問了下工作意向offer情況等等,表示自已不想去杭州希望去北京,最后裁環(huán)助給ffer。.網(wǎng)易C++開發(fā)(筆試-技術(shù)面-hr面)筆試是選擇題、填空題和大題,有關(guān)于數(shù)據(jù)庫和語言方面的知識,還有些算法題:技術(shù)面主要問了些關(guān)了C++語言方面的知識和項目經(jīng)驗,還有個數(shù)學(xué)證明題(汗,當(dāng)時沒準(zhǔn)備,答得比較扯):hr面上要了解工作意、期望薪水和offer情況等,我表示不想去杭州,后來也沒發(fā)offer。.新浪云計算開發(fā)(筆試-面試-offer)筆試考察范圍很廣,涉及到數(shù)據(jù)結(jié)構(gòu)、網(wǎng)絡(luò)、安全、Linux常用命令、內(nèi)核、算法、程序設(shè)計,以及項目管理等方面;而試就一輪,3個面試官,2個不同部門的經(jīng)理和1個hr,主耍問了些項目經(jīng)驗,然后根據(jù)簡歷問了些關(guān)于內(nèi)核和網(wǎng)絡(luò)編程方面的知識,以及一些在項目中遇到的困難如何克服等等,還問了卜期望薪水以及希望戶口落在哪個城市的問題。發(fā)offer前有hr電話溝通談戶口情況和期望_L資,最后給的offer待遇和百度一樣,但是戶口不能給保證,只說有很大的可能性(去年解決了55%),最后放棄了。.人民搜索軟開(筆試-面試)筆試是選擇題+大題,面試都是被拉過去給面試官增加經(jīng)驗值的,也是以寫程序為主,并且寫完后要不斷的去優(yōu)化優(yōu)化再優(yōu)化。人民搜索據(jù)說加班挺多,但是待遇還是很給力,尤其是保證解決北京戶口。小結(jié):互聯(lián)網(wǎng)企業(yè)比較看重算法和項目經(jīng)驗,語言倒是其次,其實面試時間項目經(jīng)驗,并不是單純的考察你做過什么,而是看你是如何做,為什么這么做,有沒有更好的解決方案,做項目時問題考慮的是否全面,是看你思維的方式,對整個計算機(jī)系統(tǒng)的認(rèn)識,更加看取你的發(fā)展?jié)摿??;ヂ?lián)網(wǎng)公司太多是彈性工作制,相對比較自由,加班情況通常比較多,不過周末?般不加班。建議(希望從事技術(shù)方面工作的同學(xué)).多看些經(jīng)典/篇,《UNIX環(huán)境高級編程》《深入理解計算機(jī)系統(tǒng)》《深入理解Linux內(nèi)核》《UNIX網(wǎng)絡(luò)編程卷一》《編程珠磯》《C++Primer》《C和指針》《編程之美》等等,這些書籍能夠使你對整個計算機(jī)系統(tǒng)有更深入的理解,并且其中有許多經(jīng)典的算法和數(shù)據(jù)結(jié)構(gòu)可以參考學(xué)習(xí),看完前四木書,我就感覺自己對底層編程的認(rèn)識上升了一個檔次,后面四本書主要是針對面試時一些語言和算法問題準(zhǔn)備的。.多看看經(jīng)典的開源代碼,如Linux內(nèi)核代碼等,因為項目原因,看了不少Linux內(nèi)存方面和Solaris卜.的源代碼,里面一幽精妙的數(shù)據(jù)結(jié)構(gòu)和系統(tǒng)架構(gòu)的設(shè)計,真的能使人獲益匪淺..多動手做些實際項口的開發(fā),實踐出真知,在實踐中發(fā)現(xiàn)并解決問題,能夠快速的提高技術(shù)水平和思維方式。通過這一段我找互聯(lián)網(wǎng)實習(xí)的經(jīng)歷說說我個人對于準(zhǔn)備互聯(lián)網(wǎng)工作的見解,希望對有意互聯(lián)網(wǎng)企業(yè)的同學(xué)有一點幫助.雖然是找實習(xí)的經(jīng)歷,但很多實習(xí)都是可以轉(zhuǎn)正的,所以也差不多。而且,即將開始的互聯(lián)網(wǎng)校招我應(yīng)該絕大多數(shù)不會參加,所以那時候也沒啥好寫的了.我這里說的互聯(lián)網(wǎng)企業(yè)也包括一些軟件公司。我只投過舊M,騰訊,百度,MS.人搜,拿到過IBM,MS.人搜的offer.個人情況:.有過工作經(jīng)歷;項目經(jīng)驗一般,沒什么大牛項目,簡歷上只寫了兩個項目。文字+敘述能力不錯,簡歷寫的還可以,投簡歷至今包括國企沒掛過簡歷(我簡歷兩頁紙,我至今沒掛過筒歷,一頁/兩頁隨自己,或的沒有什么必須?頁的要求);.算法還勉強(qiáng)可以寫寫,兩次校內(nèi)賽進(jìn)一次決賽,沒獎。校內(nèi)個人賽去年的阿里巴巴那個,好像是第23名。操作系統(tǒng)、數(shù)據(jù)庫、網(wǎng)絡(luò)等均一般。So,實力真心一般。周圍有一大票拿了一圈offer的人嗯,希望那些大牛們有空也可以寫個帖子什么的分享下。建議的準(zhǔn)備:.其實我覺得“項目”、“算法”、“操作系統(tǒng)”、“數(shù)據(jù)庫”、“網(wǎng)絡(luò)”等,只要取其一你比較精通,面試的時候引面試它往你精通的方向侃,基本搞定個互聯(lián)網(wǎng)offer問題不大。.我是走的算法這條路,POJ上兒十道題吧,POJ首頁上介紹的《程序設(shè)計導(dǎo)引及在線實踐》做完了,大概有100道題,這100道題其實比較水,然后就是有什么比賽神馬的都打打醬油嗯。劉汝佳的白書《算法競賽入門經(jīng)典》看完了,題沒怎么做,黑書《算法藝術(shù)與信息學(xué)競賽》沒看-《算法導(dǎo)論》完全就是當(dāng)參考書用,跟新的一樣.《編程之美》看了個半吊子,《程序員而試寶典》看了一遍。我個人覺得代碼這個東西,首先要手寫流利,數(shù)據(jù)結(jié)構(gòu)一定要精通,一般的單鏈表的操作、排序等等,一定要流利的寫出來,然后就是不要默寫書上的,耍做到自己能敲出自己的代碼實現(xiàn)排序等等.這些都做到了才需要去看一些算法,0J上敲一些水題,看看《編程之美》的第二三部分基本就夠了。個人面試經(jīng)歷:.研一暑期投了舊M、騰訊。舊M是通過舊M俱樂部投的,直接投的青出于藍(lán)的暑期實習(xí)項目,通過俱樂部投的命中率很高。所以參加個什么俱樂部混混還是有點用的,學(xué)校的類似俱樂部還蠻多的,騰訊、MS、百度俱樂部等等。舊M我投了兩個崗位,兩個崗位我都收到了offer,但最后實驗室不放人沒去成嗯。面的不難,包括數(shù)據(jù)結(jié)構(gòu)單鏈表的操作,單例模式,設(shè)計數(shù)據(jù)庫等等,代眄都沒寫多少。騰訊是投的暑期實習(xí),騰訊的我參加了兩次筆試了,題型都是一大票選擇題,然后一個程序填空,最后一個開放性的題。騰訊面的有點難度,至少對于當(dāng)時的我有點難度,包括read/fread的區(qū)別,strcpy/memcpy的區(qū)別,寫堆排序,求一堆字符串的共同后綴。面的不好,掛掉了。.研二暑期投了MS、騰訊、百度、人搜。MS的筆試實在太早了,我編程之美完全還沒動,筆的很爛,直接沒有面試機(jī)會。后來我找人給我內(nèi)推了個,然后得到了個面試機(jī)會,與?個老外全英文溝通了?個小時,技術(shù)倒是問的不多,大致就是?些數(shù)據(jù)結(jié)構(gòu)的設(shè)計,可。ffer給的太晚,給我電話的時候他話還沒說完我就說我可能最近去不了,想拖一下這個offer,后來就弄丟了,他們招了別人。我還是蠻向往去ms體驗一下的,唉可惜實驗室放實習(xí)的機(jī)會太少了。百度筆試就掛了,掛的挺莫名其妙的,海筆海而全看人品,筆試題很多都是編程之美上的。騰訊面的還有點難度的,包括手寫二分查找、?堆字符串的最長后綴(字典樹或者后綴數(shù)組)、10w個字符串找出有相同后綴的字符數(shù)目最多的那一些(我用的哈希)、C++多重繼承的虛函數(shù)內(nèi)存分布、手寫一個虛函數(shù)的使用例子、多線程的通信和管理、HTTP協(xié)議等。明顯這次面的比研那次強(qiáng)太多了,基本所有問題都答上來了,和面試官相談甚歡??墒?,可是,居然掛掉了,也是莫名其妙。人搜的筆試好像是5道題吧,除了最后一道題有一點算法外,其他的還好吧,難度比不上百度的。但面試就很難了,問了包括n!尾部0的個數(shù)(編程之美有),鏈表的重復(fù)結(jié)點(編程之美有),一個矩陣權(quán)重邊有關(guān)的dp的題,二叉樹的序列化與反序列化,一個類似于最長遞增子序列但比這個難的dp題(最長遞增子序列編程之美有),單例模式,知道節(jié)點數(shù)求完全二叉樹的最后?層的最右邊?個結(jié)點的0(n)的方法,一個接電線的題(本次面試最難的一個題,搜索質(zhì)量的經(jīng)理面的),query結(jié)果有10億個如何存儲.人搜特別注重寫代碼,除了最后兩個題,其余所有的題,都必須嚴(yán)謹(jǐn)?shù)膶懗龃a。互聯(lián)網(wǎng)待遇的問題很透明,網(wǎng)上都有,很透明,我就不方便說了。寫在最后:后頭看看寫的好亂,實在沒辦法,如果好好寫至少上.萬字,現(xiàn)在是實在沒有這個時間,最近真蠻忙的.我互聯(lián)網(wǎng)找工作的經(jīng)歷其實不多。因為我力己就經(jīng)常說我現(xiàn)在寫代碼為的就是以后不寫代碼,互聯(lián)網(wǎng)只是練練手保個底。說一下一個心態(tài)的問題吧,我覺得各行各業(yè)都有自己存在的意義,每一個工作都是好工作,碼農(nóng)們沒不要自嘲,當(dāng)然了,也有很多同學(xué)蠻自傲的,其實也真沒必要。如果有機(jī)會的話,能出去實習(xí)就出去實習(xí),因為?份工作,你想象的很好,實際干了不定喜歡,實習(xí)能有個保底的工作機(jī)會,也能讓你看清楚你到底適合什么樣的工作。不斷的分析自己,找到最適合自己的發(fā)展方向。論壇上的東西可以參考,但不要全信,對于份工作,能說清楚的只有那些干了這份工作至少三年并還在做的人,所以,人脈的積累很重要,問人一定要找到這樣核心的人問,其他的,要辯證的看,去偽存真,不要人云亦云,不要論壇上的人說這個好那個不好然后你就覺得對,好的工作是相對于人而言的,對于每個人都有適合他自己的好工作。百度筆經(jīng)1一、算法設(shè)計1、設(shè)rand(s.t)返回[s,t]之間的隨機(jī)小數(shù),利用該函數(shù)在一個半徑為R的圓內(nèi)找隨機(jī)n個點,并給出時間復(fù)雜度分析。思路:這個使用數(shù)學(xué)中的極坐標(biāo)來解決,先調(diào)用[s1,t1]隨機(jī)產(chǎn)生一個數(shù)r,歸一化后乘以半徑,得到R*(r-s1)/(t1-s1),然后在調(diào)用[s2,t2]隨機(jī)產(chǎn)生一個數(shù)a,歸一化后得到角度:360*(a-s2)/(t2-s2)2、為分析用戶行為,系統(tǒng)常需存儲用戶的一些query,但因query作常多,故系統(tǒng)不能全存,設(shè)系統(tǒng)每天只存m個query,現(xiàn)設(shè)計一個算法,對用戶請求的query進(jìn)行隨機(jī)選擇m個,請給一個方案,使得每個query被抽中的概率相等,并分析之,注意:不到最后咳U,并不知用戶的總請求量。思路:如果用戶查詢的數(shù)量小于m,那么直接就存起來。如果用戶查詢的數(shù)最大于m,假設(shè)為m+i,那么在之間隨機(jī)產(chǎn)生一個數(shù),如果選擇的是前面m條杳詢進(jìn)行存取,那么概率為m/(m+i),如果選擇的是后面i條記錄中的查詢,那么用這個記錄來替換前面m條查詢記錄的概率為m/(m+i)*(1-1/m)=(m-1)/(m+i),當(dāng)查詢記錄量很大的時候,m/(m+i)==(m-1)/(m+i),所以每個query被抽中的概率是相等的。3、C++STL中vector的相關(guān)問題:(1),調(diào)用push_back時,其內(nèi)部的內(nèi)存分配是如何進(jìn)行的?(2)、調(diào)用clear時,內(nèi)部是如何具體實現(xiàn)的?若想將其內(nèi)存釋放,該如何操作?vector的工作原理是系統(tǒng)預(yù)先分配一塊CAPACITY大小的空間,當(dāng)插入的數(shù)據(jù)超過這個空間的時候,這塊空間會讓某種方式擴(kuò)展,但是你刪除數(shù)據(jù)的時候,它卻不會縮小。vector為了防止大量分配連續(xù)內(nèi)存的開銷,保持一塊默認(rèn)的尺寸的內(nèi)存,clear只是清數(shù)據(jù)了,未清內(nèi)存,因為vector的capacity容量未變化,系統(tǒng)維護(hù)一個的默認(rèn)值。有什么方法可以釋放掠vector中占用的全部內(nèi)存呢?標(biāo)準(zhǔn)的解決方法如下template<classT>voidClearVector(vector<T>&vt)(vector<T>vtTemp;veTemp.swap(vt);)事實上,vector根本就不管內(nèi)存,它只是負(fù)責(zé)向內(nèi)存管理框架acquire/release內(nèi)存,內(nèi)存管理框架如果發(fā)現(xiàn)內(nèi)存不夠了,就malloc,但是當(dāng)vector釋放資源的時候(比如destruct),stl根本就不調(diào)用free以減少內(nèi)存,因為內(nèi)存分配在stl的底層:stl假定如果你需要更多的資源就代表你以后也可能需要這么多資源(你的list,hashmap也是用這些內(nèi)存),所以就沒必要不停地malloc/free。如果是這個邏輯的話這可能是個trade-off一般的STL內(nèi)存管理器allocator都是用內(nèi)存池來管理內(nèi)存的,所以某個容稻申請內(nèi)存或釋放內(nèi)存都只是影響到內(nèi)存池的剩余內(nèi)存量,而不是真的把內(nèi)存歸還給系統(tǒng)。這樣做一是為了避免內(nèi)存碎片,二是提高了內(nèi)存申請和釋放的效率——不用每次都在系統(tǒng)內(nèi)存里尋找一番.二、系統(tǒng)設(shè)計正常用戶端每分鐘最多發(fā)一個請求至服務(wù)端,服務(wù)端需做一個異??蛻舳诵袨榈倪^濾系統(tǒng),設(shè)服務(wù)器在某一刻收到客戶端A的一個請求,則1分鐘內(nèi)的客戶端任何其它請求都需要被過濾,現(xiàn)知每一客戶端都有一個IPv6地址可作為其ID,客戶端個數(shù)太多,以至于無法全部放到單臺服務(wù)器的內(nèi)存hash表中,現(xiàn)需簡單設(shè)計一個系統(tǒng),使用支持高效的過濾,可使用多臺機(jī)器,但要求使用的機(jī)器越少越好,請將關(guān)鍵的設(shè)計和思想用圖表和代碼表現(xiàn)出來。三、求?個全排列函數(shù):如p([1,2,3])輸出:[123],[132],[213],[231],[321],[312]求一個組合函數(shù)。方法1:依次從字符串中取出一個字符作為最終排列的第一個字符,對剩余字符組成的字符串生成全排列,最終結(jié)果為取出的字符和剩余子串全排列的組合.優(yōu)點:該方法易于理解,但無法移除重復(fù)的排列,如:s="ABA".會生成兩個“AAB”。方法2:利用交換的思想,具體見實例,但該方法不如方法1容易理解。我們以:個字符abc為例來分析一下求字符串排列的過程。首先我們固定第一個字符a,求后面兩個字符be的排列。當(dāng)兩個字符be的排列求好之后,我們把第一個字符a和后面的b交換,得到bac,接著我們固定第一個字符b,求后面兩個字符ac的排列.現(xiàn)在是把c放到第一位置的時候了。記住前面我們己經(jīng)把原先的第個字符a和后面的b做了交換,為了保證這次c仍然是和原先處在第?位置的a交換,我們在拿c和第一個字符交換之前,先要把b和a交換回來。在交換b和a之后,再拿c和處在第一位置的a進(jìn)行交換,得到cba。我們再次固定第一個字符c,求后面兩個字符b、a的排列。既然我們已經(jīng)知道怎么求三個字符的排列,那么固定第?個字符之后求后面兩個字符的排列,就是典型的遞歸思路了。基于前面的分析,我們可以得到如卜的參考代碼:如p([1,2,3])輸出:[1b[2],[3],[1,2],[2,3]、[1,3]、[1,2,3]這兩間可以用偽代碼。百度筆經(jīng)2第一大題:「extern"C”{}含義,應(yīng)用在什么場景下?.經(jīng)典設(shè)計模式寫出至少兩個,解釋一下,最好寫出偽代碼.TCP連接中的wait_time含義,應(yīng)用場景,好處和壞處第二大題.一個任務(wù)處理器吧,N個任務(wù),任務(wù)之間會有依賴關(guān)系。比如A依賴B,A需要B完成之后才能開始,寫出算法,找到合適的任務(wù)順序。說明算法的時間復(fù)雜度和空間復(fù)雜度。.一個英文文本,含有字母,和","和空格。寫出函數(shù),這個函數(shù)用了找出英文文本中含有的完整句子的個數(shù)。含有至少一個字母并且以句號".”結(jié)尾的視為一個完整的句子。寫出完整的代碼。第二大題:系統(tǒng)設(shè)計題1.實時監(jiān)控系統(tǒng)。仃很多記錄,記錄中含有url,時間段,ip該系統(tǒng)可以同時實現(xiàn)如卜兩個查詢查詢一:已知時間段(精確到分鐘)和某個url,求滿足條件的總流量查詢二:已知時間段(精確到分鐘)和某個ip,求滿足條件的總流最百度筆經(jīng)3一、簡答1、系統(tǒng)又很多任務(wù),任務(wù)之間有依賴,比如B依賴于A,則A執(zhí)行完后B才能執(zhí)行(1)不考慮系統(tǒng)并行性,設(shè)計一個函數(shù)(Task*Ptask,intTask_num)不考慮并行度,最快的方法完成所有任務(wù)。(2)考慮并行度,怎么設(shè)計typedefstruct{intID;int*child;intchild_num;}Task;提供的函數(shù):booldoTask(inttaskID);無阻塞的運行?個任務(wù);intwaitTask(inttimeout);返回運行完成的任務(wù)id,如果沒有則返回-1:boolkillTask(inttaskID);殺死進(jìn)程2、堆和棧的生命周期,內(nèi)存分配性能,不同處,如果一般情況下要求1KB,偶爾需要100MB的緩存空間怎么設(shè)計?二、必答題(各種const)1、解釋下面ptr含義和不同(好像是。。。。題干了大概意思是這樣。下面應(yīng)該沒錯)double*prt=&valueconstdouble*ptr=&valuedouble*constptr=&valueconstdouble*constptr=&value2、去掉const屬性,例:constdoublevalue=O.Of;double*ptr=NULL;怎么才能讓ptr指向value?三、算法設(shè)計1、?個?維數(shù)軸上有不同的線段,求重復(fù)最長的兩個線段。例:a:1?3b:2?7c:2?8最長重復(fù)是b和c2、有向帶權(quán)圖最短路徑四、系統(tǒng)設(shè)計大概意思是:百度內(nèi)部有一個類似cs系統(tǒng)的計算系統(tǒng),由于大并發(fā)計算很耗資源,所有要設(shè)計一個緩存系統(tǒng)。c做緩存,配置2.66MHZ,3G內(nèi)存,大概有1000w個查詢,唯?的查詢大概有500w。要緩存24小時。設(shè)計這個緩存系統(tǒng)的運行機(jī)制,算法等等東西。。。。。記不太清了。。。騰訊筆經(jīng)1全卷100分,其中60分選擇題,每題3分,40分填空題,每空4分,最后有三題編程附加題,騰訊說附加題僅作參考,不做計分排名用。選擇題第題考extern的作用;第二題考strstr函數(shù)的作用;第一:題考windows卜.線程什么優(yōu)先級最高;第四題考一個交換x,y值的函數(shù)的正確寫法;接下來的不是很記得了,內(nèi)容大概有析構(gòu)函數(shù)/構(gòu)造函數(shù)能不能被繼承,虛函數(shù)的繼承,linuxFfork的返回值,unix下進(jìn)程間通信最快是采取什么方法;constint*x和int*constx的區(qū)別,int*p[4]的含義:指針的自加和引用等等。。。選擇題就只記得這些了,下面說填空題;第一題是問(++x)*(++x)和(X++)*(X++)的值:第:題是給了一個二維數(shù)組a[2][3],然后定義了一個int*p[3],p=a;然后問*(*(p+1)+1)的值;第三題是一個計算變量x的二進(jìn)制數(shù)里面有多少個1的程序填空題,while循環(huán)里面進(jìn)行的是x=x&(x-1);第四題問inline的作用第五題問ifndef的作用第六題給了一個將鏈表逆序的程序,填空:填空題就這些了,卜面附加題;附加題二題:第一題是將兩個己經(jīng)排好序的鏈表合并成一個有序的鏈表;第:題是用0(n)的時間復(fù)雜度和0(1)的空間復(fù)雜度對二叉樹進(jìn)行層次遍歷;第三題是一個邏輯推理題;四個人,其中一個是小偷,他們每人說了一句話,其中有三個人說真話,一個人說假話,讓寫代碼判斷哪個是小偷;騰訊筆經(jīng)21、卜面的排序算法中,初始數(shù)據(jù)集的排列順序?qū)λ惴ǖ男阅軣o影響的是(B)A,插入排序 B、堆排序 C、冒泡排序 D、快速排序2、以下關(guān)于Cache的敘述中,正確的是(B)A、CPU中的Cache容量應(yīng)大于CPU之外的Cache容量B、Cache的設(shè)計思想是在合理成本下提高命中率C、Cache的設(shè)計目標(biāo)是容量盡可能與主存容最相等D、在容量確定的情況下,替換算法的時間復(fù)雜度是影響Cache命中率的關(guān)鍵因素3、數(shù)據(jù)存儲在磁盤上.的排列方式會影響I/。服務(wù)的性能,一個圓環(huán)的磁道上有10個物理塊,10個數(shù)據(jù)記錄R1--一R10存放在這個磁道上,記錄的安排順序如卜表所示:物理塊12345678910邏輯記錄R1R2R3R4R5R6R7R8R9R10假設(shè)磁盤的旋轉(zhuǎn)速度為20ms/周,磁盤當(dāng)前處在R1的開頭處,若系統(tǒng)順序掃描后將數(shù)據(jù)放入單緩沖區(qū)內(nèi),處理數(shù)據(jù)的時間為4ms(然后再讀取卜,個記錄),則處理這10個記錄的最長時間為(C)A、180msB、200msC>204msD、220ms2+4+((2+4)+2*8)*9=2044、隨著IP網(wǎng)絡(luò)的發(fā)展,為了節(jié)省可分配的注冊IP地址,有一些地址被拿出來用于私有IP地址,以卜.不屬「私有IP地址范圍的是(C)A、4B、8C.0D,00私有IP地址共有三個范圍段:A、-55/8B.-55/12C,-55/165、卜.列關(guān)于一個類的靜態(tài)成員的描述中,不正確的是(D)A、該類的對象共享其靜態(tài)成員變量的值B、靜態(tài)成員變地可被該類的所仃方法訪問c、該類的靜態(tài)方法只能訪問該類的靜態(tài)成員變量D、該類的靜態(tài)數(shù)據(jù)成員變量的值不可修改6、已知I?個線性表(38,25,74,63,52,48),假定采用散列函數(shù)h(key)=key%7計算散歹ij地址,并散列存儲在散列表A【?!?6】中,若采用線性探測方法解決沖突,則在該散列表上進(jìn)行等概率成功查找的平均杳找長度為(C)A、1.5B,1.7C、2.0D、2.37、表達(dá)式“X=A+B*(C--D)/E”的后綴表示形式可以為(C)A、XAB+CDE/-*=B,XA+BC-DE/*=C、XABCD-*E/+=D,XABCDE+7=8、(B)設(shè)計模式將抽象部分與它的實現(xiàn)部分相分離。A、Singleton(單例)B,Bridge(橋接)C、Composite(組合)D、Facade(外觀)10、C++將父類的析構(gòu)函數(shù)定義為虛函數(shù),下列正確的是哪個?A、釋放父類指針時能正確釋放子類對象B、釋放子類指針時能正確釋放父類對象C、這樣做是錯誤的D、以上全錯C++的多態(tài)肯定是使用父類的指針指向子類的對象,所以肯定是釋放子類的對象,如果不使用虛函數(shù)的話,父類的指針就只能夠釋放父類的對象。11、卜.列哪一個不屬于關(guān)系數(shù)據(jù)庫的特點?A、數(shù)據(jù)冗余度小B、數(shù)據(jù)獨立性高C、數(shù)據(jù)共享性好D、多用戶訪問13、typedefchar*String_t;和#defineString_dchar*這兩句在使用上有什么區(qū)別?答:typedefchar,String_t定義了?個新的類型別名,有類型檢查。而#defineString_dchar*只是做了個簡單的替換,無類型檢查,前者在編譯的時候處理,后者在預(yù)編譯的時候處理。同時定義多個變量的時候有區(qū)別,主要區(qū)別在于這種使用方式String」a,b;String_dc,d;a,b,c都是char*類型,而d為char類型由于typedef還要做類型檢查。。#define沒有.。所以typedef比#define安全。。14,到商店里買200的商品返還100優(yōu)惠券(可以在本商店代替現(xiàn)金)。請問實際上折扣是多少?15、題目:已知rand7()可以產(chǎn)生1~7的7個數(shù)(均勻概率),利用rand7()產(chǎn)生rand10()1~10(均勻概率)記住這道題重點是:均勻概率16、給定能隨機(jī)生成整數(shù)1到5的函數(shù),寫出能隨機(jī)生成整數(shù)1到7的函數(shù)。17、對一個正整數(shù)作如下操作:如果是偶數(shù)則除以2,如果是奇數(shù)則加1,如此進(jìn)行直到1時操作停止,求經(jīng)過9次操作變?yōu)?的數(shù)有多少個?第9次操作:結(jié)果1由2產(chǎn)生。1個被操作數(shù)8:結(jié)果2只能由4產(chǎn)生?1個被操作數(shù)7:結(jié)果4由8、3產(chǎn)生。2個6:結(jié)果8由16、7產(chǎn)生;結(jié)果3由6產(chǎn)生。共3個5:結(jié)果16由32、15產(chǎn)生;結(jié)果7由14產(chǎn)生;結(jié)果6由12、5產(chǎn)生。共5個…每次操作,偶數(shù)(2除外)都由該數(shù)減1和該數(shù)的2倍得來,奇數(shù)只由該數(shù)的2倍得來各次操作的操作對象個數(shù)為:1,1,2,3,5,8,13,21,34

本題可以通過所給的變換規(guī)律,由易到難,確定操作可變?yōu)?的數(shù)組成斐波拉契數(shù)列,再根據(jù)所發(fā)現(xiàn)的規(guī)律求出經(jīng)過9次操作變?yōu)?的數(shù)的個數(shù)。算法編程題:1、給定一個字符串,求出其最長的重復(fù)子串。思路:使用后綴數(shù)組,對一個字符串生成相應(yīng)的后綴數(shù)組后,然后再排序,排完序依次檢測相鄰的兩個字符串的開頭公共部分。這樣的時間復(fù)雜度為:生成后綴數(shù)組0(N)排序O(NlogN*N)最后面的N是因為字符串比較也是O(N)依次檢測相鄰的兩個字符串0(N*N)總的時間復(fù)雜度是O(N"2*logN).騰訊筆經(jīng)3一.單選題(每題4分,15題,共60分).考慮函數(shù)原型voidhello(inta,intb=7,char*pszC="*"),下面的函數(shù)調(diào)用鐘,屬于不合法調(diào)用的是:Ahello(5)B.hello(5,8)C.hello(6,"#") D.hello(0,0,"#").下面有關(guān)重載函數(shù)的說法中正確的是:A.重載函數(shù)必須具有不同的返I可值類型B.重載函數(shù)形參個數(shù)必須不同C.重載函數(shù)必須有不同的形參列入 D.重載函數(shù)名可以不同.分析一下程序的運行結(jié)果:#include<iostream.h>classCBase(public:CBase(){cout?MconstructingCBaseclassn?endl;}~CBase(){coutvv"destructingCBaseclassH?endl;}};classCSub:publicCBase(public:CSub(){cout?MconstructingCSubclassM?endl;}-CSub(){cout?"destructingCSubclassn?endl;});voidmain()CSubobj;constructingCSubclassconstructingCBaseclassdestructingCSubclassconstructingCBaseclassdestructingCBaseclassconstructingCSubclassdestructingCBaseclassdestructingCSubclassconstructingCSubclassconstructingCBaseclassdestructingCSubclassconstructingCBaseclassdestructingCBaseclassconstructingCSubclassdestructingCBaseclassdestructingCSubclassconstructingCBaseclassconstructingCSubclassdestructingCSubclassdestructingCBaseclassconstructingCSubclassconstructingCBaseclassdestructingCBaseclassdestructingCSubclass.在?個cpp文件里面,定義了個static類型的全局變量,下面?zhèn)€正確的描述是:A.只能在該cpp所在的編譯模塊中使用該變量B.該變量的值是不可改變的C.該變量不能在類的成員函數(shù)中引用D.這種變量只能是基本類型(如int,char)不能是C++類型.觀察卜.面一段代碼:classClassA{public:virtual-ClassA(){};virtualvoidFunctionA(){};);classClassB(public:virtualvoidFunctionB(){};};classClassC:publicClassA,publicClassB{public:};ClassCaObject;ClassA*pA=&aObject;ClassB*pB=&aObject;ClassC*pC=&aObject;關(guān)于pA,pB,pC的取值,下面的描述中正確的是:A.pA,pB,pC的取值相同. B.pC=pA+pBC.pA和pB不相同 D.pC不等于pA也不等于pB.參照1.5的代碼,假設(shè)定義了ClassA*pA2,下面正確的代碼是:A.pA2=static_cast<ClassA*>(pB);B.void*pVoid=static_cast<void*>(pB);pA2=static_cast<ClassA*>(pVoid);C.pA2=pB;D.pA2=static_cast<ClassA*>(static_cast<ClassC*>(pB));.參照1.5的代碼,下面那一個語句是不安全的:A.deletepAB.deletepBC.deletepC.卜.列程序的運行結(jié)果為:#include<iostream.h>voidmain(){inta=2;intb=++a;cout?a/6?endl;)A.0.5B.OC0.7D.0.6666666-.有如下?段代碼:#defineADD(x,y)x+yintm=3;m+=m*ADD(m,m);則m的值為:A.15B.12C.18D.58.如下是一個帶權(quán)的圖,圖中結(jié)點A到結(jié)點D的關(guān)鍵路徑的長度是:A.13 B.15 C.28 D.58.下面的模板聲明中,正確的是:A.template<typenameT1,T2>B.template<classT1,T2>C.template<classT1,classT2>D.template<typenameT1;typenameT2>.在Windows編程中下面的說法正確的是:A.兩個窗口,他們的窗口句柄可以是相同的 B.兩個窗口,他們的處理函數(shù)可以是相同的C.兩個窗口,他們的窗口句柄和窗口處理函數(shù)都不可以相同..下面哪種情況下,B不能隱式轉(zhuǎn)換為A?A.classB:publicA{} B.classA:publicB{}C.classB{operatorA();} D.classA{A(constB&);}.某公司使用包過濾防火墻控制進(jìn)出公司局域網(wǎng)的數(shù)據(jù),在不考慮使用代理服務(wù)器的情況下,下面描述錯誤的是”該防火墻能夠()”.A.使公司員工只能訪問Internet上與其業(yè)務(wù)聯(lián)系的公司的IP地址.B.僅允許HTTP協(xié)議通過,不允許其他協(xié)議通過,例如TCP/UDP.C.使員工不能直接訪問FTP服務(wù)器端口號為21的FTP地址.D.僅允許公司中具有某些特定IP地址的計算機(jī)可以訪問外部網(wǎng)絡(luò).數(shù)字字符0的ASCII值為48,若有以下程序:main()(chara=,r,b=2,;printf(M%c/\b++);printK^dVn;b-a);程序運行之后的輸出結(jié)果是:A.3,2 B,50,2 C.2,2 D.2,50二,填空題(共40分)本程序從正文文件textin讀入一篇英文短文,統(tǒng)計該短文中不同單詞和它的出現(xiàn)次數(shù),并按詞典編輯順序?qū)卧~及它的出現(xiàn)次數(shù)輸出到正文文件word.out中.程序用一棵有序二叉樹存儲這些單詞及其出現(xiàn)的次數(shù),一邊讀入一邊建立.然后中序遍歷該二叉樹,將遍歷經(jīng)過的二叉樹上的節(jié)點的內(nèi)容輸出.程序中的外部函數(shù)intgetword(FILE*pFile,char*pszWordBuffer,intnBufferLen);從與pFile所對應(yīng)的文件中讀取單詞置入pszWordBuffer,并返回1;若單詞遇文件尾,已無單詞可讀時,則返回0.#include<stdio.h>#include<malloc.h>#include<ctype.h>include<string.h>#defineSOURCE_FILEMtext.inM#defineOUTPUT_FILE"word.out"#defineMAX_WORD_LEN128typedefstructtreenode(charszWord[MAX_WORD_LEN];intnCount;structtreenode*pLeft;structtreenode*pRight;}BNODE;intgetword(FILE*pFile,char*pasWordBufferJntnBufferLen);voidbinary_tree(BNODE**ppNode,char*pszWord)(if(ppNode!=NULL&&pszWord!=NULL)(BNODE*pCurrentNode=NULL;BNODE*pMemoNode=NULL;intnStrCmpRes=0; (1);pCurrentNode=*ppNodewhile(pCurrentNode)(nStrCmpRes=strcmp(pszWord, (2) );pCurrentNode->nCountif(lnStrCmpRes)( (3) ;pCurrentNode->nCount++return;)else{ (4) ;pMemoNode=pCurrentNodepCurrentNode=nStrCmpRes>0?pCurrentNode->pRight:pCurrentNode->pLeft;)))pCurrent=newBNODE;if(pCurrentNode!=NULL)(memset(pCurrentNode,0,sizeof(BNODE));strncpy(pCurrentNode->szWord,pszWord,MAX_WORD_LEN-1);pCurrentNode->nCount=1;)if(pMemoNode==NULL)( (5) ;*ppNode=pCurrentNode)elseif(nStrCmpRes>0)(pMemoNode->pRight=pCurrentNode;1else(pMemoNode->pLeft=pCurrentNode;))voidmidorder(FILE*pFile,BNODE*pNode)(if( (6) )return;!pNode||!pFilemidorder(pFile,pNode->pLeft);fprintf(pFile,"%s%d\nM,pNode->szWord,pNode->nCount);midorder(pFile,pNode->pRight);}voidmain()(FILE*pFile=NULL;BNODE*pRootNode=NULL;charszWord[MAX_WORD_LEN]={0};pFile=fopen(SOURCE_FILE,T);if(pFile==NULL)printfC'Can'topenfile%s\nM,SOURCE_FILE);return;)while(getword(pFile,szWord,MAX_WORD_LEN)==1)(binary_tree( (7) );//pRootNode,szWord)fclose(pFile);pFile=fopen(OUTPUT_FILEtHw");midorder(pFile,pRootNode);fclose(pFile);)三.附加題(每題30分,2題,共60分)1.從程序健壯性進(jìn)行分析,下面的FillUserlnfo函數(shù)和Main函數(shù)分別存在什么問題?#include<iostream>#include<string>#defineMAX_NAME_LEN20structUSERINFO(intnAge;charszName[MAX_NAME_LEN];};voidFillllserlnfo(llSERINFO*parUserlnfo)(stu::coutvv”請輸入用戶的個數(shù):";intnCount=0;std::cin?nCount;for(inti=0;i<nCount;i++)(std::coutvv”請輸入年齡:";std::cin?parllserlnfo->nAge;std::stringstrName;std::coutvv"請輸入姓名:";std::cin?strName;strcpy(parUserlnfo.szName,strName.c_str());})intmain(intargc,char*argv[])(USERINFOarUserlnfos[100]={0};FillUserlnfo(arUserlnfos);printf("Thefirstnameis:");printf(arllserlnfos[0].szName);printfC^n'*);return0;)2.假設(shè)你在編寫一個使用多線程技術(shù)的程序,當(dāng)程序中止運行時,需耍怎樣一個機(jī)制來安全有效的中止所有的線程?請描述其具體流程.阿里筆經(jīng)1(C++)1.StuctFoo{Foo(){}Foo(int){}Voidfun(){}};intmain(){Fooa(10);(1)a.fun();⑵Foob();⑶b.fun();(4))上面的程序中哪個語句是錯誤的;2.struct和class的區(qū)別;3.constchar*p1="hello";Char*constp2="world";下而哪些操作是合法的:(1)p1++;(2)*p1=^^w^^;⑶p2++;(4)*p2="h";.n進(jìn)制下,567*456=150216成立,則n的值是多少?.C++中不能重載的運算符是?.排序方法中元素比較次數(shù)與初始化排序無關(guān)的是哪種排序方法..intx[4]={0};inty[4]={1};則x,y的值是多少?.二分查找的理論.采取FIFO頁面淘汰算法,如何計算缺頁。.順序棧的容量如何計算.文件索引結(jié)構(gòu).搜索所用的數(shù)據(jù)結(jié)構(gòu)的內(nèi)存,以及速度的問題.堆中的數(shù)據(jù)的存儲機(jī)制.頁式存儲系統(tǒng),如何計算分塊的大小.std::vector::iterator可重載的運算符是哪些:++,>>,*(前置),==16.判斷單向鏈表是否存在環(huán)的最佳方案是什么?17.100張多米諾骨牌1,2,3……100,第一次先把所有的基數(shù)位置的牌拿掉,第二次把剩卜?的基數(shù)位置的牌拿掉,依此類推,最后剩下的牌是哪個:(A)32,(B)64,(C)88,(D)9618.在C++中不能重栽下面的哪個運算符:(A)*(B)?:(C)::(D)delete就是指針的?大堆問題啦,什么函數(shù)指針啊,數(shù)組指針之類的sizeof()計算問題public,protected在派生或者繼承之后的訪問權(quán)的問題阿里筆經(jīng)2(Java).Servlet中怎樣控制頁面在客戶端的緩存策略;.執(zhí)行存儲過程;.JSP;.Thread.wait()可否設(shè)置超時.注釋XML內(nèi)容:CDATA;6.IOC;.Open-Closed原則含義:.JUnitTestCase展類中的代碼:9.javax.servle.http.HttpServlet:.JDBC連接池&功能;.XMLSchema:<xs:choic>&<xs:sequence>;.領(lǐng)域模型;.Servlet生命周期。阿里筆經(jīng)3(Java)1?3邏輯題(就是那些有點考驗?zāi)阒巧痰幕蛘呖简災(zāi)氵壿嬆芰Φ念}目)JAVA基礎(chǔ)題4、抽象類與接口有什么不同?5、關(guān)于線程的題目,記不清了。算法題6、寫出2乘以17效率最高的算法?7、編程題(題目太長,略)。好像還是關(guān)于JAVA的知識點8、簡述final、fianlly和finalize的區(qū)別?9、簡述AnrayLists和LinkedList的區(qū)別?10、在try的括號里面有return?個值,那是否還執(zhí)行finally里的代碼。是在return前執(zhí)行還是return后執(zhí)行。11、題目太長,略。設(shè)計模式題簡述templates和*XXX(忘了)的區(qū)別?數(shù)據(jù)庫題12、創(chuàng)建學(xué)生表S,課程表C,學(xué)生選課表SC。寫出建表的SQL語句。13、寫出返回選了全部課程的學(xué)生的SQL語句。14、寫出返回至少選了5門課的學(xué)生的SQL語句。javascript題15、實現(xiàn)點擊頁面上.的一個鏈接,然后隱藏這個鏈接的javascript代碼。測試知識題16、簡述什么是測試驅(qū)動開發(fā)(TDD).補(bǔ)充題17、說說你希望從阿里巴巴得到什么。用3個名詞概括。阿里筆經(jīng)4兩道編程題:1請用最少的額外空間將一個M*N的矩陣旋轉(zhuǎn)90度,寫出算法描述和類c語言程序:2完成如卜函數(shù),給定分子和分母,輸出其小數(shù)表示形式,循環(huán)節(jié)用口表示,例如給出分子:13,分母19,輸出為:0.[13]阿里筆經(jīng)5httD:〃/forum.Dhp?mod=viewthread&tid=696098&extra=paae%3D1&uacie=1淘寶筆經(jīng)1選擇填空:有六個隊列,每個進(jìn)程要占用其中3個,問最多有多少個進(jìn)程,不會死鎖。圖的深度優(yōu)先遍歷,不考代碼實現(xiàn),只要知道哪些是可能的遍歷順序就行了字長為6的有符號整數(shù)的最小值考優(yōu)先級1<<3+2的結(jié)果5只小白鼠吃毒藥那道char*a="123"Hsizeof(a)哪些設(shè)計模式不是創(chuàng)建類的選項有原型外觀單例工廠a桶中有5個門球10個黑球b桶中3個白球5個黑球有個人從兩桶中任意拿出一個是黑球問黑球是b桶中的概率memset函數(shù)的實現(xiàn)補(bǔ)全代碼是個填空題httpdnstelnetftp哪個不是用top實現(xiàn)的大題目:有一個交友類網(wǎng)站可以互加好友(1)設(shè)計數(shù)據(jù)結(jié)構(gòu)(2)如果?個人沒有加任何人好友也沒有任何人加他好友這個人就是無效用戶查找無效用戶的算法盡量小的占用內(nèi)存存儲空間設(shè)計算法比較兩個字符串大小寫字母忽略字符串長度給定如果字符串超過n位就只比較n位淘寶筆經(jīng)2一、單選題1、我們有很多瓶無色的液體,咒中有一瓶是由藥,其它都是蒸馀水,實驗的小白鼠喝了以后會在5分鐘后死亡,而喝到蒸儲水的小白鼠則一切正常?,F(xiàn)在有5只小白鼠,請問一下,我們用這五只小白鼠,5分鐘的時間,能夠檢測多少瓶液體的成分(C)A、5瓶B、6瓶C、31瓶D、32瓶2、若某鏈表最常用的操作是在最后一個結(jié)點之后插入一個結(jié)點和刪除最后一個結(jié)點,則采用()存儲方式最節(jié)省時間?A、單鏈表B、帶頭結(jié)點的非循環(huán)雙鏈表C、帶頭節(jié)點的雙循環(huán)鏈表D、循環(huán)鏈表3、如果需要對磁盤上的1000W條記錄構(gòu)建索引,你認(rèn)為卜,面哪種數(shù)據(jù)結(jié)構(gòu)來存儲索引最合適?()A、HashTableB,AVL-TreeC、B-TreeD、List4、可用來檢測一個web服務(wù)器是否正常工作的命令是()A、pingB、tracertC,telnetD,ftp只有C可以測試Web主機(jī)的網(wǎng)頁服務(wù)器是否工作正常,假設(shè)該服務(wù)器的網(wǎng)頁服務(wù)器使用的是默認(rèn)端口,則可以使用命令telnethostname80來測試其是否工作。5、下面哪個操作是Windows獨有的I/O技術(shù)()A、SelectB,PollC>IOCPD,EpollIPV6地址包含了()位A、16B、32C、64D,1287、數(shù)據(jù)庫里建索引常用的數(shù)據(jù)結(jié)構(gòu)是()A,錐發(fā)B、隊列C、樹D、哈希表8、在公司局域網(wǎng)I:ping沒有涉及到的網(wǎng)絡(luò)協(xié)議是()A、ARPB,DNSC、TCPD.ICMPDNS是將域名映射成七機(jī)的IP地址,ARP是將IP地址映射成物理地址,ICMP是報文控制協(xié)議,由路由器發(fā)送給執(zhí)行ping命令的主機(jī),而一個ping命令并不會建立一條TCP連接,故沒有涉及TCP協(xié)議.二、填空題1、http屬于(應(yīng)用層)協(xié)議,ICMP屬于(網(wǎng)絡(luò)層)協(xié)議。2、深度為k的完全叉樹至少有(2"(k-1))個結(jié)點,至多有(2Ak-1)個結(jié)點。3、字節(jié)為6位的二進(jìn)制有符號整數(shù),其最小值是(-32)。4、設(shè)有28盞燈,擬公用一個電源,則至少需有4插頭的接線板數(shù)(9)個。第一個板4個口,此后每增加1個板會消耗1個原來的口,總的只增加3個口,故N個接線板能提供1+3*N個電源口。三、綜合題1、有?顆結(jié)構(gòu)如下的樹,對其做鏡像反轉(zhuǎn)后如下,請寫出能實現(xiàn)該功能的代碼。注意:請勿對該樹做任何假設(shè),它不一定是平衡樹,也不一定有序。1小/|\234432/|\A||/\/|\65789101098756答:以孩子、兄弟的存儲結(jié)構(gòu)來存儲這棵樹,使之成為?顆二叉樹,然后對二叉樹進(jìn)行鏈表的轉(zhuǎn)換。typedefstructTreeNode{intdata;structTreeNode*firstchild;structTreeNode*nextsibling;}TreeNode,*Tree;voidMirrorTree(Treeroot)(if(!root)return;if(root->firstchild)(Treep=root->firstchild;Treecur=p->nextsibling;p->nextsibling=NULL;while(cur)(Treecurnext=cur->nextsibling;cur->nextsibling=p;if(p->firstchild)MirrorTree(p);p=cur;cur=curnext;}root->firstchild=p;))intmain(void)(TreeNode*root=(TreeNode*)malloc(sizeof(TreeNode));lnit();MirrorTree(root);OutPut();)2、假設(shè)某個網(wǎng)站每天有超過10億次的頁面訪問量,出于安全考慮,網(wǎng)站會記錄訪問客戶端訪問的ip地址和對應(yīng)的時間,如果現(xiàn)在已經(jīng)記錄了1000億條數(shù)據(jù),想統(tǒng)計一個指定時間段內(nèi)的區(qū)域ip地址訪問量,那么這些數(shù)據(jù)應(yīng)該按照何種方式來組織,才能盡快滿足上面的統(tǒng)計需求呢,設(shè)計完方案后,并指出該方案的優(yōu)缺點,比如在什么情況下,可能會非常慢?答:用B+樹來組織,非葉子節(jié)點存儲(某個時間點,頁面訪問量),葉子節(jié)點是訪問的IP地址。這個方案的優(yōu)點是杏詢某個時間段內(nèi)的IP訪問量很快,但是要統(tǒng)計某個IP的訪問次數(shù)或是上次訪問時間就不得不遍歷整個樹的葉子節(jié)點。答:或者可以建立二級索引,分別是時間和地點來建立索引。四、附加題1、寫出C語言的地址對齊宏ALIGN(PALGNBYTES),北中P是要對■齊的地址,ALIGNBYTES是要對齊的字節(jié)數(shù)(2的N次方),比如說:ALIGN(13,16)=16ALIGN(P,ALIGNBYTES)((void*)(((unsignedlong)P+ALIGNBYTES-1)&~(ALIGNBYTES-1)))2、在高性能服務(wù)器的代內(nèi)中經(jīng)常會看到類似這樣的代碼:typedefunion(erts_smp_rwmtx_trwmtx;bytecache_line_alignJERTS_ALC_CACHE_LINE_ALIGN_SIZE(sizeof(erts_smp_rwmtx_t))];}erts_meta_main_tab_lock_t;erts_meta_main_tab_lock_tmain_tab_lock[16];請問其中用來填充的cache_line_align的作用是?3、在現(xiàn)代web服務(wù)系統(tǒng)的設(shè)計中,為了減輕源站的壓力,通常采用分布式緩存技術(shù),其原理如下圖所示,前端的分配器將針對不同內(nèi)容的用戶請求分配給不同的緩存服務(wù)器向用戶提供服務(wù)。分配器小緩存緩存…緩存服務(wù)器1服務(wù)器2...服務(wù)器n1)請問如何設(shè)置分配策略,可以保證充分利用每個緩存服務(wù)器的存儲空間(每個內(nèi)容只在一個緩存服務(wù)器有副本)2)當(dāng)部分緩存服務(wù)監(jiān)故障,或是因為系統(tǒng)擴(kuò)容,導(dǎo)致緩存服務(wù)器的數(shù)量動態(tài)減少或增加時,你的分配策略是否可以保證較小的緩存文件重分配的開銷,如果不能,如何改進(jìn)?3)當(dāng)各個緩存服務(wù)器的存儲空間存在差異時(如有4個緩存服務(wù)器,存儲空間比為4:9:15:7),如何改進(jìn)你的策略,按照如上的比例將內(nèi)容調(diào)度到緩存服務(wù)器?淘寶筆經(jīng)3一共有五部分。一、選擇題1、排序算法的時間復(fù)雜度與初始序列無關(guān)的是哪一種?2、考查多繼承、多態(tài)性之類的概念。(問題大概是?表明?種操作可以有多個類實現(xiàn)之類的)3、前序遍歷和中序遍歷——>后續(xù)遍歷4、二分插入,求比較次數(shù)。5、Cache調(diào)度算法平均命中率最高的是?6、編譯原理的題目(類似中間代碼的作用)7、概率題(貌似只有這7題,乂感覺漏了?題,想不起來了)二、填空題1、一個算式:兩個數(shù)相乘等于一個數(shù),問這些數(shù)幾進(jìn)制表示的。2、排序算法(從大到小),求比較次數(shù)。3、(C語言)看代碼寫結(jié)果,關(guān)于字母大小寫轉(zhuǎn)化的.4、(Java語言)看代碼寫結(jié)果,關(guān)丁++、--的利用,m++、++m等等,之后輸Hlm的值。5、非遞歸的的二分排序,補(bǔ)充代碼。三、簡答題1、大概是淘寶有一億會員,淘寶抽出其中100萬會員給其發(fā)消息等等的,寫出門已想到的抽取的方法,必須體現(xiàn)公平性、分散性、每個都能被抽到的可能等等2、編程。用Java或者C/C++寫一個方法,實現(xiàn)輸入字符串轉(zhuǎn)化為Int型四、附加題關(guān)于數(shù)據(jù)結(jié)構(gòu)和查詢方法的五、不計分題作為一個熱愛技術(shù)的你,說說各種之類。說說自己擅長的技術(shù)、說說自己經(jīng)常使用的語言的架構(gòu)、設(shè)計模式啊等等的還有什么最新的技術(shù)啊類似的淘寶筆經(jīng)4選擇1、二維數(shù)組按行優(yōu)先存儲,A[2]網(wǎng)的地址是1087,A[4][7]的地址是1153,請問A⑹[7]的地址是多少?2、實施軟件需求時,常用工具應(yīng)包括那些?(每個選項都是兩個,具體的就不記得了)3,單元測試通常采用方法?4、二分法檢索表用什么存儲?簡答5、進(jìn)程模型和線程模型仃哪些優(yōu)缺點程序6、二分查找的非遞歸算法C++部分1、下面程序運行的結(jié)果?inti=0,s=0;for(;;)(if(i==3||i==5)continue;if(i==6)break;i++;s+=i;)cout?s?endl;2、虛析構(gòu)函數(shù)的作用?舉例。3、什么時候調(diào)用拷貝構(gòu)造函數(shù)?4、語句int*ptr;*ptr=10;有問題嗎?5、inta[3][2]={1,2,3,4,5,6);int*p[3];P[0]=a[1];*(p[0]+1)指向的內(nèi)容是多少?6、請寫出下面語句的輸出charstr1[]="abc";charstr2Q="abc";constcharstr3[]="abc";constcharstr4[]="abc";constchar*str5="abc";constchar*str6="abc";cout?(str1==str2)?endl;//trueorfalsecout?(str3==str4)?endl;cout?(str5==str6)?endl;網(wǎng)易筆經(jīng)1苜先研發(fā)的筆試是分兩部分的,第?部分是30道填空和選擇,第二部分是7道大題.前面的小題說是過了線就行,不參與成績評定和排名,但是如果不過線那后邊的題就不給判.只有后面的大題算筆試成績的.然后這個筆試的最大特點就是:題量超大,我覺得除非大牛否則很難做完.反正我最后一道大題是沒時間寫.而且前面的小題部分考察的東西既廣又深,感覺非常瑣碎,所以我做的時候非常擔(dān)心自己第?部分就會掛掉...不過還好沒有.所以我先把第二部分幾道大題發(fā)出來-:給了一個用遞歸實現(xiàn)的快排的代碼,要求改寫成用棧實現(xiàn)的二:游戲中讓玩家參與抽獎,抽裝備.玩家先被等概率傳送到卜二個房間(對應(yīng)十二星座),第i個房間中拿到裝備的概率是i/50.玩家抽獎失敗后可以花100金幣再抽一次(第一次不用),如果抽中了則不能再抽.先是問要抽到裝備平均要花多少金幣;又問:玩家不喜歡傳到12個不同房間的設(shè)定,現(xiàn)在要求只能傳到一個房間,這個房間提供有12種裝備,要求每種裝備被抽中的概率和之前的一樣.就此實現(xiàn)一個生成隨機(jī)數(shù)的算法.三:先是給出了P,V原語及信號量的定義,然后有個場景:個水果忍者不停的往個籃子中撿水果,水果有西瓜和梨兩種,籃了最多裝10個水果,裝了了就等待.同時鳴人和佐助分別從籃了中拿西瓜和梨吃,只要有的吃就拿,否則就等待.用PV原語寫一段偽代碼模擬這個過程.四:給出了跳表的結(jié)構(gòu),要求實現(xiàn)一個跳表上的衣詢操作search(k),然后分析search的時間復(fù)雜度.最后再寫一個insert。的操作.五:有N個廣告牌(N<=10萬)可以投放廣告,有k個用戶(k<10億)在這些廣告牌上投放廣告.操作rent(i,j,k)將從i到j(luò)塊廣告牌展示用戶k的廣告,如果原來有別的廣告就覆蓋掉.操作query(i)返回第i個廣告牌上現(xiàn)在投放的是哪個廣告.rent和query操作出現(xiàn)的頻率相等.耍求設(shè)計一個數(shù)據(jù)結(jié)構(gòu)和相應(yīng)的算法,盡可能快的實現(xiàn)這兩種操作.六:給出了?段英文文獻(xiàn),是關(guān)于codeblock的,然后要求根據(jù)文獻(xiàn)中給出的算法寫?段代科.要用到STL.七:判定給定的字符串序列是否是人類基因片段,人類基因片段的特點是:大寫字母后邊跟相應(yīng)小寫字母,或者是小的基因片段連在一起。寫函數(shù)判斷。網(wǎng)易筆經(jīng)2第?部分(必做):計算機(jī)科學(xué)基礎(chǔ).(單選)軟件設(shè)計中模塊劃分應(yīng)該遵循的準(zhǔn)則是:A.低內(nèi)聚低耦合B.高內(nèi)聚低耦合C.低內(nèi)聚高耦合D.高內(nèi)聚高耦合.(單選)最壞情況下時間復(fù)雜度不是n(n-1)/2的排序算法是:A.快速排序B.'Fi'泡排序C.直接插入排序D.堆排序.哈希表中解決沖突的方法通常可以分為openaddressingfnchaining兩類,請分別解釋這兩類沖突解決方法的大致實現(xiàn)原理.簡單的鏈表結(jié)構(gòu)擁有很好的插入刪除節(jié)點性能,但隨機(jī)定位(獲取鏈表第個節(jié)點)操作性能不佳,請你設(shè)計一種改進(jìn)型的鏈表結(jié)構(gòu)優(yōu)化隨機(jī)定位操作的性能,給出設(shè)計思路及其改進(jìn)后隨機(jī)定位操作的時間復(fù)雜度5.什么是NP問題?列舉典型的NP問題(至少兩個)?對于一個給定的問題你通常如何判斷它是否為NP問題?6.以下是一個tree的遍歷算法,queue是FIFO隊列,請參考下面的tree,選擇正確的輸出.1/\23/\/\4567queue.push(tree.root)while(true){node=queue.pop();output(node.value);〃輸出節(jié)點對應(yīng)數(shù)字if(null==node)break;for(child_nodeinnode.children){queue.push(child_node);))A.1234567B.1245367C.1376254D.1327654第二部分(選作):C7C++程序設(shè)計.有三個類ABC定義如下,請確定sizeof(A)sizeof(B)sizeof(C)的大小順序,并給出理由structA{A(){)?A(){}intml;intm2;};structB{B(){)?B(){}intml;charm2;staticcharm3;};structC{co{}virtuaHC(){}intml;shortm2;};.請用C++實現(xiàn)以下print函數(shù),打印鏈表I中的所有元素,每個元素單獨成一行voidprint(conststd::list<int>&l){).假設(shè)某C工程包含a.c和b.c兩個文件,在a.c中定義了一個全局變量foo,在b.c中想訪問這一變量時該怎么做?.C++中的new操作符通常完成兩個工作,分配內(nèi)存及其調(diào)用相應(yīng)的構(gòu)造函數(shù)初始化請問:1)如何讓new操作符不分配內(nèi)存,只調(diào)用構(gòu)造函數(shù)?2)這樣的用法有什么用?.下面這段程序的輸出是什么?為什么?classA{public:A(){p();}virtualvoidp(){print("A")}virtual-A(){p();});classB{public:B(){p();}voidp(){print("B")}?B(){p();});intmain(int,char**){A*a=newB();deletea;).什么是C++Traits?并舉例說明第三部分(選作):JAVA程序設(shè)計1.(單選)以下Java程序運行的結(jié)構(gòu)是:publicclassTester{publicstaticvoidmain(String[]args){Integervar1=newlnteger(1);Integervar2=var1;doSomething(var2);System.out.print(Value());System.out.print(var1==var2);publicstaticvoiddoSomething(lntegerinteger){integer=newlnteger(2);))1true2true1false2false.(單選)往OuterClass類的代碼段中插入內(nèi)部類聲明,哪一個是正確的:publicclassOuterClass{privatefloatf=1.Of;〃插入代碼到這里)A.classlnnerClass{publicstaticfloatfunc(){returnf;})B.abstractclasslnnerClass{publicabstractfloatfunc(){})C.staticclasslnnerClass{protectedstaticfloatfunc(){returnf;})D.publicclasslnnerClass

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論