微軟面試100題

2022-05-28 20:06:13 字數 3454 閱讀 8648

41.求固晶機的晶元查詢程式

晶元盤由數目不詳的大小一樣的晶元組成,晶元並不一定全布滿晶元盤,

照相機每次這能匹配乙個晶元,如匹配過,則拾取該晶元,

若匹配不過,照相機則按測好的晶元間距移到下乙個位置。

求遍歷晶元盤的演算法 求思路。

兩個非降序鍊錶的並集,1->2->3 和 2->3->5 並為 1->2->3->5

另外只能輸出結果,不能修改兩個鍊錶的資料。

43.遞迴和非遞迴倆種方法實現二叉樹的前序遍歷。

1.設計乙個魔方(六面)的程式。

2.有一千萬條簡訊,有重複,以文字檔案的形式儲存,一行一條,有重複。

請用5分鐘時間,找出重複出現最多的前10條。

3.收藏了1萬條url,現在給你一條url,如何找出相似的url。(面試官不解釋何為相似)

45.雅虎:

1.對於乙個整數矩陣,存在一種運算,對矩陣中任意元素加一時,需要其相鄰(上下左右)某乙個元素也加一,

現給出一正數矩陣,判斷其是否能夠由乙個全零矩陣經過上述運算得到。

2.乙個整數陣列,長度為n,將其分為m份,使各份的和相等,求m的最大值

比如 可以分成 m=1; 

m=2m=3 所以m的最大值為3

47.創新工場:

求乙個陣列的最長遞減子串行 比如的最長遞減子串行為

48.微軟:

乙個陣列是由乙個遞減數列左移若干位形成的,比如

是由左移兩位形成的,在這種陣列中查詢某乙個數。 

49.一道看上去很嚇人的演算法面試題:

如何對n個數進行排序,要求時間複雜度o(n),空間複雜度o(1)

50.網易有道筆試:

1.求乙個二叉樹中任意兩個節點間的最大距離,兩個節點的距離的定義是 這兩個節點間邊的個數,

比如某個孩子節點和父節點間的距離是1,和相鄰兄弟節點間的距離是2,優化時間空間複雜度。

2.求乙個有向連通圖的割點,割點的定義是,

如果除去此節點和與其相關的邊,有向圖不再連通,描述演算法。

51.和為n連續正數序列。

題目:輸入乙個正數n,輸出所有和為n連續正數序列。

例如輸入15,由於1+2+3+4+5=4+5+6=7+8=15,所以輸出3個連續序列1-5、4-6和7-8。

分析:這是網易的一道面試題。

52.二元樹的深度。

題目:輸入一棵二元樹的根結點,求該樹的深度。

從根結點到葉結點依次經過的結點(含根、葉結點)形成樹的一條路徑,最長路徑的長度為樹的深度。

例如:輸入二元樹:

10/     \

6        14

/         /   \

4         12     16

輸出該樹的深度3。

二元樹的結點定義如下:

struct sbinarytreenode // a node of the binary tree

;分析:這道題本質上還是考查二元樹的遍歷。

53.字串的排列。

題目:輸入乙個字串,列印出該字串中字元的所有排列。

例如輸入字串abc,則輸出由字元a、b、c所能排列出來的所有字串abc、acb、bac、bca、cab和cba。

分析:這是一道很好的考查對遞迴理解的程式設計題,

因此在過去一年中頻繁出現在各大公司的面試、筆試題中。

54.調整陣列順序使奇數字於偶數前面。

題目:輸入乙個整數陣列,調整陣列中數字的順序,使得所有奇數字於陣列的前半部分,

所有偶數字於陣列的後半部分。要求時間複雜度為o(n)。

55.題目:類cmystring的宣告如下:

class cmystring

;請實現其賦值運算子的過載函式,要求異常安全,即當對乙個物件進行賦值時發生異常,物件的狀態不能改變。

56.最長公共字串。

題目:如果字串一的所有字元按其在字串中的順序出現在另外乙個字串二中,

