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