各大軟體公司經典演算法面試題

2021-05-04 02:32:07 字數 4607 閱讀 2271

2011-04-03

微軟1. 有乙個整數陣列,請求出兩兩之差絕對值最小的值,記住,只要得出最小值即可,不需要求出是哪兩個數。

2. 寫乙個函式,檢查字元是否是整數,如果是,返回其整數值。(或者:怎樣只用4行**編寫出乙個從字串到長整形的函式?)

3. 給出乙個函式來輸出乙個字串的所有排列。

4. 請編寫實現malloc()記憶體分配函式功能一樣的**。給出乙個函式來複製兩個字串a和b。字串a的後幾個位元組和字串b的前幾個位元組重疊。

5. 怎樣編寫乙個程式,把乙個有序整數陣列放到二叉樹中?

6. 怎樣從頂部開始逐層列印二叉樹結點資料?請程式設計。

7. 怎樣把乙個鍊錶掉個順序(也就是反序,注意鍊錶的邊界條件並考慮空鍊錶)?

8. 請編寫能直接實現int atoi(const char * pstr)函式功能的**。

9. 程式設計實現兩個正整數的除法,程式設計實現兩個正整數的除法,當然不能用除法操作符。

view source

print?

10. 在排序陣列中,找出給定數字的出現次數,比如 [1, 2, 2, 2, 3] 中2的出現次數是3次。

11. 平面上n個點,每兩個點都確定一條直線,求出斜率最大的那條直線所通過的兩個點(斜率不存在的情況不考慮)。時間效率越高越好。

12. 乙個整數數列,元素取值可能是0~65535中的任意乙個數,相同數值不會重複出現。0是例外,可以反覆出現。

請設計乙個演算法,當你從該數列中隨意選取5個數值,判斷這5個數值是否連續相鄰。注意:

o 5個數值允許是亂序的。比如: 8 7 5 0 6

o 0可以通配任意數值。比如:8 7 5 0 6 中的0可以通配成9或者4

o 0可以多次出現。

o 複雜度如果是o(n2)則不得分。

13. 設計乙個演算法,找出二叉樹上任意兩個結點的最近共同父結點。複雜度如果是o(n2)則不得分。

14. 一棵排序二叉樹,令 f=(最大值+最小值)/2,設計乙個演算法,找出距離f值最近、大於f值的結點。複雜度如果是o(n2)則不得分。

15. 乙個整數數列,元素取值可能是1~n(n是乙個較大的正整數)中的任意乙個數,相同數值不會重複出現。設計乙個演算法,找出數列中符合條件的數對的個數,滿足數對中兩數的和等於n+1。

複雜度最好是o(n),如果是o(n2)則不得分。

google

16. 正整數序列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)、設計測試資料來驗證函式程式在各種輸入下的正確性。

17. 有乙個由大小寫組成的字串,現在需要對他進行修改,將其中的所有小寫字母排在答謝字母的前面(大寫或小寫字母之間不要求保持原來次序),如有可能盡量選擇時間和空間效率高的演算法 c語言函式原型void proc(char *str) 也可以採用你自己熟悉的語言。

18. 如何隨機選取1000個關鍵字,給定乙個資料流,其中包含無窮盡的搜尋關鍵字(比如,人們在谷歌搜尋時不斷輸入的關鍵字)。如何才能從這個無窮盡的流中隨機的選取1000個關鍵字?

19. 判斷乙個自然數是否是某個數的平方。說明:當然不能使用開方運算。

20. 給定能隨機生成整數1到5的函式,寫出能隨機生成整數1到7的函式。

21. 1024! 末尾有多少個0?

22. 有5個海盜,按照等級從5到1排列,最大的海盜有權提議他們如何分享100枚金幣。但其他人要對此表決,如果多數反對,那他就會被殺死。

他應該提出怎樣的方案,既讓自己拿到盡可能多的金幣又不會被殺死?(提示:有乙個海盜能拿到98%的金幣)

