做爲一名JAVA程序員應該有怎樣的就業思惟

想要成爲合格的Java程序員或工程師到底須要具有哪些專業技能,在面試以前到底須要準備哪些東西呢?面試時面試官想了解你的什麼專業技能,如下都是一個合格JAVA軟件工程師所要具有的。前端

1、專業技能程序員

1、熟練的使用Java語言進行面向對象程序設計,有良好的編程習慣,熟悉經常使用的Java API,包括集合框架、多線程(併發編程)、I/ONIO)、SocketJDBCXML、反射等。面試

2、熟悉基於JSPServletJava Web開發,對ServletJSP的工做原理和生命週期有深刻了解,熟練的使用JSTLEL編寫無腳本動態頁面,有使用監聽器、過濾器等Web組件以及MVC架構模式進行Java Web項目開發的經驗。數據庫

3、對SpringIoC容器和AOP原理有深刻了解,熟練的運用Spring框架管理各類Web組件及其依賴關係,熟練的使用Spring進行事務、日誌、安全性等的管理,有使用SpringMVC做爲表示層技術以及使用Spring提供的持久化支持進行Web項目開發的經驗,熟悉Spring對其餘框架的整合。編程

4、熟練的使用HibernateMyBatisORM框架,熟悉HibernateMyBatis的核心API,對Hibernate的關聯映射、繼承映射、組件映射、緩存機制、事務管理以及性能調優等有深刻的理解。設計模式

5、熟練的使用HTMLCSSJavaScript進行Web前端開發,熟悉jQueryBootstrap,對Ajax技術在Web項目中的應用有深刻理解,有使用前端MVC框架(AngularJS)和JavaScript模板引擎(HandleBars)進行項目開發的經驗。緩存

6、熟悉經常使用的關係型數據庫產品(MySQLOracle),熟練的使用SQLPL/SQL進行數據庫編程。安全

7、熟悉面向對象的設計原則,對GoF設計模式和企業應用架構模式有深刻的瞭解和實際開發的相關經驗,熟練的使用UML進行面向對象的分析和設計,有TDD(測試驅動開發)和DDD(領域驅動設計)的經驗。服務器

8、熟悉ApacheNginXTomcatWildFlyWeblogicWeb服務器和應用服務器的使用,熟悉多種服務器整合、集羣和負載均衡的配置。網絡

9、熟練的使用產品原型工具Axure,熟練的使用設計建模工具PowerDesignerEnterprise Architect,熟練的使用Java開發環境EclipseIntelliJ,熟練的使用前端開發環境WebStorm,熟練的使用軟件版本控制工具SVNGit,熟練的使用項目構建和管理工具MavenGradle。 說明:上面羅列的這些東西並非每一項你都要爛熟於心,根據企業招聘的具體要求能夠作相應的有針對性的準備。可是前6項應該是最低要求,是做爲一個Java軟件工程師必需要具有的專業技能。

2、項目經驗

項目介紹

本系統是X委託Y開發的用於Z的系統,系統包括ABCD等模塊。系統使用了Java企業級開發的開源框架E以及前端技術F。表示層運用了G架構,使用H做爲視圖I做爲控制器並實現了REST風格的請求;業務邏輯層運用了J模式,並經過K實現事務、日誌和安全性等功能,經過L實現緩存服務;持久層使用了M封裝CRUD操做,底層使用N實現數據存取。整個項目採用了P開發模型。

說明:

E一般指SpringJava企業級開發的一站式選擇);

F最有多是jQuery庫及其插件或者是Bootstrap框架,固然若是要構建單頁應用(SPA)最佳的方案是前端MVC框架(如AngularJS)和JavaScript模板引擎(如HandleBars);G顯然是MVC(模型-視圖-控制),最有可能的實現框架是Spring MVC,除此以外還有Struts 2JSF以及ApacheJSF提供的MyFaces實現。

HJSPJSP做爲MVC中的V,也可以使用模板引擎(如FreemarkerVelocity)來生成視圖

還能夠是各類文檔或報表(如ExcelPDF等)。

IServlet或者自定義的控制器,他們是MVC中的C,固然Spring MVC中提供了做爲前端控制器的DispatcherServlet

J一般是事務腳本,

K應該是AOP(面向切面編程)技術,

L目前普遍使用的有memcachedRedis

M的選擇方案不少,最有可能的是HibernateMyBatis,也能夠兩種技術同時運用,但一般是將增刪改交給Hibernate來處理,而複雜的查詢則由MyBatis完成,此外TopLinkjOOQ也是優秀的持久層解決方案;

N底層的數據存取傳統上是使用關係型數據庫,能夠是MySQLOracleSQLServerDB2等,隨着大數據時代的來臨,也能夠採用NoSQL(如MongoDBMemBaseBigTable等)和其餘大數據存取方案(如GFSHDFS等);

P是項目的開發模型,能夠是瀑布模型、快速原型模型、增量模型、螺旋模型、噴泉模型、RAD模型等。

項目開發流程

1、可行性分析:可行性分析報告、項目開發計劃書

2、需求分析:需求規格說明書

OOAD(用例圖、時序圖、活動圖)

界面原型:幫助理解需求、業務層設計時推導事務腳本

3、設計:概要設計說明書、詳細設計說明書

抽取業務實體(領域對象):類圖、E-R圖(概念設計階段)

