百度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類型的字符串,並且用遍歷的方式依次匹配)