foreword
A friend of mine recently shared a good thing with me, and I couldn’t help but share it with everyone.
This document was led by Alibaba architects and combined the opinions of everyone in the P6 - P8 level positions in the department, and the 1.0 version was born. ( I don’t need to say more about the quality of this lineup. ) The content is very comprehensive, mainly based on the interview requirements of major Internet companies, including:
- Distributed Architecture (Characteristics of Large Website Systems + Architecture Evolution and Development Process + Microservices)
- Middleware technology (cache + message queue + search engine)
- Big data and high concurrency technology (Seckill architecture design + database architecture + Alibaba commodity information storage technology + current limiting algorithm)
- Database (index + development specification + paradigm + transaction + MVCC)
- Design patterns and practices (common design patterns + AOP/IOC + Zookeeper)
- Data structure and algorithm (common algorithm + red-black tree, etc. + HashMap)
- Virtualization technology (JVM memory management + Docker + Jenkins)
- Examples of interview questions (ask questions in real interview scenarios)
Each knowledge point has a left navigation bookmark page, which is very convenient to read. Due to the large amount of content, here are some screenshots. If you need a friend, just private message me directly~
The information in the text has been packaged and sorted out, just private message me [interview]
Design Patterns and Practice
The Five Principles of OOP SOLID
- single responsibility principle
- open closed principle
- Liskov Substitution Principle
- Dependency Inversion Principle
- Interface separation principle
Aspect Oriented Programming (AOP) + Inversion of Control IOC
- basic idea
- Login authentication
- RBAC-based rights management
- logging
- Transaction processing
- Unified exception handling
Design Patterns
- proxy mode
- factory pattern
- Observer pattern
Zookeeper
- Brief description of ZK
- storage structure
- Application scenarios
- write data flow
- Leader election
middleware
cache
- Why use cache
- Excellent caching system Redis
- Why is redis so fast
- The data types of redis, and the usage scenarios of each data type
- Redis expiration policy and memory elimination mechanism
- Progressive ReHash
- Reasons for progressive rehash
- cache penetration
- Cache Avalanche
message queue
- Message Queuing Application Scenario
- Asynchronous processing
- Application decoupling
- cut edge
- log processing
- Newsletter
- Message middleware case
- JMS message service
- prevent message loss
- Idempotent processing of messages
- In-order processing of messages
search engine
- Overview
- Features (Advantages)
- scenes to be used
- Inverted index
- create index
- search index
- Lucene和ElasticSearch
- tokenizer
Big data processing and high concurrency
Seckill Architecture Design
- Business Features
- Technical Difficulties
- Architecture Design Thinking
- Overall structure
- Client-side optimization
- API access layer optimization
- SOA service layer optimization
- Seckill the overall process
database schema
- The good old days of stand-alone MySQL
- Memcached (cache) + MySQL + vertical split
- Mysql master-slave replication read-write separation
- Sub-table and sub-library + horizontal split + mysql cluster
- MySQL scalability bottleneck
- Why use NOSQL NOT ONLY SQL
- Traditional RDBMS vs NOSQL
- Types of NOSQL databases
How to store product information on Alibaba Chinese station
- Basic product information
- Product description, details, evaluation information (multi-text)
- product pictures
- Product keywords
- Hot spot high-frequency information of commodity band
- Commodity transaction, price calculation, point accumulation
- Difficulties and Solutions of Large Internet Applications (Big Data, High Concurrency, Diverse Data Types)
Horizontal and vertical splitting of data
- vertical split
- split horizontally
- split principle
- case analysis
Distributed transaction
- If there is no distributed transaction
- What is a distributed transaction?
- XA two-phase commit (2PC)
- XA three-phase commit (3PC)
- MQ transaction
- TCC affairs
BitMap+Bloom Filter
- The basic idea of Bit-map
- Quick Sort of Bit-map Application
- Quick deduplication of Bit-map applications
- Quick query of Bit-map application
- Bit-map extension - Bloom Filter (Bloom filter)
Common current limiting algorithm + consistent Hash algorithm
- counter method
- sliding window
- leaky bucket algorithm
- Token Bucket Algorithm
- Counter vs Sliding Window
- Leaky Bucket Algorithm VS Token Bucket Algorithm
load balancing
- dns domain name resolution load balancing
- Reverse proxy load balancing
- http redirection protocol to achieve load balancing
- Layered load balancing algorithm
database
Database development specification
- Database Three Paradigm
- basic specification
- Naming conventions
- Field Design Specifications
database index
- MyISAM vs InnoDB
- unique index
- non-unique index
- primary key index
- Clustered Index (Clustered Index)
- Extension: What is the difference between a clustered index and a non-clustered index? When are they used?
- Index Implementation Mechanism
- Indexing Principles
Problems caused by concurrent transactions + MVCC (multi-version concurrency control)
- lost update
- dirty reads (uncommitted reads)
- non-repeatable read
- Phantom Read
Transaction isolation level and lock implementation mechanism
- Level 1 blocking protocol (corresponding to read uncommited)
- Level 2 blocking protocol (corresponding to read committed)
- Level 3 blocking protocol (corresponding to reapetable read)
- Strongest blocking protocol (corresponding to Serialization)
Gap locks and phantom reads
- Gap lock (Next-Key lock)
- Prevent phantom reading at RR level
Distributed Architecture
Characteristics of a large website system
- High concurrency, large traffic
- High availability
- Massive Data
- Wide distribution of users and complex network conditions
- Bad security environment
- Rapid changes in requirements and frequent releases
- incremental development
The evolution and development process of large-scale website architecture
- Website architecture at initial stage
- Separation of application services and data services
- Using caching to improve website performance
- Improve the concurrent processing power of your website using a cluster of application servers
- Database read and write separation
- Accelerate website response with reverse proxy and CDN
- Working with distributed file systems and distributed database systems
- Use NoSQL and search engines
- business split
- Distributed Microservices
- Split VS cluster
- Microservices vs SOA
- Complete separation of front-end and back-end and Rest specification
- CAP three into two and Base theorem
- Distributed consistency theory paxos, raft, zab algorithm
Data Structures and Algorithms
- Tree
- BST tree
- BST tree
- AVL tree
- red-black tree
- B-tree
- B+ tree
- dictionary tree
- skip table
- HashMap
- ConcurrentHashMap
- ConcurrentLinkedQueue
- Topk problem
Container Virtualization Technology
Resource pool idea
- effect
- Thread Pool
- connection pool
JVM memory management algorithm
- Determine if an object is alive
- reference counting
- Reachability Analysis Algorithms
- Garbage Collection Algorithm
- Mark-Sweep
- Copying algorithm (Copying)
- Mark-Compact
- Generational Collection
Container Virtualization Technology, Doocker Thought
- why docker
- docker concept
- Method to realize
- Composition of docker
Continuous integration, continuous release, jenkins
- Continuous Integration
- Manual deployment
- Automatic deployment
Big factory interview example real questions
Design a globally unique number issuer in a distributed environment
- UUID
- Database auto-incrementing sequence or field
- Database sequence table and optimistic locking
- Redis generates ID
- Twitter's snowflake algorithm
Design an LRU cache with an expiration time
- Problem Description
- problem analysis
- Expiration time implementation
- maintain a thread
- mouth inert removal
Design a distributed lock
- What is a distributed lock?
- What kind of distributed lock do we need?
- Distributed lock based on database
- Based on optimistic locking
- Based on pessimistic locking
- Distributed lock based on Redis
- Distributed locks based on redis's setnx() and expire() methods
- Distributed lock based on redis setnx(), get(), getset() methods
- Distributed lock based on ZooKeeper
- Notes on using distributed locks
- Design of Distributed Reentrant Locks
Design a unified configuration center in a distributed environment
- Configuration Center Overview
- Evolving configuration
- Simple version of configuration center
- Configuration Center performance improvements
- Usability Improvements in Configuration Center
The space is limited, and it is impossible to display one question and one answer (these technical difficulties and real interview questions have been collected in this "Internet Interview Reference Guide" collected by Alibaba bosses),
The information in the text has been packaged and sorted, and you can get it directly for free by private letter [Interview]
From the actual situation, if you do research and development, the first choice should be to go to a big factory.
First, big factories respect technology more and are willing to pay higher salaries for technicians . Not to brag or blackmail, most small company owners simply do not realize the importance of technology.
Second, large factories have a larger number of users and better technical application scenarios , um, high concurrency and large traffic.
I believe that the above reference guide for interviews with big factories can be a stepping stone for you to enter big factories such as BATJMZ.
If you need it, you can look here:
In the same way, you can directly send a small private message~