What _java a qualified Java software engineer should have

Source: Internet
Author: User
Tags aop memcached message queue svn java web jboss application server jquery library wildfly

What kind of expertise do you need to be a qualified Java programmer or engineer, and what exactly do you need to prepare before an interview? The interviewer wants to know what your professional skills are, and the following are what a qualified Java software engineer should have.

First, professional skills

1, skilled use Java language for object-oriented programming, have good programming habits, familiar with the common Java APIs, including the collection framework, multithreading (concurrent programming), I/O (NIO), Socket, JDBC, XML, reflection and so on.
2, familiar with JSP and servlet based Java Web Development, the servlet and JSP working principle and life cycle have in-depth understanding, skilled use of Jstl and El Script-free dynamic pages, with the use of listeners, filters and other Web Components and MVC architecture model for Java Experience with Web project development.
3. Have a deep understanding of spring's IOC container and AOP principles, skilled use of the spring framework to manage various Web components and their dependencies, and the ability to skillfully manage transactions, logs, security, and so on with spring Experience with the use of SPRINGMVC as a presentation layer technology and support for Web project development with spring-provided persistence, familiar with spring's consolidation of other frameworks.
4, skilled use of hibernate, MyBatis and other ORM framework, familiar with Hibernate and MyBatis core APIs, the hibernate of the association mapping, inheritance mapping, component mapping, caching mechanism, transaction management and performance tuning has a deep understanding.
5, skilled use of HTML, CSS and JavaScript for Web front-end development, familiar with jquery and Bootstrap, Ajax technology in the application of Web projects have a deep understanding, Experience in project development using the front-end MVC Framework (ANGULARJS) and JavaScript template engine (handlebars).
6, familiar with the common relational database products (MySQL, Oracle), skilled use of SQL and Pl/sql database programming.
7, familiar with the object-oriented design principles, GOF design Patterns and enterprise Application architecture model has in-depth understanding and practical development of relevant experience, skilled use of UML for object-oriented analysis and design, have TDD (test-driven development) and DDD (domain-driven design) experience.
8, familiar with the use of Apache, NginX, Tomcat, Wildfly, WebLogic and other Web servers and application servers, familiar with a variety of server integration, clustering and load balancing configuration.
9, skilled use of product prototyping tools 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, skilled use of project building and management tools maven and Gradle. Description: The above listed these things are not every item you have to be in the heart, according to the specific requirements of the enterprise recruitment can do the corresponding targeted preparation. But the first 6 items should be minimum requirements and are the expertise that a Java software engineer must have.

Second, project experience

Project Introduction

This system is x commissioned y development of the system for Z, the system includes a, B, C, D and other modules. The system uses the open source framework e developed by Java Enterprise and the front-end technology F. The presentation layer uses the G schema, using H as view I as the controller and implementing restful requests, the business logic layer uses the J mode and implements the functions of transaction, log and security via K to implement the caching service through L; The persistence layer uses the M encapsulation crud operation, and the bottom uses N to realize data access. The P development model is used throughout the project.

Description:

E usually refers to spring (one-stop selection for Java Enterprise-level development);
F most likely the jquery library and its plug-ins or the bootstrap framework, of course, if the best scenario to build a single-page application (SPA) is the front-end MVC framework (such as ANGULARJS) and the JavaScript template engine (such as handlebars) G is obviously MVC (model-view-control), and the most likely implementation framework is spring MVC, in addition to struts 2, JSF, and Apache-provided myfaces implementations for JSF.
H is jsp,jsp as a V in MVC, and can also be used to generate views using template engines such as freemarker and velocity
You can also be a variety of documents or reports (such as Excel and PDFs).
I is a servlet or a custom controller, they are C in MVC, and of course Spring MVC provides the Dispatcherservlet as a front-end controller;
J is usually a transaction script,
K should be AOP (aspect-oriented programming) technology,
• Memcached and Redis are widely used at present;
M's options are many, most likely hibernate and MyBatis, can also be used in both techniques, but usually to the hibernate to deal with the increase, and complex query by MyBatis, in addition to TopLink, Jooq is also an excellent persistence layer solution;
n the underlying data access is traditionally the use of relational databases, can be MySQL, Oracle, SQL Server, DB2, etc., with the advent of the large data age, can also be used NoSQL (such as MongoDB, Membase, BigTable, etc.) and other large data access schemes (such as GFS, HDFS, etc.);
P is the development model of the project, which can be waterfall model, rapid prototyping model, increment model, spiral model, fountain model, RAD model and so on.

Project development process:

