1. 程式人生 > >JAVA 高頻演算法面試題彙總

JAVA 高頻演算法面試題彙總

開發十年,就只剩下這套架構體系了! >>>   

作者:九章演算法
連結:https://zhuanlan.zhihu.com/p/33683541
來源:知乎
著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。
 

一、字串(String)類演算法面試題

1) String, StringBuilder 和 StringBuffer 三者有什麼不同?

2)

為什麼String型別在Java中是不可變的?

3) 在Java語言中,如何split string?
4) 為什麼char陣列能比String更好的去儲存password?

5) 寫一個函式判斷一個字串是否是迴文串?

OJ 地址:http://www.lintcode.com/en/problem/valid-palindrome/

參考答案:http://www.jiuzhang.com/solution/valid-palindrome/

6) 寫一個函式實現從字串中刪除任意給出的字元

7) 分別用遞迴和非遞迴的方法,打印出一個字串的所有全排列

OJ 地址:http://www.lintcode.com/en/problem/string-permutation-ii/



參考答案:http://www.jiuzhang.com/solution/string-permutation-ii/

8) 寫一個函式,從給出的字串中求出由這些字母構成的最長的迴文串。

OJ 地址:http://www.lintcode.com/en/problem/longest-palindrome/

參考答案:http://www.jiuzhang.com/solution/longest-palindrome/

9) 如何從一個字串中找出第一個非重複的字元?

10) 如何併發計算一個給定的字元在字串中出現的次數?

11) 寫出一個函式判斷兩個字串是否可以通過改變字母的順序變成一樣的字串

OJ 地址:

http://www.lintcode.com/en/problem/two-strings-are-anagrams/

參考答案:http://www.jiuzhang.com/solution/two-strings-are-anagrams/

12) 如何轉換以一個數字化的字串變成一個整數?

OJ 地址:http://www.lintcode.com/en/problem/string-to-integer/

參考答案:http://www.jiuzhang.com/solution/string-to-integer/

二、陣列(Array)類演算法面試題

1) 一個包含1-100數字的陣列中,有一個數字丟失了,如何快速的找出它?

OJ 地址:http://www.lintcode.com/en/problem/find-the-missing-number/

參考答案:http://www.jiuzhang.com/solution/find-the-missing-number/

2)一個包含1-100數字的陣列中,有一個數字重複了,如何快速的找出它?

OJ 地址:http://www.lintcode.com/en/problem/find-the-duplicate-number/

參考答案:http://www.jiuzhang.com/solution/find-the-duplicate-number/

3)一個包含1-100數字的陣列中,有多個數字重複了,如何快速的找出他們?

4) 給出兩個陣列,如何找出那些出現在第一個陣列中,但是沒有出現在第二個陣列中的數字?

5) 如何找出第二大的數在一個整數陣列中?

OJ 地址:http://www.lintcode.com/zh-cn/problem/second-max-of-array/
參考答案:http://www.jiuzhang.com/solution/second-max-of-array/

6) 找出所有和等於給出陣列的兩兩組合的pair對

OJ 地址:http://www.lintcode.com/en/problem/two-sum-unique-pairs/

參考答案:http://www.lintcode.com/zh-cn/problem/two-sum-unique-pairs/

7) 用Java實現如何從一個數組中移除重複的元素?
OJ 地址:http://www.lintcode.com/en/problem/remove-duplicate-numbers-in-array/

參考答案:http://www.lintcode.com/zh-cn/problem/remove-duplicate-numbers-in-array/ 8) 如何找出最大和最小的數字在一個數組中?

OJ 測試:http://www.lintcode.com/en/problem/max-of-array/

參考答案:http://www.lintcode.com/zh-cn/problem/max-of-array/

9) 如何找出最大的兩個數在一個數組中?

三、連結串列(Linkedlist)類演算法題

1) 如何找出一個單向連結串列的中間元素?

OJ 測試:http://www.lintcode.com/en/problem/middle-of-linked-list/

