JAVA开发工程师项目面试名企重点攻略详解

想要成为合格的Java程序员或工程师到底需要具备哪些专业技能在面试之前到底需要准备哪些东西呢面试时面试官想了解你的什么专业技能以下都是一个合格Java软件工程师所要具备的

专业技能

1. 熟练的使用Java语言进行面向对象程序设计有良好的编程习惯熟悉常用的JavaAPI,包括集合框架多线程并发编程)、I/O(NIO)、Socket、JDBC、XML、反射等

2. 熟悉基于JSPServletJavaWeb开发ServletJSP的工作原理和生命周期有深入了解熟练的使用JSTLEL编写无脚本动态页面有使用监听器过滤器等Web组件以及MVC架构模式进行JavaWeb项目开发经验

3. SpringIoC容器和AOP原理有深入了解熟练的运用Spring框架管理各种Web组件及其依赖关系熟练的使用Spring进行事务日志安全性等的管理有使用SpringMVC作为表示层技术以及使用Spring提供的持久化支持进行Web项目开发的经验熟悉Spring对其他框架的整合

4. 熟练的使用Hibernate、MyBatisORM框架熟悉HibernateMyBatis的核心API,Hibernate的关联映射继承映射组件映射缓存机制事务管理以及性能调优等有深入的理解

5. 熟练的使用HTML、CSSJavaScript进行Web前端开发熟悉jQueryBootstrap,Ajax技术在Web项目中的应用有深入理解有使用前端MVC框架(AngularJS)JavaScript模板引擎(HandleBars)进行项目开发的经验

6. 熟悉常用的关系型数据库产品(MySQL、Oracle),熟练的使用SQLPL/SQL进行数据库编程

