Back-end guidebook (recommended collection): This article tells you what to learn from the back-end? Where should I start!

1. Language related

Insert picture description here

1.1 Java

Core knowledge points:

  • Java's class loading mechanism
  • JVM related: JVM memory model and structure, GC principle, performance tuning
  • Generic
  • Collection system
  • Abnormal system
  • IO system
  • Multithreaded programming
  • reflection
  • Servlet

Recommended data:

  • "Java Programming Thoughts"
  • 《Effective Java》
  • "In-depth understanding of the Java virtual machine"

1.2 Shell, Python and other scripting languages

Introduction

The significance of this type of scripting language is to assist back-end development, including system operation and maintenance, tool integration (through pipelines, redirection), text processing, data calculations, etc., to improve back-end work efficiency

Core knowledge points (Shell)

  • Commonly used Linux operation and operation and maintenance commands
  • Pipeline, redirection
  • Text processing tools such as awk and sed

Recommended books

  • "Linux and Unix Shell Programming Guide"
  • "Bird Brother's Linux Private Kitchen"
  • "Python programming from entry to practice"

1.3 SQL language

Introduction

A structured query model language commonly used in traditional relational databases and big data scenarios. Traditional databases must be proficient in mysql sql syntax; big data scenarios mainly master Hive SQL (Impala and Spark SQL are compatible with Hive SQL)

Core knowledge points:

  • Distinguish between DDL and DML
  • The main structure of the classic query statement
  • Table connection (inner connection, left outer connection, right outer connection, full connection)
  • Function (normal function, aggregate function)
  • index
  • Partition

Applicable scene

  • Traditional database, traditional SQL: used for transactional data operations, usually used in the business database of the system;
  • SQL in big data scenarios: used for data analysis, interactive query, batch data processing, etc.

Recommended books

  • MySQL: "High Performance MySQL"
  • Hive SQL: "Hive Programming Guide"

I have compiled interview questions from more than 20 companies here, as well as various knowledge points about Spring, Spring boot, Spring MVC, MyBatis, MySQL, JVM, etc. Due to space limitations, I did not write the answers in this article. If necessary Friends can join the group 1149778920 to receive the secret code by themselves : qf
Insert picture description here

2. Development Tools

2.1 Development IDE Intellij/Eclipse

Core knowledge points:

  • Configure a good code style template, including file comments, class comments, method comments, indentation and line feed, etc.
  • Install and use necessary plug-ins: code standard check plug-in (Alibaba Java Coding Guidelines), source code potential bug check plug-in (pmd), bytecode potential bug check plug-in (findbugs), etc.

2.2 Project construction MAVEN

Core knowledge points:

  • maven warehouse
  • maven pom.xml file configuration
  • Maven build life cycle
  • maven plugin

skill requirements

  • Learn to configure the maven multi-level project structure
  • Can solve problems such as jar package conflicts that often appear in project construction
  • Familiar with maven

Recommended books

  • "Maven Actual Combat"

2.3 Version Management GIT

Introduction

  • Git is an open source distributed version control system. Through standardized tools and processes, developers can collaborate efficiently and keep products running stably.

3. Development/Test Framework

3.1 Spring Framework System Spring MVC/Spring Boot

Core knowledge points:

  • Module composition of Spring framework
  • The design idea and realization principle of IOC and AOP
  • Bean's scope and life cycle

Reference description

  • Conditionally read the code of the spring core module, the process of debugging the startup of the Spring framework and the Bean service is a better way to understand the principle of spring
  • The latest version updates and reference documents can be directly browsed on the Spring official website

3.2 orm framework mybatis/hibernate

mybatis introduction

Persistence layer framework, through the way of xml mapping, allows developers to mainly care about sql implementation. The framework implements the mapping from entities to java classes, the implementation of data access layer services, access optimization, etc.

Core knowledge points:

  • Proficiency in configuring and using mybatis, mastering the writing of mapper xml
  • Will use mybatis-generator's mvn plugin to automatically generate DAO layer code and xml configuration
  • Understand the first and second level caches of mybatis, understand the sql session creation process and sql execution process

Recommended information

  • The latest version updates and reference documents can be directly browsed on the Mybatis official website

3.3 Test Framework Junit/TestNG

Core competence requirements:

  • Proficiency in unit testing and interface testing using Junit/TestNG
  • Learn to use Mockito to solve the mock test of external systems and module dependencies
  • Learn to use maven's surfire plugin and jacoco plugin to measure the pass rate of test cases, test code coverage and other indicators

4. Server-side middleware

4.1 key-value storage system

Typical: redis/memcache

Core knowledge points:

  • Redis configuration strategy (persistence strategy, replacement algorithm, etc.)
  • Redis deployment mode (standalone single machine, sentinel sentinel, cluster cluster), the essence of sentinel is master-slave switching, cluster is a true distributed deployment that can linearly expand memory resources
  • Data structure supported by redis

Applicable scene

  • Distributed session storage, data cache, distributed lock, simple message queue, counter (accumulator)

4.2 Message queue

Typical: rabbitmq/kafka

Core knowledge:

  • AMQP protocol corresponds to the main concepts in the message model
  • Comparison of two cluster modes: normal cluster and mirrored cluster (HA)
  • kafka
  • Distributed topology based on zk
  • Understand the message writing process, writing mode, message storage mode, message consumption mode, etc. supported by Kafka
  • rabbitmq

Applicable scene

  • Message middleware is generally suitable for: a high degree of decoupling between systems; asynchronous transmission of data (non-blocking); ensuring that the data can be persisted during the data transmission process, solving the problem of inconsistent capabilities between the production side and the consumer side, and avoiding peak data to downstream services Node impact, etc.
  • Compare rabbitmq and kafka: rabbitmq is mainly suitable for scenarios with high data reliability and consistency requirements; kafka is mainly suitable for scenarios where data throughput is compared, such as real-time transmission of log data, etc.

