Lộ trình học tậpMở trang riêng
Full-stack Java Interview Curriculum

Lộ trình ôn phỏng vấn Java Spring Boot + ReactJS

Khung học Senior/Lead theo 16 Part, kết hợp theory, interview questions, practice, failure analysis và self-assessment. Root page này là catalog nội dung; trạng thái executed evidence được theo dõi độc lập.

Catalog rule: root index chỉ phản ánh learning map và navigation. Tracker lịch sử, commit hash và executed evidence theo môi trường được audit riêng; không dùng chúng để hạ hoặc nâng trạng thái content nếu canonical lessons đã mới hơn.

Cross-cutting learning & quality guidance

Các nguyên tắc bền vững được merge từ README/tracker cũ. Số liệu commit, completion theo ngày và executed-evidence snapshot không được dùng làm source of truth trên trang catalog.

Cách học

  • Đi theo từng Part; ưu tiên P0, sau đó P1 cho Senior và P2 theo job description.
  • Bắt đầu Capstone sau Part 05 và mở rộng dần theo các Part tiếp theo.
  • Mỗi tuần luyện coding/data structures, SQL live, một bài system design có giới hạn thời gian và một behavioral mock.
  • Mỗi Part nên kết nối theory → questions/follow-up → practice/failure case → self-assessment.

Source priority

  1. Specification/reference manual/documentation chính thức.
  2. JEP, RFC, W3C/WHATWG/TC39 hoặc tiêu chuẩn chính thức.
  3. Framework/library docs và API/Javadoc chính thức.
  4. Engineering blog của tổ chức sở hữu công nghệ khi reference chưa đủ operational detail.
  5. Nguồn ngoài chỉ mở rộng example/experience và phải tách khỏi behavior được specification bảo đảm.

Definition of Done

  • Architecture/mental model trước API/cú pháp; có lifecycle/call flow, trade-off, failure mode và production caveat.
  • Questions có answer/follow-up; practice có mục tiêu, prerequisite, failure case, verification và expected evidence.
  • Official references đặt gần nội dung liên quan; không sao chép dài nguyên văn.
  • Không broken local links/duplicate id; desktop/mobile responsive; code/table cuộn ngang khi cần.

Content vs evidence

Content full, lab specificationexecuted evidence là ba trạng thái độc lập. Có HTML hoặc lab design không đồng nghĩa lab đã chạy trong runtime thật.

Tracker/evidence theo môi trường phải được cập nhật ở artifact chuyên trách, không biến thành tuyên bố completion ở catalog root.

Reading convention

  • VI: giải thích bản chất và trade-off.
  • EN: câu trả lời ngắn có thể dùng trong phỏng vấn.
  • P0: bắt buộc nắm chắc; P1: kỳ vọng Senior; P2: theo JD/thời gian.
  • Follow-up: câu hỏi đào sâu sau câu trả lời đầu tiên.

Reactive specialization

Track Reactive Java liên kết Java Concurrency → Reactive Streams → Project Reactor → Spring WebFlux → Vert.x, kèm capstone và benchmark.

Course hub · reactive-java-course/IMPLEMENTATION-PLAN.md · reactive-java-course/RELEASE-STATUS.md

Roadmap 16 Part và specialization

Semantic roadmap dưới đây được migrate từ root guide cũ; visual shell, font, sidebar và JavaScript cũ đã bị loại bỏ.

PART 01
Java Core
Tham khảo Oracle Java Documentation / JLS làm nguồn chính thống
1.1 Lý thuyết
  • OOP nâng cao: SOLID, composition vs inheritance, abstract class vs interface
  • Pass by value vs pass by reference — Java truyền reference theo value
  • Exception handling: checked/unchecked, try-with-resources
  • String: String Pool, immutability, StringBuilder vs StringBuffer
  • Java 8+ features: Lambda, functional interface, method reference, Stream API (lazy evaluation, parallel stream), Optional, default/static method trong interface, Date/Time API mới
  • P0/P1 theo JD: Java 9-21: var, Record, Sealed class, pattern matching, virtual threads; hiểu khi nào nâng cấp runtime mang lại giá trị
  • Collection Framework chuyên sâu: HashMap hoạt động thế nào (hash, bucket, collision, treeify từ Java 8), HashMap vs ConcurrentHashMap vs Hashtable, ArrayList vs LinkedList, fail-fast vs fail-safe iterator, hashCode()/equals() contract
  • Concurrency & Multithreading: Thread lifecycle, synchronized, volatile, Lock/ReentrantLock, Atomic (CAS), ExecutorService, ForkJoinPool, race condition/deadlock/livelock
  • Async trong Java: CompletableFuture, Future vs CompletableFuture, xử lý exception async
  • Event-driven trong Java: khái niệm Event Bus, so sánh in-process event vs message broker
  • JVM & Memory: Heap/Stack, GC cơ bản (G1), memory leak thường gặp, ClassLoader
  • Độ phức tạp (Big O) của các thao tác Collection thường dùng
