Basic and advanced Java programmers must-see knowledge

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!

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=325436883&siteId=291194637