4.3 Distributed file storage

Typical: NetEase nos/Alibaba Cloud oss

Applicable scene:

  • Store file objects that need to be shared under a distributed architecture: such as front-end static files, image resources, large file resources, etc.

4.4 Service governance/RPC framework

Typical: Ali dubbo

Core knowledge

Registration center, core concepts such as service registration, service discovery, load balancing, serialization, deserialization, encoding, and decoding

Applicable scene

In a relatively complex application service network, it plays the role of service governance, service decoupling, balance, and simplified service call mode

4.5 Java Web Container

Typical: tomcat/jetty, etc.

Introduction

It is essentially a servlet container, that is, Java Web applications can be run on it

4.6 Nginx

Introduction

Nginx is essentially an HTTP and reverse proxy server

Applicable scene

http server, reverse proxy, soft load balancer, etc.

4.7 Relational Database

Typical: MYSQL/ORACLE

Core knowledge

  • index
  • Transaction and transaction isolation level
  • Storage method
  • trigger
  • SQL differences between different relational databases

Recommended books

  • "High Performance MySQL"
  • "Oracle from entry to master"

5. Big data storage and computing framework, etc.

Core competence requirements:

  • Understand the overall framework and composition of the big data system
  • Familiar with various big data storage, computing frameworks, query engines and other major architectures, functions and applicable scenarios
  • Able to select a reasonable big data technology solution during the construction of the project

6. Other

6.1 Permission related

Introduction:

  • Permission related to: identity authentication, authentication, permission management, etc.

Core knowledge points:

  • RBAC (Role-Based Access Control) model
  • Understand the design idea and operation process of OAuth 2.0

6.2 Safety related

Introduction

There are many security issues that need to be paid attention to in the back-end development. These security issues may come from malicious attacks, or from the lack of security and robustness of the system itself. The prerequisite for preventing application security vulnerabilities is to understand the concepts, principles and causes of common vulnerabilities

Core knowledge

  • Horizontal permission and vertical permission vulnerabilities, and how to avoid them in program development
  • SQL injection attacks (precompiled by mybatis can be avoided)
  • Commonly used current limiting strategies
  • CSRF attack
  • XSS attack

6.3 Log related

Core knowledge points:

  • The relationship between Log4j, Logback, and SLF4J, the application cannot directly use the API in the logging system (Log4j, Logback), but should rely on the API in the logging framework SLF4J
  • Log level (error/warn/info/debug)
  • Log retention time

6.4 Exception handling related

Core knowledge points:

  • Exception classification, correctly distinguish the exception handling method
  • Exception handling principle
  • Learn to use the spring framework, etc. to turn exceptions into error codes and error messages that are more friendly to users or callers

6.5 RestFul interface design related

Introduction

Restful currently uses more interface design and the main principle of relying on http interface design between services. Based on good conventions, it can make the interface simple and easy to understand and improve the efficiency of teamwork.

6.6 Online troubleshooting process and tools

Core knowledge points:

  • System troubleshooting: learn to use w/uptime, top, df, netstat, iostat and various visual monitoring tools to troubleshoot system problems such as the load, disk, memory, and network of the machine

  • Application troubleshooting: Learn to troubleshoot application system problems based on application system error logs, jps, jinfo, jstat, jstack, jmap, and various visual monitoring tools

  • Database troubleshooting: learn to use MySQL slow query log, explain and various visualization tools to troubleshoot various problems in the use of MySQL

  • Network troubleshooting: learn to use telnet, ping, wget, nc and other tools to troubleshoot network issues

6.7 Multithreaded programming

Core knowledge points:

  • Implementation and relationship of Java thread-related interfaces and classes
  • Java thread pool
  • Thread synchronization, locks, etc.

6.8 Network related

Core knowledge points:

  • Master the division, connection and communication process of the http protocol message body
  • Grasp the meaning of http main return status codes
  • Master the connection and communication process of https protocol

6.9 Design principles and design patterns

Core knowledge points:

  • Singleton mode
  • Strategy mode
  • Agency model
  • Observer mode
  • Decorative pattern
  • Adapter mode
  • Combination mode
  • Factory mode
  • Template method pattern
  • Single responsibility principle
  • Richter substitution principle
  • Dependence inversion principle
  • Interface isolation principle
  • Dimit's Law
  • Principle of opening and closing
  • Combination/aggregation reuse principle
  • Seven design principles
  • Some commonly used design patterns

6.10 Distributed system design related

Core knowledge points:

  • Quartz, a preemptive distributed timer based on database locks
  • Database-based
  • Cache-based
  • Based on zookeeper
  • Consensus theory
  • Distributed transaction solution
  • Consistency model
  • CAP theorem
  • BASE theory
  • Strong consistency
  • Weak consistency
  • Final consistency
  • eBay Event Queue Solution
  • TCC (Try-Confirm-Cancel) compensation mode
  • Eventual consistency of cached data
  • Strong consistency (two-stage submission and three-stage submission model, Paxos or Raft algorithm)
  • Final consistency
  • SOA
  • Microservice
  • Servless
  • Distributed system architecture design
  • Distributed transaction
  • Distributed lock
  • Distributed timer

end…

In addition, if you want to know more about concurrent programming related interviews or other related knowledge points and interview questions, you can click on the group 1149778920 to join us to collect it by yourself, the code: qf, I also collected more than 20 years of company interviews Knowledge points and various technical points are sorted out. Some screenshots below are hoped to be helpful to everyone.

Insert picture description here

Insert picture description here

Guess you like

Origin blog.csdn.net/SpringBoot_/article/details/109750369