1.2 Câu hỏi
Dễ → Trung bình → Khó
  • Giải thích cơ chế HashMap khi resize, tại sao ảnh hưởng hiệu năng
  • So sánh ArrayList với LinkedList; phân biệt HashMap, TreeMapLinkedHashSet
  • Functional Interface khác Anonymous Inner Class ở target typing, this, state và use case nào?
  • Stream API hoạt động ra sao; khi nào vòng lặp truyền thống rõ ràng hoặc hiệu quả hơn?
  • Garbage Collector xác định object có thể thu hồi thế nào; chọn collector theo throughput/pause SLO ra sao?
  • Thiết kế giải pháp chống race condition cho giao dịch ngân hàng (optimistic lock @Version vs pessimistic lock SELECT FOR UPDATE)
  • Giao dịch bị fail giữa chừng thì xử lý ra sao: rollback, idempotency key, retry với backoff, Saga/compensating transaction, outbox pattern
  • Phân biệt sâu synchronized method vs synchronized block vs Lock
  • Parallel Stream có luôn nhanh hơn Stream thường không, khi nào không nên dùng
1.3 Thực hành
  • Implement optimistic locking cho transaction ngân hàng bằng JPA @Version, viết test multi-thread mô phỏng race condition
  • Dùng CompletableFuture xử lý gọi song song nhiều service, gộp kết quả, xử lý lỗi từng nhánh
  • Custom cache đơn giản dùng LinkedHashMap (LRU), so sánh với ConcurrentHashMap
  • Viết chương trình minh họa deadlock rồi fix bằng lock ordering
1.4 Sai lầm thường gặp & checklist tự đánh giá
  • Red flag: thuộc API nhưng không giải thích complexity/thread-safety; dùng parallel stream hoặc virtual thread như tối ưu mặc định
  • Done: giải thích bằng memory/thread model, viết được concurrent test và phân tích trade-off của collection/concurrency primitive
Học Part 01 · Java Core 18 chuyên đề · 59 câu hỏi phỏng vấn · 9 lab · Checklist tự đánh giá Mở giáo trình → Deep dive · Sorting algorithmsComplexity, stability, in-place/adaptive, Java sorting APIs, interview scenarios và practiceHọc sorting → Deep dive · Collections InternalsList, Map, Set, Deque, Heap và concurrent collections · source flow · 15 scenarios · 4 labsHọc internals → Deep dive · Design Patterns23 GoF patterns · Java/Spring mapping · banking scenarios · refactoring practiceHọc patterns →
PART 02
Kiểm thử & Chất lượng mã nguồn
Testing là năng lực P0 của Senior, không phải phần phụ sau khi code xong
2.1 Mục tiêu & trọng tâm
  • P0: Testing pyramid; unit/integration/E2E; JUnit 5; Mockito; assertion; test double; FIRST principles
  • P0: Spring Boot test slices: @WebMvcTest, @DataJpaTest, @SpringBootTest; Testcontainers
  • P1: Contract test, mutation test, flaky test, coverage có ý nghĩa; static analysis và dependency scanning
  • Maven/Gradle lifecycle, dependency management; Git branching, rebase/merge và code-review checklist
2.2 Câu hỏi phỏng vấn
  • Unit test khác integration test ở boundary nào; khi nào mock gây test sai lệch?
  • Vì sao coverage cao không đồng nghĩa chất lượng cao? Cách test transaction, retry và concurrency?
  • Thiết kế test strategy cho một REST API có database, Kafka và external payment gateway
2.3 Thực hành
  • Test service bằng JUnit/Mockito; test repository với PostgreSQL Testcontainers; test API bằng MockMvc
  • Tạo một flaky test rồi loại bỏ nguyên nhân; thêm quality gate cho build
2.4 Sai lầm thường gặp & checklist tự đánh giá
  • Red flag: mock mọi dependency, chỉ test happy path, dùng H2 thay thế mù quáng database production
  • Done: giải thích được test boundary, chọn đúng test slice và viết được test failure/concurrency
Học Part 02 · Kiểm thử và chất lượng10 chương chuyên sâu · 30 câu hỏi phỏng vấn · 8 lab · performance/security/supply-chain Mở giáo trình →
PART 03
Spring Framework & Spring Boot
3.1 Mục tiêu & trọng tâm
  • P0: IoC/DI, bean lifecycle/scope, AOP proxy; Spring MVC request lifecycle và exception handling
  • P0: auto-configuration, starter, configuration properties, Actuator; Spring Data JPA và N+1
  • P0: @Transactional: proxy, propagation, isolation, rollback rule và self-invocation
  • P1: Spring Security filter chain; async execution; WebClient; WebFlux khi JD yêu cầu
