目錄
專業技能
專案經驗
專案介紹
專案開發流程
專案管理
系統架構
第三方工具(外掛程式)應用程式
面試提問
面試題
其他
常見錯誤
錄用協商
#自我評價
首頁 Java java教程 Java程式設計師需要具備哪些專業技能?

Java程式設計師需要具備哪些專業技能?

Jun 27, 2017 am 09:16 AM
java

 想要成為合格的Java程式設計師或工程師到底需要具備哪些專業技能,面試者在面試前到底需要準備哪些東西呢?本文陳列的這些內容既可以作為個人簡歷中的內容,也可以作為面試的時候跟面試官聊的東西,你可以把這些內容寫到你的簡歷中,當然更需要的是你在面試的時候向面試官展現這些專業技能。相信此文對正在尋找Java程式設計師(Java工程師)職位的freshman以及希望成為中高階Java開發者的junior都會有所幫助。

專業技能

  1. 熟練的使用Java語言進行物件導向程式設計,有良好的程式設計習慣,熟悉常用的Java API,包括集合框架、多執行緒(並發程式設計)、I/O(NIO)、Socket、JDBC、XML、反射等。

  2. 熟悉基於JSP和Servlet的Java Web開發,對Servlet和JSP的工作原理和生命週期有深入了解,熟練的使用JSTL和EL編寫無腳本動態頁面,有使用監聽器、過濾器等Web元件以及MVC架構模式進行Java Web專案開發的經驗。

  3. 對Spring的IoC容器和AOP原理有深入了解,熟練的運用Spring框架管理各種Web元件及其依賴關係,熟練的使用Spring進行事務、日誌、安全性等的管理,有使用Spring MVC作為表示層技術以及使用Spring提供的持久化支持進行Web專案開發的經驗,熟悉Spring對其他框架的整合。

  4. 熟練的使用Hibernate、MyBatis等ORM框架,熟悉Hibernate和MyBatis的核心API,對Hibernate的關聯映射、繼承映射、組件映射、緩存機制、事務管理以及性能調優等有深入的理解。

  5. 熟練的使用HTML、CSS和JavaScript進行Web前端開發,熟悉jQuery和Bootstrap,對Ajax技術在Web專案中的應用有深入理解,有使用前端MVC框架(AngularJS )和JavaScript模板引擎(HandleBars)進行專案開發的經驗。

  6. 熟悉常用的關聯式資料庫產品(MySQL、Oracle),熟練的使用SQL和PL/SQL進行資料庫程式設計。

  7. 熟悉物件導向的設計原則,對GoF設計模式和企業應用架構模式有深入的了解和實際開發的相關經驗,熟練的使用UML進行物件導向的分析和設計,有TDD(測試驅動開發)和DDD(領域驅動設計)的經驗。

  8. 熟悉Apache、NginX、Tomcat、WildFly、Weblogic等Web伺服器和應用伺服器的使用,熟悉多種伺服器整合、叢集和負載平衡的配置。

  9. 熟練的使用產品原型工具Axure,熟練的使用設計建模工具PowerDesigner和Enterprise Architect,熟練的使用Java開發環境Eclipse和IntelliJ,熟練的使用前端開發環境WebStorm,熟練的使用軟體版本控制工具SVN和Git,熟練的使用專案建置和管理工具Maven和Gradle。

說明:上面羅列的這些東西並不是每一項你都要爛熟於心,根據企業招聘的具體要求可以做相應的有針對性的準備。我個人覺得前6項應該是最低要求,是身為一個Java開發者必須要具備的專業技能。

專案經驗

專案介紹

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

說明:上面的描述中,E通常指Spring(Java企業級開發的一站式選擇);F最有可能是jQuery庫及其外掛或是Bootstrap框架,當然如果要建立單頁應用(SPA)最佳的方案是前端MVC框架(如AngularJS)和JavaScript模板引擎(如HandleBars);G顯然是MVC(模型-視圖-控制),最有可能的實現框架是Spring MVC,除此之外還有Struts 2、JSF以及Apache為JSF提供的MyFaces實現,可以使用JSP作為MVC中的V,也可使用模板引擎(如Freemarker和Velocity)來產生視圖,還可以是各種文件或報表(如Excel和PDF等),而Servlet和自訂的控制器是MVC中的C,當然Spring MVC中提供了作為前端控制器的DispatcherServlet;J通常是事務腳本,K應該是AOP(面向切面程式設計)技術​​,L目前廣泛使用的有memcached和Redis;M的選擇方案很多,最有可能的是Hibernate和MyBatis,也可以兩種技術同時運用,但通常是將增刪改交給Hibernate來處理,而複雜的查詢則由MyBatis完成,此外TopLink、jOOQ也是優秀的持久層解決方案;底層的資料存取傳統上是使用關係型資料庫,可以是MySQL、Oracle、SQLServer、DB2等,隨著大數據時代的來臨,也可以採用NoSQL(如MongoDB、MemBase、BigTable等)和其他大數據存取方案(如GFS、HDFS等);專案的開發模型P可以是瀑布模型、快速原型模型、增量模型、螺旋模型、噴泉模型、RAD模型等。

