因為離家太遠,所以最近準備離京回老家成都找份工作,平衡一下家庭與事業(yè)。因此在各大招聘網(wǎng)站上廣撒網(wǎng)的投遞了簡歷,鑒于自己的工作經(jīng)驗還是比較自信滿滿的,然后就是坐等面試。這幾天陸陸續(xù)續(xù)的來及幾個HR的簡單電話面試,但是都不夠?qū)I(yè),所以簡單的聊天就可以讓對方信服。但是就在昨晚的一次技術(shù)負責(zé)人的電話面試中,給我深深的上了一課。
對方是一家做銀行中間件的公司,主要是給銀行提供一些軟件服務(wù),因此對于技術(shù)的要求比較精比較高。昨晚上他們公司的技術(shù)負責(zé)人直接打來電話進行面試,剛開始直接問了我最近一個項目主要負責(zé)哪些技術(shù)事項,一看對方是想了解一下本人的工作經(jīng)驗吧,然后我就把近期的工作情況大體講了一遍,從J2EE的整體搭建到改版以及通信業(yè)務(wù)socket乃至netty的框架運用等都講了一通,個人覺得自信滿滿的。對方也說了一句還可以,然后就說問個問題,而就是這個問題把我打住了,也讓我更加認識到:技術(shù)行業(yè)永遠沒有終點,更需要不斷的夯實基礎(chǔ),才能走到巔峰。
這個問題就是:請你講一下hashcode的工作原理。
當(dāng)時由于電話面試,自己還聽錯了,聽成了什么msnQ?然后我說你問的是不是消息隊列啊?對方也就沒有在進行下去了,然后說讓我等HR的通知吧。放下電話那一刻我沉思了,應(yīng)該說當(dāng)時是疑惑,到底什么技術(shù)這個牛逼我還沒聽過,于是乎,我給他發(fā)了一條短信,內(nèi)容是:對不起,剛才可能沒聽清楚,您能再說一下剛才提到的技術(shù)嗎?答:hashcode。
對的,就是hashcode,而知道結(jié)果的同時我不淡定了,因為我知道即使當(dāng)時挺清楚了也回答不上來,因為自己平時根本就幾乎沒用到hashcode,雖然看起來是那么的眼熟,但知其然卻不知其所以然。
然后馬上百度了一下:hashCode是jdk根據(jù)對象的地址或者字符串或者數(shù)字算出來的int類型的數(shù)值 詳細了解請 參考public inthashCode()返回該對象的哈希碼值。支持此方法是為了提高哈希表(例如 java.util.Hashtable 提供的哈希表)的性能。
哈希算法也稱為散列算法,是將數(shù)據(jù)依特定算法直接指定到一個地址上??梢赃@樣簡單理解,hashCode方法實際上返回的就是對象存儲位置的映像。
這只一個基本原理吧,但就是這個過程也說明了一點:基礎(chǔ)不牢。昨晚也陸續(xù)整理了一下近幾年的工作情況,這幾年的確學(xué)到了很多新知識新東西:
1.從java入門開始到現(xiàn)在,學(xué)習(xí)了J2EE的框架,spring+hibernate+setvlet,到現(xiàn)在的自己獨立搭建了一個J2EE游戲數(shù)據(jù)處理中心。
2.通信方面,socket熟練運用以及netty4的運用,自己也用netty4搭建了我們所有的游戲框架。
3.數(shù)據(jù)庫方面,熟練的運用了mysql,能夠獨立熟練的運用數(shù)據(jù)庫建立整個游戲的數(shù)據(jù)表。
4.linux方面,所有的游戲socket以及j2ee都能運用tomcat以及niginx部署,同時運維著十幾臺服務(wù)器。
可以說以上都是這幾年的經(jīng)驗所積累下來的吧,雖然實際經(jīng)驗是有,但是也能看到問題,就是著眼于大的架構(gòu)卻沒有看到小的基礎(chǔ)。在這里面基礎(chǔ)是不夠牢固的。例如:
1.設(shè)計模式并不熟練,只會運用一些常用的。
2.數(shù)據(jù)結(jié)構(gòu)與算法也很薄弱,只會運用一些簡單的結(jié)構(gòu)與算法,并沒有系統(tǒng)學(xué)習(xí)。
3.線程池,雖然會用,但卻用的還是不夠精,并沒有深入了解整個線程池的機制。
4.netty以及spring框架只是出于會用的層面,這都是開源的,目前還沒有對源碼進行全面的解讀,從底層去了解其運作模式。
5.linux也是出于最基本的用法,sell命令只會用一些常用的,最主要的內(nèi)核原理以及文件系統(tǒng)都沒有取深入了解過,只是一種能用的層面。
再高的金字塔,如果根基不穩(wěn)總有一天會倒塌下來的。所以,及時有點成績也不是炫耀的時刻而是應(yīng)該進一步的學(xué)習(xí)。技術(shù)這行業(yè)沒終點,只有一個不斷往高處走的游標(biāo),你只有先夯實基礎(chǔ),不斷的學(xué)習(xí),才能讓這個游標(biāo)指向的更遠更高。所以本人針對上面的不足也會制定了相關(guān)的學(xué)習(xí)計劃。下一篇博客會詳細制定一個提高計劃。