3.2 Câu hỏi phỏng vấn
  • Spring Boot bổ sung gì cho Spring; auto-configuration được kích hoạt và override ra sao?
  • Spring inject List<T>Map<String, T> ra sao; kiểm soát thứ tự/candidate thế nào?
  • @Transactional hoạt động qua proxy thế nào, nên đặt boundary ở đâu và vì sao?
  • Bean lifecycle diễn ra theo thứ tự nào; dùng @PostConstruct/@PreDestroy có caveat gì?
  • Tại sao singleton bean vẫn có thể không thread-safe? Vì sao self-invocation làm transaction mất hiệu lực?
  • Chẩn đoán N+1, lazy loading ngoài transaction và circular dependency
3.3 Thực hành
  • Xây REST API có validation, global error handling, profile/config và Actuator
  • Tạo rồi sửa self-invocation và N+1; quan sát query và transaction boundary bằng log/test
3.4 Sai lầm thường gặp & checklist tự đánh giá
  • Red flag: học annotation thuộc lòng nhưng không giải thích proxy, lifecycle hoặc request flow
  • Done: debug được transaction, bean wiring, query JPA và lỗi request xuyên suốt
Học Part 03 · Spring Framework và Spring Boot12 chuyên đề sâu · 46 câu hỏi · 9 lab · Tài liệu Spring chính thứcMở giáo trình →
PART 04
PostgreSQL & Redis
4.1 Mục tiêu & trọng tâm
  • P0: ACID, isolation anomalies, MVCC, locking/deadlock; normalization và transaction boundary
  • P0: B-tree/composite/covering index, EXPLAIN, join, connection pool, keyset pagination
  • P1: replication, partitioning/sharding; SQL vs document/key-value/column/graph database; CAP thực tế
  • P0: Redis structures, cache-aside, TTL/eviction, invalidation, stampede; Sentinel/Cluster ở mức khái niệm
4.2 Câu hỏi phỏng vấn
  • Chọn isolation level và locking strategy cho chuyển tiền hoặc trừ tồn kho
  • Giải thích 1NF, 2NF, 3NF và khi nào denormalization đáng đổi lấy chi phí consistency
  • Index hoạt động thế nào, khi nào planner dùng/bỏ index và chi phí đối với write/storage là gì?
  • Isolation level ngăn anomaly nào; chọn mức phù hợp từ business invariant và retry cost ra sao?
  • Thiết kế index và pagination cho bảng hàng chục triệu dòng; đọc một execution plan
  • Khi nào chọn SQL/NoSQL; xử lý cache inconsistency và thundering herd như thế nào?
4.3 Thực hành
  • Benchmark query trước/sau index; so sánh OFFSET với keyset pagination trên dữ liệu lớn
  • Tích hợp Redis cache-aside, đo hit ratio và mô phỏng stampede/invalidation
4.4 Sai lầm thường gặp & checklist tự đánh giá
  • Red flag: xem index là miễn phí, nhầm consistency của DB với business invariant, cache không có invalidation plan
  • Done: từ workload đề xuất được schema, index, transaction và cache trade-off
Học Part 04 · PostgreSQL và Redis10 chương chuyên sâu · 39 câu hỏi · 9 lab · Nguồn PostgreSQL và RedisMở giáo trình →
PART 05
Thiết kế API, Networking & Security
5.1 Mục tiêu & trọng tâm
  • P0: HTTP semantics, status code, idempotency, pagination/filter/sort, versioning, validation và error contract
  • P0: TCP, DNS, TLS, reverse proxy, keep-alive, timeout và connection pool ở mức debug ứng dụng
  • P0: authentication vs authorization; session/JWT/OAuth2/OIDC; token expiry/rotation/revocation
  • P0: OWASP Top 10, CORS, CSRF, XSS, SQL injection, SSRF, rate limit; secrets và least privilege
5.2 Câu hỏi phỏng vấn
  • Thiết kế API tạo payment an toàn khi client retry; idempotency key được lưu và hết hạn thế nào?
  • JWT có thực sự stateless không; access token và refresh token nên được bảo vệ ra sao?
  • JWT gồm gì, signature bảo vệ gì và resource server bắt buộc validate những claim nào?
  • Mô tả HTTPS/TLS handshake từ ClientHello, certificate validation đến session keys
  • Debug request chậm từ browser qua proxy đến Spring Boot bằng timeout budget nào?
