Java Software Engineer Employment Mind Map (2016 Edition)

http://toutiao.com/a6319714152722104578/

 

Java Software Engineer Employment Mind Map (2016 Edition)

What professional skills do you need to have to become a qualified Java programmer or engineer, and what do you need to prepare before an interview? During the interview, the interviewer wants to know what professional skills you have. The following are all required by a qualified JAVA software engineer.

1. Professional skills

1. Proficiency in object-oriented programming using Java language, good programming habits, familiar with commonly used Java APIs, including collection framework, multi-threading (concurrent programming), I/O (NIO), Socket, JDBC, XML, reflection Wait.

2. Familiar with Java Web development based on JSP and Servlet, have an in-depth understanding of the working principle and life cycle of Servlet and JSP, be proficient in using JSTL and EL to write scriptless dynamic pages, use listeners, filters and other Web components and MVC Architectural patterns for Java web project development experience.

3. In-depth understanding of Spring's IoC container and AOP principles, skilled use of Spring framework to manage various Web components and their dependencies, skilled use of Spring to manage transactions, logs, security, etc., and SpringMVC as the presentation layer Technology and experience in web project development using the persistence support provided by Spring, familiar with Spring's integration of other frameworks.

4. Proficient in using ORM frameworks such as Hibernate and MyBatis, familiar with the core APIs of Hibernate and MyBatis, and have a deep understanding of Hibernate's association mapping, inheritance mapping, component mapping, caching mechanism, transaction management and performance tuning.

5. Familiar with HTML, CSS and JavaScript for web front-end development, familiar with jQuery and Bootstrap, have an in-depth understanding of the application of Ajax technology in web projects, and use front-end MVC framework (AngularJS) and JavaScript template engine (HandleBars) for projects development experience.

6. Familiar with commonly used relational database products (MySQL, Oracle), proficient in using SQL and PL/SQL for database programming.

7. Familiar with object-oriented design principles, have in-depth understanding of GoF design patterns and enterprise application architecture patterns and relevant experience in actual development, and be proficient in using UML for object-oriented analysis and design, including TDD (Test Driven Development) and DDD (Domain Driven Design) experience.

8. Familiar with the use of web servers and application servers such as Apache, NginX, Tomcat, WildFly, Weblogic, etc., familiar with the configuration of various server integration, clustering and load balancing.

9. Skilled use of product prototype tool Axure, skilled use of design modeling tools PowerDesigner and Enterprise Architect, skilled use of Java development environment Eclipse and IntelliJ, skilled use of front-end development environment WebStorm, skilled use of software version control tools SVN and Git , proficient in using project build and management tools Maven and Gradle. Note: Not every one of the items listed above must be thoroughly familiar with you, and you can make corresponding targeted preparations according to the specific requirements of the company's recruitment. But the first 6 items should be the minimum requirements and professional skills that a Java software engineer must have.

2. Project experience

Project Introduction

This system is a system for Z developed by X entrusted by Y. The system includes modules such as A, B, C, and D. The system uses the open source framework E developed by the Java enterprise and the front-end technology F. The presentation layer uses the G architecture, uses H as the view I as the controller, and implements REST-style requests; the business logic layer uses the J mode, and implements functions such as transactions, logs, and security through K, and implements cache services through L; The persistence layer uses M to encapsulate CRUD operations, and the bottom layer uses N to implement data access. The whole project adopts the P development model.

illustrate:

E usually refers to Spring (one-stop choice for Java enterprise-level development);

F is most likely the jQuery library and its plugins or the Bootstrap framework. Of course, if you want to build a single page application (SPA), the best solution is a front-end MVC framework (such as AngularJS) and JavaScript template engines (such as HandleBars); G is obviously MVC (Model-View-Control), the most likely implementation framework is Spring MVC, in addition to Struts 2, JSF and the MyFaces implementation provided by Apache for JSF.

H是JSP,JSP作为MVC中的V,也可使用模板引擎(如Freemarker和Velocity)来生成视图

还可以是各种文档或报表(如Excel和PDF等)。

I是Servlet或者自定义的控制器,他们是MVC中的C,当然Spring MVC中提供了作为前端控制器的DispatcherServlet;

J通常是事务脚本,

K应该是AOP(面向切面编程)技术,

L目前广泛使用的有memcached和Redis;

M的选择方案很多,最有可能的是Hibernate和MyBatis,也可以两种技术同时运用,但通常是将增删改交给Hibernate来处理,而复杂的查询则由MyBatis完成,此外TopLink、jOOQ也是优秀的持久层解决方案;

N底层的数据存取传统上是使用关系型数据库,可以是MySQL、Oracle、SQLServer、DB2等,随着大数据时代的来临,也可以采用NoSQL(如MongoDB、MemBase、BigTable等)和其他大数据存取方案(如GFS、HDFS等);

P是项目的开发模型,可以是瀑布模型、快速原型模型、增量模型、螺旋模型、喷泉模型、RAD模型等。

项目开发流程

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

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

3、数据库服务器: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等。

8、安全框架:Shiro、PicketBox等。

9、搜索引擎:IndexTank、Lucene、ElasticSearch等。

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

11、UI插件:EasyUI、MiniUI等。

12、富文本框:UEditor、CKEditor等。

六、面试提问

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

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

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

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

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

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

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

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、根据自己的实际水平提出合理的待遇要求。

十、自我评价

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

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

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

对于学习有困难不知道如何提升自己可以加扣:578024144进行交流得到帮助,获取学习资料

Guess you like

Origin http://10.200.1.11:23101/article/api/json?id=326711924&siteId=291194637