Vocational skills
1. Proficient in using Java language for object-oriented programming, good programming habits, familiar with commonly used Java? API, including collection framework, multithreading (concurrent programming), I/O(NIO), Socket, JDBC, XML, reflection, etc.
2. Familiar with Java based on JSP and Servlet? Web development, deeply understand the working principle and life cycle of Servlet and JSP, skillfully use JSTL and EL to write scriptless dynamic pages, and use Web groups such as listeners and filters? And the MVC architecture pattern of Java? Experience in network project development.
3. 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 and security. As a presentation layer technology, MVC is familiar with the integration of Spring and other frameworks based on the experience of developing Web projects with the persistent support provided by Spring.
4. Skillfully use ORM frameworks such as Hibernate and MyBatis, be 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.
5. 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.
6. Familiar with commonly used relational database products (MySQL, Oracle), and skillfully use SQL and PL/SQL for database programming.
7. Be familiar with the object-oriented design principle, have a deep understanding of the GO of design pattern and enterprise application architecture pattern and relevant experience in actual development, be proficient in using UML for object-oriented analysis and design, 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 and Weblogic, and familiar with the configuration of various server integration, clustering and load balancing.
9. Skillfully use the product prototype tool Axure, and skillfully use the 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 item listed above should be familiar to you. You can make corresponding targeted preparations according to the specific requirements of enterprise recruitment. Personally, I think the first six items should be the minimum requirements and the professional skills that a Java developer must possess.
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.
Note: In the above 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, except Struts? 2.JSF and Apache can realize MyFaces for JSF by using JSP as V in MVC, template engines (such as Freemarker and Velocity) to generate views, and various documents or reports (such as Excel and PDF). Servlet and custom controllers are C in MVC. Sure, spring? Dispatcher service network; Because the front-end controller is provided in MVC. J is usually a transaction script, and 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. Traditionally, the underlying data access uses relational databases, such as 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. The development model P of the project can be waterfall model, rapid prototype model model, incremental model, spiral model, fountain model, RAD model, etc.
Project development process
1. Feasibility analysis? & gt& gt& gt? Feasibility analysis report? /? Project development plan
2. Demand analysis? & gt& gt& gt? Demand specification
1.OOAD (use case diagram, sequence diagram, activity diagram)
2. Interface prototype: When designing business layer, it helps to understand requirements and export transaction scripts.
3. design? & gt& gt& gt? Brief design specification/detailed design specification
1. Extract business entities (domain objects): class diagram and E-R diagram (conceptual design stage)
2. 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 an open script and ends with a closed 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, both of which depend on data transmission objects.
3. Forward engineering (UML class diagram generates Java code) and reverse engineering (Java code generates UML class diagram).
4. Physical design of database (converting ER diagram into relational diagram between tables, establishing database and tables, and inserting test data with tools).
4. coding? 5. test? & gt& gt& gt? Test report? /? Defect report
1. unit test: check and verify the smallest testable unit in the software. In Java, it is a method in a test class, which can be achieved by using JUnit tools.
2. 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.
3. System testing: the confirmed software, hardware, peripherals, networks and other elements are combined 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 the requirement specification, find out the inconsistencies or contradictions with the requirement specification, and then put forward a more perfect scheme.
4. Acceptance test: software testing activities after the software product completes 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 acceptance testing is to ensure that the software is ready and can be used by end users to perform the established functions and tasks of the software.
5. Delivery and maintenance? & gt& gt& gt? User manual? /? Operation guide
project management
Version control: CVS/SVN/Git
Automatic build: Ant/Maven/Ivy/Gradle
Continuous integration: Hudson/Jenkins
system structure
Load balancing servers: F5, A 10
Application server:
HTTP servers: Apache, NginX(HTTP, reverse proxy, mail proxy server)
Servlet container: Tomcat, Resin
EJB container: wildflowers (JBoss? Apply? Server)、GlassFish、Weblogic、Websphere? Database servers: MySQL, Oracle
Third-Party Tools (Plug-ins) Applications
Chart tools: chart plug-ins based on jQuery (such as jQchart, Flot, Charted, etc.). ), Chart.js, Highcharts, etc.
Reporting tool: Pentaho? Report, iReport, dynamic report, 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, 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.
Interview question
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 responsibilities 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?
Ming: For those who don't have actual project experience, you can search for companies that recruit Java programmers on the websites of Worry-Free Future, Worry-Free Future, and so on, find their official website to learn about the projects they have done, view the detailed introduction of the projects, and then try to complete some functions. It is best to consult experts to see if their design and code are appropriate, which is equivalent to accumulating some project experience.
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 for the X problem is Y. How would you solve this problem?
Employment negotiation
We should confidently put forward specific treatment requirements.
The bid was slightly higher than expected
Don't just focus on salary (many companies prefer to make concessions on conditions other than salary)
Use the most appropriate method (you can try to negotiate treatment by phone or email)
self-assessment
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)
Self-taught programming, free access to high-quality IT tutorials and materials, search: dark horse programmers.
Web page link