更新時間:2020-03-16 10:25:33 來源:動力節(jié)點(diǎn) 瀏覽2276次
1.如何只掃描一遍就找到位于一個鏈表正中間的元素?
這是最受歡迎的算法題之一,經(jīng)常在電話面試中被問到。很多程序員會想,要知道鏈表的長度,就要先掃描一遍鏈表,然后在第二遍中取其正中的元素。所以被要求只掃描一遍就解決問題的時候他們就會很困惑。要解決這個問題,你要維護(hù)兩個指針。一個每次往下走一個結(jié)點(diǎn),而另一個每次走兩個結(jié)點(diǎn)。那么當(dāng)走的快的指針到達(dá)鏈表末尾時,另一個指針就正好指在鏈表的正中間。
2.如何確定一個鏈表中是否存在環(huán)?
這跟第一題有點(diǎn)類似。同樣地維護(hù)兩個指針,分別以每步一個結(jié)點(diǎn)和每步兩個結(jié)點(diǎn)的速度走,那么如果當(dāng)某一步結(jié)束以后兩個指針指向同一個結(jié)點(diǎn),就說明我們找到了一個環(huán)。
3.如何只掃描一遍就找到一個鏈表倒數(shù)第三個元素?
這也是一個很經(jīng)典的鏈表題,也可以用兩個指針的方法來解決。我們讓第一個指針先走,當(dāng)它走出三步以后再讓第二個指針開始走。那么當(dāng)?shù)谝粋€指針到達(dá)鏈表的末尾時,第二個指針就正好指向鏈表中的倒數(shù)第三個元素。
4.如何找到一個含有1~100的數(shù)組中唯一出現(xiàn)兩次的元素?
這是一個挺簡單的算法題。你可以把數(shù)組里面所有元素加起來,再減去1~100的和,就能得到那個重復(fù)的元素。當(dāng)然你也可以暴力地去比對每一對元素,不過這樣的復(fù)雜度是O(N^2)。
5.如何在Java中反轉(zhuǎn)一個字符串?
這是我最喜歡的問題之一。因為String是編程中最重要的類型之一,所以在技術(shù)面試中你會遇到許多跟字符串有關(guān)的問題。Java和其他編程語言都有許多不同的方式可以反轉(zhuǎn)一個字符串,所以面試官往往會禁止你使用某些特性,比如reverse()和StringBuffer。之后他還可能會問如何用遞歸來反轉(zhuǎn)字符串。
6.如何用冒泡排序?qū)?shù)組進(jìn)行排序?
在技術(shù)面試中我總是會問一些關(guān)于搜索和排序的問題。冒泡排序是最簡單的排序算法之一,但如果你讓一個候選人現(xiàn)場寫冒泡排序,這能夠很好地衡量他的編程技能。
7.棧和隊列這兩種數(shù)據(jù)結(jié)構(gòu)之間的區(qū)別是什么?
這是一個經(jīng)典的數(shù)據(jù)結(jié)構(gòu)問題,應(yīng)該沒有人不知道的吧?不管怎么說,最主要的區(qū)別在于棧是后進(jìn)先出(LIFO),而隊列是先進(jìn)先出(FIFO)的。
8.如何找到一個數(shù)組中所有重復(fù)出現(xiàn)的元素?
這個問題有時會作為第4題的后續(xù)出現(xiàn)。解決這個問題的一種途徑是使用哈希表。遍歷整個數(shù)組并將元素和出現(xiàn)次數(shù)存到哈希表中。最后你就可以統(tǒng)計那些出現(xiàn)超過一次的元素作為答案。在Java中,當(dāng)一個元素已經(jīng)在HashMap中時,調(diào)用get(index)就可以得到對應(yīng)的值,否則會返回Null。這個性質(zhì)可以用來插入和更新HashMap中的值。
9.單向鏈表和雙向鏈表之間有什么差別?
這又是一個經(jīng)常在電話面試中被問到的數(shù)據(jù)結(jié)構(gòu)題。單向鏈表和雙向鏈表之間主要的差別在于它們的可遍歷性不同。在單向鏈表中,每個結(jié)點(diǎn)只有指向下一個結(jié)點(diǎn)的指針,而沒有指向上一個結(jié)點(diǎn)的指針,所以你就不能倒回去遍歷。而雙向鏈表的結(jié)點(diǎn)則維護(hù)了兩個指針,往兩個方向都可以遍歷。
10.如何打印斐波那契數(shù)列?
這是一個在面試中經(jīng)常出現(xiàn)的編程問題。斐波那契數(shù)列是這樣的一種數(shù)列:它的每一項都等于前兩項之和,例如:1,1,2,3,5,8,13,21。面試官往往會關(guān)心這兩件事情:一個能夠返回斐波那契數(shù)列第n項的函數(shù),以及如何在Java中用遞歸解決這個問題。雖然這個問題很簡單,但遞歸的部分可能會困惑一些初學(xué)者。
以上就是動力節(jié)點(diǎn)Java培訓(xùn)機(jī)構(gòu)小編介紹的“2020年Java程序員面試題下載”的內(nèi)容,希望對大家有幫助,如有疑問,請在線咨詢,有專業(yè)老師隨時為你服務(wù)。
相關(guān)閱讀
初級 202925
初級 203221
初級 202629
初級 203743