Java 真實大廠面試題 100 道彙總,含答案

Java 真實大廠面試題 100 道彙總,含答案

小編近期彙總了一些大廠的 100 道真實面試題,有需要的抓緊看看吧:

第 1 題:把二元查找樹轉變成排序的雙向鏈表(樹)

第 2 題:設計包含 min 函數的棧(棧)

第 3 題:求子數組的最大和(數組)

第 4 題:在二元樹中找出和為某一值的所有路徑(樹)

第 5 題:查找最 小的 k 個元素(數組)

第 6 題(騰訊面試題):

根據上排給出十個數,在其下排填出對應的十個數,要求下排每個數都是先前上排那十個數在下排出現的次數。

上排的十個數如下:【0 1 2 3 4 5 6 7 8 9 】

舉一個例子,

數值:0,1,2,3,4,5,6,7,8,9

分配:6,2,1,0,0,0,1,0,0,0

0 在下排出現了 6 次, 1 在下排出現了 2 次,

2 在下排出現了 1 次, 3 在下排出現了 0 次 ...

以此類推 ...

第 7 題(鏈表):

微軟亞院之編程判斷倆個鏈表是否相交

給出倆個單向鏈表的頭指針,比如 h1 h2 ,判斷這倆個鏈表是否相交。

為了簡化問題,我們假設倆個鏈表均不帶環。

問題擴展:

1.如果鏈表可能有環列?

2.如果需要求出倆個鏈表相交的第一個節點列?

第 8 題(算法):

此貼選一些比較怪的題,由於其中題目本身與算法關係不大,僅考考思維。特此並作一題。

1.有兩個房間,一間房裡有三盞燈,另一間房有控制著三盞燈的三個開關,這兩個房間是 分割開的,從一間裡不能看到另一間的情況。

現在要求受訓者分別進這兩房間一次,然後判斷出這三盞燈分別是由哪個開關控制的。有什麼辦法呢?

2.你讓一些人為你工作了七天,你要用一根金條作為報酬。金條被分成七小塊,每天給出一塊。如果你只能將金條切割兩次,你怎樣分給這些工人。

3:★用一種算法來顛倒一個鏈接表的順序。現在在不用遞歸式的情況下做一遍。

★用一種算法在一個循環的鏈接表裡插入一個節點,但不得穿越鏈接表。

★用一種算法整理一個數組。你為什麼選擇這種方法 。

★用一種算法使通用字符串 相匹配。

★顛倒一個字符串。優化速度。優化空間。

★顛倒一個句子中的詞的順序,比如將“我叫克麗絲”轉換為“克麗絲叫我”,實現速度最快,移動最少。

★找到一個子字符串。優化速度。優化空間。

★比較兩個字符串,用 O(n) 時間和恆量空間。

★假設你有一個用 1001 個整數組成的數組,這些整數是任意排列的,但是你知道所有的整數都在 1 到 1000( 包括 1000) 之間。此外,除一個數字出現兩次外,其他所有數字只出現一次。假設你只能對這個數組做一次處理,用一種算法找出重複的那個數字。如果你在運算中使用了 輔助的存儲方式,那麼你能找到不用這種方式的算法嗎?

★不用乘法或加法增加 8 倍。現在用同樣的方法增加 7 倍。

第 9 題(樹):

判斷整數序列是不是二元查找樹的後序遍歷結果

題目:輸入一個整數數組,判斷該數組是不是某二元查找樹的後序遍歷的結果。如果是返回 true ,否則返回 false 。

第 10 題(字符串):

翻轉句子中單詞的順序。 題目:輸入一個英文句子,翻轉句子中單詞的順序,但單詞內字符的順序不變。句子中單詞以空格符隔開。為簡單起見,標點符號和普通字母一樣處理。

例如輸入“I am a student. student.”,則輸出 student. a am I ”。

第 11 題(樹):

求二叉樹中節點的最大距離

如果我們把二叉樹看成一個圖,父子節點之間的連線看成是雙向的,我們姑且定義距離為兩節點之間邊的個數。

寫一個程序,求一棵二叉樹中相距最遠的兩個節點之間的距離。

第 12 題(語法):

題目:求 1 + 2 + 2 + …… + n 要求不能使用乘除法、for 、 while 、 if 、 else 、 switch 、 case 等關鍵字以及條件判斷語句( A?B:C )。

第 13 題(鏈表):

題目:輸入一個單向鏈表,輸出該鏈表中倒數第 k 個結點。鏈表的倒數第 0 個結點為鏈表的尾指針。

第 14 題(數組):

題目:輸入一個已經按升序排序過的數組和一個數字,在數組中查找兩個數,使得它們的和正好是輸入的那個數字。

要求時間複雜度是 O(n) 。如果有多對數字的和等於輸入的數字,輸出任意一對即可。

例如輸入數組 1 、 2 、 4 、 7 、 11 、 15 和數字 15 。由於 4+11=15 ,因此輸出 4 和 11 。

第 15 題(樹):

題目:輸入一顆二元查找樹,將該樹轉換為它的鏡像,即在轉換後的二元查找樹中,左子樹的結點都大於右子樹的結點。

用遞歸和循環兩種方法完成樹的鏡像轉換。

第 16 題(微軟):

輸入一顆二元樹,從上往下按層打印樹的每個結點,同一層中按照從左往右的順序打印。

第 17 題(Google):

題目:在一個字符串中找到第一個只出現一次的字符。如輸入 abaccdeff ,則輸出 b 。

第 18 題(數組):

題目:n 個數字( 0,1,0,1,……,n 1 )形成一個圓圈,從數字 0 開始,每次從這個圓圈中刪除第 m 個數字( 第一個為當前數字本身,第二個為當前數字的下一個數字)。當一個數字刪除後,從被刪除數字的下一個繼續刪除第 m 個數字。求出在這個圓圈中剩下的最後一個數字。

第 19 題(數組、遞歸):

題目:定義 Fibonacci 數列如下:

/ 0 n = 0

f(n)= 1 n = 1

/ f(n 1) + f(n 2) n = 2

輸入 n ,用最快的方法求該數列的第 n 項。

第 20 題(中興):

編程求解: 輸入兩個整數 n 和 m ,從數列 1 2 3.......n 中 隨意取幾個數使其和等於 m , 要求將其中所有的可能組合列出來。

......

剩餘的 80 道面試題,及所有的答案,請轉發此文 並 私信小編 “ 100 ”,即可領取啦!


分享到:


相關文章: