Java程式設計師實現月薪2萬需要具備哪些技能?

茶花盛開發表於2017-05-05

拋開工作經驗,專案經驗,學歷背景,單從技術點分析,哪些方面可以判斷一個java程式設計師的技術紮實程度,怎樣才能知道他值多少月薪呢?本文將為你解答:

本著理論結合實踐的方法,我一般都不問上面這種純知識和理論性問題,而是讓他寫一段程式來證明HashMap是執行緒不安全的。然後,再讓改一下這個程式,使之執行緒安全。


在面試等情況下,如果有條件,最好能給被考核人一臺可以上Google的電腦,然後給其一段自己的空間和時間,比如一個人在小會議室裡10-20分鐘。然後,另接一臺顯示器,同步觀察他在電腦上是怎麼做的。由此可以看出他解決問題的方法、思路。當然,另接顯示器這事兒,得提前知會對方。


或者,如果為了省時間,拿出寫好的執行緒不安全的程式,讓其說出為啥會有這樣奇怪的現象。


以此類推,可以讓寫證明List裡儲存的是引用還是物件實體的程式,寫證明弱引用強引用區別的程式,寫證明某種設計模式效果的程式…………


這方法,不僅可以檢查基礎知識,還可以檢查思維能力。如果對知識理解得不夠透徹,這種證明程式其實是挺難寫的……


這方法更有威力的地方在於,你可以不是很懂Java,仍然可以大致衡量出對方的水平。

如果你想學習Java可以來這個群 首先是二二零 中間是一四二 最後是九零六  裡面有大量的學習資料可以下載。


比如,你看不懂對方的程式,你完全可以作為一個學生去請教。真正對概念理解透徹的人,是懂得如何用淺顯易懂的方式把一個知識講明白的,他能把飄在空中的概念一路清清楚楚地給你講到落在你的腳邊,讓你覺得唾手可得。能把概念講到這種程度的人,通常在相關領域不是一般的高手。


我面試的時候,有時候會裝傻,故意看看對方能否講明白。遇到一知半解的,會把他自己繞進去,很好玩;遇到高手,真的獲益匪淺。當然,也有時候是真不懂,虛心學習,但一邊學習一邊提問,基本就可以知道對方的水平了。


從面試的角度講,一個能找到比自己強的人才的方法才是最有前途的方法。否則,只能招到比自己水平低的人,那公司的未來就只能侷限於領導的能力水平了……


如果是做業務為主的,那側重點在於如何建立業務模型,如何應對業務變更的可能,如何處理版本分裂和制定遷移升級計劃。


如果是做相對低層的技術優化的,那側重點在於對效能、被Java封裝的底層技術的細節、OS、Network等基礎知識的掌握程度。掌握得越細緻,越好。


作業系統層面:程式與執行緒,程式如何建立,執行緒如何建立。記憶體與換頁的概念,程式通訊,鎖等等。


網路通訊層面:7/5層模型,ip分片重組,ip路由,tcp握手,udp的重組,網路風暴的原因等等。


程式語言層面:物件導向,過載與重寫,多型。物件建立模式,繼承和組合, 語言的特點等等。


資料結構演算法陣列連結串列,Map應用場景。基本的排序演算法,演算法分析等等。


資料庫層面:索引,SQL,事務隔離級別等等。


資料方面:二進位制運算,各型別佔用的位元組數,各型別數字的最大值,最小值等等。


1,先說結論:基礎不紮實的面試官問不出這種以小見大的問題。


2,可以列舉幾個:


與非門在電子電路級別是如何實現的?通過邏輯電路如何製造一個最簡單的計算器?譬如三體中描述的秦始皇如何用人肉方陣做一個計算機來預測天體執行規律?


考察點:《計算機組成原理》,是本科大一課程。


System.out.println函式到底是如何在螢幕上顯示出字元來的?涉及字符集,系統類,靜態變數,ascii碼,IO,buffer,OS,顯示卡驅動。


考察點:《計算機組成原理》,《作業系統》,JDK,字符集,亂碼問題。


為什麼java採用單根繼承?好處和壞處是什麼?如何補救其缺點?流行的框架和最佳設計實踐是怎麼做的?如果用C語言模擬一個單根類繼承的程式設計模式可以怎麼實現?


考察點:OOP,設計模式


集合類的類圖和選型決策?可以挖出無數資料結構的問題。


考察點:《資料結構》


類載入和執行的原理、順序,以及各變數在記憶體的分佈?有哪些擴充套件和hack的點?


考察點:JVM


volatile關鍵字的用途和jvm編譯優化?可以引出併發問題


考察點:併發,hotspot


異常是如何丟擲的?如何做一個不會崩潰的java程式?


考察點:異常,守護執行緒


相關文章