Video Số 159: Ngày đầu mở bán vé TÀU - Hệ thống api sập
Hướng dẫn học tập và phỏng vấn Java
Lưu ý khi sử dụng tài liệu này:
- Các nhà phỏng vấn có kinh nghiệm sẽ khai thác kiến thức kỹ thuật dựa trên kinh nghiệm dự án của bạn. Đừng chỉ học thuộc lòng tài liệu, hãy cố gắng hiểu sâu sắc các khái niệm và ứng dụng thực tế.
Hãy ủng hộ Cộng đồng văn minh Tips Javascript:
- Nếu bạn thấy nội dung của này hữu ích, hãy dành tặng một Star, đây là sự động viên lớn nhất đối với chúng tôi.
- Cảm ơn các bạn đã đồng hành và cùng nhau cố gắng nhé!
- Truy cập GitHub để xem và ủng hộ dự án.
- Link từng Step sẽ update liên tục
Java
Cơ bản
Tổng hợp các chủ đề kiến thức/câu hỏi phỏng vấn:
- Tổng hợp các điểm kiến thức và câu hỏi phỏng vấn cơ bản về Java (Phần 1)
- Tổng hợp các điểm kiến thức và câu hỏi phỏng vấn cơ bản về Java (Phần 2)
- Tổng hợp các điểm kiến thức và câu hỏi phỏng vấn cơ bản về Java (Phần 3)
Giải thích chi tiết các điểm kiến thức quan trọng:
- Tại sao trong Java chỉ có truyền theo giá trị?
- Giải thích về Seri hóa Java
- Giải thích về Generic và Wildcard
- Giải thích về cơ chế phản chiếu Java
- Giải thích về mô hình Proxy trong Java
- Giải thích về BigDecimal
- Giải thích về lớp ma thuật Unsafe trong Java
- Giải thích về cơ chế SPI trong Java
- Giải thích về cú pháp đường trong Java
Bộ sưu tập (Collections)
Tổng hợp các điểm kiến thức/câu hỏi phỏng vấn:
- Tổng hợp các điểm kiến thức và câu hỏi phỏng vấn về Collections Java (Phần 1)
- Tổng hợp các điểm kiến thức và câu hỏi phỏng vấn về Collections Java (Phần 2)
- Tổng hợp các lưu ý khi sử dụng Collections Java
Phân tích mã nguồn:
- Phân tích mã nguồn ArrayList + cơ chế mở rộng
- Phân tích mã nguồn LinkedList
- Phân tích mã nguồn HashMap + cấu trúc dữ liệu cơ bản
- Phân tích mã nguồn ConcurrentHashMap + cấu trúc dữ liệu cơ bản
- Phân tích mã nguồn LinkedHashMap
- Phân tích mã nguồn CopyOnWriteArrayList
- Phân tích mã nguồn ArrayBlockingQueue
- Phân tích mã nguồn PriorityQueue
- Phân tích mã nguồn DelayQueue
IO
- Tổng hợp kiến thức cơ bản về IO
- Tổng hợp các mô hình thiết kế IO
- Giải thích về mô hình IO
- Tổng hợp kiến thức cốt lõi về NIO
Tính đồng thời (Concurrency)
Tổng hợp các điểm kiến thức/câu hỏi phỏng vấn:
- Tổng hợp các điểm kiến thức và câu hỏi phỏng vấn về Tính đồng thời Java (Phần 1)
- Tổng hợp các điểm kiến thức và câu hỏi phỏng vấn về Tính đồng thời Java (Phần 2)
- Tổng hợp các điểm kiến thức và câu hỏi phỏng vấn về Tính đồng thời Java (Phần 3)
Giải thích chi tiết các điểm kiến thức quan trọng:
- Giải thích về khóa lạc quan (Optimistic Locking) và khóa bi quan (Pessimistic Locking)
- Giải thích về CAS
- Giải thích về JMM (Mô hình bộ nhớ Java)
- Thread Pool: Giải thích về Thread Pool Java、Thực hành tốt nhất về Thread Pool Java
- Giải thích về ThreadLocal
- Tổng hợp về Concurrent Collections Java
- Tổng hợp về lớp Atomic
- Giải thích về AQS
- Giải thích về CompletableFuture
JVM
- Vùng bộ nhớ Java (Java Memory Areas)
- Thu gom rác JVM (JVM Garbage Collection)
- Cấu trúc tệp lớp (File Structure)
- Quá trình tải lớp (Loading Process)
- Bộ tải lớp (Class Loaders)
Các tính năng mới
- Java 8:Tổng hợp các tính năng mới của Java 8 (Bản dịch)、Tổng hợp các tính năng mới thường dùng của Java8
- Tổng quan về các tính năng mới của Java 9
- Tổng quan về các tính năng mới của Java 10
- Tổng quan về các tính năng mới của Java 11
- Tổng quan về các tính năng mới của Java 12 & 13
- Tổng quan về các tính năng mới của Java 14 & 15
- Tổng quan về các tính năng mới của Java 16
- Tổng quan về các tính năng mới của Java 17
- Tổng quan về các tính năng mới của Java 18
- Tổng quan về các tính năng mới của Java 19
- Tổng quan về các tính năng mới của Java 20
- Tổng quan về các tính năng mới của Java 21
- Tổng quan về các tính năng mới của Java 22 & 23
Kiến thức máy tính cơ bản
Hệ điều hành
- Tổng hợp các điểm kiến thức và câu hỏi phỏng vấn về hệ điều hành (Phần 1)
- Tổng hợp các điểm kiến thức và câu hỏi phỏng vấn về hệ điều hành (Phần 2)
- Linux:
Mạng
Tổng hợp các điểm kiến thức/câu hỏi phỏng vấn:
- Tổng hợp các điểm kiến thức và câu hỏi phỏng vấn về mạng máy tính (Phần 1)
- Tổng hợp các điểm kiến thức và câu hỏi phỏng vấn về mạng máy tính (Phần 2)
Giải thích chi tiết các chủ điểm kiến thức quan trọng:
- Giải thích về mô hình phân tầng OSI và TCP/IP (Cơ bản)
- Tổng hợp các giao thức phổ biến ở lớp ứng dụng (Lớp ứng dụng)
- HTTP vs HTTPS (Lớp ứng dụng)
- HTTP 1.0 vs HTTP 1.1 (Lớp ứng dụng)
- Các mã trạng thái phổ biến của HTTP (Lớp ứng dụng)
- Giải thích về hệ thống tên miền DNS (Lớp ứng dụng)
- Ba lần bắt tay và bốn lần vẫy tay của TCP (Lớp truyền tải)
- Bảo đảm tính tin cậy truyền tải của TCP (Lớp truyền tải)
- Giải thích về giao thức ARP (Lớp mạng)
- Giải thích về giao thức NAT (Lớp mạng)
- Tổng hợp các phương pháp tấn công mạng phổ biến (Bảo mật)
Cấu trúc dữ liệu
Minh họa cấu trúc dữ liệu:
- Cấu trúc dữ liệu tuyến tính: Mảng, danh sách liên kết, ngăn xếp, hàng đợi
- Đồ thị
- Đống
- Cây:Tập trung vào Red-Black Trees、B-, B+, B* Trees, LSM Trees
Các cấu trúc dữ liệu thường được sử dụng khác:
Thuật toán
Phần nội dung về thuật toán rất quan trọng, nếu bạn không biết cách học thuật toán, hãy xem những gì tôi đã viết:
Tổng hợp các vấn đề thuật toán phổ biến:
- Tổng hợp một số bài toán thuật toán chuỗi phổ biến
- Tổng hợp một số bài toán thuật toán danh sách liên kết phổ biến
- Một số bài toán lập trình trong "Sword Refers to Offer"
- Mười thuật toán sắp xếp cổ điển
Ngoài ra, trang web GeeksforGeeks đã tổng hợp các thuật toán phổ biến, khá toàn diện và có hệ thống.
Cơ sở dữ liệu
Cơ bản
- Tổng hợp kiến thức cơ bản về cơ sở dữ liệu
- Tổng hợp kiến thức cơ bản về NoSQL
- Giải thích về Character Sets
- SQL :
MySQL
Tổng hợp các điểm kiến thức/câu hỏi phỏng vấn:
- Tổng hợp các điểm kiến thức và câu hỏi phỏng vấn về MySQL
- Tổng hợp các recommendations về quy tắc tối ưu hóa hiệu suất cao của MySQL
Các điểm kiến thức quan trọng:
- Giải thích về chỉ mục MySQL
- Giải thích về cấp độ cách ly giao dịch (Transaction Isolation Levels) của MySQL bằng hình ảnh
- Giải thích về ba nhật ký của MySQL (binlog, redo log và undo log)
- Cơ chế thực hiện MVCC của công cụ lưu trữ InnoDB
- Quá trình thực hiện câu lệnh SQL trong MySQL
- Giải thích về bộ nhớ đệm truy vấn của MySQL
- Phân tích kế hoạch thực hiện (Execution Plan) của MySQL
- Khóa chính tự động tăng có phải luôn liên tục không?
- Khuyến nghị về lưu trữ dữ liệu kiểu thời gian của MySQL
- Chuyển đổi ngầm định (Index Invalidation) gây ra sự vô hiệu hóa chỉ mục của MySQL
Redis
Tổng hợp các điểm kiến thức/câu hỏi phỏng vấn:
- Tổng hợp các điểm kiến thức và câu hỏi phỏng vấn về Redis (Phần 1)
- Tổng hợp các điểm kiến thức và câu hỏi phỏng vấn về Redis (Phần 2)
Các điểm kiến thức quan trọng:
- Giải thích về 3 chiến lược đọc/ghi bộ nhớ đệm thường được sử dụng
- Giải thích về 5 cấu trúc dữ liệu cơ bản của Redis
- Giải thích về 3 cấu trúc dữ liệu đặc biệt của Redis
- Giải thích về cơ chế lưu trữ lâu dài của Redis
- Giải thích về phân mảnh bộ nhớ của Redis
- Tổng hợp các lý do phổ biến gây ra tắc nghẽn của Redis
- Giải thích về cụm Redis
MongoDB
- Tổng hợp các điểm kiến thức và câu hỏi phỏng vấn về MongoDB (Phần 1)
- Tổng hợp các điểm kiến thức và câu hỏi phỏng vấn về MongoDB (Phần 2)
Công cụ tìm kiếm
Tổng hợp các câu hỏi phỏng vấn về Elasticsearch
Công cụ phát triển
Maven
Gradle
Tổng hợp các khái niệm cốt lõi về Gradle
Docker
Git
Thiết kế hệ thống
- Tổng hợp các câu hỏi phỏng vấn về thiết kế hệ thống
- Tổng hợp các câu hỏi phỏng vấn về mô hình thiết kế
Frameworks
Spring/SpringBoot
Tổng hợp các điểm kiến thức/câu hỏi phỏng vấn:
- Tổng hợp các điểm kiến thức và câu hỏi phỏng vấn về Spring
- Tổng hợp các điểm kiến thức và câu hỏi phỏng vấn về SpringBoot
- Tổng hợp các chú thích thường dùng của Spring/Spring Boot
- Getting Started with SpringBoot
Giải thích chi tiết các điểm kiến thức quan trọng:
- Giải thích về IoC & AOP
- Giải thích về Spring Transactions
- Giải thích về Design Patterns trong Spring
- Giải thích về nguyên lý tự động lắp ráp của SpringBoot
MyBatis
Tổng hợp các câu hỏi phỏng vấn về MyBatis
Security
Authentication and Authorization
- Giải thích về các khái niệm cơ bản về xác thực ủy quyền
- Giải thích về khái niệm cơ bản của JWT
- Phân tích ưu nhược điểm của JWT và các giải pháp cho các vấn đề phổ biến
- Giải thích về SSO (Đăng nhập đơn lẻ)
- Giải thích về thiết kế hệ thống quyền
- Tổng hợp các thuật toán mã hóa phổ biến
Data Desensitization
Tách biệt dữ liệu nhạy cảm đề cập đến việc biến đổi dữ liệu thông tin nhạy cảm theo các quy tắc cụ thể, chẳng hạn như thay thế một số chữ số trong số điện thoại, số chứng minh nhân dân bằng * để thay thế.
Sensitive Word Filtering
Tổng hợp các giải pháp lọc từ ngữ nhạy cảm
Scheduled Tasks
Giải thích về nhiệm vụ định kỳ của Java
Web Real-Time Message Push
Giải thích về đẩy thông báo thời gian thực trên Web
Distributed Systems
Lý thuyết & thuật toán & giao thức
- Giải thích về lý thuyết CAP và lý thuyết BASE
- Giải thích về thuật toán Paxos
- Giải thích về thuật toán Raft
- Giải thích về giao thức Gossip
RPC
ZooKeeper
- Tổng hợp các khái niệm liên quan đến ZooKeeper (Cơ bản)
- Tổng hợp các khái niệm liên quan đến ZooKeeper (Nâng cao)
API Gateway
- Tổng hợp kiến thức cơ bản về API Gateway
- Tổng hợp các điểm kiến thức và câu hỏi phỏng vấn về Spring Cloud Gateway
Distributed ID
Distributed Lock
Distributed Transactions
Tổng hợp các điểm kiến thức và câu hỏi phỏng vấn về giao dịch phân tán
High Performance
Tối ưu hóa cơ sở dữ liệu
- Tách biệt đọc/ghi và phân chia cơ sở dữ liệu
- Tách biệt dữ liệu nóng/lạnh
- Tổng hợp các phương pháp tối ưu hóa SQL phổ biến
- Giới thiệu về phân trang sâu (Deep Pagination) và khuyến nghị tối ưu hóa
Load Balancing
Tổng hợp các điểm kiến thức và câu hỏi phỏng vấn về cân bằng tải
CDN
Tổng hợp các điểm kiến thức và câu hỏi phỏng vấn về CDN (Mạng phân phối nội dung)
Message Queues
- Tổng hợp kiến thức cơ bản về Message Queues
- Tổng hợp các điểm kiến thức và câu hỏi phỏng vấn về Disruptor
- Tổng hợp các điểm kiến thức và câu hỏi phỏng vấn về RabbitMQ
- Tổng hợp các điểm kiến thức và câu hỏi phỏng vấn về RocketMQ
- Tổng hợp các điểm kiến thức và câu hỏi phỏng vấn về Kafka
High Availability
Hướng dẫn thiết kế hệ thống khả dụng cao
Redundancy Design
Giải thích về thiết kế dự phòng
Rate Limiting
Giải thích về giới hạn lưu lượng dịch vụ
Timeout & Retry
Giải thích về hết thời gian chờ & thử lại
Clustering
Triển khai nhiều bản sao của cùng một dịch vụ để tránh lỗi đơn điểm.
Disaster Recovery Design and Multi-Active in Different Locations
Disaster Recovery = Disaster Tolerance + Backup.
- Backup: Sao lưu nhiều bản sao cho tất cả dữ liệu quan trọng do hệ thống tạo ra.
- Disaster Tolerance: Xây dựng hai hệ thống hoàn toàn giống nhau ở các địa điểm khác nhau. Khi hệ thống ở một địa điểm bị treo đột ngột, toàn bộ hệ thống ứng dụng có thể chuyển sang địa điểm khác, do đó hệ thống có thể tiếp tục cung cấp dịch vụ bình thường.