九月腾讯,创新工场,淘宝等公司最新面试三十题(更新至10.04)
????????九月騰訊,創(chuàng)新工場,淘寶等公司最新面試三十題
引言???
??? 曾記否,去年的10月份也同此刻一樣,是找工作的高峰期,本博客便是最初由整理微軟等公司面試題而發(fā)展而來的。如今,又即將邁入求職高峰期--10月份,而本人也正在找下一份工作中,所以,也不免關(guān)注了網(wǎng)上和我個人建的算法群Algorithms1-12群內(nèi)朋友發(fā)布和討論的最新面試題。特此整理,以饗諸位。至于答案,望諸位共同討論與思考。
最新面試十三題
??? 好久沒有好好享受思考了。ok,任何人有任何意見或問題,歡迎不吝指導(dǎo):
? 參考答案:先給這堆桃子加上4個,設(shè)此時共有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為整數(shù),X最小取3125.
? 減去加上的4個,所以,這堆桃子最少有3121個。
(參考答案:這題主要考的是對概率的理解。程序關(guān)鍵是要算出rand10,1到10,十個數(shù)字出現(xiàn)的考慮都為10%.根據(jù)排列組合,連續(xù)算兩次rand7出現(xiàn)的組合數(shù)是7*7=49,這49種組合每一種出現(xiàn)考慮是相同的。怎么從49平均概率的轉(zhuǎn)換為1到10呢?方法是:
1.rand7執(zhí)行兩次,出來的數(shù)為a1.a2.
2.如果a1*7+a2<40,b=(a1*7+a2)/10+1,如果a1*7*a2>=40,重復(fù)第一步)。參考代碼如下所示:
某服務(wù)器流量統(tǒng)計器,每天有1000億的訪問記錄數(shù)據(jù),包括時間、url、ip。設(shè)計系統(tǒng)實現(xiàn)記錄數(shù)據(jù)的
保存、管理、查詢。要求能實現(xiàn)一下功能:
(1)計算在某一時間段(精確到分)時間內(nèi)的,某url的所有訪問量。
(2)計算在某一時間段(精確到分)時間內(nèi)的,某ip的所有訪問量。
?
假設(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.服務(wù)器內(nèi)存1G,有一個2G的文件,里面每行存著一個QQ號(5-10位數(shù)),怎么最快找出出現(xiàn)過最多次的QQ號。(此題與稍后下文的第14題重復(fù),思路參考請見下文第14題)。
騰訊2.如何求根號2的值,并且按照我的需要列出指定小數(shù)位,比如根號2是1.141 我要列出1位小數(shù)就是1.1 2位就是1.14, 1000位就是1.141...... 等。。
?
給定一個字符串的集合,格式如:{aaa bbb ccc}, {bbb ddd},{eee fff},{ggg},{ddd hhh}要求將其中交集不為空的集合合并,要求合并完成后的集合之間無交集,例如上例應(yīng)輸出{aaa bbb ccc ddd hhh},{eee fff}, {ggg}。?
創(chuàng)新工場面試題:abcde五人打漁,打完睡覺,a先醒來,扔掉1條魚,把剩下的分成5分,拿一份走了;b再醒來,也扔掉1條,把剩下的分成5份,拿一份走了;然后cde都按上面的方法取魚。問他們一共打了多少條魚,寫程序和算法實現(xiàn)。提示:共打了多少條魚的結(jié)果有很多。但求最少打的魚的結(jié)果是3121條魚(應(yīng)該找這5個人問問,用什么工具打了這么多條魚)。(http://blog.csdn.net/nokiaguy/article/details/6800209)。淘寶2012筆試(研發(fā)類):http://topic.csdn.net/u/20110922/10/e4f3641a-1f31-4d35-80da-7268605d2d51.html(一參考答案)。
??? ok,這13道題加上此前本博客陸陸續(xù)續(xù)整理的微軟面試187題:重啟開源,分享無限--誠邀你加入微軟面試187題的解題中,至此,本博客內(nèi)已經(jīng)整理了整整200道面試題。
后續(xù)整理
??? 以下是后續(xù)整理的最新面試題,不斷更新中(2011.09.26).....
14、騰訊最新面試題:服務(wù)器內(nèi)存1G,有一個2G的文件,里面每行存著一個QQ號(5-10位數(shù)),怎么最快找出出現(xiàn)過最多次的QQ號。
以下是個人所建第Algorithms_12群內(nèi)朋友的聊天記錄:
??? 首先你要注意到,數(shù)據(jù)存在服務(wù)器,存儲不了(內(nèi)存存不了),要想辦法統(tǒng)計每一個qq出現(xiàn)的次數(shù)。
比如,因為內(nèi)存是1g,首先 你用hash 的方法,把qq分配到10個(這個數(shù)字可以變動,比較)文件(在硬盤中)。
??? 相同的qq肯定在同一個文件中,然后對每一個文件,只要保證每一個文件少于1g的內(nèi)存,統(tǒng)計每個qq的次數(shù),可以使用hash_map(qq, qq_count)實現(xiàn)。然后,記錄每個文件的最大訪問次數(shù)的qq,最后,從10個文件中找出一個最大,即為所有的最大。更多讀者可以參見此文:海量數(shù)據(jù)處理面試題集錦與Bit-map詳解?。
15、百度今天的筆試題:在一維坐標(biāo)軸上有n個區(qū)間段,求重合區(qū)間最長的兩個區(qū)間段。
16、華為社招現(xiàn)場面試1:請使用代碼計算1234567891011121314151617181920*2019181716151413121110987654321 。
華為面試2:1分2分5分的硬幣,組成1角,共有多少種組合。
17、百度筆試題:
一、系統(tǒng)有很多任務(wù),任務(wù)之間有依賴,比如B依賴于A,則A執(zhí)行完后B才能執(zhí)行
? (1)不考慮系統(tǒng)并行性,設(shè)計一個函數(shù)(Task *Ptask,int Task_num)不考慮并行度,最快的方法完成所有任務(wù)。
? (2)考慮并行度,怎么設(shè)計
? typedef struct{
???? ?int ID;
?? ? int * child;
??? ? int child_num;
? }Task;
? 提供的函數(shù):
??? bool doTask(int taskID);無阻塞的運行一個任務(wù);
? ? int waitTask(int timeout);返回運行完成的任務(wù)id,如果沒有則返回-1;
?? ?bool killTask(int taskID);殺死進(jìn)程
二、必答題(各種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?
? ? 強(qiáng)制類型轉(zhuǎn)換,去掉const屬性,如ptr = <const_cast double *>(&value);
http://topic.csdn.net/u/20110925/16/e6248e53-1145-4815-8d24-9c9019d24bd8.html?seed=1665205011&r=75709169#r_75709169
18、如果用一個循環(huán)數(shù)組q[0..m-1]表示隊列時,該隊列只有一個隊列頭指針front,不設(shè)隊列尾指針rear,求這個隊列中從隊列投到隊列尾的元素個數(shù)(包含隊列頭、隊列尾)(華賽面試題、騰訊筆試題)。
19、昨晚淘寶筆試題:
1. 設(shè)計相應(yīng)的數(shù)據(jù)結(jié)構(gòu)和算法,盡量高效的統(tǒng)計一片英文文章(總單詞數(shù)目)里出現(xiàn)的所有英文單詞,按照在文章中首次出現(xiàn)的順序打印輸出該單詞和它的出現(xiàn)次數(shù)。
2、有一棵樹(樹上結(jié)點為字符串或者整數(shù)),請寫代碼將樹的結(jié)構(gòu)和數(shù)據(jù)寫到一個文件中,并能通過讀取該文件恢復(fù)樹結(jié)構(gòu)?。
20、13個球一個天平,現(xiàn)知道只有一個和其它的重量不同,問怎樣稱才能用三次就找到那個球?(http://zhidao.baidu.com/question/66024735.html
)。
21、搜狗筆試題:一個長度為n的數(shù)組a[0],a[1],...,a[n-1]。現(xiàn)在更新數(shù)組的名個元素,即a[0]變?yōu)閍[1]到a[n-1]的積,a[1]變?yōu)閍[0]和a[2]到a[n-1]的積,...,a[n-1]為a[0]到a[n-2]的積(就是除掉當(dāng)前元素,其他所有元素的積)。
程序要求:
要求具有線性復(fù)雜度。
不能使用除法運算符。
??? 思路:left[i]存儲a[i]之前的乘積,right[i]存儲a[i]之后的乘積,那么a[i]=left[i]*right[i] 。
??? 不過,left的計算從左往右掃的時候得出,right是從右往左掃得出。因為就是當(dāng)中某個元素的 左邊所有元素與右邊所有元素的乘積,就這么簡單。所以計算a[i]=left[i]*right[i]時,直接出結(jié)果。
22、騰訊高水平復(fù)試題:
1.有不同的手機(jī)終端,如iphone,安卓,Symbian,不同的終端處理不一樣,設(shè)計一種服務(wù)器和算法實現(xiàn)對不同的終端的處理。
2.設(shè)計一種內(nèi)存管理算法。?
3.A向B發(fā)郵件,B收到后讀取并發(fā)送收到,但是中間可能丟失了該郵件,怎么設(shè)計一種最節(jié)省的方法,來處理丟失問題。?
4.設(shè)計一種算法求出算法復(fù)雜度 。
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):
更新至2011.09.30....
? ? 如果各位對上面的題目有好的思路,或者還有好的面試題分享,歡迎添加到本文評論下,或者發(fā)至我的郵箱:zhoulei0709@yahoo.cn。謝謝大家。July、2011.09.30。
總結(jié)
以上是生活随笔為你收集整理的九月腾讯,创新工场,淘宝等公司最新面试三十题(更新至10.04)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 互联网商业模式:增值还是减值?
- 下一篇: MFC启动和关闭线程