java 輸入 一道java面試題,20億數(shù)字的文本排序,如何取前100?
一道java面試題,20億數(shù)字的文本排序,如何取前100?因?yàn)檫@是一個(gè)Java問(wèn)題,所以這是典型的TOPK問(wèn)題。首先取前100個(gè)數(shù)字構(gòu)建一個(gè)最小堆,然后依次從堆的頂部插入剩余的數(shù)字,同時(shí)調(diào)整堆。堆中最
一道java面試題,20億數(shù)字的文本排序,如何取前100?
因?yàn)檫@是一個(gè)Java問(wèn)題,所以這是典型的TOPK問(wèn)題。首先取前100個(gè)數(shù)字構(gòu)建一個(gè)最小堆,然后依次從堆的頂部插入剩余的數(shù)字,同時(shí)調(diào)整堆。堆中最后100個(gè)元素就是結(jié)果??臻g復(fù)雜度是k,時(shí)間復(fù)雜度是nlogk
這個(gè)問(wèn)題對(duì)任何語(yǔ)言都是一樣的。從一門(mén)語(yǔ)言開(kāi)始,我們首先需要了解語(yǔ)言語(yǔ)法(可以使用),然后了解標(biāo)準(zhǔn)庫(kù)(可以使用)。有了這兩個(gè)步驟和對(duì)其他語(yǔ)言的一點(diǎn)了解,我們就可以開(kāi)始了。我們學(xué)校招收的很多畢業(yè)生都已經(jīng)轉(zhuǎn)學(xué)了1-2個(gè)月,你可以帶著皮帶走到這個(gè)階段。
剩下的是第三步,通過(guò)項(xiàng)目或產(chǎn)品的實(shí)踐加深對(duì)技術(shù)和業(yè)務(wù)的理解。在這個(gè)階段,我們通常依靠自學(xué)、谷歌和理解。兩三年后,我們可以發(fā)現(xiàn),有些人對(duì)技術(shù)和業(yè)務(wù)的了解很深(老手),有些人還很膚淺。這段時(shí)間通常是另一個(gè)跳槽階段。在這個(gè)時(shí)候,不同的人的工資水平會(huì)有很大的差異。
總而言之,程序員最重要的是持續(xù)學(xué)習(xí)(第三階段)。事實(shí)上,IT行業(yè)是一個(gè)需要不斷學(xué)習(xí)的行業(yè)(因?yàn)榧夹g(shù)更新太快)。初出茅廬,我們都有同樣的基礎(chǔ)和能力。這一差距將在2-3年后出現(xiàn)。如果你是貧窮的一方,那就意味著你工作不夠努力。
最后,Java主要用于服務(wù)器。由于其出色的內(nèi)存管理,它阻止了許多程序員的能力差異(能力較弱的程序員可以編寫(xiě)較少的糟糕系統(tǒng)),并且適合于長(zhǎng)期的服務(wù)器項(xiàng)目(如web和其他非UI應(yīng)用程序)。
雖然也有優(yōu)秀的UI庫(kù)(如SWT)和優(yōu)秀的桌面應(yīng)用程序(如idea、eclipse和netbean),但是桌面軟件應(yīng)用程序仍然很少,需要帶JRE,所以負(fù)擔(dān)相對(duì)較大。
對(duì)于剛剛學(xué)習(xí)過(guò)零基礎(chǔ)的java技術(shù)的學(xué)生來(lái)說(shuō),如何在java的短程序中快速學(xué)習(xí)和掌握java技術(shù)是非常重要的,掌握正確的學(xué)習(xí)方法是很重要的。
1、眾所周知,無(wú)論你學(xué)什么樣的知識(shí)和技能,語(yǔ)言都是最基本的部分。語(yǔ)言基礎(chǔ)就像是高層建筑的基礎(chǔ)。如果地基不穩(wěn)定,整個(gè)建筑物就會(huì)倒塌。如果你不懂基本知識(shí),你就不知道你做的是否正確。當(dāng)然,您不必掌握所有的基礎(chǔ)知識(shí),但是您需要了解Java的一些基本概念。
2、開(kāi)始寫(xiě)一些小程序吧
如果你已經(jīng)掌握了一些Java的基本知識(shí),你應(yīng)該試著學(xué)習(xí)一些相對(duì)簡(jiǎn)單的程序來(lái)測(cè)試自己,看看自己掌握的哪些方面不好,這樣才能不斷的提高和提高自己,讓自己掌握這些知識(shí)。
3、編寫(xiě)一些桌面程序
通過(guò)這一步的學(xué)習(xí),你可以對(duì)任何Java面試充滿(mǎn)信心。因?yàn)楝F(xiàn)在企業(yè)需要的不僅是懂理論知識(shí)的人才,更是能掌握實(shí)踐技能的人才。如果你能寫(xiě)一些桌面程序,讓面試官看到你身上的亮點(diǎn),那么面試成功的概率就會(huì)更大。事實(shí)上,對(duì)于零基礎(chǔ)的學(xué)生來(lái)說(shuō),學(xué)習(xí)一門(mén)新語(yǔ)言真的很難。這時(shí),對(duì)于我們自學(xué)的前端合作伙伴來(lái)說(shuō),我們需要找一些好書(shū)或者相關(guān)的視頻作為學(xué)習(xí)的參考。當(dāng)然,我們也可以找一些志同道合的朋友一起學(xué)習(xí),不斷交流相關(guān)的學(xué)習(xí)方法和經(jīng)驗(yàn)。
當(dāng)然,除了上述方法,我們還可以參加可靠的java培訓(xùn)組織。上思谷教育的JavaEE分布式開(kāi)發(fā)課程培訓(xùn)采用高質(zhì)量的全程面對(duì)面教學(xué)模式,讓學(xué)生隨時(shí)發(fā)現(xiàn)和解決問(wèn)題。同時(shí),更專(zhuān)業(yè)的就業(yè)老師為您面試、就業(yè)保駕護(hù)航。如果您想學(xué)習(xí)Java并快速提高,歡迎您參加JavaEE分布式開(kāi)發(fā)課程培訓(xùn)。
零基礎(chǔ)想學(xué)習(xí)java,應(yīng)該從哪學(xué)起?
先讀一本書(shū)(在21天內(nèi)學(xué)習(xí)Java),然后在MOOCS等網(wǎng)站從頭到尾閱讀更多系統(tǒng)教程