則字串一稱之為字串二的子串。

注意,並不要求子串(字串一)的字元必須連續出現在字串二中。

請編寫乙個函式,輸入兩個字串,求它們的最長公共子串,並列印出最長公共子串。

例如:輸入兩個字串bdcaba和abcbdab,字串bcba和bdab都是是它們的最長公共子串,

則輸出它們的長度4,並列印任意乙個子串。

分析:求最長公共子串(longest common subsequence, lcs)是一道非常經典的動態規劃題,

因此一些重視演算法的公司像microstrategy都把它當作面試題。

57.用倆個棧實現佇列。 

題目:某佇列的宣告如下:

分析:從上面的類的宣告中,我們發現在佇列中有兩個棧。

因此這道題實質上是要求我們用兩個棧來實現乙個佇列。

因此對佇列進行的插入和刪除操作都是在棧頂上進行;佇列是一種先入先出的資料容器,

我們總是把新元素插入到佇列的尾部,而從佇列的頭部刪除元素。

58.從尾到頭輸出鍊錶。

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

struct listnode

int       m_nkey;

listnode* m_pnext;

分析:這是一道很有意思的面試題。

該題以及它的變體經常出現在各大公司的面試、筆試題中。

59.不能被繼承的類。

題目:用c++設計乙個不能被繼承的類。

分析:這是adobe公司2023年校園招聘的最新筆試題。

這道題除了考察應聘者的c++基本功底外,還能考察反應能力,是一道很好的題目。

60.在o(1)時間內刪除鍊錶結點。

題目:給定鍊錶的頭指標和乙個結點指標,在o(1)時間刪除該結點。鍊錶結點的定義如下:

struct listnode

int        m_nkey;

listnode*  m_pnext;

函式的宣告如下:

void deletenode(listnode* plisthead,

listnode* ptobedeleted);

分析:這是一道廣為流傳的google面試題,能有效考察我們的程式設計基本功,還能考察我們的反應速度,更重要的是,還能考察我們對時間複雜度的理解。

61.找出陣列中兩個只出現一次的數字

題目:乙個整型陣列裡除了兩個數字之外,其他的數字都出現了兩次。

請寫程式找出這兩個只出現一次的數字。要求時間複雜度是o(n),空間複雜度是o(1)。

分析:這是一道很新穎的關於位運算的面試題。

62.找出鍊錶的第乙個公共結點。

題目:兩個單向鍊錶,找出它們的第乙個公共結點。

鍊錶的結點定義為:

struct listnode

;分析:這是一道微軟的面試題。

微軟非常喜歡與鍊錶相關的題目,因此在微軟的面試題中,鍊錶出現的概率相當高。

63.在字串中刪除特定的字元。

題目:輸入兩個字串,從第一字串中刪除第二個字串中所有的字元。

微軟面試100題 64

64.尋找醜數 運算 題目 我們把只包含因子2 3和5的數稱作醜數 ugly number 例如6 8都是醜數,但14不是,因為它包含因子7。習慣上我們把1當做是第乙個醜數。求按從小到大的順序的第1500個醜數。分析 這是一道在網路上廣為流傳的面試題,據說google曾經採用過這道題。package...

微軟面試100題 9

題目 輸入乙個整數陣列,判斷該陣列是不是某二元查詢樹的後序遍歷的結果。如果是返回true,否則返回false。例如輸入5 7 6 9 11 10 8,由於這一整數序列是如下樹的後序遍歷結果 8 6 10 5 7 9 11 因此返回true。如果輸入7 4 6 5,沒有哪棵樹的後序遍歷的結果是這個序列...

微軟面試100題 001

1.把二元查詢樹轉變成排序的雙向鍊錶 題目 輸入一棵二元查詢樹,將該二元查詢樹轉換成乙個排序的雙向鍊錶。要求不能建立任何新的結點,只調整指標的指向。10 6 14 4 8 12 16 轉換成雙向鍊錶 4 6 8 10 12 14 16。struct bstreenode 建立二叉查詢樹 includ...