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”.
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”.
Java Basics là nền tảng cần có trước khi học collection, concurrency, JVM, Spring và các middleware. Phần này không chỉ để ghi nhớ cú pháp; quan trọng hơn là hiểu object model của Java, truyền tham số, type erasure của generic, lời gọi bằng reflection, dynamic proxy, ranh giới serialization và cơ chế mở rộng của framework.
Java Collections là một trong những thư viện nền tảng được sử dụng thường xuyên nhất trong phát triển ứng dụng, đồng thời cũng là module được hỏi nhiều nhất trong phỏng vấn Java. Khi học collections, bạn cần vừa biết mỗi container phù hợp với trường hợp sử dụng nào, vừa hiểu các lựa chọn thiết kế phía sau việc mở rộng capacity, hash collision, iterator, thread safety và concurrent collections.
Java Concurrency là một trong những module quan trọng nhất, đồng thời cũng dễ gây nhầm lẫn nhất trong phát triển backend và phỏng vấn. Học concurrency không thể chỉ học thuộc API; cần xâu chuỗi vòng đời thread, cơ chế lock, memory model, atomic operation, thread pool và các lớp công cụ concurrency để hiểu.
Java IO là nền tảng quan trọng để hiểu việc đọc/ghi file, lập trình mạng, Netty, RPC framework và server hiệu năng cao. Khi học IO, bạn nên đồng thời hiểu Java API, IO model của hệ điều hành và các design pattern phổ biến để có thể kết nối BIO, NIO, AIO, Selector, Channel, Buffer và Reactor.
JVM là nền tảng cốt lõi mà Java backend không thể bỏ qua. Mục tiêu học JVM không phải là ghi nhớ khái niệm, mà là có thể giải thích object được tạo và thu hồi như thế nào, class được load ra sao, GC ảnh hưởng đến ứng dụng thế nào, tham số được cấu hình ra sao, cũng như cách xử lý các vấn đề production như OOM, GC diễn ra thường xuyên và CPU tăng vọt.
Phỏng vấn JVM hiếm khi chỉ dừng ở câu hỏi “heap và stack khác nhau thế nào”. Sau khi trả lời về vùng nhớ, interviewer thường hỏi tiếp object được cấp phát thế nào, object nào có thể được thu hồi, vì sao một lần GC lại gây pause, cũng như cách điều tra khi hệ thống production gặp OOM, Full GC thường xuyên hoặc CPU tăng vọt.
Java New Features không phù hợp với việc học thuộc máy móc theo từng phiên bản; phù hợp hơn là nắm bắt các trục chính: khả năng biểu đạt của ngôn ngữ, cải tiến standard library, mô hình concurrency, cải tiến JVM và các phiên bản hỗ trợ dài hạn. Trong phát triển hằng ngày, ưu tiên nắm vững các tính năng ổn định trong các phiên bản LTS như Java 8, 11, 17, 21, sau đó tìm hiểu các tính năng preview và incubator của những phiên bản tiếp theo khi cần.