Hệ thống kiến thức Java: Java Basics, Collection, Concurrency, JVM, IO và tính năng mới

Hệ thống kiến thức Java này dành cho việc học Java backend và ôn phỏng vấn, sắp xếp các bài viết Java trên website theo thứ tự “cú pháp cơ bản -> collection -> lập trình concurrency -> IO/NIO -> JVM -> tính năng mới”.
Nếu ít thời gian, bạn nên đọc trước các bài tổng hợp câu hỏi phỏng vấn về Java Basics, Collection, Concurrency và JVM để nắm nhanh các câu hỏi thường gặp; nếu muốn củng cố kiến thức cơ bản có hệ thống, hãy đọc theo thứ tự chuyên đề bên dưới.
Dành cho ai
- Backend developer đang học Java có hệ thống.
- Người chuẩn bị phỏng vấn Java backend khi tìm việc sau tốt nghiệp, chuyển việc hoặc ứng tuyển vào công ty vừa và lớn.
- Độc giả muốn ôn tập liền mạch Java Basics, Collection, Concurrency, JVM, IO và các tính năng mới.
- Kỹ sư đã viết dự án Java nhưng chưa hiểu có hệ thống về nguyên lý bên trong, thiết kế source code và thực tiễn kỹ thuật.
Trọng tâm học
- Cú pháp cơ bản Java, lập trình hướng đối tượng, exception, generic, reflection, proxy, serialization và các cơ chế cốt lõi khác.
- Phạm vi sử dụng, cách triển khai trong source code và câu hỏi phỏng vấn thường gặp về List, Map, Queue và các collection hỗ trợ concurrency.
- thread, lock, JMM, CAS, AQS, thread pool, CompletableFuture và virtual thread trong Java.
- Vùng nhớ JVM, class loading, garbage collection, cấu hình tham số, công cụ monitoring và xử lý sự cố trên production.
- BIO, NIO, AIO, các mô hình IO và design pattern về IO như decorator, adapter.
- Các tính năng mới quan trọng từ Java 8 đến Java 26, cùng những tính năng thực sự ảnh hưởng đến việc phát triển hằng ngày.
Thứ tự đọc đề xuất
- Chuyên đề Java Basics: Nắm vững cú pháp, lập trình hướng đối tượng, generic, reflection, proxy, serialization và các kiến thức cơ bản khác.
- Chuyên đề Java Collection: Hiểu cách sử dụng và source code của các container thường dùng như ArrayList, LinkedList, HashMap, ConcurrentHashMap.
- Chuyên đề lập trình Java Concurrency: Học có hệ thống về thread, lock, JMM, CAS, AQS, thread pool và các công cụ concurrency.
- Chuyên đề JVM: Hiểu vùng nhớ, class loading, garbage collection, tham số JVM và xử lý sự cố trên production.
- Chuyên đề Java IO: Bổ sung BIO, NIO, AIO, Reactor, I/O multiplexing và các design pattern về IO.
- Chuyên đề tính năng mới của Java: Tổng hợp theo phiên bản các tính năng quan trọng như Lambda, Stream, modularization, var, Record, virtual thread.
Bài viết cốt lõi
Java Basics
- Chuyên đề Java Basics: Trình bày từ cú pháp cơ bản đến các cơ chế cốt lõi và các câu hỏi phỏng vấn Java thường gặp.
- Tổng hợp câu hỏi phỏng vấn Java Basics (phần 1): Bao quát đặc điểm ngôn ngữ Java, cú pháp cơ bản, lập trình hướng đối tượng và các class thường dùng.
- Tổng hợp câu hỏi phỏng vấn Java Basics (phần 2): Tiếp tục hệ thống hóa exception, generic, reflection, annotation và các chi tiết thường gặp.
- Tổng hợp câu hỏi phỏng vấn Java Basics (phần 3): Bổ sung kiến thức nền tảng nâng cao và các điểm dễ mắc lỗi.
- Giải thích chi tiết về pass-by-value trong Java: Làm rõ mối quan hệ giữa pass-by-value, reference variable và việc thay đổi object.
- Giải thích chi tiết về Java serialization: Hiểu cơ chế serialization, serialVersionUID, rủi ro bảo mật và các phương án thay thế.
- Giải thích chi tiết về cơ chế Java reflection và Giải thích chi tiết về Java proxy pattern: Nắm vững các cơ chế thường gặp bên trong framework.
Java Collection
- Chuyên đề Java Collection: Tổng hợp collection framework, các lưu ý khi sử dụng và phân tích source code thường gặp.
- Tổng hợp câu hỏi phỏng vấn Java Collection (phần 1) và Tổng hợp câu hỏi phỏng vấn Java Collection (phần 2): Bao quát các câu hỏi thường gặp về List, Set, Map, Queue và concurrent collection.
- Tổng hợp lưu ý khi sử dụng Java Collection: Tổng hợp các lưu ý liên quan đến kiểm tra collection rỗng, duyệt, mở rộng, thread safety và performance.
- Phân tích source code ArrayList, Phân tích source code HashMap, Phân tích source code ConcurrentHashMap: Hiểu các lựa chọn thiết kế của container thường dùng qua source code.
Java Concurrency
- Chuyên đề lập trình Java Concurrency: Tập trung vào thread, lock, memory model, thread pool và các công cụ concurrency.
- Tổng hợp câu hỏi phỏng vấn Java Concurrency (phần 1), Tổng hợp câu hỏi phỏng vấn Java Concurrency (phần 2), Tổng hợp câu hỏi phỏng vấn Java Concurrency (phần 3): Xây dựng danh sách câu hỏi phỏng vấn về concurrency.
- Giải thích chi tiết về JMM (Java Memory Model): Hiểu visibility, atomicity, ordering và happens-before.
- Giải thích chi tiết về CAS, Giải thích chi tiết về AQS, Giải thích chi tiết về Java thread pool: Nắm vững các chủ đề quan trọng về cơ chế bên trong concurrency.
- Tổng hợp các câu hỏi thường gặp về virtual thread: Hiểu ảnh hưởng của Project Loom đến concurrency model.
JVM và IO
- Chuyên đề JVM: Tập trung vào memory, class loading, GC, tham số, công cụ và xử lý sự cố trên production.
- Giải thích chi tiết về vùng nhớ Java (trọng tâm): Hiểu program counter, virtual machine stack, native method stack, heap và method area.
- Giải thích chi tiết về garbage collection của JVM (trọng tâm): Hiểu cách xác định object còn sống, các thuật toán garbage collection và các garbage collector phổ biến.
- Giải thích chi tiết về quá trình class loading và Giải thích chi tiết về class loader (trọng tâm): Nắm vững vòng đời class và mô hình parent delegation.
- Chuyên đề Java IO: Trình bày từ BIO, NIO, AIO đến mô hình IO và design pattern về IO.
- Tổng hợp kiến thức cơ bản về Java IO, Tổng hợp kiến thức cốt lõi về Java NIO, Giải thích chi tiết về mô hình Java IO: Bổ sung kiến thức nền tảng cần thiết cho network programming và middleware.
Tính năng mới của Java
- Chuyên đề tính năng mới của Java: Tổng hợp theo phiên bản các tính năng quan trọng về ngôn ngữ, standard library và JVM kể từ Java 8.
- Thực hành các tính năng mới của Java 8: Nắm vững Lambda, Stream, Optional, default method của interface và Date API mới.
- Tổng quan tính năng mới của Java 11 (quan trọng), Tổng quan tính năng mới của Java 17 (quan trọng), Tổng quan tính năng mới của Java 21 (quan trọng): Ưu tiên các tính năng được hỗ trợ lâu dài trong các phiên bản LTS.
Câu hỏi thường gặp
- Vì sao Java chỉ truyền giá trị? Điều gì thực sự xảy ra khi reference của object được truyền làm tham số?
String,StringBuilder,StringBufferkhác nhau như thế nào?- Mối quan hệ giữa
equals()vàhashCode()là gì? - Nên chọn
ArrayListhayLinkedList? Vì saoHashMapkhông thread-safe? ConcurrentHashMapđã thay đổi như thế nào giữa JDK 7 và JDK 8?synchronizedvàReentrantLockkhác nhau như thế nào?- JMM đảm bảo visibility, ordering và atomicity như thế nào?
- Các tham số cốt lõi của thread pool nên được cấu hình như thế nào? Vì sao không nên sử dụng trực tiếp
Executors? - Vùng nhớ JVM được chia như thế nào? Những vùng nào có thể xảy ra OOM?
- G1, ZGC, Shenandoah lần lượt phù hợp với những trường hợp nào?
- BIO, NIO, AIO khác nhau như thế nào? Reactor model giải quyết vấn đề gì?
- Trong Java 8, 11, 17, 21, những tính năng mới nào đáng nắm vững nhất?
Chuyên đề liên quan
- Kiến thức cơ bản về máy tính
- Thiết kế hệ thống
- Cơ sở dữ liệu
- Hệ thống kiến thức về hệ thống phân tán
- Hệ thống kiến thức về hiệu năng cao
Lời cuối
Nếu nội dung hữu ích với bạn, hãy tiện tay tặng JavaGuide một Star miễn phí để ủng hộ: GitHub | Gitee.
JavaGuide đã được duy trì gần bảy năm, tích lũy 6100+ commit, với sự chung tay hoàn thiện của 620+ contributor. Star, phản hồi và PR của bạn đều là động lực để dự án tiếp tục cập nhật.
Nếu bạn đang chuẩn bị phỏng vấn backend / phát triển ứng dụng AI, có thể tham khảo Knowledge Planet của tôi, bao gồm các project thực tế về backend và AI, tối ưu CV, hỏi đáp 1-1 và tài liệu về các trọng điểm thường gặp, đã được duy trì liên tục sáu năm.
