What specific skills do you need to qualify as a Java programmer or engineer, and what do you need to prepare before the interview? Here are some of the skills that a qualified Java software engineer should have when the interviewer wants to know about you.

I. Professional skills

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

  2. I am familiar with JavaWeb development based on JSP and Servlet, and have an in-depth understanding of the working principle and life cycle of Servlet and JSP. I am skilled in using JSTL and EL to write dynamic pages without scripts, and have experience in developing JavaWeb projects using Web components such as listeners and filters as well as MVC architecture mode.

  3. I have an in-depth understanding of Spring IoC container and AOP principles, and am skilled in using Spring framework to manage various Web components and their dependencies, and in using Spring to manage transactions, logs, security, etc. Experience using SpringMVC as presentation layer technology and Web project development with persistence support provided by Spring, and familiarity with Spring’s integration with other frameworks.

  4. Proficient in Hibernate, MyBatis and other ORM frameworks, familiar with Hibernate and MyBatis core API, Hibernate association mapping, inheritance mapping, component mapping, caching mechanism, transaction management and performance tuning, etc.

  5. Proficient in using HTML, CSS and JavaScript for Web front-end development, familiar with jQuery and Bootstrap, and have a deep understanding of the application of Ajax technology in Web projects. Experience in project development using front-end MVC frameworks (AngularJS) and JavaScript template engines (HandleBars).

  6. Familiar with common relational database products (MySQL, Oracle), familiar with SQL and PL/SQL database programming.

  7. Familiar with object-oriented design principles, in-depth understanding of GoF design pattern and enterprise application architecture pattern and relevant experience in practical development, skilled in using UML for object-oriented analysis and design, with TDD (test driven development) and DDD (domain driven design) experience.

  8. Familiar with Web servers and application servers such as Apache, NginX, Tomcat, WildFly, and Weblogic, and configuration of server consolidation, clustering, and load balancing.

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

    Note: Not every one of these things listed above should be thoroughly familiar to you, according to the specific requirements of the enterprise recruitment can be made corresponding targeted preparation. However, the first six items should be the minimum requirements and are the professional skills that must be possessed by a Java software engineer.