23. 23、google2009華南地區筆試題。給定乙個集合a=[0,1,3,8](該集合中的元素都是在0,9之間的數字,但未必全部包含),指定任意乙個正整數k,請用a中的元素組成乙個大於k的最小正整數。

比如,a=[1,0] k=21 那麼輸出結構應該為100。

百度24. 用c語言實現乙個revert函式,它的功能是將輸入的字串在原串上倒序後返回。

25. 用c語言實現函式void * memmove(void *dest, const void *src, size_t n)。memmove 函式的功能是拷貝src所指的記憶體內容前n個位元組到dest所指的位址上。

分析:由於可以把任何型別的指標賦給void型別的指標,這個函式主要是實現各種資料型別的拷貝。

26. 有一根27厘公尺的細木桿,在第3厘公尺、7厘公尺、11厘公尺、17厘公尺、23厘公尺這五個位置上各有乙隻螞蟻。木桿很細,不能同時通過乙隻螞蟻。

開始時,螞蟻的頭朝左還是朝右是任意的,它們只會朝前走或調頭,但不會後退。當任意兩隻螞蟻碰頭時,兩隻螞蟻會同時調頭朝反方向走。假設螞蟻們每秒鐘可以走一厘公尺的距離。

編寫程式,求所有螞蟻都離開木桿的最小時間和最大時間。

騰訊27. 請定義乙個巨集,比較兩個數a、b的大小,不能使用大於、小於、if語句

28. 兩個數相乘,小數點後位數沒有限制,請寫乙個高精度演算法

29. 有a、b、c、d四個人,要在夜裡過一座橋。他們通過這座橋分別需要耗時1、2、5、10分鐘,只有一支手電,並且同時最多只能兩個人一起過橋。

請問,如何安排,能夠在17分鐘內這四個人都過橋?

30. 有12個小球,外形相同,其中乙個小球的質量與其他11個不同,給乙個天平,問如何用3次把這個小球找出來,並且求出這個小球是比其他的輕還是重

31. 在乙個檔案中有 10g 個整數,亂序排列,要求找出中位數。記憶體限制為 2g。只寫出思路即可。

32. 乙個檔案中有40億個整數,每個整數為四個位元組,記憶體為1gb,寫出乙個演算法:求出這個檔案裡的整數裡不包含的乙個整數。

33. 騰訊伺服器每秒有2w個qq號同時上線,找出5min內重新登入的qq號並列印出來。

雅虎34. 程式設計實現:把十進位制數(long型)分別以二進位制和十六進製制形式輸出,不能使用printf系列

35. 程式設計實現:找出兩個字串中最大公共子字串,如"abccade","dgcadde"的最大子串為"cad"

36. 有雙向迴圈鍊錶結點定義為:

view source

print?

有兩個雙向迴圈鍊錶a,b,知道其頭指標為:pheada,pheadb,請寫一函式將兩煉表中data值相同的結點刪除。

網易37. 兩個圓相交,交點是a1,a2。現在過a1點做一直線與兩個圓分別相交另外一點b1,b2。b1b2可以繞著a1點旋轉。問在什麼情況下,b1b2最長

38. smith夫婦召開宴會,並邀請其他4對夫婦參加宴會。在宴會上,他們彼此握手,並且滿足沒有乙個人同自己握手,沒有兩個人握手一次以上,並且夫妻之間不握手。

然後mr. smith問其它客人握手的次數,每個人的答案是不一樣的。求mrs smith握手的次數

39. 有6種不同顏色的球,分別記為1,2,3,4,5,6,每種球有無數個。現在取5個球,求在一下的條件下:

o 5種不同顏色,

o 4種不同顏色的球,

o 3種不同顏色的球,

o 2種不同顏色的球,

它們的概率。