5.3 Thực hành
  • Viết OpenAPI contract, error model nhất quán, cursor pagination và idempotent POST
  • Bảo vệ API bằng Spring Security; thêm rate limit và test CORS/authorization/OWASP cases
5.4 Sai lầm thường gặp & checklist tự đánh giá
  • Red flag: dùng POST/200 cho mọi thứ, log token/PII, tin dữ liệu client, retry không idempotent
  • Done: thiết kế được API contract có security, failure semantics và backward compatibility
Học Part 05 · API, Networking và Security10 chương chuyên sâu · 38 câu hỏi · 9 lab · RFC, OIDC và OWASPMở giáo trình →
PART 06
JavaScript & TypeScript Core
6.1 Mục tiêu & trọng tâm
  • P0: scope, closure, hoisting, this, prototype; equality, immutability và module
  • P0: event loop, microtask/macrotask, Promise, async/await, cancellation và error propagation
  • P0: TypeScript type system, narrowing, generics, utility types, unknown vs any
  • P1: debounce/throttle, browser storage, memory leak, bundling và web performance basics
6.2 Câu hỏi phỏng vấn
  • Dự đoán thứ tự output của đoạn code event loop và giải thích từng queue
  • Structural typing có trade-off gì; khi nào generic tốt hơn union hoặc overload?
  • Closure hoặc event listener gây memory leak trong ứng dụng thật như thế nào?
6.3 Thực hành
  • Implement debounce/throttle và Promise combinators có typing/cancellation
  • Chuyển một module JavaScript sang TypeScript strict, loại bỏ any
6.4 Red flags & checklist
  • Red flag: dùng TypeScript như annotation cho có, bỏ qua async error/cancellation
  • Done: đọc được event-loop trace và thiết kế type an toàn cho API response/state
Học Part 06 · JavaScript & TypeScript10 chương chuyên sâu · 30 câu hỏi · 8 lab · ECMAScript, browser và type systemMở giáo trình →
PART 07
ReactJS
7.1 Mục tiêu & trọng tâm
  • P0: render/reconciliation, component lifecycle, state/effect mental model, controlled form và custom hook
  • P0: dependency array, stale closure, cleanup, lifting/colocating state; error boundary
  • P1: server state với TanStack Query; Context/Redux/Zustand; routing và authorization UI
  • P1: profiling, memoization, code splitting, accessibility; React Testing Library và E2E
7.2 Câu hỏi phỏng vấn
  • Vì sao effect chạy lặp hoặc đọc state cũ; khi nào không cần useEffect?
  • Phân biệt server state và client state; chọn Context, Redux hay query cache theo tiêu chí nào?
  • Tìm nguyên nhân re-render và tối ưu mà không lạm dụng useMemo/useCallback
7.3 Thực hành
  • Xây frontend typed cho API Spring: form, loading/error/empty state, cache invalidation và optimistic update
  • Đo bằng Profiler; viết component/integration test và kiểm tra keyboard accessibility
7.4 Red flags & checklist
  • Red flag: đồng bộ mọi thứ bằng effect, duplicate server state, memo hóa không đo đạc
  • Done: giải thích được render flow, state ownership, failure UX và test strategy
Học Part 07 · React10 chương chuyên sâu · 30 câu hỏi · 8 lab · state, data, accessibility và productionMở giáo trình →
PART 08
Messaging — RabbitMQ & Kafka
8.1 Mục tiêu & trọng tâm
  • P0: RabbitMQ exchange/queue/ack/nack/prefetch/DLQ; Kafka partition/group/offset/replication
  • P0: delivery semantics, ordering scope, idempotent consumer, retry/backoff, poison message và schema evolution
  • P1: Kafka transactions/exactly-once giới hạn ở đâu; consumer lag, rebalancing và throughput tuning
8.2 Câu hỏi phỏng vấn
  • Chọn Kafka hay RabbitMQ từ workload, ordering, retention và routing requirement
  • Làm sao không mất message và không tạo side effect hai lần khi consumer crash?
  • Partition key sai hoặc retry queue sai gây hotspot/order violation như thế nào?
8.3 Thực hành
  • Publish/consume bằng Spring Boot, thêm idempotency store, retry topic/queue và DLQ
  • Mô phỏng consumer crash/rebalance; quan sát lag và duplicate delivery
8.4 Red flags & checklist
  • Red flag: tuyên bố exactly-once cho toàn hệ thống, retry vô hạn, không version event schema
  • Done: trình bày được failure timeline và recovery cho producer/broker/consumer