分層架構:肯定各層的技術實現方案(具體到使用的框架、數據庫服務器、應用服務器等)。

業務層設計:事務腳本模式(事務:用戶發送一次請求就是一個事務;腳本:一個方法或一個函數;事務腳本:把一次請求封裝爲一個方法或一個函數;事務腳本模式:一個事務開始於腳本的打開,終止於腳本的關閉)。

業務層涉及的對象有三種類型:事務腳本類(封裝了業務的流程)、數據訪問對象(DAO,封裝了持久化操做)、數據傳輸對象(DTO,封裝了失血/貧血領域對象),三者之間的關係是事務腳本類組合(聚合)數據訪問對象,這兩者都依賴了數據傳輸對象

正向工程(UML類圖生成Java代碼)和逆向工程(Java代碼生成UML類圖) 數據庫物理設計(ER圖轉換成表間關係圖、建庫和建表、使用工具插入測試數據)

3、編碼

4、測試:測試報告、缺陷報告

單元測試:對軟件中的最小可測試單元進行檢查和驗證,在Java中是對類中的方法進行測試,可使用JUnit工具來實施。

集成測試:集成測試也叫組裝測試或聯合測試。在單元測試的基礎上,將全部模塊按照設計要求組裝成爲子系統進行測試。

系統測試:將已經確認的軟件、硬件、外設、網絡等元素結合在一塊兒,進行信息系統的各類組裝測試和確認測試,系統測試是針對整個產品系統進行的測試,目的是驗證系統是否知足了需求規格的定義,找出與需求規格不符或與之矛盾的地方,從而提出更加完善的方案。 驗收測試:在軟件產品完成了單元測試、集成測試和系統測試以後,產品發佈以前所進行的軟件測試活動。它是技術測試的最後一個階段,也稱爲交付測試。驗收測試的目的是確保軟件準備就緒,而且可讓最終用戶將其用於執行軟件的既定功能和任務。

5、交付和維護:用戶手冊、操做手冊

3、項目管理

1、版本控制:CVS/SVN/Git

2、自動構建:Ant/Maven/Ivy/Gradle

3、持續集成:Hudson/Jenkins

4、系統架構

1、負載均衡服務器:F5A10

2、應用服務器:

HTTP服務器:ApacheNginXHTTP、反向代理、郵件代理服務器)

Servlet容器:TomcatResin

EJB容器:WildFlyJBoss Application Server)、GlassFishWeblogicWebsphere

3、數據庫服務器:MySQLEclipseOracle

5、第三方工具(插件)應用

1、圖表工具:基於jQuery的圖表插件(如jQchartFlotCharted等)、Chart.jsHighcharts等。

2、報表工具:Pentaho ReportingiReportDynamicReports等。

3、文檔處理:POIiText等。

4、工做流引擎:jBPMOpenWFESnakerSWAMP等。

5、做業調度:QuartzJobServerOddjob等。

6、緩存服務:EhCachememcachedSwarmCache等。

7、消息隊列:Open-MQZeroMQ等。

8、安全框架:ShiroPicketBox等。

9、搜索引擎:IndexTankLuceneElasticSearch等。

10Ajax框架:jQueryExtJSDWR等。

11UI插件:EasyUIMiniUI等。

12、富文本框:UEditorCKEditor等。

6、面試提問

1、項目是爲哪一個公司開發的?項目的投入是多少?

2、有多少人蔘與了項目開發?整個團隊中,測試人員、開發人員、項目經理比例是多少?

3、項目開發了多長時間?項目總的代碼量有多少?你的代碼量有多少?

4、項目採用了怎樣的開發模型或開發流程?項目的架構是怎樣的?項目的技術選型是怎樣的?

5、你在項目中承擔了怎樣的職責?是否常常開會或加班?項目完成後有哪些收穫或是經驗教訓?

6、項目中最困難的部分是什麼?如何解決團隊開發時遇到的各類衝突?

7、面試時能夠反問面試官的問題

1、我注意到大家使用了X技術,請問大家是如何解決Y問題的?

2、爲何大家的產品使用了X技術而不是Y技術?據我所知,X技術雖然有ABC等好處,但也存在DE問題,而Y技術能夠解決DE問題。

3、我對您說的X技術不是太熟悉,但我感受它是一個不錯的解決方案,您能多講講它的工做原理嗎?

4、大家團隊是如何進行項目規劃的?一週會有幾回例會?每週的代碼量大概是多少?

5、就X問題我能想到的解決方案目前就只有Y了,請問您會怎麼解決這個問題?

8、S.A.R.法則

S.A.R法則是指先描述問題的場景,而後解釋你採起的行動,最後陳述結果。

9、面談原則

1、聲音適中、口齒清楚、面帶微笑、我的形象精神,講禮貌。

2、主動跟面試官聊他感興趣的話題,讓面試官滿意。

3、主動的大膽的跟面試官聊本身熟悉有經驗的內容:項目、技術點等,作到揚長避短。

4、必定要表達本身很是想獲得這個崗位,本身很願意學習不懂的技術。

5、根據本身的實際水平提出合理的待遇要求。

10、自我評價

1、學習能力(搞IT行業的人須要不斷的瞭解新的技術、工具和方法)

2、團隊意識(相比我的英雄主義,IT行業更倡導團隊合做)

3、抗壓能力(不少IT企業的工做強度相對來講仍是比較大的)

相關文章
相關標籤/搜索