What are the professional skills that a qualified Java programmer or engineer needs to prepare before an interview? The contents of this article can be used as the content of a resume, or as an interview with the interviewer, you can write it to your resume, and, of course, you need to show these professional skills to the interviewer during the interview. This article is believed to be helpful for freshman who are looking for a Java programmer (Java engineer) position and a junior who wants to be a senior Java developer.
Professional Skills
- Proficient in the use of the Java language for object-oriented programming, good programming habits, familiar with common Java APIs, including the collection framework, multithreading (concurrent programming), I/O (NIO), sockets, JDBC, XML, reflection and so on.
- Familiar with JSP and Servlet-based Java Web development, the work and life cycle of servlet and JSP in-depth understanding, skilled use of Jstl and El Write script-free dynamic pages, with the use of listeners, filters and other Web Components and the MVC architecture pattern for Java Experience in Web project development.
- In-depth understanding of spring's IOC container and AOP principles, skilled use of the spring framework to manage a variety of Web components and their dependencies, proficient in the management of transactions, logs, security, etc. using spring MVC is familiar with spring's integration of other frameworks as a presentation layer technology and a Web project development experience using the persistence support provided by spring.
- Proficient in using the ORM framework such as Hibernate, MyBatis, and familiar with Hibernate and MyBatis's core API, we have an in-depth understanding of Hibernate's association mapping, inheritance mapping, component mapping, caching mechanism, transaction management, and performance tuning.
- Proficient in web front-end development using HTML, CSS and JavaScript, familiarity with jquery and Bootstrap, and a deep understanding of the application of AJAX technology in Web projects Experience in project development using the front-end MVC framework (AngularJS) and the JavaScript template engine (handlebars).
- Familiar with common relational database products (MySQL, Oracle), proficient in database programming using SQL and PL/MS.
- Familiar with object-oriented design principles, have in-depth understanding of GOF design Patterns and enterprise application architecture patterns, and experience in practical development, proficient in object-oriented analysis and design using UML, with TDD (test-driven development) and DDD (domain-driven design) experience.
- Familiar with the use of Apache, NginX, Tomcat, WildFly, WebLogic and other Web server and application server, familiar with various server consolidation, cluster and load balancing configuration.
- 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 the 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 list of these things are not each of you have to be the heart, according to the specific requirements of enterprise recruitment can do the corresponding targeted preparation. I personally think that the top 6 items should be the minimum requirement and the professional skills that a Java developer must have.
Project ExperienceProject Introduction
?? This system is x commissioned y developed for the z system, the system includes a, B, C, D and other modules. The system uses open source framework e and front-end technology F, Java Enterprise-class development. The presentation layer uses the G-architecture, using H as the Controller for view I and implementing the rest-style request; The business logic layer uses J-mode and implements the caching service via L through the functions of transaction, log and security by K, and the persistence layer uses m encapsulation crud operation, and the bottom uses N to realize data access. The entire project adopted the P development model.
Description: in the above description, E usually refers to spring (a one-stop choice for Java Enterprise Development); F most likely is the jquery library and its plugins or the bootstrap framework, Of course, if you want to build a single page application (SPA) The best scenario is the front-end MVC framework (such as ANGULARJS) and the JavaScript template engine (such as handlebars); G is obviously MVC (model-view-control), the most likely implementation framework is spring MVC, In addition to the myfaces implementations of Struts 2, JSF, and Apache for JSF, you can use JSP as V in MVC, or you can use a template engine such as freemarker and velocity to generate a view. It can also be a variety of documents or reports (such as Excel and PDFs), while Servlets and custom controllers are C in MVC, and of course Spring MVC provides the dispatcherservlet;j as the front-end controller, usually a transactional script, K should be AOP (aspect-oriented programming) technology, L currently widely used in the memcached and redis;m options are many, most likely is hibernate and MyBatis, can also be used in both techniques, but usually will be added to hibernate for processing , while complex queries are completed by MyBatis, and TopLink and Jooq are excellent durable layer solutions, and the underlying data access traditionally uses relational databases, which can be MySQL, Oracle, SQL Server, DB2, and so on, with the advent of the big data age, You can also use NoSQL (such as MongoDB, Membase, bigtable, etc.) and other big data access schemes (such as GFS, HDFS, etc.); The project development model P can be waterfall model, rapid prototyping model, incremental model, Helix model, Fountain model, RAD model, etc.
Project Development Process
- Feasibility Analysis >>> Feasibility Analysis Report/project development proposal
- Requirements Analysis >>> Requirements Specification
- OOAD (use case diagram, timing diagram, activity diagram)
- Interface Prototyping: Helping to understand requirements, business layer design derivation transaction scripts
- Design >>> Summary Design manual/Detailed design manual
- Extracting business entities (Domain objects): Class Diagrams, E-r diagrams (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 script mode (transaction: A user sends a request is a transaction; script: A method or a function; a transaction script: Encapsulates a request as a method or a function; a transaction script pattern: A transaction begins with the opening of a script, ending with a script closing). There are three types of objects involved in the business layer: The Transaction script class (the process that encapsulates the business), the data Access object (DAO, encapsulating the persisted operation), the data Transfer object (DTO, encapsulating the blood loss/anemia domain object), the relationship between the three is the transaction script class composition (aggregation) data Access object, Both 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 diagrams convert to inter-table diagrams, build libraries and build tables, insert test data using tools)
- Coding
- Test >>> test reports/bug reports
- Unit testing: Checking and validating the smallest testable unit in the software, testing the methods in the class in Java, and implementing them using the JUnit tool.
- Integration testing: Integration testing is also called assembly testing or joint testing. On the basis of unit testing, all modules are assembled as subsystems to be tested according to the design requirements.
- System testing: The confirmed software, hardware, peripherals, networks and other elements together to carry out a variety of information system 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 the requirements of the specifications inconsistent with or inconsistent with the place, Thus, a more perfect solution is proposed.
- Acceptance Testing: Software testing activities performed prior to product release after the completion of unit testing, integration testing, and system testing of the SOFTWARE PRODUCT. It is the final stage of a technical test, also known as a delivery test. The purpose of the acceptance test is to ensure that the software is ready and that it can be used by end users to perform the established functions and tasks of the software.
- Delivery and maintenance >>> user manuals/operating manuals
Project Management
- Version control: Cvs/svn/git
- Auto Build: Ant/maven/ivy/gradle
- Continuous Integration: Hudson/jenkins
System Architecture
- Load Balancer Server: F5, A10
- Application Server:
- HTTP server: Apache, NginX (HTTP, reverse proxy, mail proxy server)
- servlet containers: Tomcat, Resin
- EJB container: WildFly (JBoss application Server), GlassFish, Weblogic, Websphere
- Database server: MySQL, Oracle
third-party tools (plug-in) applications
- Charting tools: jquery-based chart plugins (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, and so on.
- Job scheduling: Quartz, JobServer, Oddjob and so on.
- Caching services: EhCache, memcached, Swarmcache, etc.
- Message Queuing: OPEN-MQ, ZEROMQ, and so on.
- Security framework: Shiro, Picketbox and so on.
- Search engine: Indextank, Lucene, Elasticsearch and so on.
- Ajax framework: JQuery, ExtJS, DWR, and more.
- UI plugins: Easyui, Miniui, and more.
- Rich text box: Ueditor, CKEditor and so on.
Interview Questions
- Which company was the project developed for? What is the project's input?
- How many people have been involved in project development? What is the ratio of testers, developers, and project managers across the team?
- How long did the project develop? What is the total code size of the project? What's your code size?
- What development models or development processes are used in the project? What is the architecture of the project? What is the technical selection of the project?
- What kind of responsibilities do you take on the project? Do you often meet or work overtime? What are the benefits or lessons learned after the project is completed?
- What is the hardest part of the project? How do I resolve the various conflicts encountered during team development?
Note: for no actual project experience, you can search the HRM, Zhaopin, hook nets and other web sites to recruit Java Programmer's company, find their official website to understand their projects, view the detailed description of the project, and then try to complete some of the features, It's better to ask the man to see if his design and code are appropriate, which is equivalent to accumulating a certain project experience.
Face Test
?? Java common face questions have been summed up in the "Java Surface question set", "Java face complete questions" and "interview programming problem supplements" and other articles published in my blog, the major companies in the face of the question I will continue to organize the release.
otherCommon errors
- Practice only on the computer
- Do not do the behavior surface question drill
- No mock interview training.
- Trying to memorize the answers
- Don't speak out your problem-solving ideas aloud
- The code is not rigorous.
- Do not write test code
- Give up lightly
you can ask the interviewer questions during the interview.
- I have noticed that you are using X technology, how do you solve the y problem?
- Why is your product using x technology instead of y technology? As far as I know, although X technology has the advantages of a, B and C, there are problems of D and E, and Y technology can solve the problems of D and E.
- I'm not too familiar with the X technology you're talking about, but I feel it's a good solution, can you tell me more about how it works?
- How does your team plan for the project? How many meetings do you have in a week? What is the approximate amount of code per week?
- The solution I can think of X is now only Y, how will you solve this problem?
S.A.R. Law
?? The S.A.R rule refers to the scenario in which the problem is described first, then the action you take and the final statement of the result.
Five methods of solving algorithm problems
Examples: The general rules are found by example.
Example: What is the probability of a acute triangle triangle being a circle? This is a dog's face test, you can draw at random three points on the circle to join a triangle can know the answer.
Pattern Matching method
Example: an ordered array of elements is moved through a loop, and the order of the elements becomes "3 4 5 6 1 2". How to find the smallest element in the array, assuming that the elements in the array are different. This topic and binary look so similar, so you can draw on the algorithm binary find, the smallest element apparently appears at the "Mid > right" turning point.
Simplified Promotion method
Description: Simplify the problem size and data type before discovering a common solution.
Simple Construction method
Example: find out all possible permutations of "ABCDE". Consider only the "a" situation, and then consider the "AB" situation, and so on. Eventually you will probably get a recursive formula. This approach tends to evolve into recursive methods.
Brainstorming method for data structure
Example: randomly generate some numbers and find out the number of digits. This kind of problem can be used in the mind of the data structure you understand, to see which is the most suitable for the structures. The above topic can build two heaps, a large root heap and a small Gan, the smaller elements placed in the large root heap, the larger elements placed in the small Gan, if the two heap is unbalanced, can be removed from one of the heap elements into another heap. The last median should be one of the two heap roots.
Employment Negotiation
- To be justly put forward specific treatment requirements
- offer a slightly higher price than expected
- Don't just stare at the salary (many companies prefer to make concessions on conditions other than salary)
- Use the most appropriate method (you can try to negotiate treatment in the phone or e-mail)
Self-evaluation
- Learning Ability (IT industry people need to constantly understand the new technology, tools and methods)
- Team Awareness (IT industry advocates teamwork compared to individual heroism)
- Compressive capacity (the intensity of work in many IT companies is relatively large)
Learn Java students pay attention to!!!
You are welcome to join the Java Learning Exchange Group when you encounter any problems in the learning process or want to acquire learning resources: 299541275 We'll learn java! together.
Java Employment Guide