Học Part 08 · RabbitMQ và Kafka10 chương chuyên sâu · 30 câu hỏi · 8 lab · HA và operationsMở giáo trình →
PART 09
Distributed Systems & Microservices
9.1 Mục tiêu & trọng tâm
  • P0: latency, partial failure, timeout/retry/backoff/jitter, circuit breaker, bulkhead và idempotency
  • P0: service boundary, database per service, sync vs async; Saga, Outbox/Inbox và compensating action
  • P1: API Gateway, service discovery, config; consistency model, clock/order và split-brain intuition
  • P2: CQRS/Event Sourcing khi có requirement rõ ràng, không dùng như mặc định
9.2 Câu hỏi phỏng vấn
  • Thiết kế transaction Order–Payment–Inventory và phân tích từng điểm có thể fail
  • Chọn service communication sync hay async; RestTemplateWebClient khác nhau ở đâu?
  • Retry ở nhiều tầng gây retry storm ra sao; đặt timeout budget và circuit breaker ở đâu?
  • Khi nào modular monolith tốt hơn microservices? Chi phí vận hành nào thường bị bỏ quên?
9.3 Thực hành
  • Tách hai service giao tiếp REST rồi chuyển một flow sang event + transactional outbox
  • Fault injection: delay, duplicate, service down; chứng minh recovery và eventual consistency
9.4 Red flags & checklist
  • Red flag: distributed transaction chỉ bằng annotation, shared database, retry không idempotent
  • Done: vẽ được state machine/failure matrix và giải thích trade-off consistency/availability
Học Part 09 · Distributed Systems10 chương chuyên sâu · 38 câu hỏi · 8 lab · Failure và recoveryMở giáo trình →
PART 10
System Design
Luyện theo format 45–60 phút: clarify → estimate → high-level → deep dive → failure/trade-off
10.1 Mục tiêu & trọng tâm
  • P0: functional/non-functional requirements, capacity estimate, API/data model, component diagram
  • P0: load balancing, caching, queues, replication/sharding, consistency, availability và backpressure
  • P0: bottleneck/failure analysis, security, observability, rollout và cost awareness
  • P1: trình bày evolution từ MVP đến scale thay vì nhảy thẳng vào kiến trúc phức tạp
10.2 Câu hỏi phỏng vấn
  • Thiết kế URL shortener, notification system, order/payment hoặc chat system
  • Thiết kế workload read-heavy/write-heavy: caching, index, partitioning, queue và sync/async thay đổi ra sao?
  • Nếu traffic tăng 10 lần, thành phần nào nghẽn trước và đo bằng tín hiệu nào?
  • Trade-off giữa strong consistency, latency, availability và operational complexity
10.3 Thực hành
  • Mỗi tuần làm hai đề có timer; lưu diagram, assumptions, estimates và quyết định kiến trúc
  • Tự review bằng rubric: requirement, scale, data, API, failure, security, observability, trade-off
10.4 Red flags & checklist
  • Red flag: name-dropping công nghệ, không estimate, không nói failure hoặc migration path
  • Done: dẫn dắt được buổi design và bảo vệ quyết định bằng requirement/number/trade-off
Học Part 10 · System Design10 chương chuyên sâu · 37 câu hỏi · 8 timed labs · Rubric 20 điểmMở giáo trình →
PART 11
Docker
11.1 Mục tiêu & trọng tâm
  • P0: image/layer/container/network/volume; Dockerfile cache, multi-stage, non-root và signal handling
  • P0: build reproducibility, image scanning, secret handling; Docker Compose cho local stack
11.2 Câu hỏi phỏng vấn
  • Tại sao container thoát chậm hoặc không nhận SIGTERM? Tối ưu image/build cache thế nào?
  • Container khác VM ở isolation/resource model nào; dữ liệu stateful được xử lý ra sao?
11.3 Thực hành
  • Dockerize Spring Boot và React/Nginx bằng multi-stage, healthcheck và non-root user
  • Chạy full stack bằng Compose, kiểm tra network, persistent data và graceful shutdown
11.4 Red flags & checklist
  • Red flag: chạy root, bake secret vào image, dùng mutable tag, container giữ state quan trọng
  • Done: build nhỏ, repeatable, secure và debug được startup/network/shutdown
Học Part 11 · Docker10 chương chuyên sâu · 30 câu hỏi · 8 lab · Engine, OCI và NginxMở giáo trình → Deep dive · Docker → KubernetesOCI/CRI runtime path · Compose mapping · resources, signals, networking, storage và securityHọc runtime boundary →
PART 12
Kubernetes
12.1 Mục tiêu & trọng tâm
  • P0: Pod, Deployment, Service, Ingress; ConfigMap/Secret; requests/limits và scheduling basics
  • P0: readiness/liveness/startup probes, rolling update, HPA, graceful shutdown và disruption
  • P1: namespace/RBAC, Helm/Kustomize, stateful workload, network policy và troubleshooting flow