1, Feasibility analysis: Feasibility analysis report, Project development plan book
2, demand analysis: Requirements specifications
OOAD (use case diagram, sequence diagram, activity diagram)
Interface Prototypes: Help understand requirements, business layer design-time derivation transaction scripts
3, Design: Outline design instructions, detailed design instructions
Extract business entity (Domain object): Class Diagram, E-R diagram (Conceptual design phase)
Layered architecture: Determine the technical implementation of each layer (specific to the framework used, database server, application server, etc.).
Business Layer Design: Transaction scripting Mode (transaction: a user sending a request is a transaction; a script: a method or a function; a transaction script: to encapsulate a request as a method or a function; Transaction scripting mode: A transaction starts with the opening of the script and ends with the script being closed).
There are three types of objects involved in the business layer: Transactional scripting classes (processes that encapsulate the business), data Access Objects (DAO, encapsulated persistence operations), data transfer objects (DTO, encapsulated blood loss/anaemia domain objects), and the relationships between the three are transactional script class composite (aggregated) data access objects, Both of which depend on the data transfer object
Forward engineering (UML class diagram generation Java code) and reverse engineering (Java code generation UML class diagram) database physical design (ER diagram converted to inter-table diagram, library and table building, using tools to insert test data)
4, coding
5. Test: test report, Defect report
Unit tests: Checks and verifies the smallest testable unit in the software, in Java, the methods in the class are tested and can be implemented using the JUnit tools.
Integration testing: Integration testing is also called assembly testing or joint testing. On the basis of unit testing, all modules are assembled into subsystems to be tested according to the design requirements.
System testing: The software that has been validated, hardware, peripherals, networks and other elements together, to carry out a variety of information systems assembly testing and validation testing, system testing is for the entire product system testing, the purpose is to verify that the system meets the requirements of the definition of specifications, to find out with the requirements of the specification or inconsistent with the place, So as to put forward more perfect plan. Acceptance Testing: Software testing activities performed prior to the release of the product after the unit test, integration test, and system test have been completed. It is the final phase of a technical test, also known as a delivery test. The purpose of acceptance testing is to ensure that the software is ready and that end users can use it to perform the established functions and tasks of the software.
6, Delivery and maintenance: User manual, Operation manual

Third, project management

1, Version control: Cvs/svn/git
2. Automatic Construction: Ant/maven/ivy/gradle
3. Continuous Integration: Hudson/jenkins

Iv. System Architecture

1. Load balancing server: F5, A10
2, Application server:
HTTP server: Apache, NginX (HTTP, reverse proxy, mail proxy server)
servlet container: Tomcat, Resin
EJB containers: Wildfly (JBoss application Server), GlassFish, Weblogic, Websphere
3. Database server: MySQL, Eclipse, Oracle

V. Third-party tools (plug-ins) application

1, chart tools: Based on jquery graphics plug-ins (such as Jqchart, Flot, charted, etc.), chart.js, Highcharts and so on.
2, Report tools: Pentaho Reporting, IReport, dynamicreports, etc.
3, document processing: POI, Itext and so on.
4, Workflow engine: JBPM, Openwfe, Snaker, swamp and so on.
5, Job scheduling: Quartz, JobServer, Oddjob and so on.
6, Caching services: EhCache, memcached, Swarmcache and so on.
7, Message queue: OPEN-MQ, Zeromq and so on.
8, security framework: Shiro, Picketbox and so on.
9, search engine: Indextank, Lucene, Elasticsearch and so on.
10, Ajax framework: JQuery, ExtJS, Dwr and so on.
11, UI Plug-ins: Easyui, Miniui and so on.
12, Rich text box: Ueditor, CKEditor and so on.

Six, interview questions

1. Which company is the project developed for? How much is the project input?
2, how many people participated in the project development? What is the proportion of testers, developers, and project managers across the team?
3. How long has the project been developed? What is the total number of code in the project? How much do you have in your code?
4. What kind of development model or development process does the project adopt? What is the structure of the project? What is the technical selection of the project?
5. What are your responsibilities in the project? Do you have regular meetings or overtime? What are the rewards or lessons learned after the project is completed?
6, what is the most difficult part of the project? How do you solve the conflicts that are encountered during team development?

When interviewing, you can ask the interviewer questions

1. I noticed that you use X technology, how do you solve the problem of y?
2. Why do your products use x technology instead of y technology? As far as I know, although X technology has the advantages of a, B, C, but there are D and e problems, and Y technology can solve the D and e problems.
3, I said to you that the X technology is not too familiar, but I feel that it is a good solution, can you tell me more about its working principle?
4. How did your team plan the project? How many regular meetings are there in a week? How much is the amount of code per week?
5, on the X problem I can think of the solution is only y now, how will you solve this problem?

Viii. S.A.R. Law

The S.A.R rule refers to the scenario that describes the problem first, then explains the action you take, and finally states the result.

Ix. Principle of Interview

1, moderate voice, articulate clearly, with a smile, the spirit of personal image, polite.
2, the initiative with the interviewer talk about his interest in the topic, let the interviewer satisfied.
3, the initiative of the bold with the interviewer talk about their familiar with the content of experience: projects, technical points, to avoid weaknesses.
4, must express oneself very want this post, oneself very willing to learn not to understand the technology.
5, according to their actual level to put forward reasonable treatment requirements.

10. Self-evaluation

1. Learning ability (people in IT industry need to keep abreast of new technologies, tools and methods)
2, Team awareness (compared to individual heroism, IT industry more advocacy team cooperation)
3, compressive capacity (many IT companies are relatively large intensity of work)

The above is the entire content of this article, I hope to help you learn, but also hope that we support the cloud habitat community.

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.