百度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)  輸出:最晚完成時間;


本文從我另一篇博文搬來http://www.cnblogs.com/dwf07223/p/3336458.html


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章