Job Recruitment Website - Job seeking and recruitment - What do java engineers value most when interviewing?

What do java engineers value most when interviewing?

I. Professional skills

Proficient in using Java language for object-oriented programming, good programming habits, familiar with commonly used JavaAPI, including assembly framework, multithreading (concurrent programming), I/O(NIO), Socket, JDBC, XML, reflection, etc.

Familiar with JavaWeb development based on JSP and Servlet, deeply understand the working principle and life cycle of Servlet and JSP, skillfully use JSTL and EL to write scriptless dynamic pages, and have experience in Java Web project development using web components such as listeners and filters and MVC architecture mode.

Deeply understand Spring's IoC container and AOP principle, skillfully use Spring framework to manage various Web components and their dependencies, and skillfully use Spring to manage transactions, logs, security, etc. , have experience in developing Web projects using SpringMVC as presentation layer technology and persistent support provided by Spring, and be familiar with the integration of Spring with other frameworks.

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.

Proficient in using HTML, CSS and JavaScript for Web front-end development, familiar with jQuery and Bootstrap, deeply understand the application of Ajax technology in Web projects, and have experience in using front-end MVC framework (AngularJS) and JavaScript template engine (HandleBars) for project development.

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

Familiar with the principle of object-oriented design, have a deep understanding of GO of design pattern and enterprise application architecture pattern and relevant experience in practical development, skillfully use UML for object-oriented analysis and design, and have experience in TDD (test-driven development) and DDD (domain-driven design).

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

Proficient in using product prototype tools Axure, design modeling tools PowerDesigner and Enterprise Architect, Java development environments Eclipse and IntelliJ, front-end development environment WebStorm, software version control tools SVN and Git, project construction and management tools Maven and Gradle.

Description:? Not every item listed above should be familiar to you, and you can make corresponding targeted preparations according to the specific requirements of enterprise recruitment. But the first six items should be the minimum requirements and the professional skills that a Java software engineer must possess.

Second, the project experience

Project introduction

This system is a system that X entrusts Y to develop for Z. The system includes A, B, C, D and other modules. The system uses the open source framework E and the front-end technology F developed by Java enterprise, the presentation layer uses the G framework, and H is used as the view I as the controller to realize the request of REST style. The business logic layer adopts J mode, which realizes the functions of transaction, log and security through K, and cache service through L; The persistence layer encapsulates CRUD operation with m, and the bottom layer uses n to realize data access. The whole project adopts P development mode. ? Description:? E usually refers to Spring (one-stop choice for Java enterprise development); ? F is probably a jQuery library and its plug-ins or a boot 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 a JavaScript template engine (such as Handle Bars). G is obviously MVC (Model-View-Control), and the most likely implementation framework is spring MVC. Besides, there are MyFaces provided by Struts 2, JSF and Apache for JSF. H is JSP, JSP is V in MVC, and template engines (such as Freemarker and Velocity) can also be used to generate views or various documents or reports (such as Excel and PDF); ? I is a Servlet or user-defined controller, and in MVC, they are C. Of course, Spring MVC provides a DispatcherServlet as a front-end controller. ? J is usually a transaction script; ? K should be AOP (aspect oriented programming) technology; ? L memcached and Redis are widely used at present; ? M has many choices, most likely hibernate and MyBatis, or both technologies can be used at the same time. However, hibernate usually handles additions, deletions and changes, while MyBatis handles complex queries. In addition, TopLink and jOOQ are excellent persistence layer solutions. ? N Traditionally, relational databases are used for the underlying data access, which can be MySQL, Oracle, SQLServer, DB2, etc. With the advent of the era of big data, NoSQL (such as MongoDB, MemBase, BigTable, etc. ) and other big data access schemes (such as GFS and HDFS). ) can also be used; ? P is the development model of the project, which can be waterfall model, rapid prototype model model, incremental model, spiral model, fountain model, RAD model and so on.

Project development process

1. Feasibility analysis: feasibility analysis report and project development plan;

2. Demand analysis: demand specification OOAD (use case diagram, sequence diagram, activity diagram);

Interface prototype: when designing business layer, it helps to understand requirements and export transaction scripts;

3. Design: summary design specification and detailed design specification;

* Extracting business entities (domain objects): class diagram and E-R diagram (conceptual design stage);

Hierarchical architecture: determine the technical implementation scheme of each layer (specific to the framework used, database server, application server, etc.). );

* Business layer design: transaction script mode (transaction: the request sent by the user is a transaction;

Script: method or function;

* Transaction script: encapsulate the request as a method or function; Transaction script mode: a transaction starts with the opening of the script and ends with the closing of the script);

