**選擇題**
1、已知中國人的血型分布約為A型:30%,B型:20%,O型:40%,AB型:10%,則任選一批中國人作為用戶調研對象,希望他們中至少有一個是B型血的可能性不低于90%,那么最少需要選多少人?
A、7???? B、9????? C、11???? D、13
2、廣告系統為了做地理位置定向,將IPV4分割為627672個區間,并標識了地理位置信息,區間之間無重疊,用二分查找將IP地址映射到地理位置信息,請問在最壞的情況下,需要查找多少次?
A、17???? B、18????? C、19???? D、20
3、有四只老鼠一塊出去偷食物(每個都偷了),回來時,族長問它們都偷了什么,老鼠A說:我們每個都偷了奶酪。老鼠B說:我只偷了一顆櫻桃。老鼠C說:我沒偷奶酪。老鼠D說:有些人沒偷奶酪。族長觀察了一下,發現它們當中只有一只老鼠說了實話,那么是哪只老鼠說了實話?
A、老鼠A??????? B、老鼠B??????? C、老鼠C?????? D、老鼠D
4、到商店里買200的商品返還100的優惠券(可以在本商店代替現金)。如果使用優惠券買東西不能獲得新的優惠券,那么買200返100優惠券,實際上省多少?
A、50%
B、66.7%
C、75%
D、33.3%
5、在數據庫邏輯設計中,當將E-R圖轉換為關系模式時,下面的做法哪一個不正確?
A、一個實體類型轉換為一個關系模式
B、一個聯系類型轉換為一個關系模式
C、由實體類型轉換成的關系模式的主鍵是該實體類型的主鍵
D、由聯系類型轉換成的關系模式的屬性是與該聯系類型相關的諸實體類型的屬性的全體
6、一家人有兩個孩子,性別未知,現在打電話給其中一個孩子得知是女孩,問另一個孩子也是女孩的概率是多少?
A、1/4??????? B、1/2??????? C、1/3?????? D、1/5
7、關于非空二叉樹的性質,下面哪個結論不正確(D)
A、有兩個節點的節點一定比沒有子節點的節點少一個????? n0 = n2 + 1
B、根節點所在的層數為第0層,則第i層最多有2^i個節點
C、若知道二叉樹的前序遍歷序列和中序遍歷序列,則一定可以推出后序遍歷序列。
D、堆一定是一個完全二叉樹
8、快速排序的平均時間復雜度和最壞時間復雜度是()
A、O(n^2), O(n^2)
B、O(n^2), O(nlgn)
C、O(nlgn) , O(nlgn)
D、O(nlgn) , O(n^2)
9、有一串數字 6 7 4 2 8 1 6 (),請問括號中的數字最可能是()
A、6?????? B、7?????? C、8?????? D、9
10、下面哪項不是鏈表優于數組的特點?
A、方便刪除???? B、方便插入??? C、長度可變??? D、存儲空間小
11、給定聲明 const char * const * pp; 下屬操作或說明正確的是()
A、pp++
B、(*pp)++
C、(**pp) = 'c';
D、以上都不對
12、有下列代碼正確的是()
~~~
std::string name1 = "youku";
const char* name2 = "youku";
char name3[] = {'y','o','u','k','u'};
size_t l1 = name1.size();
size_t l2 = strlen(name2);
size_t l3 = sizeof(name2);
size_t l4 = sizeof(name3);
size_t l5 = strlen(name3);
~~~
A、l1 = 5?? ? l2 = 5???? l3 = 4????? l4 = 5???? l5 = 不確定
B、l1 = 5???? l2 = 5???? l3 = 5????? l4 = 5???? l5 = 不確定
C、l1 = 5???? l2 = 6???? l3 = 5????? l4 = 5?? ? l5 = 5
D、l1 = 5???? l2 = 6???? l3 = 5????? l4 = 5???? l5 = 6
13、Test執行后的輸出是:
~~~
void Test()
{
class B
{
public:
B(void)
{
cout<<"B\t";
}
~B(void)
{
cout<<"~B\t";
}
};
struct C
{
C(void)
{
cout<<"C\t";
}
~C(void)
{
cout<<"~C\t";
}
};
struct D : B
{
D()
{
cout<<"D\t";
}
~D()
{
cout<<"~D\t";
}
private:
C c;
};
D d;
}
~~~
A、B?? C?? D?? ~D?? ~ C?? ~B
B、D?? C?? B?? ~B?? ~C?? ~D
C、C?? D?? B?? ~B?? ~D?? ~C
D、C?? ~C?? D?? ~D?? B?? ~B
14、下列四種排序中(D)的空間復雜度最大
A、快速排序?? ? ?? B、冒泡排序 ? ? ? C、希爾排序 ? ? ? ? D、堆
15、設一棵二叉樹的深度為k,則該二叉樹最多有(D)個節點。
A、2k-1????? B、2^k??? C、2^(k-1)????? D、2^k-1
16、下面函數的功能是()
~~~
int fun(char *x)
{
char *y = x;
while(*y++);
return (y-x-1);
}
~~~
A、求字符串的長度
B、比較兩個字符串的大小
C、將字符串x復制到字符串y
D、將字符串x連接到字符串y后面
17、k為int類型,以下while循環執行()次。
~~~
unsigned int k = 20;
while(k >= 0)
--k;
~~~
A、20次??? B、一次也不執行???C、死循環?? D、21次
18、關于Cookie 和 Session的概念哪一個是對的
A、Cookie 存儲在客戶端,但過期時間設置在服務器上
B、Session 存儲在客戶端,但過期時間設置在服務器上
C、Cookie 中可以存儲ASCII空格‘? ’,而Session中不行
D、Cookie可以設置生效的路徑,而 Session則不能
19、以下關于鏈式存儲結構的敘述中哪一條是不正確的?
A、結點除自身信息外還包括指針域,因此存儲密度小于順序存儲結構
B、邏輯上相鄰的結點物理上不必鄰接
C、可以通過計算直接確定第i個結點的存儲地址
D、插入、刪除運算操作方便,不必移動結點
20、32位機器上,定義 int **a[3][4],這個數組占多大的空間()
A、64????????? B、12??????? C、48??????? D、128
**填空題**
1、設數組定義為a[60][70],每個元素占2個存儲單元,數組按照列優先存儲,元素a[0][0]的地址為1024,那么元素a[32][58]的地址為(8048)
2、在一個娛樂節目上,主持人提供有三扇門(假設為A、B、C),只有1扇門后面有獎品,另兩扇門后面是空的,而主持人知道具體哪扇門后有獎品。首先,當你選擇了一扇門之后(假設A),主持人會把剩下兩扇門中的一扇沒有獎品的門打開(假設打開的空門為B),現在你有一次機會決定是否要交換重新選擇,如果你堅持選擇A,你中獎的概率是(1/3),如果你交換選擇C,你中獎的概率是(2/3)???[http://en.wikipedia.org/wiki/Monty_Hall_problem](http://en.wikipedia.org/wiki/Monty_Hall_problem)
假設你選擇的1門,而主持人打開的是3門,則獎品在2門后面的概率是

3、一棵深度為h的滿二叉樹,其最末一層共有(2^h)個節點(根節點深度為0)
4、下面程序的運行結果為(1?? 3?? 2)
~~~
void foo(int *a , int *b)
{
*a = *a + *b;
*b = *a - *b;
*a = *a - *b;
}
void main()
{
int a = 1 , b = 2 , c = 3;
foo(&a , &b);
foo(&b , &c);
foo(&c , &a);
printf("%d %d %d\n",a,b,c);
}
~~~
5、4個結點可以構造出(14)個不同的二叉樹??? Catalan數
6、設有n個無序的記錄關鍵字,則直接插入排序的時間復雜度為(O(n^2)),快速排序的平均時間復雜度為(O(nlgn))
7、設一組初始記錄關鍵字序列為(20,18,22,16,30,19),則以20為中軸的一趟快速排序結果為(19,18,16,20,30,22)
8、C語言的函數參數傳遞方式有傳遞 值 ? 和? 傳遞 地址
9、分配在堆上和棧上的內存,哪一個需要手動進行內存釋放??? 堆上的內存
**問答題:**
一、有一個單向循環鏈表隊列,從頭開始報數,當報到m或者m的倍數的元素出列,根據出列的先后順序重新組成單向循環鏈表。
函數原型: void reorder(Node **head , int m)
二、優酷是中國第一的視頻網站,每天有上億的視頻被觀看,現在公司請研發人員找出最熱門的視頻。
該問題的輸入可以簡化為一個字符串文件,每一行都表示一個視頻id,然后要找出出現次數最多的前100個視頻id,將其輸出,同時輸出該視頻的出現次數。
1、假設每天的視頻播放次數為3億次,被觀看的視頻數量為一百萬個,每個視頻ID的長度為20個字節,限定使用的內存為1G。請先描述做法,再寫代碼。
2、假設每個月的視頻播放次數為100億次,被觀看的視頻數量為1億個,每個視頻ID的長度為20個字節,一臺機器被限定使用的內存為1G。
那么想找這個月被播放次數最多的前100個視頻,應該怎么做?請描述清楚可能的辦法。
解析:海量數據的處理。無法一次性裝入內存,可先hash之分為多個文件處理,堆或者Trie樹統計次數,求出每個文件中的Top 100。歸并之求出總的top 100。
對于第二問:還可以hadoop mapReduce處理之。
首先統計每個視頻被觀看次數,得到<id, cnt>鍵值對,其中id為視頻id,cnt為視頻被觀看次數。
以cnt作為關鍵字建立最小堆。遍歷所有鍵值對,若堆的size小于100,則將鍵值對直接插入堆,否則比較鍵值對和堆頂元素大小,若cnt大于堆頂元素的cnt,則彈? 出堆頂元素并將鍵值對插入堆。
對于第一問,由于id個數較少,統計部分可直接使用stl的map容器。
對于第二問,由于id個數太大,直接hash內存不夠,需要mapReduce。
三、給你一個由n-1個整數組成的未排序的序列,其元素都是1到n中的不同的整數。請寫出一個尋找序列中缺失整數的線性時間算法。
異或運算就可以解決了
- 前言
- 程序員有趣的面試智力題
- 淘寶網 校園招聘 技術人員筆試題
- 網新恒天2011.9.21招聘會筆試題
- 淘寶2011.9.21校園招聘會筆試題
- 騰訊2011.10.15校園招聘會筆試題
- 網易游戲2011.10.15校園招聘會筆試題
- 百度2011.10.16校園招聘會筆試題
- 微策略2011校園招聘筆試題(找出數組中兩個只出現一次的數字)
- 百度最新面試題集錦
- C/C++筆試題目大全
- 各大IT公司校園招聘程序猿筆試、面試題集錦
- Trie樹詳解及其應用
- 后綴數組求最長重復子串
- 海量數據隨機抽樣問題(蓄水池問題)
- 搜狐2012.9.15校園招聘會筆試題
- 搜狗2012.9.23校園招聘會筆試題
- Google2012.9.24校園招聘會筆試題
- 優酷土豆2012.9.12校園招聘會筆試題