百度谷歌面試題目

全新整理:微軟、谷歌、百度等公司經典面試100題[第101-160題]node

整理:July、二零一一年三月九日。
應網友承諾與要求,全新整理。轉載,請註明出處。
博主說明:
此100題V0.2版,本人再也不保證,還會提供答案。
--------------------------------------------
 
微軟十五道面試題
一、有一個整數數組,請求出兩兩之差絕對值最小的值,
記住,只要得出最小值便可,不須要求出是哪兩個數。
二、寫一個函數,檢查字符是不是整數,若是是,返回其整數值。
(或者:怎樣只用4行代碼編寫出一個從字符串到長整形的函數?)
三、給出一個函數來輸出一個字符串的全部排列。
四、(a)請編寫實現malloc()內存分配函數功能同樣的代碼。 
(b)給出一個函數來複制兩個字符串A和B。字符串A的後幾個字節和字符串B的前幾個字節重疊。
五、怎樣編寫一個程序,把一個有序整數數組放到二叉樹中?
六、怎樣從頂部開始逐層打印二叉樹結點數據?請編程。  
七、怎樣把一個鏈表掉個順序(也就是反序,注意鏈表的邊界條件並考慮空鏈表)?
八、請編寫能直接實現int atoi(const char * pstr)函數功能的代碼。
九、編程實現兩個正整數的除法
編程實現兩個正整數的除法,固然不能用除法操做符。
// return x/y.
int div(const int x, const int y) 
{
  ....
}
十、在排序數組中,找出給定數字的出現次數
好比 [1, 2, 2, 2, 3] 中2的出現次數是3次。
十一、平面上N個點,每兩個點都肯定一條直線,
求出斜率最大的那條直線所經過的兩個點(斜率不存在的狀況不考慮)。時間效率越高越好。
十二、一個整數數列,元素取值多是0~65535中的任意一個數,相同數值不會重複出現。0是例外,能夠反覆出現。
請設計一個算法,當你從該數列中隨意選取5個數值,判斷這5個數值是否連續相鄰。
注意:
- 5個數值容許是亂序的。好比: 8 7 5 0 6
- 0能夠通配任意數值。好比:8 7 5 0 6 中的0能夠通配成9或者4
- 0能夠屢次出現。
- 複雜度若是是O(n2)則不得分。
1三、設計一個算法,找出二叉樹上任意兩個結點的最近共同父結點。
複雜度若是是O(n2)則不得分。
1四、一棵排序二叉樹,令 f=(最大值+最小值)/2,
設計一個算法,找出距離f值最近、大於f值的結點。
複雜度若是是O(n2)則不得分。
1五、一個整數數列,元素取值多是1~N(N是一個較大的正整數)中的任意一個數,相同數值不會重複出現。
設計一個算法,找出數列中符合條件的數對的個數,知足數對中兩數的和等於N+1。
複雜度最好是O(n),若是是O(n2)則不得分。面試

谷歌八道面試題
1六、正整數序列Q中的每一個元素都至少能被正整數a和b中的一個整除,現給定a和b,須要計算出Q中的前幾項,例如,當a=3,b=5,N=6時,序列爲3,5,6,9,10,12
(1)、設計一個函數void generate(int a,int b,int N ,int * Q)計算Q的前幾項
(2)、設計測試數據來驗證函數程序在各類輸入下的正確性。
1七、有一個由大小寫組成的字符串,如今須要對他進行修改,將其中的全部小寫字母排在答謝字母的前面(大寫或小寫字母之間不要求保持原來次序),若有可能儘可能選擇時間和空間效率高的算法 c語言函數原型void proc(char *str) 也能夠採用你本身熟悉的語言
1八、如何隨機選取1000個關鍵字
給定一個數據流,其中包含無窮盡的搜索關鍵字(好比,人們在谷歌搜索時不斷輸入的關鍵字)。如何才能從這個無窮盡的流中隨機的選取1000個關鍵字?
1九、判斷一個天然數是不是某個數的平方
說明:固然不能使用開方運算。
20、給定能隨機生成整數1到5的函數,寫出能隨機生成整數1到7的函數。
2一、1024! 末尾有多少個0?
2二、有5個海盜,按照等級從5到1排列,最大的海盜有權提議他們如何分享100枚金幣。
但其餘人要對此表決,若是多數反對,那他就會被殺死。
他應該提出怎樣的方案,既讓本身拿到儘量多的金幣又不會被殺死?
(提示:有一個海盜能拿到98%的金幣)
2三、Google2009華南地區筆試題
給定一個集合A=[0,1,3,8](該集合中的元素都是在0,9之間的數字,但未必所有包含),
指定任意一個正整數K,請用A中的元素組成一個大於K的最小正整數。
好比,A=[1,0] K=21 那麼輸出結構應該爲100。算法

