2013年百度校園招聘筆試題及個人答案

我不是大神,百度筆試題畢竟比較難,所以寫出來只是給刷大公司筆試題的人提供一點兒信息以供搜索到。也可以和愛好編程者相互探討。
 
一:簡答題(30)
 
1:數據庫以及線程發生死鎖的原理及必要條件,如何避免死鎖(操作系統書上有)
2:面向對象的三個基本元素,五個基本原則(繼承,封裝,多態,基本原則沒答上)
3:windows內存管理的機制以及優缺點(分頁,分段,虛擬內存管理....)
 
二:程序設計題(40)
 
1:公司裏面有1001個員工,現在要在公司裏面找到最好的羽毛球選手,也就是第一名,每個人都必須參賽,問至少要比賽多少次才能夠找到最好的羽毛球員工。(含僞代碼)--------(個人覺得,兩兩比賽,分成500組剩下一人,類似於歸併排序的方式,比出冠軍後,讓冠軍之間再比,主要是要想想多餘的那一個選手如何處理,必然要在第一次決出冠軍後加入比賽組)
 
2:現在有100個燈泡,每個燈泡都是關着的,第一趟把所有的燈泡燈泡打開,第二趟把偶數位的燈泡製反(也就是開了的關掉,關了的打開),第三趟讓第3,6,9....的燈泡製反.......第100趟讓第100個燈泡製反,問經過一百趟以後有多少燈泡亮着-----(覺得這個應該是最好做的編程題了,首先定義一個數組vist[100],初始化爲0,我們假設已經達到第i個燈泡了,要判斷第i個燈泡最後是開着還是滅了的,要要知道它被開關了多少次用temp存放,也就是說是偶數還是奇數,偶數顯然最後是關着的,奇數則開着,讓i除以比它小的數字,如果餘數爲0就躺temp++,最後再根據temp的值確定vist[i是0還是1,最後掃描整個vist數組)
 
3:有20個數組,每個數組有500個元素,並且是有序排列好的,現在在這20*500個數中找出排名前500的數(可以用歸併排序,最後找到500個元素的值,也可以這樣首先找到每個數組的最大值和最小值,然後存放在一個結構體裏面,如果一個數組裏面的最小值大於某一個數組的最大值,那麼某一個數組就被kill掉,然後提取剩餘數組的最大值----當然每個數組的元素放生變化了,因爲每次提取走了最大值,然後改變結構體裏面的最大值和最小值,重複以上操作,直到找到前五百個數)
 
 
三:系統設計題(30)
 
現在有一個手機,手機上的鍵盤上有這樣的對應關係,2對應"abc",3對應"def".....手機裏面有一個userlist用戶列表,當我們輸入942的時候出來拼音的對應可能是“xia”,“zha”,“xi”,“yi”等,當我們輸入9264的時候出來是yang,可能是“樣”,“楊”,“往”等,現在我們輸入一個字符串數字,比如926等,要在電話簿userlist中查找出對應的用戶名和電話號碼並返回結果。---------(個人覺得用哈希表來查找,並用鏈表來處理衝突,如a[2]依次對應abc,可以在匹配字符的時候定義一個char(*P)[4]的指針,每個指針指向最多四個char類型的字符串,並且用遍歷的方式依次匹配)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章