專案開發流程

  1. 可行性分析>>> 可行性分析報告/ 專案開發計畫書

  2. 需求分析>>> 需求規格說明書

  • #OOAD(使用案例圖、時序圖、活動圖)

  • 介面原型:幫助理解需求、業務層設計時推導交易腳本

  • #設計>>> 摘要設計說明書/詳細設計說明書

    • 擷取業務實體(領域物件):類別圖、E-R圖(概念設計階段)

    • 分層架構:確定各層的技術實現方案(具體到使用的框架、資料庫伺服器、應用程式伺服器等)。業務層設計:事務腳本模式(事務:使用者傳送一次請求就是一個事務;腳本:一個方法或一個函數;事務腳本:把一次請求封裝為一個方法或一個函數;事務腳本模式:一個事務開始於腳本的打開,終止於腳本的關閉)。業務層涉及的物件有三種類型:事務腳本類別(封裝了業務的流程)、資料存取物件(DAO,封裝了持久化操作)、資料傳輸物件(DTO,封裝了失血/貧血領域物件),三者之間的關係是交易腳本類別組合(聚合)資料存取對象,這二者都依賴了資料傳輸對象

    • 正向工程(UML類別圖產生Java程式碼)和逆向工程(Java程式碼產生UML類別圖)

    • 資料庫物理設計(ER圖轉換成表間關係圖、建庫與建表、使用工具插入測試資料)

  • 編碼

  • #測試>>> 測試報告/ 缺陷報告

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

    • 整合測試:整合測試也叫組裝測試或聯合測試。在單元測試的基礎上,將所有模組依照設計要求組裝成為子系統進行測試。

    • 系統測試:將已經確認的軟體、硬體、週邊、網路等元素結合在一起,進行資訊系統的各種組裝測試和確認測試,系統測試是針對整個產品系統進行的測試,目的是驗證系統是否滿足了需求規格的定義,找出與需求規格不符或與之矛盾的地方,從而提出更完善的方案。

    • 驗收測試:在軟體產品完成了單元測試、整合測試和系統測試之後,產品發布之前所進行的軟體測試活動。它是技術測試的最後一個階段,也稱為交付測試。驗收測試的目的是確保軟體準備就緒,並且可以讓最終用戶將其用於執行軟體的既定功能和任務。

  • 交付與維護>>> 使用手冊/ 操作手冊

  • 專案管理

    • 版本控制:CVS/SVN/Git

    • #自動建置:Ant/Maven/Ivy/Gradle

    • #持續整合:Hudson/Jenkins

    系統架構

    • #負載平衡伺服器:F5、A10

    • 應用程式伺服器:

      • HTTP伺服器:Apache、NginX(HTTP、反向代理、郵件代理伺服器)

      • Servlet容器:Tomcat、Resin

      • EJB容器:WildFly(JBoss Application Server)、GlassFish、Weblogic、Websphere

    • #資料庫伺服器:MySQL、Oracle

    第三方工具(外掛程式)應用程式

    • #圖表工具:基於jQuery的圖表外掛程式(如jQchart、Flot、Charted等)、 Chart.js、Highcharts等。

    • 報表工具:Pentaho Reporting、iReport、DynamicReports等。

    • 文件處理:POI、iText等。

    • 工作流引擎:jBPM、OpenWFE、Snaker、SWAMP等。

    • 作業排程:Quartz、JobServer、Oddjob等。

    • 快取服務:EhCache、memcached、SwarmCache等。

    • 訊息佇列:Open-MQ、ZeroMQ等。

    • 安全框架:Shiro、PicketBox等。

    • 搜尋引擎:IndexTank、Lucene、ElasticSearch等。

    • Ajax框架:jQuery、ExtJS、DWR等。

    • UI外掛:EasyUI、MiniUI等。

    • 富文本方塊:UEditor、CKEditor等。

    面試提問

    • #專案是為哪個公司開發的?專案的投入是多少?

    • 有多少人參與了專案開發?整個團隊中,測試人員、開發人員、專案經理比例是多少?

    • 專案開發了多久?專案總的程式碼量有多少?你的程式碼量有多少?

    • 專案採用了怎樣的開發模型或開發流程?專案的架構是怎樣的?專案的技術選型是怎樣的?

    • 你在專案中承擔了怎樣的責任?是否經常開會或加班?專案完成後有哪些收穫或是經驗教訓?

    • 專案中最困難的部分是什麼?如何解決團隊開發時所遇到的各種衝突?

    說明:對於沒有實際專案經驗的,可以在前程無憂、智聯招募、拉勾網等網站上搜尋招募Java程式設計師的公司,找到他們的官方網站了解他們所做的項目,查看項目的詳細介紹,然後嘗試完成其中一部分功能,最好請教一下高人看看自己的設計和代碼是否恰當,這樣相當於積累了一定的專案經驗。

    面試題

      Java常見的面試題目已經總結成《Java面試題集》、《Java面試題全集》以及《面試程式設計題拾遺》等文章陸續發佈在我的博客,各大公司的面試題我會繼續整理發布。

    其他

    常見錯誤

    1. #只在電腦上練習

    2. 不做行為面試題演練

    3. 不做模擬面試訓練

    4. #試著死記硬背答案

    5. 不大聲說出你的解題思路

    6. 代碼不夠嚴謹

    7. 不寫測試程式碼

    輕言放棄

    1. 面試時可以反問面試官的問題
    2. 我注意到你們使用了X技術,請問你們是如何解決Y問題的?
    3. 為什麼你們的產品使用了X技術而不是Y技術?據我所知,X技術雖然有A、B、C等好處,但也有D和E問題,而Y技術可以解決D和E問題。
    4. 我對您說的X技術不是太熟悉,但我感覺它是一個不錯的解決方案,您能多講講它的工作原理嗎?
    5. 你們團隊是如何進行專案規劃的?一週會有幾次例會?每週的程式碼量大概是多少?

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

    S.A.R.法則

        S.A.R法則是指先描述問題的場景,然後解釋你採取的行動,最後陳述結果。
    1. 演算法題的五種解法

      舉例法:透過舉例發現其中的一般規則。
    2. 範例:

      圓內接三角形是銳角三角形的機率是多少?這是搜狗的一個面試題,可以在圓上隨意畫三個點連接成三角形就可以知道答案了。

      模式匹配法
    3. 範例:

      一個有序數組的元素經過循環移動,元素的順序變成"3 4 5 6 1 2"。怎麼找到數組中最小的那個元素,假設數組中的元素各不相同。這個題目和折半查找看起來是那麼相似,因此可以藉鏡折半查找的演算法,最小元素顯然出現在"mid > right"的轉折點。

      簡化推廣法############說明:###簡化問題規模和資料類型,然後再發現通用的解法。 ###
    4. 簡單建構法

       

      #範例:找出"abcde"的所有可能的排列組合。先考慮只有"a"的情況,再考慮"ab"的情況,以此類推。最終你可能會得到一個遞歸公式。這種方法往往演變成遞歸法。

    5. 資料結構腦力激盪法

      #範例:隨機產生一些數字,並找出其中位數。這種問題可以在腦中將你了解的資料結構過一遍,看看哪一個是最適合的資料結構。上面的題目可以建立兩個堆,一個大根堆和一個小根堆,較小的元素放在大根堆,較大的元素放在小根堆,如果兩個堆不平衡,可以從其中一個堆取出元素放入另一個堆即可。最後中位數應該是兩個堆的根之一。

    錄用協商

    1. #要理直氣壯的提出具體的待遇要求

    2. 開出比預期稍高的價碼

    3. 不要只盯著薪水(很多公司更願意就薪水之外的條件做出讓步)

    4. #使用最合適的方法(可以嘗試在電話或E-mail中談判待遇)

    #自我評價

    #學習能力(搞IT產業的人需要不斷的了解新的技術、工具和方法)

    團隊意識(比起個人英雄主義,IT產業更倡議團隊合作)

    抗壓能力(許多IT企業的工作強度相對來說還是比較大的)############### ######學習Java的同學注意了! ! ! ############

    以上是Java程式設計師需要具備哪些專業技能?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

    本網站聲明
    本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

    熱AI工具

    Undresser.AI Undress

    Undresser.AI Undress

    人工智慧驅動的應用程序,用於創建逼真的裸體照片

    AI Clothes Remover

    AI Clothes Remover

    用於從照片中去除衣服的線上人工智慧工具。

    Undress AI Tool

    Undress AI Tool

    免費脫衣圖片

    Clothoff.io

    Clothoff.io

    AI脫衣器

    Video Face Swap

    Video Face Swap

    使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

    熱門文章

    <🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
    3 週前 By 尊渡假赌尊渡假赌尊渡假赌
    北端:融合系統,解釋
    3 週前 By 尊渡假赌尊渡假赌尊渡假赌
    Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
    3 週前 By 尊渡假赌尊渡假赌尊渡假赌

    熱工具

    記事本++7.3.1

    記事本++7.3.1

    好用且免費的程式碼編輯器

    SublimeText3漢化版

    SublimeText3漢化版

    中文版,非常好用

    禪工作室 13.0.1

    禪工作室 13.0.1

    強大的PHP整合開發環境

    Dreamweaver CS6

    Dreamweaver CS6

    視覺化網頁開發工具

    SublimeText3 Mac版

    SublimeText3 Mac版

    神級程式碼編輯軟體(SublimeText3)

    熱門話題

    Java教學
    1665
    14
    CakePHP 教程
    1424
    52
    Laravel 教程
    1322
    25
    PHP教程
    1270
    29
    C# 教程
    1249
    24
    突破或從Java 8流返回? 突破或從Java 8流返回? Feb 07, 2025 pm 12:09 PM

    Java 8引入了Stream API,提供了一種強大且表達力豐富的處理數據集合的方式。然而,使用Stream時,一個常見問題是:如何從forEach操作中中斷或返回? 傳統循環允許提前中斷或返回,但Stream的forEach方法並不直接支持這種方式。本文將解釋原因,並探討在Stream處理系統中實現提前終止的替代方法。 延伸閱讀: Java Stream API改進 理解Stream forEach forEach方法是一個終端操作,它對Stream中的每個元素執行一個操作。它的設計意圖是處

    PHP:網絡開發的關鍵語言 PHP:網絡開發的關鍵語言 Apr 13, 2025 am 12:08 AM

    PHP是一種廣泛應用於服務器端的腳本語言,特別適合web開發。 1.PHP可以嵌入HTML,處理HTTP請求和響應,支持多種數據庫。 2.PHP用於生成動態網頁內容,處理表單數據,訪問數據庫等,具有強大的社區支持和開源資源。 3.PHP是解釋型語言,執行過程包括詞法分析、語法分析、編譯和執行。 4.PHP可以與MySQL結合用於用戶註冊系統等高級應用。 5.調試PHP時,可使用error_reporting()和var_dump()等函數。 6.優化PHP代碼可通過緩存機制、優化數據庫查詢和使用內置函數。 7

    PHP與Python:了解差異 PHP與Python:了解差異 Apr 11, 2025 am 12:15 AM

    PHP和Python各有優勢,選擇應基於項目需求。 1.PHP適合web開發,語法簡單,執行效率高。 2.Python適用於數據科學和機器學習,語法簡潔,庫豐富。

    PHP與其他語言:比較 PHP與其他語言:比較 Apr 13, 2025 am 12:19 AM

    PHP適合web開發,特別是在快速開發和處理動態內容方面表現出色,但不擅長數據科學和企業級應用。與Python相比,PHP在web開發中更具優勢,但在數據科學領域不如Python;與Java相比,PHP在企業級應用中表現較差,但在web開發中更靈活;與JavaScript相比,PHP在後端開發中更簡潔,但在前端開發中不如JavaScript。

    PHP與Python:核心功能 PHP與Python:核心功能 Apr 13, 2025 am 12:16 AM

    PHP和Python各有優勢,適合不同場景。 1.PHP適用於web開發,提供內置web服務器和豐富函數庫。 2.Python適合數據科學和機器學習,語法簡潔且有強大標準庫。選擇時應根據項目需求決定。

    PHP的影響:網絡開發及以後 PHP的影響:網絡開發及以後 Apr 18, 2025 am 12:10 AM

    PHPhassignificantlyimpactedwebdevelopmentandextendsbeyondit.1)ItpowersmajorplatformslikeWordPressandexcelsindatabaseinteractions.2)PHP'sadaptabilityallowsittoscaleforlargeapplicationsusingframeworkslikeLaravel.3)Beyondweb,PHPisusedincommand-linescrip

    PHP:許多網站的基礎 PHP:許多網站的基礎 Apr 13, 2025 am 12:07 AM

    PHP成為許多網站首選技術棧的原因包括其易用性、強大社區支持和廣泛應用。 1)易於學習和使用,適合初學者。 2)擁有龐大的開發者社區,資源豐富。 3)廣泛應用於WordPress、Drupal等平台。 4)與Web服務器緊密集成,簡化開發部署。

    PHP與Python:用例和應用程序 PHP與Python:用例和應用程序 Apr 17, 2025 am 12:23 AM

    PHP適用於Web開發和內容管理系統,Python適合數據科學、機器學習和自動化腳本。 1.PHP在構建快速、可擴展的網站和應用程序方面表現出色,常用於WordPress等CMS。 2.Python在數據科學和機器學習領域表現卓越,擁有豐富的庫如NumPy和TensorFlow。

    See all articles