參考答案:http://www.jiuzhang.com/solution/middle-of-linked-list/

2) 如何找出單向連結串列中的倒數第3個元素?

OJ 地址:http://www.lintcode.com/en/problem/nth-to-last-node-in-list/

參考答案: http://www.jiuzhang.com/solution/nth-to-last-node-in-list/

3) 如何判斷一個單項鍊表是否與環? 如果有環,如何找出環的起始位置?

OJ 測試:http://www.lintcode.com/en/problem/linked-list-cycle/

參考答案:http://www.jiuzhang.com/solution/linked-list-cycle/

4)如何翻轉一個連結串列?

OJ 測試:http://www.lintcode.com/en/problem/reverse-linked-list/

參考答案:http://www.jiuzhang.com/solution/reverse-linked-list/

5) 比較連結串列和陣列這兩個資料結構的不同點

四、二叉樹(Binary Tree)類演算法題

1) 如何找出樹的深度?

OJ 測試:http://www.lintcode.com/en/problem/maximum-depth-of-binary-tree/

參考答案:http://www.jiuzhang.com/solution/maximum-depth-of-binary-tree/

2)寫一個函式打印出樹的中序遍歷

OJ 測試:http://www.lintcode.com/en/problem/binary-tree-inorder-traversal/

參考答案:http://www.jiuzhang.com/solution/binary-tree-inorder-traversal/

3) 打印出書的所有葉子節點

OJ 測試:http://www.lintcode.com/en/problem/binary-tree-leaf-sum/

參考答案:http://www.jiuzhang.com/solution/binary-tree-leaf-sum/

4) 用Java寫一個方法,判斷一棵樹是否是二叉搜尋樹

OJ 測試:http://www.lintcode.com/en/problem/validate-binary-search-tree/

參考答案:http://www.jiuzhang.com/solution/validate-binary-search-tree/

5) 用Java判斷一棵樹是否是平衡樹

OJ 測試:http://www.lintcode.com/en/problem/balanced-binary-tree/

參考答案:http://www.jiuzhang.com/solution/balanced-binary-tree/

五、查詢和排序類(Searching and Sorting)

1) 寫一個程式用快排原地排序一個數組

OJ 測試:http://www.lintcode.com/en/problem/sort-integers-ii/

參考答案:http://www.jiuzhang.com/solution/sort-integers-ii/

2) 用Java或者C++寫一個程式去實現二分搜尋演算法

OJ 測試:http://www.lintcode.com/en/problem/classical-binary-search/
參考答案:http://www.jiuzhang.com/solution/classical-binary-search/

3) 如何使用Comparator, 在Java內實現對物件的排序

4) 用Java寫一個程式去實現插入排序

OJ 測試:http://www.lintcode.com/en/problem/sort-integers/

參考答案:http://www.jiuzhang.com/solution/sort-integers/

5) 用Java寫一個程式去實現氣泡排序

OJ 測試:http://www.lintcode.com/en/problem/sort-integers/

參考答案:http://www.jiuzhang.com/solution/sort-integers/

六、數(Numbers)

1) 寫一個程式去判斷一個數是否是2的冪次

OJ 測試:http://www.lintcode.com/en/problem/o1-check-power-of-2/

參考答案:http://www.jiuzhang.com/solution/o1-check-power-of-2/

2) 寫一個程式去判斷一個數字是否是迴文的

3) 寫一個程式判斷一個整數是否是水仙花數?

OJ 測試:http://www.lintcode.com/en/problem/narcissistic-number/

參考答案:http://www.jiuzhang.com/solution/narcissistic-number/

4) 寫一個程式,找出給出數字的所有素因子

OJ 測試:http://www.lintcode.com/en/problem/prime-factorization/

參考答案:http://www.jiuzhang.com/solution/prime-factorization/

5) 寫一個函式去計算第n個斐波那契數?是否能用遞迴和非遞迴兩種方法?

OJ 測試:http://www.lintcode.com/en/problem/fibonacci/

參考答案:http://www.jiuzhang.com/so