北京pk10双面盘单双 北京赛车即时开奖结果 北京pk106码计划 北京pk10稳赚教学视频 北京赛车学院一年多少钱 高清北京pk10开奖视频 pk10历史开奖记录查询 北京赛车有什么规律看 北京pk10赛车稳赚人工计划 玩北京赛车输了十几万 北京pk10冠军走势图彩票控 北京赛车投注方法 北京pk10什么时候停售 pk10教程视频 pk10有赢钱的方法吗

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進行事務、日志、安全性等的管理,有使用SpringMVC作為表示層技術以及使用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程序員的公司,找到他們的官方網站了解他們做的項目,查看項目的詳細介紹,然后嘗試完成其中一部分功能,最好請教一下高人看看自己的設計和代碼是否恰當,這樣相當于積累了一定的項目經驗。

其他

常見錯誤

  1. 只在計算機上練習

  2. 不做行為面試題演練

  3. 不做模擬面試訓練

  4. 試圖死記硬背答案

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

  6. 代碼不夠嚴謹

  7. 不寫測試代碼

  8. 輕言放棄

面試時可以反問面試官的問題

  1. 我注意到你們使用了X技術,請問你們是如何解決Y問題的?

  2. 為什么你們的產品使用了X技術而不是Y技術?據我所知,X技術雖然有A、B、C等好處,但也存在D和E問題,而Y技術可以解決D和E問題。

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

  4. 你們團隊是如何進行項目規劃的?一周會有幾次例會?每周的代碼量大概是多少?

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

S.A.R.法則

S.A.R法則是指先描述問題的場景,然后解釋你采取的行動,最后陳述結果。

算法題的五種解法

  1.舉例法:通過舉例子發現其中的一般規則。

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

   2.模式匹配法

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

   3.簡化推廣法

說明:簡化問題規模和數據類型,然后再發現通用的解法。

   4.簡單構造法

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

   5.數據結構頭腦風暴法

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


錄用談判

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

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

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

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

我評價

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

  2. 團隊意識(相比個人英雄主義,IT行業更倡導團隊合作)

  3. 抗壓能力(很多IT企業的工作強度相對來說還是比較大的)

北京pk10一码计划软件
北京pk10双面盘单双 北京赛车即时开奖结果 北京pk106码计划 北京pk10稳赚教学视频 北京赛车学院一年多少钱 高清北京pk10开奖视频 pk10历史开奖记录查询 北京赛车有什么规律看 北京pk10赛车稳赚人工计划 玩北京赛车输了十几万 北京pk10冠军走势图彩票控 北京赛车投注方法 北京pk10什么时候停售 pk10教程视频 pk10有赢钱的方法吗
明年好小本赚钱 新水浒q传副本赚钱法 抢彩票软件 mg电子游艺在线 17140期双色球号码预测 九州娱乐城 我赚钱啦赚钱动画 杭州麻将单机app 7m美式足球比分即时比分