Ii. Project experience

  1. This system is developed for Z by X and entrusted by Y, including modules A, B, C, D, etc. The system uses Java enterprise development open source framework E and front-end technology F. The presentation layer uses G architecture, uses H as view I as controller and implements REST-style requests; The business logic layer uses J mode, and realizes transaction, log and security functions through K, and realizes cache service 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. Note: E usually stands for Spring (the one-stop choice for Java enterprise development); F is most likely the jQuery library and its plug-ins or the Bootstrap framework, although the best way to build a single page application (SPA) is a front-end MVC framework (like AngularJS) and a JavaScript template engine (like HandleBars). G is clearly MVC (model-View-Control), and the most likely implementation framework is Spring MVC, along with Struts 2, JSF, and Apache’s MyFaces implementation for JSF; H is for JSP, which acts as the V in MVC. JSP can also use template engines (such as Freemarker and Velocity) to generate views, and can be various documents or reports (such as Excel and PDF, etc.). I is Servlet or custom controller, they are C in MVC, of course Spring MVC provides DispatcherServlet as front-end controller; J is usually a transaction script; K should be AOP (aspect oriented programming) technology; L Memcached and Redis are widely used. M has many options, the most likely being Hibernate and MyBatis. The two technologies can also be used at the same time, but usually the addition, deletion and modification are handed over to Hibernate for processing, while the complex query is completed by MyBatis. In addition, TopLink and jOOQ are also excellent persistence layer solutions. N Traditionally, relational databases are used for data access at the bottom level, including MySQL, Oracle, SQLServer, DB2, etc. With the advent of the era of big data, You can also use NoSQL (such as MongoDB, MemBase, and BigTable) and other big data access solutions (such as GFS and HDFS). P is the development model of the project, which can be waterfall model, rapid prototyping model, incremental model, spiral model, fountain model, RAD model, etc.

  2. 1. Feasibility analysis: feasibility analysis report and project development plan; Requirement analysis: Requirement specification OOAD (use case diagram, sequence diagram, activity diagram); Interface prototype: helps understand requirements and derive transaction scripts during business layer design; 3, design: outline design specification, detailed design specification; * Extracting business entities (domain objects) : class diagram, E-R diagram (conceptual design stage); Hierarchical architecture: determine the technical implementation scheme of each layer (specifically, the framework used, database server, application server, etc.); * Business layer design: transaction script pattern (transaction: a user sends a request is a transaction; Script: A method or a function; * Transaction script: encapsulates a request as a method or function; Transaction script mode: a transaction begins when the script is opened and ends when the script is closed. * There are three types of objects involved in the business layer: Transaction script class (encapsulating business process), data access object (DAO, encapsulating persistent operation), data transfer object (DTO, encapsulating blood loss/anemia domain object), the relationship between the three is transaction script class composite (aggregation) data access object, Both rely on forward engineering of data transfer objects (UML class diagrams generate Java code) and reverse engineering (Java code generates UML class diagrams) for database physical design (ER diagrams convert to inter-table diagrams, build libraries and tables, use tools to insert test data). 3. Coding; 4. Test: Test report and defect report; * Unit testing: Checks and validates the smallest testable units in software. In Java, it tests methods in classes, which can be implemented using JUnit tools; * Integration testing: Integration testing is also called assembly testing or joint testing. On the basis of unit test, all modules are assembled into subsystems according to the design requirements for testing; * System testing: Will have to confirm the software, hardware, peripherals, network and other elements together, to assemble information systems of all kinds of testing and validation test, system test was conducted for the entire product system test, the purpose is to verify that the system meets the requirements specification definition, find out and demand specifications or with the contradiction of place, so as to put forward more perfect solution; Acceptance testing: Software testing activities conducted before the product is released after unit, integration, and system tests have been completed. It is the final stage of technical testing, also known as delivery testing. The purpose of acceptance testing is to ensure that the software is ready and can be used by end users to perform the intended functions and tasks of the software; 5. Delivery and maintenance: user manual and operation manual;

Iii. Project management

  1. Version control: CVS/SVN/Git

  2. Automatic build: Ant/Maven/Ivy/Gradle

  3. Continuous integration: Hudson/Jenkins

4. System architecture

  1. Load balancing server: F5, A10;

  2. Application server: HTTP server: Apache, NginX (HTTP, reverse proxy, mail proxy server); Servlet container: Tomcat and Resin

  3. EJB containers: WildFly (JBoss Application Server), GlassFish, Weblogic, Websphere;

  4. Database server: MySQL, Eclipse, Oracle;

  5. If you want to know more about architecture, you can add group: 650385180, which will share some veteran architects recorded video: Spring, MyBatis, Netty source code analysis, high concurrency, high performance, distributed, microservice architecture principle, JVM performance optimization these become architects essential knowledge system. You can get free learning resources;



Fifth, third-party tools (plug-ins) application

  1. Charting tools: Jquery-based charting plug-ins such as jQchart, Flot, Charted, chart.js, Highcharts, etc.

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

  3. Document processing: POI, iText, etc.

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

  5. Job scheduling: Quartz, JobServer, Oddjob, etc.

  6. Cache services: EhCache, memcached, and SwarmCache.

  7. Message queue: open-MQ, ZeroMQ, ActiveMQ, etc.

  8. Security framework: Shiro, PicketBox, etc.

  9. Search engines: IndexTank, Lucene, ElasticSearch, etc.

  10. Ajax frameworks: jQuery, ExtJS, DWR, etc.

  11. UI plug-ins: EasyUI, MiniUI, etc.

  12. Rich text boxes: UEditor, CKEditor, etc.

6. Interview questions

  1. Which company was the project developed for? What is the cost of the project?

  2. How many people worked on the project? What percentage of the team is tester/developer/project manager?

  3. How long was the project in development? What is the total amount of code in the project? How much code do you have?

  4. What development model or process did the project use? What is the architecture of the project? What is the technical selection of the project?

  5. What was your role in the project? Do you have frequent meetings or work overtime? What are the lessons learned after completing the project?

  6. What was the most difficult part of the project? How to resolve the various conflicts encountered during team development?

Seven, you can ask the interviewer questions during the interview

  1. I noticed that you used X technology, may I ask how you solved Y problem?

  2. Why do your products use technology X instead of technology Y? As far as I know, although TECHNOLOGY X has benefits of A, B and C, it also has problems of D and E, while technology Y can solve problems of D and E.

  3. I am not familiar with technology X you mentioned, but I feel it is a good solution. Could you tell me more about how it works?

  4. How does your team plan the project? How many meetings will there be in a week? What is the amount of code per week?

  5. So far, the only solution I can think of for X is Y. How would you solve this problem?

S.A.R.

The S.A.R. principle is to describe the situation of the problem, explain the action you took, and state the result.Copy the code

Nine, the principle of interview

  1. Moderate voice, clear articulation, smiling, presentable and polite.

  2. Keep the interviewer happy by offering to talk about topics that interest him or her.

  3. Be proactive and bold in talking with the interviewer about your familiar and experienced content: projects, technical points, etc., so as to maximize your strengths and avoid your weaknesses.

  4. Be sure to express your desire for the position and your willingness to learn skills you don’t understand.

  5. Propose reasonable salary requirement according to oneself actual level.

X. Self-evaluation

  1. Learning ability (People in IT industry need to be constantly aware of new technologies, tools and methods)

  2. Teamwork (IT industry is more about teamwork than individual heroism)

  3. Ability to work under pressure (the work intensity of many IT enterprises is relatively large)