BaiDu往年面试题目汇总☆WM☆
題目來源:http://www.cnblogs.com/cutepig/archive/2007/09/14/893552.html
?
?
1.char a=255;
sizeof(++a)=?(1)//這題可以參考我以往文章,關(guān)于sizeof的分析a=?(-1)//數(shù)組越界
2.刪除掉cpp文件中的所有注釋
這題考察的是對(duì)文件的操作題, 程序稍后奉上
3.用腳本(bash)統(tǒng)計(jì)(不是特別清楚,只記得diff可以實(shí)現(xiàn)兩個(gè)文件不同的行,回頭查)兩個(gè)文本文件的相同的行,
??
第一文件有而第二文件無的行
??,
兩個(gè)文件的補(bǔ)集。?
4.設(shè)計(jì)一個(gè)簡(jiǎn)化的bbs系統(tǒng):多用戶,可發(fā)表主題,回復(fù),同主題閱讀,分不同的版面,為每一用戶判斷某一文章是否已讀,等。?
首先設(shè)計(jì)系統(tǒng)的整體框架,開發(fā)語言。
然后進(jìn)行設(shè)計(jì)交互過程, 設(shè)計(jì)數(shù)據(jù)庫(kù)結(jié)構(gòu),然后進(jìn)行編碼。題目較簡(jiǎn)單,不詳述。
5.判斷一個(gè)鏈表是否存在回路??
判斷鏈表是否有回路,可以通過下面方法進(jìn)行處理:
首先鏈表的結(jié)構(gòu)可能我們不太清楚,如果可以隨意更改結(jié)構(gòu)體的成員,那么這題就很容易了,增加一個(gè)標(biāo)志性的變量,一旦串入鏈表中,標(biāo)志位置1,如果下面的操作中發(fā)現(xiàn)鏈路中下一結(jié)點(diǎn)的標(biāo)志位為1,那么說明一定形成了環(huán)路,否則一直執(zhí)行下去。?
6.兩個(gè)單向鏈表,有可能交叉,請(qǐng)?jiān)O(shè)計(jì)算法判斷是否交叉,如果交叉,返回交叉點(diǎn)!算法復(fù)雜度o(n)
做這題前首先需要明確以下概念:
1級(jí)就是1個(gè)直線鏈表2級(jí)就是每個(gè)節(jié)點(diǎn)是1級(jí)鏈表
3級(jí)就是每個(gè)節(jié)點(diǎn)是2級(jí)鏈表
交叉鏈表是兩個(gè)鏈表在某個(gè)點(diǎn)會(huì)交匯到一起,后面所有節(jié)點(diǎn)相同。
明白了上述概念后,對(duì)判斷是否是交叉鏈表,就顯得很簡(jiǎn)單了。
可以借助第五題中判斷是否存在回路的思路,比如下述步驟:
?
8.Hash表
Hash,一般翻譯做“散列”,也有直接音譯為“哈希”的,就是把任意長(zhǎng)度的輸入(又叫做預(yù)映射, pre-image),通過散列算法,變換成固定長(zhǎng)度的輸出,該輸出就是散列值。這種轉(zhuǎn)換是一種壓縮映射,也就是,散列值的空間通常遠(yuǎn)小于輸入的空間,不同的輸入可能會(huì)散列成相同的輸出,而不可能從散列值來唯一的確定輸入值。簡(jiǎn)單的說就是一種將任意長(zhǎng)度的消息壓縮到某一固定長(zhǎng)度的消息摘要的函數(shù)。
HASH主要用于信息安全領(lǐng)域中加密算法,它把一些不同長(zhǎng)度的信息轉(zhuǎn)化成雜亂的128位的編碼,這些編碼值叫做HASH值. 也可以說,hash就是找到一種數(shù)據(jù)內(nèi)容和數(shù)據(jù)存放地址之間的映射關(guān)系
散列函數(shù)能使對(duì)一個(gè)數(shù)據(jù)序列的訪問過程更加迅速有效,通過散列函數(shù),數(shù)據(jù)元素將被更快地定位ǐ
1. 直接尋址法:取關(guān)鍵字或關(guān)鍵字的某個(gè)線性函數(shù)值為散列地址。即H(key)=key或H(key) = a·key + b,其中a和b為常數(shù)(這種散列函數(shù)叫做自身函數(shù))
2. 數(shù)字分析法
3. 平方取中法
4. 折疊法
5. 隨機(jī)數(shù)法
6. 除留余數(shù)法:取關(guān)鍵字被某個(gè)不大于散列表表長(zhǎng)m的數(shù)p除后所得的余數(shù)為散列地址。即 H(key) = key MOD p,p<=m。不僅可以對(duì)關(guān)鍵字直接取模,也可在折疊、平方取中等運(yùn)算之后取模。對(duì)p的選擇很重要,一般取素?cái)?shù)或m,若p選的不好,容易產(chǎn)生同義詞。
處理沖突的方法
1. 開放尋址法;Hi=(H(key) + di) MOD m,i=1,2,…,k(k<=m-1),其中H(key)為散列函數(shù),m為散列表長(zhǎng),di為增量序列,可有下列三種取法:
1. di=1,2,3,…,m-1,稱線性探測(cè)再散列;
2. di=1^2,(-1)^2,2^2,(-2)^2,(3)^2,…,±(k)^2,(k<=m/2)稱二次探測(cè)再散列;
3. di=偽隨機(jī)數(shù)序列,稱偽隨機(jī)探測(cè)再散列。==
2. 再散列法:Hi=RHi(key),i=1,2,…,k RHi均是不同的散列函數(shù),即在同義詞產(chǎn)生地址沖突時(shí)計(jì)算另一個(gè)散列函數(shù)地址,直到?jīng)_突不再發(fā)生,這種方法不易產(chǎn)生“聚集”,但增加了計(jì)算時(shí)間。
3. 鏈地址法(拉鏈法)
4. 建立一個(gè)公共溢出區(qū)?
9.php+MySQL
10.問參加過ACM/數(shù)學(xué)建模沒有
參加過ACM同時(shí)也參加過數(shù)學(xué)建模。?
11.多邊形標(biāo)記問題
可以考慮使用累計(jì)角度法,即使是凹多邊形一樣可以判斷。?
?
轉(zhuǎn)載于:https://www.cnblogs.com/weisteve/archive/2011/10/09/2204906.html
總結(jié)
以上是生活随笔為你收集整理的BaiDu往年面试题目汇总☆WM☆的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 卡巴斯基:警惕IE拦截器恶意推广导航网站
- 下一篇: Facebook提升性能的一大法宝:Hi