12.2 Câu hỏi phỏng vấn
  • Phân tích CrashLoopBackOff, OOMKilled, Pending hoặc service không route traffic
  • Readiness khác liveness thế nào; rollout zero-downtime cần phối hợp app và cluster ra sao?
12.3 Thực hành
  • Deploy stack lên minikube/kind với probes, resources, Ingress và HPA
  • Thực hành failure drill: kill pod, bad config, OOM và failed rollout; dùng events/logs/describe để chẩn đoán
12.4 Red flags & checklist
  • Red flag: thiếu resource request, liveness gọi dependency ngoài, secret nằm trong Git
  • Done: triển khai và debug workload bằng quy trình có hệ thống
Học Part 12 · Kubernetes10 chương chuyên sâu · 30 câu hỏi · 8 lab · Control plane và reconciliationMở giáo trình → Deep dive · Ingress & Gateway APIController/data plane · IngressClass · TLS · path/rewrite · headers · Gateway roles · debuggingHọc Ingress → Deep labs · Ingress & Runtime8 failure labs cho 404/502/503/504, TLS, Gateway migration, image-to-Pod và graceful rolloutMở labs →
PART 13
CI/CD, Git & Cloud
Chọn một cloud theo JD; học sâu dịch vụ tương đương thay vì học tên của cả ba nền tảng
13.1 Mục tiêu & trọng tâm
  • P0: trunk-based/Git Flow trade-off; merge/rebase; pipeline build-test-scan-package-deploy
  • P0: artifact immutability, environment promotion, secret/OIDC, rollback; blue-green/canary
  • P1: compute, object storage, managed DB, load balancer, IAM, VPC/subnet/security group, HA/DR
  • P1: Infrastructure as Code, cost, backup/RPO/RTO và shared-responsibility model
13.2 Câu hỏi phỏng vấn
  • Thiết kế pipeline cho monorepo/microservices, tránh build/deploy nhầm và rollback an toàn
  • Thiết kế cloud architecture multi-AZ; phân biệt scalability, availability, backup và disaster recovery
13.3 Thực hành
  • GitHub Actions/Jenkins build, test, scan, push immutable image và deploy qua environment approval
  • Deploy một phiên bản lên cloud/free tier hoặc mô tả IaC; diễn tập rollback
13.4 Red flags & checklist
  • Red flag: deploy lại artifact khác, long-lived cloud key, pipeline không rollback/audit
  • Done: giải thích được supply chain từ commit đến production và blast radius của thay đổi
Học Part 13 · CI/CD, Git & Cloud10 chương chuyên sâu · 30 câu hỏi · 8 lab · AWS và AzureMở giáo trình →
PART 14
Observability & Production Debugging
14.1 Mục tiêu & trọng tâm
  • P0: logs/metrics/traces; structured logging, correlation/trace ID; RED/USE method
  • P0: SLI/SLO/error budget, alert quality, dashboard; incident triage và postmortem không đổ lỗi
  • P1: OpenTelemetry, Prometheus/Grafana, ELK/OpenSearch; sampling và cardinality/cost
  • P1: JVM/application signals: heap/GC/thread/CPU, pool saturation, latency percentile và queue lag
14.2 Câu hỏi phỏng vấn
  • P99 tăng nhưng CPU thấp: điều tra theo giả thuyết và tín hiệu nào?
  • Trace một request xuyên service; phân biệt symptom alert với cause signal
  • Thiết kế SLO và alert cho checkout/payment flow
14.3 Thực hành
  • Instrument app bằng metrics, structured logs và distributed tracing; dựng dashboard tối thiểu
  • Tạo latency/error/connection-pool incident rồi viết timeline, root cause và action items
14.4 Red flags & checklist
  • Red flag: log mọi thứ nhưng không correlation, alert theo CPU đơn lẻ, metric cardinality vô hạn
  • Done: từ symptom thu hẹp được bottleneck và truyền đạt incident rõ ràng
Học Part 14 · Observability & Production Debugging10 chương chuyên sâu · 30 câu hỏi · 8 lab · JVM và Tomcat diagnosticsMở giáo trình →
PART 15
Engineering Process, Leadership & Behavioral
15.1 Mục tiêu & trọng tâm
  • P0: STAR/CAR stories cho ownership, conflict, failure, ambiguity, mentoring và delivery pressure
  • P0: code review, estimation, prioritization, technical debt, ADR và stakeholder communication
  • P1: Agile/Scrum/Kanban/Waterfall trade-off; incident leadership và cross-team dependency
  • Lead: tạo leverage qua standards, mentoring, delegation và decision-making thay vì chỉ code nhiều
