宏觀方面
一、 JAVA。要想成為JAVA(高級)工程師肯定要學習JAVA。一般的程序員或許只需知道一些JAVA的語法結構就可以應付了。但要成為JAVA(高級) 工程師,您要對JAVA做比較深入的研究。您應該多研究一下JDBC、IO包、Util包、Text包、JMS、EJB、RMI、線程。如果可能,希望您 對JAVA的所有包都瀏覽一下,知道大概的API,這樣您就發(fā)現(xiàn)其實您想實現(xiàn)的很多功能,通過JAVA的API都可以實現(xiàn)了,就不必自己費太多的腦經 了。
二、 設計模式。其實寫代碼是很容易的事情,我相信您也有同感。但如何寫得好就比較難了。這個“好”字包括代碼可重用性,可維護性,可擴展性等。如何寫出好的代 碼往往要借助一些設計模式。當然長期的代碼經驗積累,只要您用心,會使您形成自己代碼風格。相信您的代碼也比較符合代碼的可重用性,可維護性,可擴展性。 但既然前人已經給我們總結出了經驗,我們何不踩著前人的肩膀前進?
三、 XML?,F(xiàn)在的系統(tǒng)中不使用XML幾乎是不可能的。XML的功能非常強大,它可以做數(shù)據(jù)轉換、做系統(tǒng)的配置、甚至可保存您的系統(tǒng)業(yè)務數(shù)據(jù)。因此您必須了解 XML,包括它的語法,結構。您還需要比較熟練的使用解析XML的一些API,比如JDOM,SAX等,因為在我們一般的項目中,XML往往擔當系統(tǒng)配置 信息的作用,您需要用這些API解析這些配置信息,開發(fā)完美的項目。
四、 精通使用一種或兩種框架。像在《如何成為java初級程序員》中提到的那樣,“框架都會有許多可重用的代碼,良好的層次關系和業(yè)務控制邏輯,基于框架的開 發(fā)使你可以省出很多的開發(fā)成本”。但我這里希望您能精通,更多的是希望您能通過框架的使用了解框架的思想。這樣您在開發(fā)一個項目時思路會開闊一些,比如您 會想到把SQL語句與您的JAVA代碼分開,再比如您會考慮把您的業(yè)務邏輯配置到XML或者數(shù)據(jù)庫中,這樣整個項目就很容易擴張了。
五、 熟悉主流數(shù)據(jù)庫。其實真正比較大的項目都是有人專門做數(shù)據(jù)庫的,但往往很多項目要求作為(高級)工程師的您也參與數(shù)據(jù)庫的設計以及SQL的編寫。所以為了 更好的為國家做貢獻,建議您還是多了解一些主流數(shù)據(jù)庫,比如SQLSERVER,ORACLE,多連接SQL和存儲過程以及觸發(fā)器。如果您不是“科班”出 身,您還需要補充一些數(shù)據(jù)庫原理方面的知識。
六、 精通一種或兩種WEBServer。盡管我再《如何成為java初級程序員》里講過它,我還是要強調您要精通一種或兩種。因為作為JAVA工程師,特別時 想成為高級JAVA工程師的您,您不可避免地要部署您的項目到WebServer上,而且只有當您精通一種WebServer,您才可能最大限度地使用它 的資源,這往往可以節(jié)省很多時間和精力。
七、 UML。我知道您肯定想成為高級工程師,因此您有必要了解或熟練或精通UML,這取決于您有多大決心想成為高級工程師和項目經理。在比較正規(guī)的開發(fā)團隊 中,UML是討論項目的交流工具,您要想做一個軟件工程師,您至少要能看懂,您要想做高級工程師,您要能通過它來描述您對項目的理解,盡管這不是必須,但 卻很重要。
八、 站在高度分析問題:這不是一個知識點,也不是通過書本就能學得到的。只所以提到這一點,是因為我比您還著急,我希望您更快的成為一個高級的軟件工程師,而 不是一個一般的軟件工程師。希望您在工作中多向您的系統(tǒng)分析員、需求分析員、系統(tǒng)設計員學習,多站在他們角度上去看您在開發(fā)的項目。在最好在項目之初先在 您的腦海里對項目有個大致的分析、設計,然后和他們進行比較,找找差別,想想缺點。
九、 工具。與在《如何成為java初級程序員》里提到的不同,您在這個階段可能接觸到不同的工具了,盡管您還需要使用JB或者IDEA,但能可能對 ROSE,Together要多了解一些,因為您要畫UML了。不要再對Dreamweaver等HTML編輯器情有獨鐘了,那些JSP頁面讓初級程序員 去寫吧
微觀方面
1.Core Java部分
這是最基礎的,對于一個java高級開發(fā)/設計人員,你需要對這一部分達到精通的水平,重點內容如下:
a.面向對象編程思想(封裝繼承多態(tài)接口)
b.字符串處理
c.java.lang包,java.util包等常用包
d.java異常處理
2.Java高級部分
a.Java I/O流
b.Java多線程技術
c.Java網絡編程
d.Java Swing
后兩項可以了解即可,如果項目需要可以深入研究
3.前端基本技能
* HTML + CSS網頁開發(fā)
* JavaScript
* Jquery
* 瀏覽器兼容性 CSS hack(了解)
4.熟練使用JSP + Servlet進行開發(fā)
5.MVC設計模式,原理,以及相關框架,如Struts
6.SSH框架
7.緩存技術 session & cookie
8.熟練使用一種以上Java開發(fā)工具(Eclipse/MyEclipse/Jbuilder/Jcreator/IntelliJIEDA/NetBeans)
9.熟練使用XML
JDOM w3c.dom SAX
10.Java設計模式
工廠模式,單例模式 ==
11.Java反射機制
反射的各種用法
12.了解或熟悉 C, C++, .NET
13.熟悉JDK的配置,環(huán)境變量
14.數(shù)據(jù)庫oracle必學,其他最好了解一種以上(mysql,sql server,access==)
oracle:視圖,索引,存儲過程,觸發(fā)器,游標,包,常用函數(shù) ==
15.數(shù)據(jù)庫原理
事務的原理,鎖機制,表連接,復雜查詢語句(工作經驗),性能調優(yōu),鎖表以及解決方案==
16.JDBC,連接池
17.Ajax,反向Ajax
18.HTTP協(xié)議,request 和 response的原理,HTTP status(了解常用的),Https原理
19.熟悉Linux基本命令,使用過Linux/Unix系統(tǒng),可以編寫shell腳本,可以在Linux上部署項目
20.了解windows系統(tǒng)批處理腳本bat
21.了解HTML5,最好學習過
22.熟悉一種JS框架,如Prototype
23.J2EE原理 熟悉一種以上web容器如Tomcat,JBoss,websphere,weblogic==
24.熟悉ant或maven
25.熟悉一門腳本語言,如python ,ruby
26.了解php/ asp
27.了解ftp協(xié)議及原理
28.熟練使用Junit測試,熟悉Mockito等測試工具
29,熟悉javac,javadoc,native,native2ascii等常用命令
30.熟悉常用的排序算法,如冒泡排序,快速排序等,最好自己研究過一些的算法。
31.了解Flex(不學也沒關系)
32.了解敏捷開發(fā)模式
33.工作流workflow至少用過一種,如OSworkflow,了解原理
34.使用過VPN了解其原理
35.熟悉jstl表達式和el表達式
36.熟悉webservice,WSDL,SOAP
37.圖片處理,如圖片上傳,預覽,限制大小等
38.版本控制工具,CVS VSS SVN
39,JSON技術,JSON+AJAX
40.分頁技術,最好自己實現(xiàn)過不僅僅是用過要知道原理
41.Java Mail
42.Java讀寫txt,excel,JXL技術
43.JVM原理,JVM內存管理,GC,Java堆棧池
44.熟練使用下面的工具:
office辦公軟件,word,excel,ppt等
plsql,sqldevelop 數(shù)據(jù)庫開發(fā)工具
outlook大公司都用
ue編輯器
瀏覽器控制臺,調試
SHH/PUTTY 遠程
45.UML建模工具Rational Rose等
46. 使用log4j
47.使用過開放Api如百度,騰訊街景,新浪微博等
48.頁面靜態(tài)化技術(偽靜態(tài)頁面)
49.報表技術,使用過報表制作工具,如水晶易表。
50.定時任務,如Spring batch ,學會自定義batch任務(不適用第三方工具)
51.了解uuid
52.b/s 和 c/s架構
53.正則表達式
54.了解jndi jms
55.ERP
56.UNICODE編碼,亂碼解決
57.開源網絡編輯器,如ckEditor
58.二進制原理
59.使用過,了解過開源論壇框架,如discuzz
60.GWT,Closure框架
61.了解大數(shù)據(jù),云計算
62.搜索引擎搜索技術
63.軟件工程,項目管理
Java 最常見的 208 道面試題:第一模塊答案
Java 最常見的 208 道面試題:第二模塊答案
Java 最常見的 208 道面試題:第三模塊答案
Java 最常見的 208 道面試題:第四模塊和第五模塊答案
Java 最常見的 208 道面試題:第六模塊答案
Java 最常見的 208 道面試題:第七模塊答案
Java 最常見的 208 道面試題:第八模塊答案
Java 最常見的 208 道面試題:第九模塊和第十模塊答案
Java 最常見的 208 道面試題:第十一模塊答案
Java 最常見的 208 道面試題:第十二模塊答案
Java 最常見的 208 道面試題:第十三模塊答案
Java 最常見的 208 道面試題:第十四模塊答案
Java 最常見的 208 道面試題:第十五模塊答案
Java 最常見的 208 道面試題:第十六模塊答案
Java 最常見的 208 道面試題:第十七模塊答案
Java 最常見的 208 道面試題:第十八模塊答案
Java 最常見的 208 道面試題:第十九模塊答案
我理解是這樣
1.技術廣度方面 至少要精通多門開源技術吧,研究過strutsspring等的源碼。
2.項目經驗方面 從頭到尾跟過幾個大項目,頭是指需求階段,包括需求調研。 尾是指上線交付之后,包括維護階段。
3.架構經驗方面 有過分布式系統(tǒng)的架構和開發(fā)經驗。對于跨系統(tǒng)的結構優(yōu)化,數(shù)據(jù)存儲的性能指標等有豐富經驗。什么緩存啊、數(shù)據(jù)庫的垂直切分什么的,業(yè)務的抽象和水平拆分啊,這些應該都輕車熟路吧。
4.行業(yè)領域方面 最起碼得精通一到兩門業(yè)務吧,所謂精通,就是比如做金融證券業(yè)務的,至少等當半個經融分析師。做電力業(yè)務的,至少等當半個電力工程師。
5.個人修為 有自己一些獨到的見解,不會人云亦云啦。
Java內存模型是Java虛擬機規(guī)范定義的一種抽象概念,它決定了多線程程序在何時讀取內存中的值,以及何時將值寫回內存。
Java的反射機制指的是在運行時動態(tài)獲取和操作類的方法、屬性、構造函數(shù)等信息的能力。它的應用場景包括:動態(tài)代理、自定義注解、單元測試等。
Synchronized關鍵字用于控制多個線程對共享資源的訪問。它包括Synchronized方法和Synchronized代碼塊兩種形式,用于實現(xiàn)線程的同步和互斥。
線程池是一種實現(xiàn)線程復用的機制,它包括線程池的創(chuàng)建、提交任務、執(zhí)行任務以及線程池的關閉等操作。線程池的優(yōu)點包括:減少線程的創(chuàng)建和銷毀開銷、提高線程的可管理性和可控性、控制并發(fā)資源的數(shù)量等。
Java的垃圾回收機制通過在程序運行過程中自動掃描和標記不再使用的對象,并釋放它們所占用的內存空間。垃圾回收機制的優(yōu)點包括:減少內存泄漏的風險、簡化內存管理的工作、提高程序的可靠性和性能。
Java的泛型是一種參數(shù)化類型的機制,它可以在編譯時期檢查類型的安全性,并提供了更好的代碼復用和類型約束。泛型的應用場景包括:集合類、自定義數(shù)據(jù)結構、框架設計等。
1. 什么是微服務?
2. 差異配置中心如何工作?
3. 如何解決Spring Cloud應用的配置管理?
4. Spring Cloud有哪些主要的組件?
5. Netflix OSS的組件如何組合在一起來構建可擴展的應用?
6. Spring Cloud使用哪種服務發(fā)現(xiàn)機制?
7. 微服務和負載均衡之間有何區(qū)別?
8. 使用Spring Cloud Stream如何處理消息傳遞?
9. 描述Ribbon負載均衡和Feign負載均衡之間的差異?
10. 有哪些Hystrix斷路器必須考慮的因素?
1老家在哪里?(如果有急事回老家,往返是幾天。)