Java是一種可以撰寫跨平臺(tái)應(yīng)用軟件的面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言。Java 技術(shù)具有卓越的通用性崖技、高效性逻住、平臺(tái)移植性和安全性钟哥,廣泛應(yīng)用于PC、數(shù)據(jù)中心鄙信、游戲控制臺(tái)瞪醋、科學(xué)超級(jí)計(jì)算機(jī)、移動(dòng)電話和互聯(lián)網(wǎng)装诡,同時(shí)擁有全球最大的開發(fā)者專業(yè)社群银受。
給你Java學(xué)習(xí)路線:html-css-js-jq-javase-數(shù)據(jù)庫(kù)-jsp-servlet-Struts2-hibernate-mybatis-spring4-springmvc-ssh-ssm
想要成為合格的Java程序員或工程師到底需要具備哪些專業(yè)技能,在面試之前到底需要準(zhǔn)備哪些東西呢鸦采?面試時(shí)面試官想了解你的什么專業(yè)技能宾巍,以下曉曉介紹的都是一個(gè)合格Java軟件工程師所要具備的。
java
一渔伯、專業(yè)技能
熟練的使用Java語(yǔ)言進(jìn)行面向?qū)ο蟪绦蛟O(shè)計(jì)顶霞,有良好的編程習(xí)慣,熟悉常用的JavaAPI锣吼,包括集合框架选浑、多線程(并發(fā)編程)、I/O(NIO)玄叠、Socket古徒、JDBC、XML读恃、反射等隧膘。
熟悉基于JSP和Servlet的JavaWeb開發(fā),對(duì)Servlet和JSP的工作原理和生命周期有深入了解寺惫,熟練的使用JSTL和EL編寫無(wú)腳本動(dòng)態(tài)頁(yè)面疹吃,有使用監(jiān)聽器、過(guò)濾器等Web組件以及MVC架構(gòu)模式進(jìn)行JavaWeb項(xiàng)目開發(fā)經(jīng)驗(yàn)西雀。
對(duì)Spring的IoC容器和AOP原理有深入了解萨驶,熟練的運(yùn)用Spring框架管理各種Web組件及其依賴關(guān)系,熟練的使用Spring進(jìn)行事務(wù)蒋搜、日志篡撵、安全性等的管理,有使用SpringMVC作為表示層技術(shù)以及使用Spring提供的持久化支持進(jìn)行Web項(xiàng)目開發(fā)的經(jīng)驗(yàn)豆挽,熟悉Spring對(duì)其他框架的整合育谬。
熟練的使用Hibernate、MyBatis等ORM框架帮哈,熟悉Hibernate和MyBatis的核心API膛檀,對(duì)Hibernate的關(guān)聯(lián)映射、繼承映射、組件映射咖刃、緩存機(jī)制泳炉、事務(wù)管理以及性能調(diào)優(yōu)等有深入的理解。
熟練的使用HTML嚎杨、CSS和JavaScript進(jìn)行Web前端開發(fā)花鹅,熟悉jQuery和Bootstrap,對(duì)Ajax技術(shù)在Web項(xiàng)目中的應(yīng)用有深入理解枫浙,有使用前端MVC框架(AngularJS)和JavaScript模板引擎(HandleBars)進(jìn)行項(xiàng)目開發(fā)的經(jīng)驗(yàn)刨肃。
熟悉常用的關(guān)系型數(shù)據(jù)庫(kù)產(chǎn)品(MySQL、Oracle)箩帚,熟練的使用SQL和PL/SQL進(jìn)行數(shù)據(jù)庫(kù)編程真友。
熟悉面向?qū)ο蟮脑O(shè)計(jì)原則,對(duì)GoF設(shè)計(jì)模式和企業(yè)應(yīng)用架構(gòu)模式有深入的了解和實(shí)際開發(fā)的相關(guān)經(jīng)驗(yàn)紧帕,熟練的使用UML進(jìn)行面向?qū)ο蟮姆治龊驮O(shè)計(jì)盔然,有TDD(測(cè)試驅(qū)動(dòng)開發(fā))和DDD(領(lǐng)域驅(qū)動(dòng)設(shè)計(jì))的經(jīng)驗(yàn)。
熟悉Apache是嗜、NginX愈案、Tomcat、WildFly鹅搪、Weblogic等Web服務(wù)器和應(yīng)用服務(wù)器的使用刻帚,熟悉多種服務(wù)器整合、集群和負(fù)載均衡的配置涩嚣。
熟練的使用產(chǎn)品原型工具Axure,熟練的使用設(shè)計(jì)建模工具PowerDesigner和Enterprise Architect掂僵,熟練的使用Java開發(fā)環(huán)境Eclipse和IntelliJ航厚,熟練的使用前端開發(fā)環(huán)境WebStorm,熟練的使用軟件版本控制工具SVN和Git锰蓬,熟練的使用項(xiàng)目構(gòu)建和管理工具M(jìn)aven和Gradle幔睬。
說(shuō)明:
上面羅列的這些東西并不是每一項(xiàng)你都要爛熟于心,根據(jù)企業(yè)招聘的具體要求可以做相應(yīng)的有針對(duì)性的準(zhǔn)備芹扭。但是前6項(xiàng)應(yīng)該是最低要求麻顶,是作為一個(gè)Java軟件工程師必須要具備的專業(yè)技能。
小編推薦一個(gè)學(xué)Java的學(xué)習(xí)裙【 六五零舱卡,五五四辅肾,六零七 】,無(wú)論你是大牛還是小白轮锥,是想轉(zhuǎn)行還是想入行都可以來(lái)了解一起進(jìn)步一起學(xué)習(xí)矫钓!裙內(nèi)有開發(fā)工具,很多干貨和技術(shù)資料分享!
java
二新娜、項(xiàng)目經(jīng)驗(yàn)
1.項(xiàng)目介紹
本系統(tǒng)是X委托Y開發(fā)的用于Z的系統(tǒng)赵辕,系統(tǒng)包括A、B概龄、C还惠、D等模塊。系統(tǒng)使用了Java企業(yè)級(jí)開發(fā)的開源框架E以及前端技術(shù)F私杜。表示層運(yùn)用了G架構(gòu)蚕键,使用H作為視圖I作為控制器并實(shí)現(xiàn)了REST風(fēng)格的請(qǐng)求;業(yè)務(wù)邏輯層運(yùn)用了J模式歪今,并通過(guò)K實(shí)現(xiàn)事務(wù)嚎幸、日志和安全性等功能,通過(guò)L實(shí)現(xiàn)緩存服務(wù)寄猩;持久層使用了M封裝CRUD操作嫉晶,底層使用N實(shí)現(xiàn)數(shù)據(jù)存取。整個(gè)項(xiàng)目采用了P開發(fā)模型田篇。
說(shuō)明:
E通常指spring(Java企業(yè)級(jí)開發(fā)的一站式選擇)替废;
F最有可能是jQuery庫(kù)及其插件或者是Bootstrap框架,當(dāng)然如果要構(gòu)建單頁(yè)應(yīng)用(SPA)最佳的方案是前端MVC框架(如AngularJS)和JavaScript模板引擎(如HandleBars)泊柬;G顯然是MVC(模型-視圖-控制)椎镣,最有可能的實(shí)現(xiàn)框架是springMVC,除此之外還有Struts 2兽赁、JSF以及Apache為JSF提供的MyFaces實(shí)現(xiàn)状答;
H是JSP,JSP作為MVC中的V刀崖,也可使用模板引擎(如Freemarker和Velocity)來(lái)生成視圖還可以是各種文檔或報(bào)表(如Excel和PDF等)惊科;
I是Servlet或者自定義的控制器,他們是MVC中的C亮钦,當(dāng)然Spring MVC中提供了作為前端控制器的DispatcherServlet馆截;
J通常是事務(wù)腳本;
K應(yīng)該是AOP(面向切面編程)技術(shù)蜂莉;
L目前廣泛使用的有memcached和Redis蜡娶;
M的選擇方案很多,最有可能的是hibernate和MyBatis映穗,也可以兩種技術(shù)同時(shí)運(yùn)用窖张,但通常是將增刪改交給hibernate來(lái)處理,而復(fù)雜的查詢則由MyBatis完成男公,此外TopLink荤堪、jOOQ也是優(yōu)秀的持久層解決方案合陵;
N底層的數(shù)據(jù)存取傳統(tǒng)上是使用關(guān)系型數(shù)據(jù)庫(kù),可以是MySQL澄阳、Oracle拥知、SQLServer、DB2等碎赢,隨著大數(shù)據(jù)時(shí)代的來(lái)臨低剔,也可以采用NoSQL(如MongoDB、MemBase肮塞、BigTable等)和其他大數(shù)據(jù)存取方案(如GFS襟齿、HDFS等);
P是項(xiàng)目的開發(fā)模型枕赵,可以是瀑布模型猜欺、快速原型模型、增量模型拷窜、螺旋模型开皿、噴泉模型、RAD模型等篮昧。
java
2.項(xiàng)目開發(fā)流程
1赋荆、可行性分析:可行性分析報(bào)告、項(xiàng)目開發(fā)計(jì)劃書;
2懊昨、需求分析:需求規(guī)格說(shuō)明書OOAD(用例圖窄潭、時(shí)序圖、活動(dòng)圖);
界面原型:幫助理解需求酵颁、業(yè)務(wù)層設(shè)計(jì)時(shí)推導(dǎo)事務(wù)腳本;
3嫉你、設(shè)計(jì):概要設(shè)計(jì)說(shuō)明書、詳細(xì)設(shè)計(jì)說(shuō)明書;
*抽取業(yè)務(wù)實(shí)體(領(lǐng)域?qū)ο螅侯悎D躏惋、E-R圖(概念設(shè)計(jì)階段);
分層架構(gòu):確定各層的技術(shù)實(shí)現(xiàn)方案(具體到使用的框架均抽、數(shù)據(jù)庫(kù)服務(wù)器、應(yīng)用服務(wù)器等);
*業(yè)務(wù)層設(shè)計(jì):事務(wù)腳本模式(事務(wù):用戶發(fā)送一次請(qǐng)求就是一個(gè)事務(wù)其掂;
腳本:一個(gè)方法或一個(gè)函數(shù);
*事務(wù)腳本:把一次請(qǐng)求封裝為一個(gè)方法或一個(gè)函數(shù)潦蝇;事務(wù)腳本模式:一個(gè)事務(wù)開始于腳本的打開款熬,終止于腳本的關(guān)閉);
*業(yè)務(wù)層涉及的對(duì)象有三種類型:事務(wù)腳本類(封裝了業(yè)務(wù)的流程)、數(shù)據(jù)訪問(wèn)對(duì)象(DAO攘乒,封裝了持久化操作)贤牛、數(shù)據(jù)傳輸對(duì)象(DTO,封裝了失血/貧血領(lǐng)域?qū)ο螅┰蛟停咧g的關(guān)系是事務(wù)腳本類組合(聚合)數(shù)據(jù)訪問(wèn)對(duì)象殉簸,這二者都依賴了數(shù)據(jù)傳輸對(duì)象正向工程(UML類圖生成Java代碼)和逆向工程(Java代碼生成UML類圖)數(shù)據(jù)庫(kù)物理設(shè)計(jì)(ER圖轉(zhuǎn)換成表間關(guān)系圖闰集、建庫(kù)和建表、使用工具插入測(cè)試數(shù)據(jù));
3般卑、編碼武鲁;
4、測(cè)試:測(cè)試報(bào)告蝠检、缺陷報(bào)告;
*單元測(cè)試:對(duì)軟件中的最小可測(cè)試單元進(jìn)行檢查和驗(yàn)證沐鼠,在Java中是對(duì)類中的方法進(jìn)行測(cè)試,可以使用JUnit工具來(lái)實(shí)施叹谁;
*集成測(cè)試:集成測(cè)試也叫組裝測(cè)試或聯(lián)合測(cè)試饲梭。在單元測(cè)試的基礎(chǔ)上,將所有模塊按照設(shè)計(jì)要求組裝成為子系統(tǒng)進(jìn)行測(cè)試焰檩;
*系統(tǒng)測(cè)試:將已經(jīng)確認(rèn)的軟件憔涉、硬件、外設(shè)析苫、網(wǎng)絡(luò)等元素結(jié)合在一起兜叨,進(jìn)行信息系統(tǒng)的各種組裝測(cè)試和確認(rèn)測(cè)試,系統(tǒng)測(cè)試是針對(duì)整個(gè)產(chǎn)品系統(tǒng)進(jìn)行的測(cè)試藤违,目的是驗(yàn)證系統(tǒng)是否滿足了需求規(guī)格的定義浪腐,找出與需求規(guī)格不符或與之矛盾的地方,從而提出更加完善的方案顿乒;
*驗(yàn)收測(cè)試:在軟件產(chǎn)品完成了單元測(cè)試议街、集成測(cè)試和系統(tǒng)測(cè)試之后,產(chǎn)品發(fā)布之前所進(jìn)行的軟件測(cè)試活動(dòng)璧榄。它是技術(shù)測(cè)試的最后一個(gè)階段特漩,也稱為交付測(cè)試。驗(yàn)收測(cè)試的目的是確保軟件準(zhǔn)備就緒骨杂,并且可以讓最終用戶將其用于執(zhí)行軟件的既定功能和任務(wù)涂身;
5、交付和維護(hù):用戶手冊(cè)搓蚪、操作手冊(cè)蛤售;
小編推薦一個(gè)學(xué)Java的學(xué)習(xí)裙【 六五零,五五四妒潭,六零七 】悴能,無(wú)論你是大牛還是小白,是想轉(zhuǎn)行還是想入行都可以來(lái)了解一起進(jìn)步一起學(xué)習(xí)雳灾!裙內(nèi)有開發(fā)工具漠酿,很多干貨和技術(shù)資料分享!
java
三谎亩、項(xiàng)目管理
版本控制:CVS/SVN/Git
自動(dòng)構(gòu)建:Ant/Maven/Ivy/Gradle
持續(xù)集成:Hudson/Jenkins
四炒嘲、系統(tǒng)架構(gòu)
負(fù)載均衡服務(wù)器:F5宇姚、A10;
應(yīng)用服務(wù)器: HTTP服務(wù)器:Apache夫凸、NginX(HTTP浑劳、反向代理、郵件代理服務(wù)器)寸痢;
Servlet容器:Tomcat呀洲、Resin
EJB容器:WildFly(JBoss Application Server)、GlassFish啼止、Weblogic道逗、Websphere;
數(shù)據(jù)庫(kù)服務(wù)器:MySQL献烦、Eclipse滓窍、Oracle;
五巩那、第三方工具(插件)應(yīng)用
圖表工具:基于jQuery的圖表插件(如jQchart吏夯、Flot、Charted等)即横、Chart.js噪生、Highcharts等。
報(bào)表工具:Pentaho Reporting东囚、iReport跺嗽、DynamicReports等。
文檔處理:POI页藻、iText等桨嫁。
工作流引擎:jBPM、OpenWFE份帐、Snaker璃吧、SWAMP等。
作業(yè)調(diào)度:Quartz废境、JobServer畜挨、Oddjob等。
緩存服務(wù):EhCache噩凹、memcached朦促、SwarmCache等。
消息隊(duì)列:Open-MQ栓始、ZeroMQ、ActiveMQ等血当。
安全框架:Shiro幻赚、PicketBox等禀忆。
搜索引擎:IndexTank、Lucene落恼、ElasticSearch等箩退。
Ajax框架:jQuery、ExtJS佳谦、DWR等戴涝。
UI插件:EasyUI、MiniUI等钻蔑。
富文本框:UEditor啥刻、CKEditor等。
六咪笑、面試提問(wèn)
項(xiàng)目是為哪個(gè)公司開發(fā)的可帽?項(xiàng)目的投入是多少?
有多少人參與了項(xiàng)目開發(fā)窗怒?整個(gè)團(tuán)隊(duì)中映跟,測(cè)試人員、開發(fā)人員扬虚、項(xiàng)目經(jīng)理比例是多少努隙?
項(xiàng)目開發(fā)了多長(zhǎng)時(shí)間?項(xiàng)目總的代碼量有多少辜昵?你的代碼量有多少荸镊?
項(xiàng)目采用了怎樣的開發(fā)模型或開發(fā)流程?項(xiàng)目的架構(gòu)是怎樣的路鹰?項(xiàng)目的技術(shù)選型是怎樣的贷洲?
你在項(xiàng)目中擔(dān)了怎樣的職責(zé)?是否經(jīng)常開會(huì)或加班晋柱?項(xiàng)目完成后有哪些收獲或是經(jīng)驗(yàn)教訓(xùn)优构?
項(xiàng)目中最困難的部分是什么?如何解決團(tuán)隊(duì)開發(fā)時(shí)遇到的各種沖突雁竞?
小編推薦一個(gè)學(xué)Java的學(xué)習(xí)裙【 六五零钦椭,五五四,六零七 】碑诉,無(wú)論你是大牛還是小白彪腔,是想轉(zhuǎn)行還是想入行都可以來(lái)了解一起進(jìn)步一起學(xué)習(xí)!裙內(nèi)有開發(fā)工具进栽,很多干貨和技術(shù)資料分享德挣!
java
七、面試時(shí)可以反問(wèn)面試官的問(wèn)題
我注意到你們使用了X技術(shù)快毛,請(qǐng)問(wèn)你們是如何解決Y問(wèn)題的格嗅?
為什么你們的產(chǎn)品使用了X技術(shù)而不是Y技術(shù)番挺?據(jù)我所知,X技術(shù)雖然有A屯掖、B玄柏、C等好處,但也存在D和E問(wèn)題贴铜,而Y技術(shù)可以解決D和E問(wèn)題粪摘。
我對(duì)您說(shuō)的X技術(shù)不是太熟悉,但我感覺(jué)它是一個(gè)不錯(cuò)的解決方案绍坝,您能多講講它的工作原理嗎徘意?
你們團(tuán)隊(duì)是如何進(jìn)行項(xiàng)目規(guī)劃的?一周會(huì)有幾次例會(huì)陷嘴?每周的代碼量大概是多少映砖?
就X問(wèn)題我能想到的解決方案目前就只有Y了,請(qǐng)問(wèn)您會(huì)怎么解決這個(gè)問(wèn)題灾挨?
八邑退、S.A.R.法則
S.A.R法則是指先描述問(wèn)題的場(chǎng)景,然后解釋你采取的行動(dòng)劳澄,最后陳述結(jié)果地技。
九、面談原則
聲音適中秒拔、口齒清楚莫矗、面帶微笑、個(gè)人形象精神砂缩,講禮貌作谚。
主動(dòng)跟面試官聊他感興趣的話題,讓面試官滿意庵芭。
主動(dòng)的大膽的跟面試官聊自己熟悉有經(jīng)驗(yàn)的內(nèi)容:項(xiàng)目妹懒、技術(shù)點(diǎn)等,做到揚(yáng)長(zhǎng)避短双吆。
一定要表達(dá)自己非常想得到這個(gè)崗位眨唬,自己很愿意學(xué)習(xí)不懂的技術(shù)。
根據(jù)自己的實(shí)際水平提出合理的待遇要求好乐。
十匾竿、自我評(píng)價(jià)
學(xué)習(xí)能力(搞IT行業(yè)的人需要不斷的了解新的技術(shù)、工具和方法)
團(tuán)隊(duì)意識(shí)(相比個(gè)人英雄主義蔚万,IT行業(yè)更倡導(dǎo)團(tuán)隊(duì)合作)
抗壓能力(很多IT企業(yè)的工作強(qiáng)度相對(duì)來(lái)說(shuō)還是比較大的)