Home  >  Article  >  Java  >  What professional skills do Java programmers need?

What professional skills do Java programmers need?

零下一度
零下一度Original
2017-06-27 09:16:191885browse

What professional skills do you need to become a qualified Java programmer or engineer? What do interviewers need to prepare before the interview? The content displayed in this article can be used as content in your resume or as something to talk to the interviewer during the interview. You can write this content into your resume. Of course, what is more important is that you talk to the interviewer during the interview. The interviewer demonstrates these professional skills. I believe this article will be helpful to freshmen who are looking for Java programmer (Java engineer) positions as well as juniors who want to become intermediate and senior Java developers.

Professional skills

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

  2. Familiar with Java Web development based on JSP and Servlet, have in-depth understanding of the working principles and life cycles of Servlet and JSP, proficient in using JSTL and EL to write scriptless dynamic pages, have experience in using Experience in Java Web project development with Web components such as listeners and filters, as well as the MVC architecture pattern.

  3. Have in-depth understanding of Spring's IoC container and AOP principles, proficiently use the Spring framework to manage various web components and their dependencies, and proficiently use Spring for transactions, logging, and security etc., have experience in using Spring MVC as the presentation layer technology and using the persistence support provided by Spring for Web project development, and are 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 familiar with Hibernate's association mapping, inheritance mapping, component mapping, caching mechanism, transaction management and performance tuning Excellent understanding.

  5. Proficient in using HTML, CSS and JavaScript for Web front-end development, familiar with jQuery and Bootstrap, having in-depth understanding of the application of Ajax technology in Web projects, and using the front-end MVC framework (AngularJS ) and JavaScript template engine (HandleBars) for project 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 proficiently use UML for object-oriented analysis and design , with 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, etc., and familiar with the configuration of multiple server integration, clustering and load balancing.

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

Note: Not every one of the things listed above needs to be familiar to you. You can do it according to the specific recruitment requirements of the company. Targeted preparation. I personally think that the first 6 items should be the minimum requirements and are the professional skills that a Java developer must possess.

Project Experience

Project Introduction

This system is a system developed by X entrusted by Y for Z. The system includes A and B , C, D and other modules. The system uses Java enterprise-level open source framework E and 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 pattern, and implements functions such as transactions, logs and security through K, and implements caching services through L; The persistence layer uses M to encapsulate CRUD operations, and the bottom layer uses N to implement data access. The entire project adopted the P development model.

Note: In the above description, E usually refers to Spring (a one-stop choice for Java enterprise development); F is most likely the jQuery library and its plug-ins 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 a 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 the MyFaces implementation provided by Apache for JSF, you can use JSP as the V in MVC, you can also use template engines (such as Freemarker and Velocity) to generate views, or you can use various documents or reports (such as Excel and PDF, etc.), and Servlets and custom controllers are C in MVC. Of course, Spring MVC provides DispatcherServlet as a front-end controller; J is usually a transaction script, and K should be AOP ( Aspect-oriented programming) technology, L is currently widely used with memcached and Redis; M has many options, the most likely ones are Hibernate and MyBatis. Both technologies can also be used at the same time, but additions, deletions and changes are usually handled by Hibernate , and complex queries are completed by MyBatis. In addition, TopLink and jOOQ are also excellent persistence layer solutions; the underlying data access has traditionally used relational databases, which can be MySQL, Oracle, SQLServer, DB2, etc., with the advent of big data With the advent of the era, NoSQL (such as MongoDB, MemBase, BigTable, etc.) and other big data access solutions (such as GFS, HDFS, etc.) can also be used; the development model P of the project can be waterfall model, rapid prototype model, incremental model, Spiral model, fountain model, RAD model, etc.

