python與java誰更好 一道java面試題,20億數(shù)字的文本排序,如何取前100?
一道java面試題,20億數(shù)字的文本排序,如何取前100?因?yàn)檫@是一個Java問題,所以這是典型的TOPK問題。首先取前100個數(shù)字構(gòu)建一個最小堆,然后依次從堆的頂部插入剩余的數(shù)字,同時調(diào)整堆。堆中最
一道java面試題,20億數(shù)字的文本排序,如何取前100?
因?yàn)檫@是一個Java問題,所以這是典型的TOPK問題。首先取前100個數(shù)字構(gòu)建一個最小堆,然后依次從堆的頂部插入剩余的數(shù)字,同時調(diào)整堆。堆中最后100個元素就是結(jié)果??臻g復(fù)雜度是k,時間復(fù)雜度是nlogk
我是一個php程序員,已經(jīng)工作了8年。語言不同。他們都是程序員,所以我回答這個問題很合適。
如果你想增加薪水,首先,你的能力應(yīng)該與你想增加的薪水相匹配。如果你沒有達(dá)到你的能力,但想增加你的工資,這是有點(diǎn)超出你的能力。
所以加薪的第一個條件就是要提高自己,無論在技術(shù)、能力、溝通方面,各方面都需要提高。
如果你的能力真的足夠了,那么我認(rèn)為可以嘗試以下兩種方法。
1. 對現(xiàn)有公司提出加薪要求。在我看來,一些比較開放的公司的領(lǐng)導(dǎo)還是可以接受員工加薪的。
當(dāng)然,在IT行業(yè),程序員的工資在公司里一般都是保密的,所以加薪的時候最好保密。只有領(lǐng)導(dǎo)知道。當(dāng)你提出張公司的需求時,領(lǐng)導(dǎo)會重新評價你,然后。。。
我工作了8年,從來沒有跳槽過。在自己的公司,我兩次提出加薪要求,最后領(lǐng)導(dǎo)同意了。
2. 跳槽,大多數(shù)程序員可能有這種感覺。如果程序員跳槽,他們的工資會漲得很快。這是因?yàn)镮T行業(yè)對優(yōu)秀程序員的需求一直很大,尤其是現(xiàn)在一些小型初創(chuàng)企業(yè)可以提供高薪。
尋找更合適的公司也是一個不錯的選擇。城市越大,工資越高,節(jié)奏壓力越大。
這是我個人的觀點(diǎn)。
-葉紹梅老板
我經(jīng)歷了java6-java8的“朝代更迭”,我想談?wù)勎业目捶ā?/p>
首先,不可否認(rèn)的是,流絕對是優(yōu)雅的代名詞。它的串行調(diào)用模式和強(qiáng)大的API能力都賦予了程序員一種特殊的技能:高效和簡潔。
但事情并不是絕對的,但就性能而言,流真的比傳統(tǒng)迭代好嗎?事實(shí)上,情況并非如此。我們應(yīng)該根據(jù)實(shí)際情況來看待這個問題。
在極少量的迭代中,我們看不到性能效果的差異。以下幾點(diǎn)是建立在依賴大量數(shù)據(jù)迭代的前提下的。
分為以下幾點(diǎn)進(jìn)行討論:
1。不管是什么程序,它都必須在載體上運(yùn)行,而公共載體就是服務(wù)器。因此,很容易認(rèn)為CPU的處理能力直接影響性能。
如果它只是一個單核CPU,建議使用傳統(tǒng)的迭代。A) 實(shí)際測試結(jié)果表明,流的性能明顯低于for-loop等傳統(tǒng)處理方法。特別是當(dāng)它是單核CPU時,不要使用流的并行處理。原因是并行處理中還有另一個開銷,即上下文線程切換。這個時候,只有一個單核CPU,你不覺得當(dāng)CPU是多核的時候,隨著核數(shù)的增加,流的優(yōu)勢會逐漸顯現(xiàn)出來嗎。畢竟,并行處理仍然是由于串行處理。
2. 事情不是絕對的。并非所有情況下,流都不如串行處理中的傳統(tǒng)迭代好。例如,在復(fù)雜對象(公共順序?qū)ο?,包含大量信息)的處理中,測試結(jié)果表明流的性能仍然是由于普通的迭代,更不用說多核CPU下的并行處理了。這里再次強(qiáng)調(diào),不要在單核下使用串行,你會發(fā)現(xiàn)性能并檢查它
!3. 最后,我想談?wù)勎业膫€人經(jīng)歷。在使用并行流時,在迭代處理中進(jìn)行多個外部接口調(diào)用時應(yīng)謹(jǐn)慎。您可能會發(fā)現(xiàn),并行后上下文線程切換的代價并不一定比串行線程好,而且還會影響系統(tǒng)的穩(wěn)定性。
最后,在代碼整潔性方面,stream仍然有明顯的優(yōu)勢,但是在性能方面,我們還是要根據(jù)實(shí)際情況做出合理的選擇,這樣才能寫出最“優(yōu)雅”的代碼。
以上三點(diǎn)是個人觀點(diǎn)和日常工作中遇到的實(shí)際場景的總結(jié)。如果有什么不對勁或不同意見,可以留言指出,共同討論,共同進(jìn)步。