15.2 Câu hỏi phỏng vấn
  • Kể một quyết định kỹ thuật sai, bạn phát hiện và sửa hậu quả như thế nào?
  • Xử lý bất đồng giữa kỹ thuật và deadline; mentoring người yếu hơn mà vẫn bảo đảm delivery
  • Ưu tiên feature, reliability và technical debt bằng dữ liệu nào?
15.3 Thực hành
  • Chuẩn bị 6–8 câu chuyện STAR, mỗi câu có số liệu, vai trò cá nhân, trade-off và điều học được
  • Mock interview có follow-up; ghi âm, cắt câu trả lời lan man và loại bỏ cách nói đổ lỗi
15.4 Red flags & checklist
  • Red flag: chỉ nói “team đã…”, không có kết quả đo được, biến conflict thành phàn nàn cá nhân
  • Done: câu chuyện cụ thể, trung thực, thể hiện scope Senior/Lead và khả năng tự phản tỉnh
Học Part 15 · Engineering Leadership10 chương chuyên sâu · 30 câu hỏi · 8 lab · behavioral story systemMở giáo trình → Deep dive · SDLC và delivery modelsWaterfall, V-Model, iterative/incremental, Agile, Scrum, Kanban, XP, DevOps và banking practiceHọc SDLC →
PART 16
Capstone Project — Bài tập tổng hợp End-to-End
Mini hệ thống "Order + Payment": ghép các phần P0 vào sản phẩm chạy được và dùng làm chất liệu mock interview
Kiến trúc (Architecture)
  • Bài toán: hệ thống đặt hàng tối giản gồm 2 microservice độc lập — order-service (nhận đơn hàng) và payment-service (xử lý thanh toán), có 1 frontend ReactJS gọi vào
  • Luồng chính (happy path): React gọi POST /orders → Order Service lưu đơn (status: PENDING) → gọi sang Payment Service POST /payments → Payment Service xử lý, trả kết quả → Order Service cập nhật status (CONFIRMED/FAILED) → trả về cho React
  • Database per service pattern: mỗi service có DB riêng (order-db, payment-db) — không share database, minh họa đúng nguyên tắc microservices
  • Giao tiếp: bắt đầu bằng REST đồng bộ (sync) cho đơn giản, sau đó (bước nâng cao) đổi Order→Payment sang bất đồng bộ qua Kafka/RabbitMQ để so sánh 2 cách tiếp cận
Giai đoạn 1 · Backend (Spring Boot)
  • Tạo order-service: entity Order, endpoint POST /orders, GET /orders/{id}, dùng Spring Data JPA + H2/PostgreSQL
  • Tạo payment-service: entity Payment, endpoint POST /payments, giả lập xử lý thanh toán (random success/fail để test failure sau)
  • Order Service gọi Payment Service bằng Feign Client hoặc WebClient (khuyến khích dùng Feign để thực hành declarative REST client — hay bị hỏi phỏng vấn)
  • Áp dụng @Transactional đúng chỗ khi update status Order sau khi nhận response từ Payment (liên hệ Part 3 & 4)
Giai đoạn 2 · Handle Failure (trọng tâm)
  • Timeout: cấu hình connect/read timeout khi Order gọi Payment
  • Retry với exponential backoff (Resilience4j @Retry) khi Payment Service tạm thời lỗi
  • Circuit Breaker (Resilience4j @CircuitBreaker): khi Payment Service down liên tục, mở circuit để tránh cascading failure, có fallback method trả response tạm (VD: "Payment pending, sẽ xử lý sau")
  • Idempotency: thêm idempotency key vào request Payment để nếu Order retry, Payment không charge 2 lần (liên hệ bài toán "chống double transaction" ở Part 1)
  • Nâng cao (optional): chuyển sang async qua Kafka — Order publish event OrderCreated, Payment consume và publish lại PaymentCompleted/PaymentFailed, áp dụng Saga pattern (compensating transaction: nếu Payment fail thì Order tự động chuyển CANCELLED)
Giai đoạn 3 · Frontend (ReactJS)
  • Form đặt hàng đơn giản gọi POST /orders, hiển thị trạng thái loading/success/error
  • Polling hoặc gọi lại GET /orders/{id} để cập nhật status realtime (PENDING → CONFIRMED/FAILED)
  • Xử lý UI khi backend trả lỗi/timeout — hiển thị thông báo rõ ràng cho user (liên hệ Part 7)
Giai đoạn 4 · Containerize (Docker)
  • Viết Dockerfile multi-stage cho order-servicepayment-service (build bằng Maven/Gradle, runtime bằng JRE nhẹ)
  • Viết Dockerfile cho React: build static files, serve bằng Nginx
  • Viết docker-compose.yml chạy toàn bộ (2 backend + frontend + 2 database) chỉ với 1 lệnh docker compose up
Giai đoạn 5 · Kubernetes
  • Viết Deployment + Service cho từng thành phần (order, payment, frontend)
  • ConfigMap cho config không nhạy cảm, Secret cho DB credentials
  • Ingress để route /api/orders → order-service, / → frontend
  • Cấu hình readiness/liveness probe cho từng service (đặc biệt quan trọng để K8s biết khi nào Payment Service "chết" và không route traffic vào)
  • Deploy thử lên minikube, test end-to-end: tạo đơn hàng qua frontend, xem log xử lý, thử tắt payment-service pod để quan sát circuit breaker + K8s tự restart pod
Mở rộng (Optional — nếu còn thời gian)
  • Thêm API Gateway (Spring Cloud Gateway) đứng trước 2 service
  • Thêm centralized logging/metrics/tracing (liên hệ Part 14), trace 1 request xuyên Order→Payment bằng correlation ID
  • Thêm CI/CD pipeline tự build immutable image + deploy lên K8s khi push code (liên hệ Part 13)
  • Thêm Redis cache cho GET /orders/{id} và giải thích invalidation strategy (liên hệ Part 4)
Definition of Done & Mock Interview
  • Có unit/integration/E2E test cho happy path và failure path; hướng dẫn chạy local bằng một lệnh; không chứa secret
  • Demo được timeout, duplicate request/message, service down và recovery; có log/metric/trace chứng minh hành vi
  • Trình bày kiến trúc trong 10 phút: requirement, flow, data ownership, failure handling, security, observability và trade-off
  • Tự chấm rubric 0–2 cho từng mục: correctness, testing, API/security, data, distributed failure, frontend UX, operations và communication
Học Part 16 · Capstone & Mock Interview10 chương chuyên sâu · 30 câu hỏi · 8 milestones · backend-first Order + PaymentMở giáo trình →
SPECIALIZATION TRACK
Reactive Java chuyên sâu
Lộ trình đào sâu xuyên nhiều Part: Java Concurrency → Reactive Streams → Project Reactor → WebFlux → Vert.x
Mục tiêu
  • Hiểu rõ async, non-blocking, event loop, Reactive Streams và backpressure.
  • Xây và so sánh backend bằng Spring WebFlux và Vert.x.
  • Thực hành capstone, failure handling và benchmark thay vì chỉ học API.
Prerequisites & nội dung

Khuyến nghị đã học Java Core, Spring Boot cơ bản, SQL, HTTP/API và các phần về distributed systems trong roadmap chính.

Course hub riêng gồm 16 module, source map chính thức, labs, capstones WebFlux/Vert.x và benchmark methodology.

Mở Reactive Java course hub16 module · Concurrency, Reactor, WebFlux, Vert.x, capstone và benchmarkBắt đầu track →
Artifact trạng thái và evidencereactive-java-course/RELEASE-STATUS.md · file nguồn ngoài canonical scope hiện tại
SUPPLEMENT
Platform Internals bổ sung
Các chuyên đề xuyên Part được bổ sung sau audit toàn bộ curriculum
Platform & Security Supplements10 curriculum chuyên sâu · thêm JVM Deep Dive và Keycloak IAM · evidence gates minh bạchMở chuyên đề →
Cross-Part Practice Execution Playbookstudy-guide/practice-execution-playbook.html · artifact reference; nội dung đã merge vào các execution labs

Canonical navigation inventory

Inventory hợp nhất từ snapshot canonical hiện tại và các link học tập có giá trị trong root sources. Dùng native <details>; không cần JavaScript điều hướng.

Part 01 · Java Core 21 links
Part 02 · Testing Code Quality 15 links
Part 03 · Spring Boot 21 links
Part 04 · Database Redis 17 links
Part 05 · Api Networking Security 16 links
Part 06 · Javascript Typescript 16 links
Part 07 · React 16 links
Part 08 · Messaging 16 links
Part 09 · Distributed Systems 18 links
Part 10 · System Design 17 links
Part 11 · Docker 17 links
Part 12 · Kubernetes 18 links
Part 13 · Cicd Git Cloud 19 links
Part 14 · Observability 17 links
Part 15 · Leadership 17 links
Part 16 · Capstone 17 links
Supplement · Aws 14 links
Supplement · Azure 15 links
Supplement · Cloud 6 links
Supplement · Cryptography 13 links
Supplement · Git 16 links
Supplement · Jvm Deep Dive 1 links
Supplement · Keycloak 1 link
Supplement · AI Coding Workflow 1 link
Supplement · Network 6 links
Supplement · Networking 14 links
Supplement · Nginx 15 links
Supplement · Process Thread 15 links
Supplement · Tomcat 15 links
Supplements · Hub 6 links
Cross-part study resources 1 links
Reactive Java course 19 links