Project Development Process

  1. Feasibility Analysis>>> Feasibility Analysis Report/Project Development Plan

  2. Requirements Analysis>>> Requirements Specification

  • OOAD (use case diagram, sequence diagram, activity diagram)

  • Interface prototype: Helps understand requirements and derive transaction scripts when designing the business layer

  • ##Design>>> Summary design instructions/details Design specification

    • Extract business entities (domain objects): class diagram, E-R diagram (conceptual design stage)

    • Hierarchical architecture : Determine the technical implementation plan for each layer (specific to the framework used, database server, application server, etc.). Business layer design: transaction script mode (transaction: a user sends a request is a transaction; script: a method or a function; transaction script: encapsulates a request as a method or a function; transaction script mode: a transaction starts with the script opening, terminating in the script's closing). There are three types of objects involved in the business layer: transaction script classes (encapsulating business processes), data access objects (DAO, encapsulating persistence operations), and data transfer objects (DTO, encapsulating blood loss/anemia field objects). The relationship between the transaction script class is the combination (aggregation) of the data access object, both of which rely on the data transfer object

    • forward engineering (UML class diagram to generate Java code) and reverse engineering Engineering (Java code generates UML class diagram)

    • Database physical design (convert ER diagram into inter-table relationship diagram, build database and table, use tools to insert test data)

  • Coding

  • ##Test>>> Test Report/Defect Report
  • # #Unit testing: Check and verify the smallest testable unit in the software. In Java, it tests the methods in the class. It can be implemented using the JUnit tool.
    • 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: Combine the confirmed software, hardware, peripherals, network and other elements to conduct various assembly tests and confirmation tests of the information system. System testing is for the entire The purpose of testing the product system is to verify whether the system meets the definition of the demand specifications and to find out the inconsistencies or contradictions with the demand specifications, so as to propose a more complete solution.
    • Acceptance testing: After the software product has completed unit testing, integration testing and system testing, software testing activities are conducted before the product is released. 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 can be used by end users to perform the software's intended functions and tasks.
    • ##Delivery and Maintenance>>> User Manual/Operation Manual
  • ##Project Management

  • Version control: CVS/SVN/Git

    • Automatic build: Ant/Maven/Ivy/Gradle

    • Continuous integration: Hudson/Jenkins

    • System architecture

    Load balancing server: F5, A10

    • application server:

      • HTTP server: Apache, NginX (HTTP, reverse proxy, mail proxy server)

      • Servlet container: Tomcat, Resin

      • EJB container: WildFly (JBoss Application Server), GlassFish, Weblogic, Websphere

    • ##Database server: MySQL, Oracle

    Third-party tool (plug-in) application

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

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

    • Document processing: POI, iText, etc.

    • Workflow engine: jBPM, OpenWFE, Snaker, SWAMP, etc.

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

    • Cache services: EhCache, memcached, SwarmCache, etc.

    • Message queue: Open-MQ, ZeroMQ, 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 box: UEditor, CKEditor, etc.

    Interview questions

    • Which company was the project developed for? How much is the project investment?

    • How many people participated in project development? What is the ratio of testers, developers, and project managers in the entire team?

    • How long has the project been developed? What is the total code volume of the project? How much code do you have?

    • What kind of development model or development process does the project adopt? What is the structure of the project? What is the technology selection for the project?

    • What responsibilities do you have in the project? Do you have frequent meetings or work overtime? What are the gains or lessons learned after completing the project?

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

    Note: For those who have no actual project experience, you can search and recruit Java programmers on websites such as 51job, Zhaopin Recruitment, and Lagou.com Company, find their official website to learn about the projects they do, check the detailed introduction of the project, and then try to complete some of the functions. It is best to ask an expert to see if your design and code are appropriate. This is equivalent to accumulating a certain amount of experience. Project experience.

    Interview Questions

     Common Java interview questions have been summarized into "Java Interview Questions Collection", "Java Interview Questions Complete Collection" and "Interview Programming Questions Collection" 》 and other articles will be published on my blog one after another. I will continue to compile and publish interview questions from major companies.

    Others

    Common mistakes

    1. Only practice on the computer

    2. Not practicing behavioral interview questions

    3. Not doing mock interview training

    4. Trying to memorize answers

    5. Don’t speak out your problem-solving ideas out loud

    6. The code is not rigorous enough

    7. Don’t write test code

    8. Give up easily

    You can ask the interviewer questions during the interview

    1. I noticed that you use With X technology, how do you solve Y problem?

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

    3. I am not too familiar with the X technology you are talking about, 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 are there a week? What is the approximate amount of code per week?

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

    S.A.R. Rule

    The S.A.R rule means to first describe the problem scenario, then explain the actions you took, and finally state the results.

    Five ways to solve algorithm problems

    1. Example method: Discover the general rules through examples.

      Example: What is the probability that a triangle inscribed in a circle is an acute triangle? This is an interview question from Sogou. You can know the answer by randomly drawing three points on the circle and connecting them to form a triangle.

    2. Pattern matching method

      Example:The elements of an ordered array are moved through a loop, and the order of the elements becomes "3 4 5 6 1 2". How to find the smallest element in an array, assuming that the elements in the array are different. This question looks so similar to the binary search, so we can learn from the binary search algorithm. The smallest element obviously appears at the turning point of "mid > right".

    3. Simplified generalization method

      Description: Simplify the problem size and data type, and then discover a general solution.

    4. Simple construction method

      Example: Find all possible permutations and combinations of "abcde". First consider the case of only "a", then consider the case of "ab", and so on. You may end up with a recursive formula. This approach often evolves into a recursive approach.

    5. Data structure brainstorming method

      Example: Randomly generate some numbers and find their median. For this kind of question, you can go through the data structures you know in your mind and see which one is the most appropriate data structure. The above question can create two heaps, a large root heap and a small root heap. Smaller elements are placed in the large root heap, and larger elements are placed in the small root heap. If the two heaps are unbalanced, they can be taken out from one of the heaps. Just put the element into another heap. The final median should be one of the roots of the two heaps.

    Employment Negotiation

    1. Be confident and put forward specific treatment requirements

    2. Offer a slightly higher price than expected

    3. Don’t just focus on the salary (many companies are more willing to make concessions on conditions other than salary)

    4. Use the most appropriate method (you can try to negotiate the treatment on the phone or by email)

    Self-evaluation

    1. Learning ability (people in the IT industry need to constantly understand new technologies, tools and methods)

    2. Team awareness (compared to individual heroism, the IT industry More advocates teamwork)

    3. Stress resistance (the work intensity of many IT companies is relatively high)

    Attention, students learning Java! ! !

    The above is the detailed content of What professional skills do Java programmers need?. For more information, please follow other related articles on the PHP Chinese website!

    Statement:
    The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn