騰訊,創新工場,淘寶面試題
好久沒有好好享受思考了。ok,任何人有任何意見或問題,歡迎不吝指導:
- 五隻猴子分桃。半夜,第一隻猴子先起來,它把桃分成了相等的五堆,多出一隻。於是,它吃掉了一個,拿走了一堆; 第二隻猴子起來一看,只有四堆桃。於是把四堆合在一起,分成相等的五堆,又多出一個。於是,它也吃掉了一個,拿走了一堆;.....其他幾隻猴子也都是 這樣分的。問:這堆桃至少有多少個?(朋友說,這是小學奧數題)。
參考答案:先給這堆桃子加上4個,設此時共有X個桃子,最後剩下a個桃子.這樣:
第一隻猴子分完後還剩:(1-1/5)X=(4/5)X;
第二隻猴子分完後還剩:(1-1/5)2X;
第三隻猴子分完後還剩:(1-1/5)3X;
第四隻猴子分完後還剩:(1-1/5)4X;
第五隻猴子分完後還剩:(1-1/5)5X=(1024/3125)X;
得:a=(1024/3125)X;
要使a為整數,X最小取3125.
減去加上的4個,所以,這堆桃子最少有3121個。 - 已知有個rand7()的函式,返回1到7隨機自然數,讓利用這個rand7()構造rand10() 隨機1~10。
(參考答案:這題主要考的是對概率的理解。程式關鍵是要算出rand10,1到10,十個數字出現的考慮都為10%.根據排列組合,連續算兩次rand7出現的組合數是7*7=49,這49種組合每一種出現考慮是相同的。怎麼從49平均概率的轉換為1到10呢?方法是:
1.rand7執行兩次,出來的數為a1=rand7()-1,a2=rand7()-1.
2.如果a1*7+a2<40,b=(a1*7+a2)/4+1;如果a1*7+a2>=40,重複第一步。參考程式碼如下所示:- int rand7()
- {
- return rand()%7+1;
- }
- int rand10()
- {
- int a71,a72,a10;
- do
- {
- a71= rand7()-1;
- a72 = rand7()-1;
- a10 = a71 *7 + a72;
- } while (a10>= 40);
- return (a71*7+a72)/4+1;
- }
- 如果兩個字串的字元一樣,但是順序不一樣,被認為是兄弟字串,問如何在迅速匹配兄弟字串(如,bad和adb就是兄弟字串)。思路:判斷各自素數乘積是否相等。更多方法請參見:http://blog.csdn.net/v_JULY_v/article/details/6347454。
- 要求設計一個DNS的Cache結構,要求能夠滿足每秒5000以上的查詢,滿足IP資料的快速插入,查詢的速度要快。
- 一個未排序整數陣列,有正負數,重新排列使負數排在正數前面,並且要求不改變原來的正負數之間相對順序 比如: input: 1,7,-5,9,-12,15 ans: -5,-12,1,7,9,15 要求時間複雜度O(N),空間O(1) 。(此題一直沒看到令我滿意的答案,一般達不到題目所要求的:時間複雜度O(N),空間O(1),且保證原來正負數之間的相對位置不變)。
updated:設定一個起始點j, 一個翻轉點k,一個終止點L
從右側起
起始點在第一個出現的負數, 翻轉點在起始點後第一個出現的正數,終止點在翻轉點後出現的第一個負數(或結束)
如果無翻轉點, 則不操作
如果有翻轉點, 則待終止點出現後, 做翻轉, 即ab => ba 這樣的操作
翻轉後, 負數串一定在左側, 然後從負數串的右側開始記錄起始點, 繼續往下找下一個翻轉點
例子中的就是1, 7, -5,9,-12, 15
第一次翻轉: 1,7, -5,-12,9, 15 => 1, -12,-5,7, 9, 15
第二次翻轉: -5, -12, 1, 7, 9, 15N維翻轉空間佔用為O(1)複雜度是2N;在有一個負數的情況下, 複雜度最大是2N, ;在有i個負數的情況下, 複雜度最大是2N+2i, 但是不會超過2N+N實際的複雜度在O(3N)以內
但從最終時間複雜度分析,此方法是否真能達到O(N)的時間複雜度,還待後續考證。感謝John_Lv,MikovChain。2012.02.25。1, 7, -5, -6, 9, -12, 15(後續:此種情況未能處理)
1 7 -5 -6 -12 9 15
1 -12 -5 -6 7 9 15
-6 -12 -5 1 7 9 15更多請參考此文,程式設計師程式設計藝術第二十七章:重新排列陣列(不改變相對順序&時間O(N)&空間O(1),半年未被KO)http://blog.csdn.net/v_july_v/article/details/7329314。
- 淘寶面試題:有一個一億節點的樹,現在已知兩個點,找這兩個點的共同的祖先。
- 海量資料分佈在100臺電腦中,想個辦法高效統計出這批資料的TOP10。(此題請參考本部落格內其它文章)。
-
某伺服器流量統計器,每天有1000億的訪問記錄資料,包括時間、url、ip。設計系統實現記錄資料的
儲存、管理、查詢。要求能實現一下功能:
(1)計算在某一時間段(精確到分)時間內的,某url的所有訪問量。
(2)計算在某一時間段(精確到分)時間內的,某ip的所有訪問量。 -
假設某個網站每天有超過10億次的頁面訪問量,出於安全考慮,網站會記錄訪問客戶端訪問的ip地址和對應的時間,如果現在已經記錄了1000億條資料,想統計一個指定時間段內的區域ip地址訪問量,那麼這些資料應該按照何種方式來組織,才能儘快滿足上面的統計需求呢,
設計完方案後,並指出該方案的優缺點,比如在什麼情況下,可能會非常慢?(參考答案:用B+樹來組織,非葉子節點儲存(某個時間點,頁面訪問量),葉子節點是訪問的IP地址。這個方案的優點是查詢某個時間段內的IP訪問量很快,但是要統計某個IP的訪問次數或是上次訪問時間就不得不遍歷整個樹的葉子節點。或者可以建立二級索引,分別是時間和地點來建立索引。) -
騰訊1.伺服器記憶體1G,有一個2G的檔案,裡面每行存著一個QQ號(5-10位數),怎麼最快找出出現過最多次的QQ號。(此題與稍後下文的第14題重複,思路參考請見下文第14題)。
騰訊2.如何求根號2的值,並且按照我的需要列出指定小數位,比如根號2是1.141 我要列出1位小數就是1.1 2位就是1.14, 1000位就是1.141...... 等。。 -
-
- 我們有很多瓶無色的液體,其中有一瓶是毒藥,其它都是蒸餾水,實驗的小白鼠喝了以後會在5分鐘後死亡,而喝到蒸餾水的小白鼠則一切正常。現在有5只小白鼠,請問一下,我們用這五隻小白鼠,5分鐘的時間,能夠檢測多少瓶液體的成分?
淘寶2012筆試(研發類):http://topic.csdn.net/u/20110922/10/e4f3641a-1f31-4d35-80da-7268605d2d51.html(一參考答案)。
ok,這13道題加上此前本部落格陸陸續續整理的微軟面試187題:重啟開源,分享無限--誠邀你加入微軟面試187題的解題中,至此,本部落格內已經整理了整整200道面試題。
後續整理
以下是後續整理的最新面試題,不斷更新中(2011.09.26).....
14、騰訊最新面試題:伺服器記憶體1G,有一個2G的檔案,裡面每行存著一個QQ號(5-10位數),怎麼最快找出出現過最多次的QQ號。
以下是個人所建第Algorithms_12群內朋友的聊天記錄:
首先你要注意到,資料存在伺服器,儲存不了(記憶體存不了),要想辦法統計每一個qq出現的次數。
比如,因為記憶體是1g,首先 你用hash 的方法,把qq分配到10個(這個數字可以變動,比較)檔案(在硬碟中)。
相同的qq肯定在同一個檔案中,然後對每一個檔案,只要保證每一個檔案少於1g的記憶體,統計每個qq的次數,可以使用hash_map(qq, qq_count)實現。然後,記錄每個檔案的最大訪問次數的qq,最後,從10個檔案中找出一個最大,即為所有的最大。更多讀者可以參見此文:海量資料處理面試題集錦與Bit-map詳解 。那若面試官問有沒有更高效率的解法之類的?這時,你可以優化一下,但是這個速度很快,hash函式,速度很快,他肯定會問,你如何設計,用bitmap也行。15、百度今天的筆試題:在一維座標軸上有n個區間段,求重合區間最長的兩個區間段。
16、華為社招現場面試1:請使用程式碼計算1234567891011121314151617181920*2019181716151413121110987654321 。
華為面試2:1分2分5分的硬幣,組成1角,共有多少種組合。
17、百度筆試題:
一、系統有很多工,任務之間有依賴,比如B依賴於A,則A執行完後B才能執行
(1)不考慮系統並行性,設計一個函式(Task *Ptask,int Task_num)不考慮並行度,最快的方法完成所有任務。
(2)考慮並行度,怎麼設計
typedef struct{
int ID;
int * child;
int child_num;
}Task;
提供的函式:
bool doTask(int taskID);無阻塞的執行一個任務;
int waitTask(int timeout);返回執行完成的任務id,如果沒有則返回-1;
bool killTask(int taskID);殺死程式二、必答題(各種const)
1、解釋下面ptr含義和不同
double* ptr = &value;
//ptr是一個指向double型別的指標,ptr的值可以改變,ptr所指向的value的值也可以改變
const double* ptr = &value
//ptr是一個指向const double型別的指標,ptr的值可以改變,ptr所指向的value的值不可以改變
double* const ptr=&value
//ptr是一個指向double型別的指標,ptr的值不可以改變,ptr所指向的value的值可以改變
const double* const ptr=&value
//ptr是一個指向const double型別的指標,ptr的值不可以改變,ptr所指向的value的值也不可以改變
2、去掉const屬性,例: const double value = 0.0f; double* ptr = NULL;怎麼才能讓ptr指向value?
強制型別轉換,去掉const屬性,如ptr = <const_cast double *>(&value);18、如果用一個迴圈陣列q[0..m-1]表示佇列時,該佇列只有一個佇列頭指標front,不設佇列尾指標rear,求這個佇列中從佇列投到佇列尾的元素個數(包含佇列頭、佇列尾)(華賽面試題、騰訊筆試題)。
19、昨晚淘寶筆試題:
1. 設計相應的資料結構和演算法,儘量高效的統計一片英文文章(總單詞數目)裡出現的所有英文單詞,按照在文章中首次出現的順序列印輸出該單詞和它的出現次數。
2、有一棵樹(樹上結點為字串或者整數),請寫程式碼將樹的結構和資料寫到一個檔案中,並能通過讀取該檔案恢復樹結構 。
20、13個球一個天平,現知道只有一個和其它的重量不同,問怎樣稱才能用三次就找到那個球?(http://zhidao.baidu.com/question/66024735.html
)。21、搜狗筆試題:一個長度為n的陣列a[0],a[1],...,a[n-1]。現在更新陣列的名個元素,即a[0]變為a[1]到a[n-1]的積,a[1]變為a[0]和a[2]到a[n-1]的積,...,a[n-1]為a[0]到a[n-2]的積(就是除掉當前元素,其他所有元素的積)。程式要求:具有線性複雜度,且不能使用除法運算子。
思路:left[i]標示著a[i]之前的乘積,right[i]標示著a[i]之後的乘積,但不申請空間,那麼a[i]=left[i]*right[i] 。不過,left的計算從左往右掃的時候得出,right是從右往左掃得出。因為就是當中某個元素a[i]的左邊所有元素與右邊所有元素的乘積,就這麼簡單。所以計算a[i]=left[i]*right[i]時,直接出結果。
22、後2012年4月6日的騰訊暑期實習生招聘筆試中,出了一道與上述21題類似的題,原題大致如下:
兩個陣列a[N],b[N],其中A[N]的各個元素值已知,現給b[i]賦值,b[i] = a[0]*a[1]*a[2]...*a[N-1]/a[i];
要求:
1.不準用除法運算
2.除了迴圈計數值,a[N],b[N]外,不準再用其他任何變數(包括區域性變數,全域性變數等)
3.滿足時間複雜度O(n),空間複雜度O(1)。說白了,你要我求b=a[0]*a*...a[i-1]*a*a[i+1]..*a[N-1]/a ,就是求:a[0]*a[1]*...a[i-1]*a[i+1]..*a[N-1]。只是我把a[i]左邊部分標示為left[i],b[i]右邊部分標示為right[i],而實際上完全不申請left[i],與right[i]變數,之所以那樣標示,無非就是為了說明:除掉當前元素a[i],其他所有元素(a[i]左邊部分,和a[i]右邊部分)的積。讀者你明白了麼?
下面是此TX筆試題的兩段參考程式碼,如下:
from wasd6081058上面第二段程式碼最後一行的意義是:我們看第二個迴圈,從N-2到 1;再看for迴圈中b[0]的賦值,從N-1到2,而根據題目要求b[i] = a[0]*a[1]*a[2]...*a[N-1]/a[i],b[0]應等於a[1]*a[2]* ....a[N-1],所以這裡手動新增a[1]。
- //ncicc
- b[0] = 1;
- for (int i = 1; i < N; i++)
- {
- b[0] *= a[i-1];
- b[i] = b[0];
- }
- b[0] = 1;
- for (i = N-2; i > 0; i--)
- {
- b[0] *= a[i+1];
- b[i] *= b[0];
- }
- b[0] *= a[1];
此外,也有朋友在微博上:http://weibo.com/1761944724/ydwuMt9bH 給出了另外一種解法,如下圖所示:
23、騰訊高水平復試題:
1.有不同的手機終端,如iphone,安卓,Symbian,不同的終端處理不一樣,設計一種伺服器和演算法實現對不同的終端的處理。
2.設計一種記憶體管理演算法。
3.A向B發郵件,B收到後讀取併傳送收到,但是中間可能丟失了該郵件,怎麼設計一種最節省的方法,來處理丟失問題。
4.設計一種演算法求出演算法複雜度 。
24、人人筆試1:一個人上臺階可以一次上1個,2個,或者3個,問這個人上n層的臺階,總共有幾種走法?人人筆試2:在人人好友裡,A和B是好友,B和C是好友,如果A 和C不是好友,那麼C是A的二度好友,在一個有10萬人的資料庫裡,如何在時間0(n)裡,找到某個人的十度好友。25、淘寶演算法面試題:兩個使用者之間可能互相認識,也可能是單向的認識,用什麼資料結構來表示?如果一個使用者不認識別人,而且別人也不認識他,那麼他就是無效節點,如何找出這些無效節點?自定義資料介面並實現之,要求儘可能節約記憶體和空間複雜度。26、淘寶筆試題:對於一顆完全二叉樹,要求給所有節點加上一個pNext指標,指向同一層的相鄰節點;如果當前節點已經是該層的最後一個節點,則將pNext指標指向NULL;給出程式實現,並分析時間複雜度和空間複雜度。27、騰訊面試題:給你5個球,每個球被抽到的可能性為30、50、20、40、10,設計一個隨機演算法,該演算法的輸出結果為本次執行的結果。輸出A,B,C,D,E即可。28、搜狐筆試題:給定一個實數陣列,按序排列(從小到大),從陣列從找出若干個數,使得這若干個數的和與M最為接近,描述一個演算法,並給出演算法的複雜度。29、阿里巴巴研究院(2009):
1. 有無序的實數列V[N],要求求裡面大小相鄰的實數的差的最大值,關鍵是要求線性空間和線性時間2. 25匹賽馬,5個跑道,也就是說每次有5匹馬可以同時比賽。問最少比賽多少次可以知道跑得最快的5匹馬3. 有一個函式int getNum(),每執行一次可以從一個陣列V[N]裡面取出一個數,N未知,當數取完的時候,函式返回NULL。現在要求寫一個函式int get(),這個函式執行一次可以從V[N]裡隨機取出一個數,而這個數必須是符合1/N平均分佈的,也就是說V[N]裡面任意一個數都有1/N的機會被取出,要求空間複雜度為O(1)
30、微軟面試題:Given a head pointer pointing to a linked list ,please write a function that sort the list
in increasing order. You are not allowed to use temporary array or memory copy
struct
{
int data;
struct S_Node *next;
}Node;
Node * sort_link_list_increasing_order (Node *pheader):
淘寶面試:
http://wenku.it168.com/tag/29763_0_1.shtml
http://www.mianwww.com/html/category/company-list/taobao
相關文章
- 創新工場汪華:智慧硬體創業路上的噩夢和忠告創業
- 騰訊js面試題1JS面試題
- 騰訊社招筆面試題面試題
- 面試題-中科創達面試題
- 最近去騰訊面試了,分享一波面試題面試題
- 騰訊前端二面手寫面試題前端面試題
- 創新工場王嘉平開講:low-level的計算機視覺計算機視覺
- 創新工場「資料下毒」論文入選NeurIPS 2019,AI安全問題需要引起關注AI
- 北京國際遊戲創新大會-騰訊專場分享遊戲
- 大資料面試題——場景題大資料面試題
- 騰訊往屆筆試面試題整理大全筆試面試題
- 創新工場完成25億募資,人工智慧工程院升級2.0版人工智慧
- 騰訊這套SpringMvc面試題你懂多少(面試必備)SpringMVC面試題
- 創新工場王詠剛:為什麼 AI 工程師要懂一點架構?AI工程師架構
- 知道創宇大資料面試題大資料面試題
- 【演算法】2013創新工場校園招聘筆試題--如何求出帶環連結串列的入口節點演算法筆試
- 氣球遊戲騰訊面試題滑動視窗解法遊戲面試題
- 中文預訓練模型ZEN開源,效果領域內最佳,創新工場港科大出品模型
- 親歷騰訊WEB前端開發三輪面試經歷及面試題Web前端面試題
- 騰訊面試題-求滑動視窗的最大值面試題
- 從阿里、騰訊的面試真題中總結了這11個Redis高頻面試題阿里Redis面試題
- 騰訊電話面試面試
- 【騰訊測試開發面試題】2021最新騰訊電競遊戲測開崗面試題遊戲
- 騰訊前端一面經典手寫面試題合集前端面試題
- FundersClub:美國科技創業公司移民創始人平均創造159個新工作崗位創業
- 騰訊釋出混元大模型Turbo版本 用AI助力場景創新大模型AI
- 騰訊又開發一款新工具,用起來真優雅!
- 創新工場兩篇論文入選ACL 2020,將中文分詞資料刷至新高中文分詞
- 阿里、騰訊搶灘印度創投市場:不差錢,也不亂花錢阿里創投
- 高頻面試題:秒殺場景設計面試題
- 從一道場景面試題談起面試題
- 新工作
- 見面會 | 創新工場執行董事王嘉平:高效能可伸縮性區塊鏈系統揭祕!區塊鏈
- 騰訊面試篇(三)——終章面試
- 騰訊前端面試篇(二)前端面試
- 騰訊前端面試篇(一)前端面試
- 面試題:Redis的應用場景核心設計,看完面試不在慌!面試題Redis
- 面試現場:這些常問的面試題你都會了嗎面試題