What professional skills do you need to become a qualified Java programmer or engineer, and what should you prepare before the interview? During the interview, the interviewer wants to know what professional skills you have. The following are what a qualified JAVA software engineer needs.
1. Professional skills
1. Proficient in object-oriented programming using the Java language, have good programming habits, and are familiar with commonly used Java APIs, including collection frameworks, multi-threading (concurrent programming), I/O (NIO), Socket, JDBC, XML, reflection, etc.
2. Familiar with Java Web development based on JSP and Servlets, have an in-depth understanding of the working principles and life cycles of Servlets and JSP, are proficient in using JSTL and EL to write scriptless dynamic pages, and have experience in Java Web project development using listeners, filters and other web components and MVC architecture patterns.
3. Have a deep understanding of Spring's IoC containers and AOP principles, be proficient in using the Spring framework to manage various Web components and their dependencies, be proficient in using Spring for transactions, logs, security, etc., have experience in using SpringMVC as presentation layer technology and using the persistence support provided by Spring for web project development, and be 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 an in-depth understanding of Hibernate's association mapping, inheritance mapping, component mapping, caching mechanism, transaction management, and performance tuning.
5. Proficient in using 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 have experience in project development using the front-end MVC framework (AngularJS) and JavaScript template engine (HandleBars).
6. Be familiar with commonly used relational database products (MySQL, Oracle), and be proficient in database programming using SQL and PL/SQL.
7. Be 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, be proficient in object-oriented analysis and design using UML, and have experience in TDD (test-driven development) and DDD (domain-driven design).
8. Familiar with the use of web servers and application servers such as Apache, NginX, Tomcat, WildFly, Weblogic, and familiar with the configuration of multiple server integration, clustering and load balancing.
9. Proficient in using product prototype tool Axure, proficient in using design modeling tools PowerDesigner and Enterprise Architect, proficient in using Java development environments Eclipse and IntelliJ, proficient in using the front-end development environment WebStorm, proficient in using software version control tools SVN and Git, proficient in using project construction and management tools Maven and Gradle. Note: You must be familiar with not every item listed above. You can make corresponding targeted preparations based on the specific requirements of corporate recruitment. However, the first 6 items should be the minimum requirements and are the professional skills that a Java software engineer must possess.
2. Project experience
Project Introduction
This system is a system for Z commissioned by X and is used for Z. The system includes A, B, C, D and other modules. The system uses the Java enterprise-level open source framework E and front-end technology F. The presentation layer uses the G architecture, uses H as view I as controller and implements REST-style requests; the business logic layer uses J mode, and implements transaction, log and security functions through K, and implements cache services through L; the persistence layer uses M to encapsulate CRUD operations, and the underlying layer uses N to implement data access. The entire project adopts a P development model.
illustrate:
E usually refers to Spring (a one-stop choice for Java enterprise-level development);
F is most likely to be a jQuery library, its plug-in or Bootstrap framework. Of course, if you want to build a single page application (SPA), the best solution is the front-end MVC framework (such as AngularJS) and JavaScript template engine (such as HandleBars); G is obviously MVC (model-view-control), and the most likely implementation framework is Spring MVC. In addition, there are Struts 2, JSF and MyFaces implementations provided by Apache for JSF.
H is JSP. JSP is V in MVC. You can also use template engines (such as Freemarker and Velocity) to generate views, or various documents or reports (such as Excel and PDF, etc.).
I is a Servlet or a custom controller. They are C in MVC. Of course, Spring MVC provides DispatcherServlet as a front-end controller;
J is usually a transaction script.
K should be AOP (sectional-oriented programming) technology.
L is currently widely used by memcached and Redis;
There are many options for M. The most likely ones are Hibernate and MyBatis. Both technologies can also be used at the same time, but usually add, delete and modify the addition, deletion and modification are handed over to Hibernate for processing, while complex queries are completed by MyBatis. In addition, TopLink and jOOQ are also excellent persistence layer solutions;
Data access at the bottom of N is traditionally used to use relational databases, which can be MySQL, Oracle, SQLServer, DB2, etc. With the advent of the big data era, NoSQL (such as MongoDB, MemBase, BigTable, etc.) and other big data access solutions (such as GFS, HDFS, etc.);
P is the project development model, which can be a waterfall model, a rapid prototype model, an incremental model, a spiral model, a fountain model, a RAD model, etc.
Project development process:
1. Feasibility analysis: feasibility analysis report, project development plan
2. Requirement analysis: Requirement specifications
OOAD (use case diagram, timing diagram, activity diagram)
Interface prototype: Helps to understand requirements and deduce transaction scripts when designing the business layer
3. Design: Summary design manual and detailed design manual to extract business entities (domain objects): class diagram, ER diagram (concept design stage)
Hierarchical architecture: Determine the technical implementation solutions of each layer (specifically to the frameworks used, database servers, application servers, etc.).
Business layer design: transaction script mode (transaction: a transaction is a transaction when a user sends a request; script: a method or a function; transaction script: encapsulates a request into a method or a function; transaction script mode: a transaction starts with the opening of the script and terminates with the closing of the script).
There are three types of objects involved in the business layer: transaction script class (encapsulates the business process), data access object (DAO, encapsulates persistent operations), and data transmission object (DTO, encapsulates blood loss/anemia field objects). The relationship between the three is transaction script class combination (aggregation) data access object. Both of them rely on forward engineering (UML class diagrams generate Java code) and reverse engineering (Java code generates UML class diagrams) database physical design (ER diagrams convert into relationship diagrams between tables, library construction and table construction, and use tools to insert test data)
4. Coding
5. Test: Test report, defect report unit testing: Check and verify the minimum testable unit in the software. In Java, methods in classes can be tested and implemented using JUnit tools.
Integration testing: Integration testing is also called assembly testing or joint testing. Based on unit testing, all modules are assembled into subsystems for testing according to design requirements.
System testing: Combining confirmed software, hardware, peripherals, network and other elements together to conduct various assembly and confirmation tests of the information system. System testing is a test conducted for the entire product system. The purpose is to verify whether the system meets the definition of the requirements specifications, find out what is inconsistent with or contradicts the requirements specifications, and thus propose a more complete solution. Acceptance test: Software testing activities conducted before the product is released after the software product has completed unit testing, integration testing and system testing. It is the last stage of technical testing, also known as delivery testing. The purpose of acceptance testing is to ensure that the software is ready and that it can be used by the end user to perform established functions and tasks of the software.
6. Delivery and maintenance: User manual, operating manual
III. 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
5. Third-party tools (plugins) applications
1. Chart tools: jQuery-based chart plug-ins (such as jQchart, Flot, Charted, etc.), Chart.js, Highcharts, etc.
2. Reporting tools: Pentaho Reporting, iReport, DynamicReports, etc.
3. Document processing: POI, iText, etc.
4. Workflow engine: jBPM, OpenWFE, Snaker, SWAMP, etc.
5. Job scheduling: Quartz, JobServer, Oddjob, etc.
6. Caching services: EhCache, memcached, SwarmCache, etc.
7. Message queue: Open-MQ, ZeroMQ, etc.
8. Security framework: Shiro, PicketBox, etc.
9. Search engines: IndexTank, Lucene, ElasticSearch, etc.
10. Ajax framework: jQuery, ExtJS, DWR, etc.
11. UI plug-ins: EasyUI, MiniUI, etc.
12. Rich text boxes: UEditor, CKEditor, etc.
6. Ask questions in the interview
1. Which company was the project developed for? How much is the investment in the project?
2. How many people have participated in project development? What is the proportion of testers, developers, and project managers in the entire team?
3. How long has the project been developed? How much code is there in the total project? How much code is there?
4. What kind of development model or development process does the project adopt? What is the architecture of the project? What is the technical selection of the project?
5. What responsibilities did you assume in the project? Do you have meetings or work overtime often? What are the gains or lessons learned after the project is completed?
6. What is the most difficult part of the project? How to resolve various conflicts encountered during team development?
7. You can ask the interviewer’s questions during the interview
1. I noticed that you used X technology. How did you solve the Y problem?
2. Why does your products use X technology instead of Y technology? As far as I know, although X technology has benefits such as A, B, C, etc., it also has problems with D and E, while Y technology can solve D and E problems.
3. I am not very familiar with the X technology you mentioned, but I feel it is a good solution. Can you tell me more about how it works?
4. How does your team plan the project? How many regular meetings will be there in a week? What is the approximate amount of code per week?
5. The solution I can think of for problem X is currently Y. How will you solve this problem?
8. SAR rules
The SAR rule refers to first describing the scenario of the problem, then explaining the actions you took, and finally stating the results.
9. Interview principle
1. Moderate voice, clear speech, smiling, personal image and politeness.
2. Take the initiative to talk to the interviewer about topics he is interested in to make the interviewer satisfied.
3. Take the initiative and boldly talk to the interviewer about familiar and experienced content: projects, technical points, etc., so as to play to your strengths and avoid weaknesses.
4. You must express that you really want to get this position and that you are willing to learn techniques that you don’t understand.
5. Make reasonable treatment requirements based on your actual level.
10. Self-evaluation
1. Learning ability (people in the IT industry need to constantly understand new technologies, tools and methods)
2. Team awareness (compared to personal heroism, the IT industry advocates teamwork more)
3. Pressure resistance (the work intensity of many IT companies is relatively high)
The above is all the content of this article. I hope it will be helpful to everyone's learning and I hope everyone will support Wulin.com more.