1. 程式人生 > >月薪30KJava大牛整理了最新Java學習思維導圖,看完茅塞頓開

月薪30KJava大牛整理了最新Java學習思維導圖,看完茅塞頓開

面向 繼承 cached 相對 開發者 規模 所有 git abc

文章最後有面試題福利!記得看一下哦~

想要成為合格的Java程序員或工程師到底需要具備哪些專業技能,面試者在面試之前到底需要準備哪些東西呢?

本文陳列的這些內容既可以作為個人簡歷中的內容,也可以作為面試的時候跟面試官聊的東西,你可以把這些內容寫到你的簡歷中,當然更需要的是你在面試的時候向面試官展示這些專業技能。

相信此文對正在尋覓Java程序員(Java工程師)職位的freshman以及希望成為中高級Java開發者的junior都會有所幫助。

專業技能

熟練的使用Java語言進行面向對象程序設計,有良好的編程習慣,熟悉常用的Java API,包括集合框架、多線程(並發編程)、I/O(NIO)、Socket、JDBC、XML、反射等。

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

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

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

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

熟悉常用的關系型數據庫產品(MySQL、Oracle),熟練的使用SQL和PL/SQL進行數據庫編程。

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

熟悉Apache、NginX、Tomcat、WildFly、Weblogic等Web服務器和應用服務器的使用,熟悉多種服務器整合、集群和負載均衡的配置。

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

第三方工具(插件)應用

圖表工具:基於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程序員的公司,找到他們的官方網站了解他們做的項目,查看項目的詳細介紹,然後嘗試完成其中一部分功能,最好請教一下高人看看自己的設計和代碼是否恰當,這樣相當於積累了一定的項目經驗。

常見錯誤

只在計算機上練習
不做行為面試題演練
不做模擬面試訓練
試圖死記硬背答案
不大聲說出你的解題思路
代碼不夠嚴謹
不寫測試代碼
輕言放棄

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

我註意到你們使用了X技術,請問你們是如何解決Y問題的?
為什麽你們的產品使用了X技術而不是Y技術?據我所知,X技術雖然有A、B、C等好處,但也存在D和E問題,而Y技術可以解決D和E問題。
我對您說的X技術不是太熟悉,但我感覺它是一個不錯的解決方案,您能多講講它的工作原理嗎?
你們團隊是如何進行項目規劃的?一周會有幾次例會?每周的代碼量大概是多少?
就X問題我能想到的解決方案目前就只有Y了,請問您會怎麽解決這個問題?

S.A.R.法則

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

算法題的五種解法

舉例法:通過舉例子發現其中的一般規則。
例子:圓內接三角形是銳角三角形的概率是多少?這是搜狗的一個面試題,可以在圓上隨意畫三個點連接成三角形就可以知道答案了。

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

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

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

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

錄用談判
要理直氣壯的提出具體的待遇要求
開出比預期稍高的價碼
不要只盯著薪水(很多公司更願意就薪水之外的條件做出讓步)
使用最合適的方法(可以嘗試在電話或E-mail中談判待遇)

自我評價
學習能力(搞IT行業的人需要不斷的了解新的技術、工具和方法)
團隊意識(相比個人英雄主義,IT行業更倡導團隊合作)
抗壓能力(很多IT企業的工作強度相對來說還是比較大的)

身為一名IT技術人員磨練自己的技術是必不可少的,歡迎加入QQ群:Java資料共享群(967051845),可以與大牛在線隨時討論自己感興趣的話題,讓自己用最少的時間學到最多的東西。

技術分享圖片

月薪30KJava大牛整理了最新Java學習思維導圖,看完茅塞頓開