權威統計機構統計,在所有軟件開發類人才的需求中,JAVA工程師的需求量達到了60%~70%。

全球有25億Java器件運行着Java,450多萬Java開發者活躍在地球每個角落,數以萬計的web用戶都親歷Java的威力。

今天,Java運行在7.08億手機,10億智能卡、7億PC機上,爲28款可兼容的應用服務器提供了功能強大的平臺。越來越多的企業因爲使用了Java而提高了生產效率。

想進BAT,程序員需要具備這些技術

Java軟件工程師的月薪一般在6000-10000+,遠遠超過了應屆畢業生的平均水平。還有34k~ 42k之間,我們可以看看,能達到這個月薪的Java大公司也就那麼幾家,比如阿里、百度、騰訊、華爲等……

想進BAT,程序員需要具備這些技術

想進BAT,程序員需要具備這些技術

要達到這樣的薪資程序員需要什麼技術呢?

1、併發處理技術

具體到Java上通常是涉及java.util.concurrent、併發鎖機制、NIO等方面,當然最近比較火爆的Netty框架也可以作爲高併發處理的備選方案之一,這需要對Java的線程調度機制有着比較深的理解。

不過這些可能會涉及併發控制的對象(比如reentrantlock等)只能存在於一個JVM裏的問題,一旦系統規模大到需要部署多個JVM來處理併發的情況,則需要採用共享session的技術(比如spring-session),或者儘可能將系統後臺設計爲無狀態的服務,這需要對RESTful有着較深的理解

2、高可用、負載均衡技術

互聯網產品、企業級應用通常要求一年裏的Downtime控制在很小的範圍內,這需要足夠的高可用和負載均衡架構來支撐。

一般和Java技術本身沒太大關係,但卻是一名初級程序員向高級程序員甚至是架構師CIO進階的必備技術,因此可以適當瞭解一下Nginx、HAProxy等對這方面的支持。

另外現在最“時髦”的做法是將應用docker化,配合ETCD、kubernetes等工具在容器的層面上實現高可用和負載均衡,當然這需要看實際的需求,最時髦的不見得是最適用的,要考慮構建成本。

3、緩存技術

緩存應該是大型系統中或高併發條件下提高響應速度的亙古不變的真理(雖然也看到過淘寶搜索商品功能採用的大數據處理技術實現的零緩存的文章,但能達到淘寶的體量和技術水平一般不太可能)。

這方面的工具太多了ehcache、memcached、redis……從Java的角度來講,需要了解的一是Java對這些工具的連接器,二是緩存技術背後的JSR-107標準,可以參考spring-cache的實現,閱讀一下源碼加深理解。

4、異步處理技術

這通常也是抵消高併發的處理手段之一,從Java的角度看最簡單的異步處理就是新啓動一個異步線程,這同樣也需要對Java的線程調度有所瞭解,當然也可使用Spring中的@Async之類的也可以簡單實現異步線程的處理。

如果是非常消耗資源的業務處理,簡單的異步線程是滿足不了需求的,這就需要一些消息中間件來做這些異步處理了。

消息中間件有很多,activemq、rabbitmq、kafka……需要了解的是Java對這些中間件的連接器。不過異步處理中最關鍵的是事務保證的問題,這可能需要對事務的兩步提交有所瞭解。


你們覺得怎樣才能進bat之類的公司呢

相關文章