7. 熟悉面向对象的设计原则GoF设计模式和企业应用架构模式有深入的了解和实际开发的相关经验熟练的使用UML进行面向对象的分析和设计TDD(测试驱动开发DDD(领域驱动设计的经验

8. 熟悉Apache、NginX、Tomcat、WildFly、WeblogicWeb服务器和应用服务器的使用熟悉多种服务器整合集群和负载均衡的配置

9. 熟练的使用产品原型工具Axure,熟练的使用设计建模工具PowerDesignerEnterprise Architect,熟练的使用Java开发环境EclipseIntelliJ,熟练的使用前端开发环境WebStorm,熟练的使用软件版本控制工具SVNGit,熟练的使用项目构建和管理工具MavenGradle。

说明 
上面罗列的这些东西并不是每一项你都要烂熟于心根据企业招聘的具体要求可以做相应的有针对性的准备但是前6项应该是最低要求是作为一个Java软件工程师必须要具备的专业技能

项目经验

1. 项目介绍 


本系统是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,除此之外还有Strut

 

2、JSF以及ApacheJSF提供的MyFaces实现 


HJSP,JSP作为MVC中的V,也可使用模板引擎FreemarkerVelocity)来生成视图还可以是各种文档或报表ExcelPDF); 
IServlet或者自定义的控制器他们是MVC中的C,当然Spring MVC中提供了作为前端控制器的DispatcherServlet; 
J通常是事务脚本 
K应该是AOP(面向切面编程技术 
L目前广泛使用的有memcachedRedis; 
M的选择方案很多最有可能的是hibernateMyBatis,也可以两种技术同时运用但通常是将增删改交给hibernate来处理而复杂的查询则由MyBatis完成此外TopLink、jOOQ也是优秀的持久层解决方案 
N底层的数据存取传统上是使用关系型数据库可以是MySQL、Oracle、SQLServer、DB2随着大数据时代的来临也可以采用NoSQL(MongoDB、MemBase、BigTable和其他大数据存取方案GFS、HDFS); 
P是项目的开发模型可以是瀑布模型快速原型模型增量模型螺旋模型喷泉模型、RAD模型等

 

2. 项目开发流程 
1、可行性分析可行性分析报告项目开发计划书;
2、需求分析需求规格说明书OOAD(用例图时序图活动图);
界面原型帮助理解需求业务层设计时推导事务脚本;
3、设计概要设计说明书详细设计说明书;
*抽取业务实体领域对象):类图、E-R概念设计阶段);
分层架构确定各层的技术实现方案具体到使用的框架数据库服务器应用服务器等);
*业务层设计事务脚本模式事务用户发送一次请求就是一个事务
脚本一个方法或一个函数
*事务脚本把一次请求封装为一个方法或一个函数事务脚本模式一个事务开始于脚本的打开终止于脚本的关闭);
*业务层涉及的对象有三种类型事务脚本类封装了业务的流程)、数据访问对象(DAO,封装了持久化操作)、数据传输对象(DTO,封装了失血/贫血领域对象),三者之间的关系是事务脚本类组合聚合数据访问对象这二者都依赖了数据传输对象正向工程(UML类图生成Java代码和逆向工程(Java代码生成UML类图数据库物理设计(ER图转换成表间关系图建库和建表使用工具插入测试数据);
3、编码
4、测试测试报告缺陷报告;
*单元测试对软件中的最小可测试单元进行检查和验证Java中是对类中的方法进行测试可以使用JUnit工具来实施
*集成测试集成测试也叫组装测试或联合测试在单元测试的基础上将所有模块按照设计要求组装成为子系统进行测试
*系统测试将已经确认的软件硬件外设网络等元素结合在一起进行信息系统的各种组装测试和确认测试系统测试是针对整个产品系统进行的测试目的是验证系统是否满足了需求规格的定义找出与需求规格不符或与之矛盾的地方从而提出更加完善的方案
*验收测试在软件产品完成了单元测试集成测试和系统测试之后产品发布之前所进行的软件测试活动它是技术测试的最后一个阶段也称为交付测试验收测试的目的是确保软件准备就绪并且可以让最终用户将其用于执行软件的既定功能和任务
5、交付和维护用户手册操作手册

项目管理

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

2. 自动构建:Ant/Maven/Ivy/Gradle

3. 持续集成:Hudson/Jenkins

系统架构

1. 负载均衡服务器:F5、A10;

2. 应用服务器: HTTP服务器:Apache、NginX(HTTP、反向代理邮件代理服务器);
Servlet容器:Tomcat、Resin

3. EJB容器:WildFly(JBoss Application Server)、GlassFish、Weblogic、Websphere;

4. 数据库服务器:MySQL、Eclipse、Oracle;


第三方工具插件应用

1. 图表工具基于jQuery的图表插件jQchart、Flot、Charted)、Chart.js、Highcharts

2. 报表工具:Pentaho Reporting、iReport、DynamicReports

3. 文档处理:POI、iText

4. 工作流引擎:jBPM、OpenWFE、Snaker、SWAMP

5. 作业调度:Quartz、JobServer、Oddjob

6. 缓存服务:EhCache、memcached、SwarmCache

7. 消息队列:Open-MQ、ZeroMQ、ActiveMQ

8. 安全框架:Shiro、PicketBox

9. 搜索引擎:IndexTank、Lucene、ElasticSearch

:. Ajax框架:jQuery、ExtJS、DWR

:. UI插件:EasyUI、MiniUI

:. 富文本框:UEditor、CKEditor

面试提问

1. 项目是为哪个公司开发的项目的投入是多少

2. 有多少人参与了项目开发整个团队中测试人员开发人员项目经理比例是多少

3. 项目开发了多长时间项目总的代码量有多少你的代码量有多少

4. 项目采用了怎样的开发模型或开发流程项目的架构是怎样的项目的技术选型是怎样的

5. 你在项目中担了怎样的职责是否经常开会或加班项目完成后有哪些收获或是经验教训

6. 项目中最困难的部分是什么如何解决团队开发时遇到的各种冲突

面试时可以反问面试官的问题

1. 我注意到你们使用了X技术请问你们是如何解决Y问题的

2. 为什么你们的产品使用了X技术而不是Y技术据我所知,X技术虽然有A、B、C等好处但也存在DE问题Y技术可以解决DE问题

3. 我对您说的X技术不是太熟悉但我感觉它是一个不错的解决方案您能多讲讲它的工作原理吗

4. 你们团队是如何进行项目规划的一周会有几次例会每周的代码量大概是多少

5. X问题我能想到的解决方案目前就只有Y请问您会怎么解决这个问题

、S.A.R.法则

S.A.R法则是指先描述问题的场景然后解释你采取的行动最后陈述结果

面谈原则

1. 声音适中口齿清楚面带微笑个人形象精神讲礼貌

2. 主动跟面试官聊他感兴趣的话题让面试官满意

3. 主动的大胆的跟面试官聊自己熟悉有经验的内容项目技术点等做到扬长避短

4. 一定要表达自己非常想得到这个岗位自己很愿意学习不懂的技术

5. 根据自己的实际水平提出合理的待遇要求

自我评价

1. 学习能力IT行业的人需要不断的了解新的技术工具和方法

2. 团队意识相比个人英雄主义,IT行业更倡导团队合作

3. 抗压能力很多IT企业的工作强度相对来说还是比较大的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值