02.28 要當Java工程師,需要掌握什麼技能?

我也不知道叫啥了哈哈


Java基礎1、List 和 Set 的區別2、HashSet 是如何保證不重複的3、HashMap 是線程安全的嗎,為什麼不是線程安全的(最好畫圖說明多線程環境下不安全)?4、HashMap 的擴容過程5、HashMap 1.7 與 1.8 的 區別,說明 1.8 做了哪些優化,如何優化的?6、final finally finalize7、強引用 、軟引用、 弱引用、虛引用8、Java反射9、Arrays.sort 實現原理和 Collection 實現原理10、LinkedHashMap的應用11、cloneable接口實現原理12、異常分類以及處理機制13、wait和sleep的區別14、數組在內存中如何分配Java 併發1、synchronized 的實現原理以及鎖優化?2、volatile 的實現原理?3、Java 的信號燈?4、synchronized 在靜態方法和普通方法的區別?5、怎麼實現所有線程在等待某個事件的發生才會去執行?6、CAS?CAS 有什麼缺陷,如何解決?7、synchronized 和 lock 有什麼區別?8、Hashtable 是怎麼加鎖的 ?9、HashMap 的併發問題?10、ConcurrenHashMap 介紹?1.8 中為什麼要用紅黑樹?11、AQS12、如何檢測死鎖?怎麼預防死鎖?13、Java 內存模型?14、如何保證多線程下 i++ 結果正確?15、線程池的種類,區別和使用場景?16、分析線程池的實現原理和線程的調度過程?17、線程池如何調優,最大數目如何確認?18、ThreadLocal原理,用的時候需要注意什麼?19、CountDownLatch 和 CyclicBarrier 的用法,以及相互之間的差別?20、LockSupport工具21、Condition接口及其實現原理22、Fork/Join框架的理解23、分段鎖的原理,鎖力度減小的思考24、八種阻塞隊列以及各個阻塞隊列的特性Spring1、BeanFactory 和 FactoryBean?2、Spring IOC 的理解,其初始化過程?3、BeanFactory 和 ApplicationContext?4、Spring Bean 的生命週期,如何被管理的?5、Spring Bean 的加載過程是怎樣的?6、如果要你實現Spring AOP,請問怎麼實現?7、如果要你實現Spring IOC,你會注意哪些問題?8、Spring 是如何管理事務的,事務管理機制?9、Spring 的不同事務傳播行為有哪些,幹什麼用的?10、Spring 中用到了那些設計模式?11、Spring MVC 的工作原理?12、Spring 循環注入的原理?13、Spring AOP的理解,各個術語,他們是怎麼相互工作的?14、Spring 如何保證 Controller 併發的安全?Netty1、BIO、NIO和AIO2、Netty 的各大組件3、Netty的線程模型4、TCP 粘包/拆包的原因及解決方法5、瞭解哪幾種序列化協議?包括使用場景和如何去選擇6、Netty的零拷貝實現7、Netty的高性能表現在哪些方面分佈式相關1、Dubbo的底層實現原理和機制2、描述一個服務從發佈到被消費的詳細過程3、分佈式系統怎麼做服務治理4、接口的冪等性的概念5、消息中間件如何解決消息丟失問題6、Dubbo的服務請求失敗怎麼處理7、重連機制會不會造成錯誤8、對分佈式事務的理解9、如何實現負載均衡,有哪些算法可以實現?10、Zookeeper的用途,選舉的原理是什麼?11、數據的垂直拆分水平拆分。12、zookeeper原理和適用場景13、zookeeper watch機制14、redis/zk節點宕機如何處理15、分佈式集群下如何做到唯一序列號16、如何做一個分佈式鎖17、用過哪些MQ,怎麼用的,和其他mq比較有什麼優缺點,MQ的連接是線程安全的嗎18、MQ系統的數據如何保證不丟失19、列舉出你能想到的數據庫分庫分表策略;分庫分表後,如何解決全表查詢的問題20、zookeeper的選舉策略21、全局ID數據庫1、mysql分頁有什麼優化2、悲觀鎖、樂觀鎖3、組合索引,最左原則4、mysql 的表鎖、行鎖5、mysql 性能優化6、mysql的索引分類:B+,hash;什麼情況用什麼索引7、事務的特性和隔離級別緩存1、Redis用過哪些數據數據,以及Redis底層怎麼實現2、Redis緩存穿透,緩存雪崩3、如何使用Redis來實現分佈式鎖4、Redis的併發競爭問題如何解決5、Redis持久化的幾種方式,優缺點是什麼,怎麼實現的6、Redis的緩存失效策略7、Redis集群,高可用,原理8、Redis緩存分片9、Redis的數據淘汰策略JVM1、詳細jvm內存模型2、講講什麼情況下回出現內存溢出,內存洩漏?3、說說Java線程棧4、JVM 年輕代到年老代的晉升過程的判斷條件是什麼呢?5、JVM 出現 fullGC 很頻繁,怎麼去線上排查問題?6、類加載為什麼要使用雙親委派模式,有沒有什麼場景是打破了這個模式?7、類的實例化順序8、JVM垃圾回收機制,何時觸發MinorGC等操作9、JVM 中一次完整的 GC 流程(從 ygc 到 fgc)是怎樣的10、各種回收器,各自優缺點,重點CMS、G111、各種回收算法12、OOM錯誤,stackoverflow錯誤,permgen space錯誤1、具有1-5工作經驗的,面對目前流行的技術不知從何下手,需要突破技術瓶頸的。2、在公司待久了,過得很安逸,但跳槽時面試碰壁。需要在短時間內進修、跳槽拿高薪的。3、如果沒有工作經驗,但基礎非常紮實,對java工作機制,常用設計思想,常用java開發框架掌握熟練的。4、覺得自己很牛B,一般需求都能搞定。但是所學的知識點沒有系統化,很難在技術領域繼續突破的。


