- 相關(guān)推薦
百度軟件研發(fā)工程師筆試題
一,簡答題(本題共30分)1. 當(dāng)前計(jì)算機(jī)系統(tǒng)一般會采用層次結(jié)構(gòu)來存儲數(shù)據(jù),請介紹下典型的計(jì)算機(jī)存儲系統(tǒng)一般分為哪幾個(gè)層次,為什么采用分層存儲數(shù)據(jù)能有效提高程序的執(zhí)行效率?(10分)
2. Unix/Linux系統(tǒng)的僵尸進(jìn)程是如何產(chǎn)生的?有什么危害?如何避免?(10)
3. 簡述Unix/Linux系統(tǒng)中使用socket庫編寫服務(wù)器程序的流程,請分別用對應(yīng)的socket通信函數(shù)表示,
百度軟件研發(fā)工程師筆試題
。二,算法與程序設(shè)計(jì)題(本題共45分)
1, 使用C/C++語言寫一個(gè)函數(shù),實(shí)現(xiàn)字符串的反轉(zhuǎn),要求不能用任何系統(tǒng)函數(shù),且時(shí)間復(fù)雜度最小。函數(shù)原型是:char *reverse_str(char *str)(15分)
2, 給定一個(gè)如下輸入格式的字符串,(1,(2,3),(4,(5,6),7))括號內(nèi)的元素可以是數(shù)字,也可以另一個(gè)括號,請實(shí)現(xiàn)一個(gè)算法消除嵌套的括號。比如把上面的表達(dá)式變成:(1,2,3,4,5,6,7),如果表達(dá)式有誤請報(bào)錯。(15分)
3, 相似度計(jì)算用于衡量對象之間的相似程度,在數(shù)據(jù)挖據(jù),自然語言處理中使一個(gè)基礎(chǔ)性
計(jì)算,在廣告檢索服務(wù)中往往也會判斷網(wǎng)民檢索Query和廣告Adword的主題相似度。假設(shè)Query或者Adword的主題屬性定義為一個(gè)長度為10000的浮點(diǎn)數(shù)據(jù)Pr[10000](稱之為主題概率數(shù)組),其中Pr[i]表示Query或者Adword屬于主題Id為i的概率,而Query和Adword的相似度簡化定義為兩者主題概率數(shù)組的內(nèi)積,即sim(Query,Adword)=sum(QueryPr[i]*AdwordPr[i])(0<==i<10000).在實(shí)際應(yīng)用場景中,由于大多數(shù)主題的概率都為0,所以主題概率數(shù)組往往比較稀疏,在實(shí)現(xiàn)時(shí)會以一個(gè)緊湊型數(shù)組topic_info_t[]的方式保存,其中100<=數(shù)組大小<=1000,并按照 topic_id遞增排列,0<=topic_id<10000,0 ,0<topic_pr<1.
Struct topic_info_t{
Int topic_id;
Float topic_pr;
}
現(xiàn)在給出Query的topic_info_t數(shù)組和N(N>=5000)個(gè)Adwords的 topic_info-t數(shù)組,現(xiàn)要求出Query與Adwords的相似度最大值,即max(sim(Query,Adword[i])(0<=i<N).
Float max_sim(const vector& query_topic_info,
Const vector adwords_topic_info[],
Int adwords_number);
編寫代碼求時(shí)間復(fù)雜度最低的算法,并給出時(shí)間復(fù)雜度分析,
資料共享平臺
《百度軟件研發(fā)工程師筆試題》(http://m.dameics.com)。(15分)三,系統(tǒng)設(shè)計(jì)題(本題共25分)
在企業(yè)中,對生產(chǎn)數(shù)據(jù)進(jìn)行分析具有很重要的意義。但是生產(chǎn)數(shù)據(jù)通常不能直接用于數(shù)據(jù)分析,通常需要進(jìn)行抽取,轉(zhuǎn)換和加載,也就是業(yè)界常識的ETL.
生產(chǎn)數(shù)據(jù)
為了便于開發(fā)和維護(hù),并提高數(shù)據(jù)實(shí)時(shí)性,通常將一個(gè)完整的ETL過程分析哼多個(gè)任務(wù),組成流水線,如下圖所示:
假設(shè)任務(wù)定義和任務(wù)之間的依賴關(guān)系都保存在文件中,文件格式分別如下:
表格1任務(wù)元數(shù)據(jù)
文件 格式 例子 任務(wù)定義文件 每行表示一個(gè)任務(wù),3列:
1, ID
2, 開始運(yùn)行時(shí)間
3, 最大運(yùn)行時(shí)長(分鐘) 100,01:00:00,60
110,02:00:00,30 任務(wù)依賴關(guān)系 每行表示一個(gè)關(guān)系,2列:
1,前置任務(wù)
2, 后置任務(wù) 100,110 問題:
1, 下圖是ETL調(diào)度系統(tǒng)的模塊圖。請描述各個(gè)模塊的主要職責(zé),以及各個(gè)線條的含義。(10分)
2, 添加依賴關(guān)系時(shí)要避免產(chǎn)生環(huán),假設(shè)系統(tǒng)同一個(gè)時(shí)刻只允許一個(gè)人添加任務(wù)依賴,請實(shí)現(xiàn)一個(gè)函數(shù)來檢查新的依賴是否導(dǎo)致環(huán),如果該依賴的上游存在環(huán)會導(dǎo)致非正常的調(diào)度,因此也希望能避免。(10分)
a) 函數(shù)名:checkCycle
b) 輸入:pairs,已存在的依賴關(guān)系((pre,post)),newPair新的依賴關(guān)系(pre,post)
c) 輸出:True:不存在環(huán),F(xiàn)alse:存在環(huán)
3, 如果調(diào)度時(shí),某個(gè)任務(wù)在其依賴的任務(wù)之前執(zhí)行,必然導(dǎo)致錯誤,請實(shí)現(xiàn)調(diào)度算法,確保任務(wù)按照依賴順序執(zhí)行?(10分)
a) 函數(shù)名 schedule
b) 輸入1:tasks,整型數(shù)組
c) 輸入2:tasks-relations,二元組數(shù)組,每個(gè)二元組表示一組關(guān)系
d) 輸出:task_id序列,并行執(zhí)行的用“,”分隔,其他的用“;”分隔
4, 給定一個(gè)任務(wù),如何計(jì)算出他的最晚完成時(shí)間?(10分)
a) 函數(shù)名:calMaxEndTime
b) 輸入1:tasks,3元組數(shù)組,(task_id,start_time,max_run_time);
c) 輸入2:task-relations,2元組數(shù)組,每個(gè)二元組表示一組關(guān)系;
d) 輸入3:task-id
e) 輸出:最晚完成時(shí)間;
【百度軟件研發(fā)工程師筆試題】相關(guān)文章:
百度軟件測試常見筆試題09-06
美團(tuán)網(wǎng)研發(fā)工程師筆試題08-29
百度筆試題目10-26
軟件測試工程師筆試題及答案10-10
百度校園招聘筆試題精選07-22
筆試面試題—軟件測試工程師06-15
百度網(wǎng)絡(luò)筆試題目07-19