* The business layer involves three kinds of objects: transaction script class (encapsulating business process), data access object (DAO) and data transmission object (DTO). The relationship between them is that transaction script classes combine (aggregate) data access objects, and both of them depend on forward engineering (UML class diagram generates Java code) and reverse engineering (data transmission object).

3. coding;

4. Testing: test report and defect report;

* Unit testing: Check and verify the smallest testable unit in the software. In Java, it is a method in the test class, which can be realized by JUnit tools;

* Integration test: Integration test is also called assembly test or joint test. On the basis of unit testing, all modules are assembled into subsystems according to the design requirements for testing;

* System test: combine the confirmed software, hardware, peripherals, network and other elements to carry out various assembly tests and confirmation tests of the information system. System testing is aimed at the whole product system, and its purpose is to verify whether the system meets the definition of requirement specification, find out the inconsistency or contradiction with the requirement specification, and then put forward a more perfect scheme;

* Acceptance test: the software testing activity after the software product has completed unit test, integration test and system test, but before the product is released. This is the last stage of technical testing, also known as delivery testing. The purpose of the acceptance test is to ensure that the software is ready for end users to perform the established functions and tasks of the software;

5. Delivery and maintenance: user manual and operation manual;

Third, the project management

Version control: CVS/SVN/Git

Automatic build: Ant/Maven/Ivy/Gradle

Continuous integration: Hudson/Jenkins

Fourth, the system architecture

Load balancing servers: F5, a10; ;

Application server: HTTP server: Apache, NginX(HTTP, reverse proxy, mail proxy server);

Servlet container: Tomcat, Resin

EJB containers: wildly(JBoss application server), GlassFish, Weblogic, Websphere;;

Database servers: MySQL, Eclipse, Oracle;;

Verb (abbreviation of verb) Application of third-party tools (plug-ins)

Chart tools: chart plug-ins based on jQuery (such as jQchart, Flot, Charted, etc.). ), Chart.js, Highcharts, etc.

Reporting tools: Pentaho Reporting, iReport, DynamicReports, etc.

Document processing: POI, iText, etc.

Workflow engines: jBPM, OpenWFE, Snaker, SWAMP, etc.

Job scheduling: Quartz, JobServer, Oddjob, etc.

Cache services: EhCache, memcached, SwarmCache, etc.

Message queues: Open-MQ, ZeroMQ, ActiveMQ, etc.

Security framework: Shiro, PicketBox, etc.

Search engines: IndexTank, Lucene, ElasticSearch, etc.

Ajax framework: jQuery, ExtJS, DWR, etc.

UI plug-ins: EasyUI, MiniUI, etc.

Rich text boxes: UEditor, CKEditor, etc.

Sixth, interview questions

Which company is this project developed for? How much is the investment of the project?

How many people are involved in the project development? What is the proportion of testers, developers and project managers in the whole team?

How long has the project been under development? What is the total code amount of the project? How many codes do you have?

What kind of development model or process has the project adopted? What is the structure of the project? What is the technical choice of the project?

What kind of responsibility did you undertake in this project? Frequent meetings or overtime? What are the gains or lessons after the completion of the project?

What is the hardest part of the project? How to solve various conflicts encountered in team development?

7. You can ask the interviewer questions during the interview.

I noticed that you used X technology. How did you solve the Y problem?

Why does your product use X technology instead of Y technology? As far as I know, although X technology has advantages of A, B and C, it also has problems of D and E, and Y technology can solve them.

I'm not familiar with the X technology you mentioned, but I think it's a good solution. Can you tell me more about how it works?

How does your team plan the project? How many regular meetings are there in a week? What is the approximate amount of code per week?

The only solution I can think of to the X problem is Y. How would you solve this problem?

VIII. Rules of Special Drawing Rights

The rule of S.A.R is to describe the scene of the problem first, then explain the action you took, and finally state the result.

IX. Interview Principles

Moderate voice, clear speech, smiling, personal image and spirit, polite.

Take the initiative to talk to the interviewer about the topics he is interested in and satisfy the interviewer.

Take the initiative to talk to the interviewer about things you are familiar with and experienced: projects, technical points, etc. , so as to foster strengths and avoid weaknesses.

Be sure to show that you really want this position and that you are willing to learn skills you don't understand.

Put forward reasonable treatment requirements according to your actual level.

X. self-evaluation

Learning ability (people engaged in IT industry need to keep abreast of new technologies, tools and methods)

Team consciousness (compared with individual heroism, it industry advocates team cooperation)

Ability to withstand pressure (many IT companies work hard)