徐胖胖最可愛


如果是0基礎的話需要另說了,需要去培訓機構的,自學的壓力大,靜不下心而且沒有現成的項目,所以如果想學的話,可以參考黑馬,北大青鳥等等。

那麼要當JAVA工程師,需要掌握以下技能

1.java 基礎

不用說精通,至少是常用的要熟練。必須熟悉JDK帶的一些常用命令及其常用選項,命令至少需要熟悉:appletviewer、HtmlConverter、jar、 java、javac、javadoc、javap、javaw、native2ascii、serialver。

2. 各種工具的使用

必須至少熟練使用一種IDE的開發工具,例如Eclipse、Netbeans、JBuilder、Jdeveloper、IDEA、JCreator或者Workshop,包括進行工程管理、常用選項的設置、插件的安裝配置以及進行調試

3.j2ee框架

用java來做WEB應用,少不了使用j2ee框架,目前主要使用的有1)struts 2)spring 3) hibernate 4)ibatis 5)spirngMvc 等等的其他一些相似的框架,還有經常會用到的緩存框架例如memcached ,ehcache,oscache等。

4. 數據庫基礎

數據庫當下主要還是關係型數據庫,產品有oracle mysql sqlserver db2,需要掌握基本使用,和根據業務邏輯設計表,索引,視圖,存儲過程,函數等。

5.設計模式

知道常用設計模式的優缺點·能畫出常用設計模式的UML圖,知道並且能夠在適當的時候用來解決問題就可以了。

6. 應用服務器

web應用需要部署到應用服務器上,常用的產品有tomcat,jboss, apache,resin 等等,還有用來提升性能的反向代理服務器如nginx等,需要掌握如何部署項目,基本調試,調優。  

7.Linux系統

如果編碼通常在windows環境下,可是生產環境卻通常是在Linux下,需要掌握的是shell腳本,各種軟件的安裝,部署。

8. 數據結構算法

編程=數據結構 + 算法,平常的工作中用到的不是很多。

9. 多線程

在面試中多線程的和線程池是比較被容易問到的,比如:怎麼實現多線程,Thread和Runnable的區別和聯繫、多次start一個線程會怎麼樣、線程有哪些狀態線程池有幾種?這幾種線程池之間有什麼區別和聯繫?線程池的實現原理是怎麼樣的?這些問題能熟悉更好。


文小飛


作為一名Java工程師該具備以下幾種實用技能:

基礎階段:

1)夯實的java基礎:

根據企業用人的需求,只有具備堅實的java基礎功底的程序員才能快速掌握新的技術。需要在核心算法、面向對象應用、數據結合及集合框架、反射、輸入輸出、多線程、異常處理等方面進行深入學習。

2)熟悉Linux操作系統

Linux是當今用作廣泛的服務器操作系統。合格的java高級工程師必須具備熟練地Linux操作技巧。

3)深入學習數據庫技術

互聯網公司對Java應用離不開數據庫技術。任何一個大中型應用,數據庫設計的好壞、數據庫訪問的效率直接決定了該項目的成敗。當前數據庫最主流的技術有Oracle和MySQL兩種,除了能熟練應用數據庫體系結構和SQL語句之外,還要掌握數據庫設計、SQL語句優化方面。

4)系統的Web前端技術

隨著互聯網技術由Web2.0向Web3.0邁進,Web前端技術,包括HTML、CSS特別是java>

進階階段:

5)企業及框架

Java是組件和框架的世界,所有的java程序員都應當瞭解java框架。

6)專門的企業級開發及部署環境

企業在開發、測試、部署實際項目時需要有特定的軟件環境,但是很多技術人員往往不太重視這個,所以在工作中會出現很多問題和失誤甚至被淘汰。因此,作為java工程師對Linux高級命令集腳本編程、遠程登錄、Art、單元測試技術、Maven構建技術、SVN應用技術等要有所瞭解。

7)規範的企業開發流程及文檔

軟件開發是團隊合作,因此企業開發流程和文檔規範尤為重要。這也是區分“草根程序員”和“正規程序員”的重要指標之一。開發項目項目無論大小都應該按照企業開發的流程進行(需求分析、系統設計、編碼實現、單元測試、系統測試、部署上線)。


分享到:


相關文章: