百度2014校园招聘笔试题(成都站,软件研发岗)——2014.09.21
一、簡答題(本題共30分)
1. 當前計算機系統一般會采用層次結構來存儲數據,請介紹下典型的計算機存儲系統一般分為哪幾個層次,為什么采用分層存儲數據能有效提高程序的執行效率?(10分)
?
2. Unix/Linux系統中僵尸進程是如何產生的?有什么危害?如何避免?(10分)
?
3. 簡述Unix/Linux系統中使用socket庫編寫服務器端程序的流程,請分別用對應的socket通信函數表示(10分)
?
?
二、算法與程序設計題(本題共45分)
1. 使用C/C++編寫函數,實現字符串反轉,要求不使用任何系統函數,且時間復雜度最小,函數原型:char* reverse_str(char* str)。(15分)
?
2. 給定一個如下格式的字符串,(1,(2,3),(4,(5,6),7))括號內的元素可以是數字,也可以是另一個括號,請實現一個算法消除嵌套的括號,比如把上面的表達式變成:(1,2,3,4,5,6,7),如果表達式有誤請報錯。(15分)
?
3. (見下圖)
?
?
三、系統設計題(本題共25分)
在企業中,對生產數據進行分析具有很重要的意義,但是生產數據通常不能直接用于數據分析,通常需要進行抽取、轉換和加載,也就是通常說的ETL。
為了便于開發和維護,并提高數據實時性,通常將一個完整的ETL過程分為多個任務,組成流水線,如下圖所示:
假設任務定義和任務之間的依賴關系都保存在文件中,文件格式分別如下:
?
問題:
1.? 下面是ETL調度系統的模塊圖,請描述各個模塊呃主要職責,以及各個線條的 含義。(10分)
?
2.? 添加依賴關系時要避免出現環,假設系統同一個時刻只允許一個人添加任務依賴,請實現一個函數來檢查新的依賴是否導致環,依賴的上游存在環會導致非正常的調度,因此也希望能避免。(10分)
a) ?函數名:checkCycle
b) ?輸入:pairs,已存在的依賴關系((pre,post)……), newPair新的依賴關系(pre,post)
c)??輸出:True: 不存在環,False: 存在環
?
3. 如果調度時,某個任務在其依賴的任務之前執行,必然導致錯誤,請實現調度算法,確保任務按照依賴順序執行?(10分)
a) ?函數名:schedule
b) ?輸入1:tasks,整數數組;
c)??輸入2:task-relation,二元組數組,每個二元組表示一組關系;
d)? 輸出:task id序列,并行執行的用","分隔,其他的用";"分隔;
?
4. 給定一個任務,如何計算出他的最晚完成時間?(10分)
a) ?函數名:calMaxEndTime
b) ?輸入1:tasks,3元組數組,(task_id, start_time, max_run_time);
c)??輸入2:task-relations,二元組數組,每個二元組表示一組關系;
d)? 輸入3:task-id
e)? 輸出:最晚完成時間;
轉載于:https://www.cnblogs.com/dwf07223/p/3336458.html
總結
以上是生活随笔為你收集整理的百度2014校园招聘笔试题(成都站,软件研发岗)——2014.09.21的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 各种水平居中方法
- 下一篇: Ruby中,:(ampersand co