40. 有一次數學比賽,共有a,b和c三道題目。所有人都至少解答出一道題目,總共有25人。

在沒有答出a的人中,答出b的人數是答出c的人數的兩倍;單單答出a的人,比其他答出a的人總數多1;在所有只有答出一道題目的人當中,答出b和c的人數剛好是一半。求只答出b的人數。

41. 從尾到頭輸出鍊錶,題目:輸入乙個鍊錶的頭結點,從尾到頭反過來輸出每個結點的值。鍊錶結點定義如下:

view source

print?

分析:這是一道很有意思的面試題。該題以及它的變體經常出現在各大公司的面試、筆試題中。

其它42. 金幣概率問題,題目:10個房間裡放著隨機數量的金幣。

每個房間只能進入一次,並只能在乙個房間中拿金幣。乙個人採取如下策略:前四個房間只看不拿。

隨後的房間只要看到比前四個房間都多的金幣數,就拿。否則就拿最後乙個房間的金幣。程式設計計算這種策略拿到最多金幣的概率。

43. 找出陣列中唯一的重複元素,1-1000放在含有1001個元素的陣列中,只有唯一的乙個元素值重複,其它均只出現一次.每個陣列元素只能訪問一次,設計乙個演算法,將它找出來;不用輔助儲存空間,能否設計乙個演算法實現?

44. 一排n(最大1m)個正整數+1遞增,亂序排列,第乙個不是最小的,把它換成-1,最小數為a且未知求第乙個被-1替換掉的數原來的值,並分析演算法複雜度。

45. 題目:輸入四個點的座標,求證四個點是不是乙個矩形,關鍵點:

o 相鄰兩邊斜率之積等於-1,

o 矩形邊與座標系平行的情況下,斜率無窮大不能用積判斷。

o 輸入四點可能不按順序,需要對四點排序。

46. 矩陣式螺旋輸出

47. 求兩個或n個數的最大公約數和最小公倍數。

48. 最長遞增子串行。題目描述:

設l=是n個不同的實數的序列,l的遞增子串行是這樣乙個子串行lin=& lt;ak1,ak2,…,akm>,其中k149. 字串原地壓縮,題目描述:"eeeeeaaaff" 壓縮為 "e5a3f2",請程式設計實現。

50. 字串匹配實現,請以倆種方法,回溯與不回溯演算法實現。

51. 乙個含n個元素的整數陣列至少存在乙個重複數,請程式設計實現,在o(n)時間內找出其中任意乙個重複數。

52. 給定乙個存放整數的陣列,重新排列陣列使得陣列左邊為奇數,右邊為偶數。要求:空間複雜度o(1),時間複雜度為o(n)。

經典軟體測試面試題

1.軟體質量的定義是什麼?2.軟體測試的物件包括哪些?3.試結合軟體開發流程模型,描述對應不同的階段測試需要哪些工作?4.單元測試 整合測試 系統測試 驗收測試各測試的正確策略含義和被測物件是什麼?5.單元測試 整合測試 系統測試的側重點是什麼?6.alpha測試和beta測試的定義是什麼?並描述a...

各大公司的面試題

大公司電子類招聘題目精選 微控制器 mcu 計算機 簡單描述乙個微控制器系統的主要組成模組,並說明各模組之間的資料流流向和控制流流向。簡述微控制器應用系統的設計原則。仕蘭微面試題目 答 時鐘源,4k rom eprom 8031無 特殊功能暫存器sfr和節ram,定時 計數器t0 t1,中斷系統,序...

軟體公司入職面試筆試題 C

本試題僅用於考查c c程式設計師的基本程式設計技能。內容限於c c常用語法,不涉及資料結構 演算法以及深奧的語法。考試成績能反映出考生的程式設計質量以及對c c的理解程度,但不能反映考生的智力和軟體開發能力。筆試時間90分鐘。請考生認真答題,切勿輕視。一 請填寫bool float,指標變數與 零值...