20140925百度校園招聘一面

2021-06-25 23:04:26 字數 2052 閱讀 4721

面試官先讓我做自我介紹。然後馬上就談專案了,叫我挑乙個專案講講怎麼做的,解決了什麼問題。問專案我最不怕了,畢竟專案都是自己認真地完成的,也確實在做專案過程中學到了很多東西,解決了一些問題。

然後就問問我在華為實習的情況。

說完他讓我寫寫程式,問我知道哪些排序演算法,叫我寫乙個熟悉的排序演算法。居然讓我自己選擇,那果斷快速排序啊。如下:

void quick_sort(int array, int begin, int end)

else

i--;

} int tmp = array[pivot];

array[pivot] = array[last_small];

array[last_small] = tmp;

quick_sort(array, begin, last_small - 1);

quick_sort(array, last_small + 1, end);

}}

然後叫我寫反轉鍊錶。。太經常問了這問題。但他一開始說不允許另外開闢位址,我還以為臨時變數都不讓宣告,我就說這有點難。但是過一會他糾正了,臨時變數是可以的。

void reversal(listnode* head)//reverse the list

head = before;

}

問:在已排序好的陣列找兩個數a+b等於給定的n。

對於乙個陣列array,長度為size,令begin = 0,end = size - 1,判斷array[begin] + array[end] 與n的大小關係,如果相等,則找到;如果小於,則begin++,如果大於,則end--,然後繼續做前面判斷。這樣基本上效率能最快了,因為是o(n)。

問:不用第三個引數調換整數a和b

他問了之後我就說這題我會,說真的,這題要是之前不知道,要在面試的時候想出來基本不可能。要用異或操作符來做:

a = a^b;

b = a^b;

a = a^b;

然後用a= 101,b = 111測試了一下,根據上面操作a = 010;b = 101; a = 111正確。

問:堆疊區別

說了一下四點:

1)棧是連續的,堆是不連續的;2)棧元素自動釋放,堆元素要手動釋放;3)棧從高位址開始儲存向下增長,堆相反;4)儲存讀取效率上棧比堆快。

還問通常什麼儲存在棧中,答函式引數、區域性變數等。

接下來他看了我的筆試題試卷,主要是討論最後一道題:如下

輸入:實際顯示:這裡我只是隨便舉了個例子)

前面asdfa.cn是對應網域名稱 zhidao.baidu.com,後面長長的字串被壓縮成ak78ss。

現在讓你來設計tinyurl的實現,一下問題要怎麼設計:

問題一:網域名稱後面的編碼如何實現?

問題二:對於已經對映過的乙個url,怎麼查詢已存在的tinyurl?

問題三:有10億個url,乙個服務上存不下,需要多台伺服器,怎麼設計實現?

問了乙個問題,說你覺得讓你來設計這樣乙個服務,最大的問題是什麼?我說是tinyurl的hash表儲存,因為資料量真的非常大。他問那你要怎麼儲存,我說要用二次雜湊吧,先根據hash值儲存到對應的伺服器上面,再進行hash儲存。

接著他問我試卷上memcpy怎麼沒寫?我說我當時對這個函式不了解。他叫我現在做一下這個題。我就不貼**了,寫得太爛,他說要在複製的時候考慮記憶體溢位問題。有興趣的可以網上找實現**。

後面是一道概率問題,乙個山區的村子,生孩子直到生了乙個男孩為止。題目就不多說了,網上不久有這道原題麼?但我之前根本沒看答案。所以我一開始在紙上乙個勁地計算,最後發現計算不出來之後,我給了他這樣的答案,說我覺得是1:1。為什麼?因為生男生女概率本來就都是二分之一,無論定義怎麼的規則生孩子,生男生女概率就是不會變,所以數量多了之後男女比例是1:1。我不知道他是否想要這樣的答案,但我覺得我當時挺機智的。他說原理是什麼呢?我說,當數量足夠大的時候,概率比就是數量比。隨後他爽快地說:去二面吧!

百度2013校園招聘題

第一題,基礎題 1.資料庫及執行緒產生死鎖的原理和必要條件,如何避免死鎖。2.列舉物件導向程式設計的三個要素和五項基本原則。解答 封裝,繼承,多型物件導向的五大基本原則 單一職責原則 srp 開放封閉原則 ocp 黎克特制替換原則 lsp 依賴倒置原則 dip 介面隔離原則 isp 單一職責原則 s...

百度2015校園招聘筆試題

一 簡答題 30分 1.程序和執行緒的聯絡與區別。2.簡述資料庫的儲存過程及其優點。3.static全域性變數與普通的全域性變數有什麼區別?static區域性變數和普通的區別?static函式和普通函式的區別?二 演算法與程式設計題 45分 1 請編碼實現memcpy函式 void memcpy v...

2017百度校園招聘程式設計題

題目大概為輸入n個敏感詞彙和乙個文字串,在文字串中出現敏感詞彙的地方用 替代掉,輸出替換後的文字串。思路 直接kmp匹配出現敏感詞的地方,用乙個中間陣列標記。唯一的陷阱就是不區分大小寫,所以用kmp判斷兩個字元相等的注意下 替換敏感詞彙 include include include include...