What is a basic level Java programmer?
Familiar with commonly used data structures, including arrays, linked lists, trees, hash tables, etc.
Familiar with structured programming and object-oriented programming.
Ability to read UML design diagrams and code according to UML semantics
Understand the use of RDBMS and SQL, including DDL and DML, understand database transactions (ACID), locks and deadlocks.
Familiar with Java syntax features, correctly understand multithreading, synchronization, critical sections, thread safety, exceptions, generics, etc.
Learn about common Java libraries
Be able to read javadoc in both Chinese and English, and quickly get started with new class libraries and frameworks.
Familiar with Java web programming such as Servlet, Spring, and ORM frameworks.
Proficient in using Java IDE such as eclipse, especially able to debug errors.
Will use build tools such as Ant, Maven to build the project.
Will use JUnit to develop unit test cases and be able to use code coverage tools such as EMMA to check test coverage
It's better if you can use code tuning tools to improve code performance
It would be better if you could use static checking tools like PMD to check for problems in your code
Class loading is better if you can understand the mechanics of the JVM such as garbage collection
What does it mean to be an advanced Java programmer?
Master object-oriented requirements analysis and design
Understand SOLID principles, understand common design patterns, and be proficient in refactoring
Understand Service Oriented Architecture
Understand some concepts of the Linux operating system, such as kernel space, user space, system calls, named pipes, Unix Domain Socket,
Familiar with command line tools under Linux.
In-depth understanding of processes, threads.
Understanding the Java Memory Model
Understand Java's concurrent packages such as Locks, Read-Write Locks, Barrier, Executer and Future
Understanding Java 8's Lambda Expressions and Streaming API
Understand the TCP/IP protocol suite
Understand HTTP protocol and REST API
Understanding multiplexing and non-blocking IO
Familiar with Socket programming, able to use network frameworks such as netty to develop server programs
Master the use of RPC frameworks, such as RMI, Thrift, Dubbo
Master the use of message queues, such as JMS, ActiveMQ, etc.
Master the use of distributed caches such as memcache and Redis
Understand the use of proxies and load balancers such as Nginx
Familiar with distributed KV storage such as zookeeper, etcd, etc., understand master selection and distributed locks, and use Mock framework for unit testing
Learn about performance aspects such as throughput and latency. Ability to perform performance tests, collect performance data and perform analysis.
Understand security-related knowledge, such as privacy (encryption and decryption), integrity (message authentication), non-repudiation (signature and verification), identity authentication, authorization, transport layer security (such as SSL/TLS), digital certificates and PKI system
Understand availability related knowledge (such as availability metrics, such as MTBF, MTTR, and high-availability implementations, such as active-standby. Active-active, load balancing
Understand fault tolerance, disaster tolerance and failover If you encounter any problems in the process of learning Java or at work, you can ask questions in the group. Ali Java senior Daniel will explain knowledge points, share knowledge, and sort out years of work experience. And summary, take everyone to establish their own technical system and technical cognition comprehensively and scientifically! JAVA learning exchange QQ group: 288351179 You can add a group to find me for a link to the class Note: it is free without development experience!