百度三道面試題
2四、用C語言實現一個revert函數,它的功能是將輸入的字符串在原串上倒序後返回。
2五、用C語言實現函數void * memmove(void *dest, const void *src, size_t n)。memmove
函數的功能是拷貝src所指的內存內容前n個字節到dest所指的地址上。
分析:因爲能夠把任何類型的指針賦給void類型的指針,這個函數主要是實現各類數據類型的拷貝。
2六、有一根27釐米的細木杆,在第3釐米、7釐米、11釐米、17釐米、23釐米這五個位置上各有一隻螞蟻。
木杆很細,不能同時經過一隻螞蟻。開始時,螞蟻的頭朝左仍是朝右是任意的,它們只會朝前走或調頭,但不會後退。
當任意兩隻螞蟻碰頭時,兩隻螞蟻會同時調頭朝反方向走。假設螞蟻們每秒鐘能夠走一釐米的距離。
編寫程序,求全部螞蟻都離開木杆的最小時間和最大時間。編程

騰訊七道面試題
2七、請定義一個宏,比較兩個數a、b的大小,不能使用大於、小於、if語句
2八、兩個數相乘,小數點後位數沒有限制,請寫一個高精度算法
2九、有A、B、C、D四我的,要在夜裏過一座橋。他們經過這座橋分別須要耗時一、二、五、10分鐘,只有一支手電,而且同時最多隻能兩我的一塊兒過橋。請問,如何安排,可以在17分鐘內這四我的都過橋?
30、有12個小球,外形相同,其中一個小球的質量與其餘11個不一樣,
給一個天平,問如何用3次把這個小球找出來,而且求出這個小球是比其餘的輕仍是重
3一、在一個文件中有 10G 個整數,亂序排列,要求找出中位數。內存限制爲 2G。只寫出思路便可。
3二、一個文件中有40億個整數,每一個整數爲四個字節,內存爲1GB,寫出一個算法:求出這個文件裏的整數裏不包含的一個整數
3三、騰訊服務器每秒有2w個QQ號同時上線,找出5min內從新登入的qq號並打印出來。數組

雅虎三道面試題
3四、編程實現:把十進制數(long型)分別以二進制和十六進制形式輸出,不能使用printf系列
3五、編程實現:找出兩個字符串中最大公共子字符串,如"abccade","dgcadde"的最大子串爲"cad"
3六、有雙向循環鏈表結點定義爲:
struct node

  int data;
  struct node *front,*next;
};
有兩個雙向循環鏈表A,B,知道其頭指針爲:pHeadA,pHeadB,請寫一函數將兩鏈表中data值相同的結點刪除。服務器

聯想五道筆試題
3七、1)、設計函數 int atoi(char *s)。
2)、int i=(j=4,k=8,l=16,m=32); printf(「%d」, i); 輸出是多少?
3)、解釋局部變量、全局變量和靜態變量的含義。
4)、解釋堆和棧的區別。
5)、論述含參數的宏與函數的優缺點。
3八、順時針打印矩陣
題目:輸入一個矩陣,按照從外向裏以順時針的順序依次打印出每個數字。
例如:若是輸入以下矩陣:
1              2              3              4
5              6              7              8
9              10             11             12
13             14             15             16
則依次打印出數字1, 2, 3, 4, 8, 12, 16, 15, 14, 13, 9, 5, 6, 7, 11, 10。
分析:包括Autodesk、EMC在內的多家公司在面試或者筆試裏採用過這道題。
3九、對稱子字符串的最大長度
題目:輸入一個字符串,輸出該字符串中對稱的子字符串的最大長度。
好比輸入字符串「google」,因爲該字符串裏最長的對稱子字符串是「goog」,所以輸出4。
分析:可能不少人都寫過判斷一個字符串是否是對稱的函數,這個題目能夠當作是該函數的加
強版。
40、用一、二、二、三、四、5這六個數字,寫一個main函數,打印出全部不一樣的排列,
如:51223四、412345等,要求:"4"不能在第三位,"3"與"5"不能相連.
4一、微軟面試題
一個有序數列,序列中的每個值都可以被2或者3或者5所整除,1是這個序列的第一個元素。求第1500個值是多少?函數

網易五道遊戲筆試題
4二、兩個圓相交,交點是A1,A2。如今過A1點作一直線與兩個圓分別相交另一點B1,B2。
B1B2能夠繞着A1點旋轉。問在什麼狀況下,B1B2最長
4三、Smith夫婦召開宴會,並邀請其餘4對夫婦參加宴會。在宴會上,他們彼此握手,
而且知足沒有一我的同本身握手,沒有兩我的握手一次以上,而且夫妻之間不握手。
而後Mr. Smith問其它客人握手的次數,每一個人的答案是不同的。
求Mrs Smith握手的次數
4四、有6種不一樣顏色的球,分別記爲1,2,3,4,5,6,每種球有無數個。如今取5個球,求在一下
的條件下:
一、5種不一樣顏色,
二、4種不一樣顏色的球,
三、3種不一樣顏色的球, 
四、2種不一樣顏色的球,
它們的機率。
4五、有一次數學比賽,共有A,B和C三道題目。全部人都至少解答出一道題目,總共有25人。
在沒有答出A的人中,答出B的人數是答出C的人數的兩倍;單單答出A的人,比其餘答出A的人
總數多1;在全部只有答出一道題目的人當中,答出B和C的人數恰好是一半。
求只答出B的人數。
4六、從尾到頭輸出鏈表
題目:輸入一個鏈表的頭結點,從尾到頭反過來輸出每一個結點的值。鏈表結點定義以下:
struct ListNode
{
  int  m_nKey;
  ListNode* m_pNext;
};
分析:這是一道頗有意思的面試題。該題以及它的變體常常出如今各大公司的面試、筆試題中。測試

4七、金幣機率問題(威盛筆試題)
題目:10個房間裏放着隨機數量的金幣。每一個房間只能進入一次,並只能在一個房間中拿金幣。
一我的採起以下策略:前四個房間只看不拿。隨後的房間只要看到比前四個房間都多的金幣數,
就拿。不然就拿最後一個房間的金幣。?
編程計算這種策略拿到最多金幣的機率。
4八、找出數組中惟一的重複元素
1-1000放在含有1001個元素的數組中,只有惟一的一個元素值重複,其它均只出現一次.
每一個數組元素只能訪問一次,設計一個算法,將它找出來;不用輔助存儲空間,
可否設計一個算法實現?
4九、08百度校園招聘的一道筆試題
題目大意以下:
一排N(最大1M)個正整數+1遞增,亂序排列,第一個不是最小的,把它換成-1,
最小數爲a且未知求第一個被-1替換掉的數原來的值,並分析算法複雜度。
50、一道SPSS筆試題求解
題目:輸入四個點的座標,求證四個點是否是一個矩形
關鍵點:
1.相鄰兩邊斜率之積等於-1,
2.矩形邊與座標系平行的狀況下,斜率無窮大不能用積判斷。
3.輸入四點可能不按順序,須要對四點排序。
5一、矩陣式螺旋輸出
    google

5二、求兩個或N個數的最大公約數和最小公倍數。
5三、最長遞增子序列
題目描述:設L=<a1,a2,…,an>是n個不一樣的實數的序列,L的遞增子序列是這樣一個子序列
Lin=<aK1,ak2,…,akm>,其中k1<k2<…<km且aK1<ak2<…<akm。
求最大的m值。
5四、字符串原地壓縮
題目描述:「eeeeeaaaff" 壓縮爲 "e5a3f2",請編程實現。
5五、字符串匹配實現
請以倆種方法,回溯與不回溯算法實現。
5六、一個含n個元素的整數數組至少存在一個重複數,
請編程實現,在O(n)時間內找出其中任意一個重複數。
5七、求最大重疊區間大小
題目描述:請編寫程序,找出下面「輸入數據及格式」中所描述的輸入數據文件中最大重疊區間的大小。 
對一個正整數 n ,若是n在數據文件中某行的兩個正整數(假設爲A和B)之間,即A<=n<=B或A>=n>=B ,則 n 屬於該行;
若是 n 同時屬於行i和j ,則i和j有重疊區間;重疊區間的大小是同時屬於行i和j的整數個數。
例如,行(10 20)和(12 25)的重疊區間爲 [12 20] ,其大小爲9,行(20 10)和( 20 30 )的重疊區間大小爲 1 。
5八、整數的素數和分解問題
歌德巴赫猜測說任何一個不小於6的偶數均可以分解爲兩個奇素數之和。
對此問題擴展,若是一個整數可以表示成兩個或多個素數之和,則獲得一個素數和分解式。
對於一個給定的整數,輸出全部這種素數和分解式。
注意,對於同構的分解只輸出一次(好比5只有一個分解2 + 3,而3 + 2是2 + 3的同構分解式
)。
例如,對於整數8,能夠做爲以下三種分解:
(1) 8 = 2 + 2 + 2 + 2
(2) 8 = 2 + 3 + 3
(3) 8 = 3 + 5
5九、google的一道面試題
題目:
輸入a1,a2,...,an,b1,b2,...,bn, 
在O(n)的時間,O(1)的空間將這個序列順序改成a1,b1,a2,b2,a3,b3,...,an,bn,
且不須要移動,經過交換完成,只需一個交換空間。
例如,N=9時,第2步執行後,實際上中間位置的兩邊對稱的4個元素基本配對,
只需交換中間的兩個元素便可,以下表所示。顏色表示每次要交換的元素,左邊向右交換,右邊向左交換。
交換過程以下表所示設計

交換x1,x3;交換x2,x4;再交換中間的x1,x4;交換y1,y2。60、百度筆試題給定一個存放整數的數組,從新排列數組使得數組左邊爲奇數,右邊爲偶數。要求:空間複雜度O(1),時間複雜度爲O(n)。

相關文章
相關標籤/搜索