DevLab

Đạo Đức · Trí Tuệ · Nghị Lực

DevLab Academy · Khoá Re-skill

Re-skill Backend Java

Database – OOP – Spring Boot

Hệ thống lại Database, lập trình hướng đối tượng và làm quen Spring Boot để sẵn sàng đi thực tập hoặc phỏng vấn vị trí Backend Developer. Cả khoá xoay quanh module: Quản lý Xuất – Nhập Kho.

0Buổi học
0 giờMỗi buổi
0%Điểm từ đồ án & phỏng vấn
Công cụ & môi trường
  • JDK 21 LTS
  • Spring Boot 3.x
  • Spring Data JPA
  • PostgreSQL 16
  • Maven
  • IntelliJ IDEA
  • Git & GitHub
  • Postman
  • JUnit 5 + Mockito
  • Swagger
Khoá học dành cho ai

Đã biết lập trình, nhưng chưa tự tin ứng tuyển Backend?

Sinh viên sắp đi thực tập

Đã học lập trình ở trường nhưng kiến thức còn rời rạc, cần một lộ trình ngắn để sẵn sàng cho vị trí thực tập Backend.

Người cần hệ thống lại kiến thức

Từng học Database, OOP nhưng chưa nắm chắc bản chất; muốn ôn lại bài bản, gắn với một bài toán nghiệp vụ thật.

Người mới làm quen Spring Boot

Biết Java cơ bản, muốn hiểu một request đi qua Controller → Service → Repository ra sao và tự viết được REST API.

Người chuẩn bị phỏng vấn

Muốn luyện câu hỏi SQL, OOP, Spring và có một đồ án đủ tốt để đưa vào CV, demo trước nhà tuyển dụng.

Yêu cầu đầu vào

Có nền tảng lập trình cơ bản. Không cần biết trước Spring Boot - PostgreSQL được cài đặt và thực hành ngay trên lớp từ Buổi 1.

Kết quả đầu ra

Kết thúc khoá, bạn làm được gì?

Không dừng ở lý thuyết: bạn ra về với một ứng dụng Spring Boot chạy được - có cơ sở dữ liệu, có API và có báo cáo.

  • Thiết kế cơ sở dữ liệu

    Vẽ ERD và thiết kế database quan hệ chuẩn hoá cho một bài toán nghiệp vụ thực tế.

  • SQL từ cơ bản đến nâng cao

    JOIN, Subquery, CTE, Window Function, Index và đọc EXPLAIN để tối ưu truy vấn.

  • OOP, SOLID & Design Pattern

    Tổ chức code backend rõ ràng với bốn tính chất OOP, nguyên tắc SOLID và các pattern cơ bản.

  • REST API với Spring Boot

    Spring Data JPA, Validation, Transaction và xử lý lỗi tập trung theo kiến trúc phân lớp.

  • Git/GitHub & làm việc nhóm

    Làm việc trên nhánh riêng, nhận task trên board của lớp và nộp bài bằng Pull Request.

  • Tự tin trả lời phỏng vấn

    Trả lời được các câu hỏi phổ biến về SQL, OOP và Spring, liên hệ được với chính code của mình.

Lộ trình 7 buổi · 2 giờ/buổi

Từ ERD đầu tiên đến buổi phỏng vấn thật

Mỗi buổi đều bổ sung một phần vào đồ án chung. Bấm vào từng buổi để xem nội dung chi tiết.

  1. DatabaseRe-Database01

    Buổi 1: Nền tảng Database & Mô hình dữ liệu

    ERD hệ thống kho, schema.sql + data.sql

    Nội dung chính

    • Vai trò của dữ liệu trong thời đại số, mô hình DIKW, dữ liệu cho AI
    • Dữ liệu có cấu trúc / bán cấu trúc / phi cấu trúc; OLTP vs OLAP, Data Warehouse
    • Các mô hình database: Relational, Document, Key-Value, Graph
    • Phân nhóm câu lệnh SQL: DDL, DML, DQL, DCL, TCL
    • ERD 3 mức Conceptual – Logical – Physical, chuẩn hoá 1NF → 3NF

    Bài tập về nhà

    Mô tả hệ thống, vẽ Conceptual & Logical ERD, viết tối thiểu 5 câu SQL mẫu

  2. DatabaseRe-Database02

    Buổi 2: SQL nâng cao & Review bài tập

    Bộ query báo cáo tồn kho, nhập/xuất theo tháng

    Nội dung chính

    • Review ERD của học viên, chốt schema chuẩn của lớp
    • JOIN nâng cao, Subquery, CTE
    • Aggregate Function, GROUP BY / HAVING
    • Window Function: ROW_NUMBER, RANK, LAG/LEAD, số dư lũy kế
    • Index, B-Tree, đọc EXPLAIN ANALYZE trên 100.000 dòng dữ liệu
    • Luyện câu hỏi phỏng vấn SQL: lý thuyết, viết query, tình huống

    Bài tập về nhà

    8 câu truy vấn báo cáo cho hệ thống kho trong sql/reports.sql

  3. OOP & JavaRe-BackEnd01

    Buổi 3: Lập trình hướng đối tượng (OOP) cơ bản

    Console app quản lý kho in-memory (domain model)

    Nội dung chính

    • OOP là gì, so sánh với lập trình thủ tục
    • Bốn tính chất: Encapsulation, Inheritance, Polymorphism, Abstraction
    • Abstract class vs Interface - khi nào dùng cái nào
    • Class/Object, Constructor, static, this, toString/equals/hashCode
    • Câu hỏi phỏng vấn OOP phổ biến

    Bài tập về nhà

    Console app Quản lý Xuất – Nhập Kho áp dụng đủ bốn tính chất OOP

  4. Spring BootRe-BackEnd02

    Buổi 4: OOP nâng cao, Tư duy thiết kế & Spring Boot cơ bản

    REST API đầu tiên và Pull Request đầu tiên trên GitHub

    Nội dung chính

    • Nguyên tắc SOLID qua chính bài tập kho
    • Design Pattern: Singleton, Factory, Observer
    • REST API & kiến trúc Controller → Service → Repository, DTO
    • Git/GitHub: fork, branch, commit, Pull Request
    • Spring Boot: IoC/DI, Spring Data JPA, xử lý lỗi - demo luồng CRUD trên repo khung

    Bài tập về nhà

    API Quản lý Đối tác (5 endpoint) theo tài liệu đặc tả

  5. Quy trìnhRe-Process01

    Buổi 5: Quy trình nghiệp vụ & Làm việc nhóm

    Nhận task đồ án WH-01 trên board của lớp

    Nội dung chính

    • SDLC, Agile/Scrum, User Story
    • Đọc & cập nhật ticket: Acceptance Criteria, trạng thái công việc
    • Cách hỏi khi bị kẹt: What I tried → What happened → What I expected
    • Kỹ năng đọc tài liệu kỹ thuật và tìm lỗi hiệu quả
    • Code review PR thật và quy trình 8 bước thực hiện một task

    Bài tập về nhà

    WH-01 – API lập phiếu nhập/xuất, cập nhật tồn kho

  6. Spring BootRe-BackEnd03

    Buổi 6: Kiểm thử, Naming Convention & Spring Annotation bổ sung

    Unit test, validation, API báo cáo, Swagger UI

    Nội dung chính

    • Cấp độ & phương pháp kiểm thử, STLC, viết test case và bug report
    • Unit test với JUnit 5 + Mockito theo cấu trúc AAA
    • Java Naming Convention & Clean Code
    • @Transactional, @Valid, @RestControllerAdvice, @Query, Pageable
    • Sinh tài liệu API tự động với Swagger (springdoc)

    Bài tập về nhà

    WH-02 hoàn thiện phiếu + unit test; WH-03 API báo cáo & README

  7. Phỏng vấnRe-Interview01

    Buổi 7: Buổi phỏng vấn trực tiếp

    Điểm đồ án kết môn + bản nhận xét cá nhân

    Nội dung chính

    • Giới thiệu bản thân 60 giây và trao đổi về CV
    • Demo đồ án trước hội đồng: rollback, báo cáo, unit test
    • Bốc thăm 3 câu hỏi kỹ thuật: SQL, OOP, Spring/Kiểm thử
    • Câu hỏi tình huống về quy trình và làm việc nhóm
    • Nhận xét cá nhân: điểm mạnh, điểm cần sửa trước khi phỏng vấn thật

    Chuẩn bị trước buổi

    CV một trang, repo đồ án tag v1.0, bài giới thiệu bản thân 60 giây

Đồ án kết môn

Hệ thống Quản lý Xuất – Nhập Kho

Một source code chung, lớn dần qua từng buổi. Đồ án làm cá nhân: fork repo khung, làm trên nhánh riêng, nhận task trên board của lớp và nộp bài bằng Pull Request - giống hệt khi đi làm.

Mô hình dữ liệu

  • categoriesid, name1 danh mục – n sản phẩm
  • productsid, code, name, unit, quantity, min_stock, category_idn sản phẩm – 1 danh mục
  • partnersid, name, type (SUPPLIER/CUSTOMER), phone, address1 đối tác – n phiếu
  • receiptsid, code, type (IN/OUT), partner_id, created_at, total_amount1 phiếu – n dòng chi tiết
  • receipt_itemsid, receipt_id, product_id, quantity, unit_pricen dòng – 1 phiếu, n dòng – 1 sản phẩm

Bộ API của đồ án

MethodEndpointThời điểm
GETPOST/api/productsDanh sách (tìm theo tên) / tạo sản phẩmCó sẵn
GETPUTDELETE/api/products/{id}Xem / sửa / xoá sản phẩmCó sẵn
CRUD/api/categoriesCRUD danh mụcCó sẵn
CRUD/api/partnersCRUD đối tác theo đặc tảBuổi 4
POST/api/receiptsLập phiếu nhập/xuất nhiều dòng, cập nhật tồn khoWH-01
GET/api/receiptsDanh sách phiếu và chi tiết /{id}WH-01
GET/api/reports/stockBáo cáo tồn kho hiện tạiWH-03
GET/api/reports/low-stockSản phẩm dưới mức tồn tối thiểuWH-03
GET/api/reports/monthly?year=Tổng nhập/xuất theo thángWH-03
WH-01Giao ở Buổi 5

API lập phiếu nhập/xuất

POST /api/receipts nhận danh sách dòng hàng. Phiếu xuất vượt tồn ở bất kỳ dòng nào trả 400 - không dòng nào được lưu, tồn kho không đổi.

WH-02Giao ở Buổi 6

Hoàn thiện phiếu & kiểm thử

Áp dụng @Transactional, @Valid, xử lý lỗi tập trung; viết tối thiểu 3 unit test và 3 test case cho API phiếu.

WH-03Giao ở Buổi 6

API báo cáo & tài liệu

Báo cáo tồn kho, tồn thấp, nhập/xuất theo tháng bằng @Query; phân trang danh sách phiếu, bật Swagger UI, viết README.

Bị hụt tiến độ? Repo khung có tag theo từng buổi (buoi-4,buoi-5, buoi-6) - checkout tag tương ứng để theo kịp lớp.

Học như đi làm thật

8 bước hoàn thành một task - từ ticket đến merge

Quy trình chuẩn bạn dùng cho mọi task của đồ án, và mang theo khi đi thực tập.

  1. 01

    Nhận và hiểu task

    Đọc ticket, Acceptance Criteria và code liên quan; thiếu thông tin thì hỏi ngay.

    Comment xác nhận hiểu đúng
  2. 02

    Tách việc nhỏ

    Chia thành các bước 30–60 phút: entity → repository → service → controller → test.

    Checklist trong ticket
  3. 03

    Tạo nhánh

    Chuyển ticket sang In Progress, tạo nhánh feature/<mã-ticket>-<mô-tả> từ nhánh chính mới nhất.

    Nhánh trên GitHub
  4. 04

    Code từng bước nhỏ

    Xong bước nào chạy thử, commit ngay với message rõ ràng: “[WH-12] Thêm entity Receipt”.

    Lịch sử commit rõ ràng
  5. 05

    Tự kiểm thử

    Chạy lại toàn bộ Acceptance Criteria bằng Postman, thử cả trường hợp lỗi như xuất vượt tồn.

    Ghi chú kết quả test
  6. 06

    Tạo Pull Request

    Mô tả làm gì, cách test, kèm ảnh chụp; gắn link ticket và chuyển sang Code Review.

    PR có mô tả đầy đủ
  7. 07

    Xử lý review

    Đọc kỹ comment, sửa, push tiếp lên cùng nhánh và trả lời từng comment.

    PR được approve
  8. 08

    Merge & đóng task

    Chuyển ticket sang Done, xoá nhánh, cập nhật README nếu cần.

    Ticket Done
Lỗi thường gặp của người mới
  • Nhận task xong im lặng ba ngày rồi báo không làm được
  • Commit một lần cả ngàn dòng
  • PR không có mô tả
  • Sửa theo review nhưng không trả lời comment
  • Làm thêm việc không ai yêu cầu
Buổi 7 · Phỏng vấn mô phỏng

Kết thúc khoá bằng một buổi phỏng vấn như doanh nghiệp tổ chức

Bạn vào phòng với CV và đồ án của mình, trước hội đồng. Kết quả là điểm đồ án kết môn cùng bản nhận xét: điểm mạnh, điểm phải sửa và gợi ý trả lời tốt hơn.

Kịch bản một lượt

10–12 phút
  1. 1
    Giới thiệu bản thân1 phút

    Tự giới thiệu, trả lời một câu hỏi về CV

  2. 2
    Trình bày đồ án3 phút

    Demo kiến trúc 3 lớp, phiếu xuất vượt tồn bị rollback, báo cáo, unit test

  3. 3
    Câu hỏi kỹ thuật4 phút

    Bốc 3 câu: SQL, OOP, Spring/Kiểm thử; có thể viết nhanh một câu SQL

  4. 4
    Câu hỏi tình huống2 phút

    Một tình huống về quy trình hoặc làm việc nhóm

  5. 5
    Học viên hỏi ngược1 phút

    “Em có câu hỏi gì cho công ty không?”

  6. 6
    Nhận xét nhanh1 phút

    Một điểm tốt, một điểm cần sửa ngay

Ngân hàng câu hỏi

Trích một phần

SQL & Database

  • INNER JOIN và LEFT JOIN khác nhau thế nào? Viết câu lệnh liệt kê tất cả sản phẩm, kể cả sản phẩm chưa có giao dịch.
  • ACID là gì? Tính chất nào quan trọng nhất khi lập phiếu xuất kho, vì sao?
  • Index là gì, khi nào không nên đánh index?
  • OLTP và OLAP khác nhau ra sao? Đồ án của em thuộc loại nào?

OOP & Java

  • Trình bày bốn tính chất OOP, mỗi tính chất chỉ vào một chỗ trong code đồ án của em.
  • Interface và Abstract class: khi nào dùng cái nào? Trong đồ án em dùng interface ở đâu?
  • Constructor là gì? Tại sao Spring khuyến khích constructor injection?
  • Singleton là gì? Liên hệ với bean của Spring.

Spring Boot & Kiểm thử

  • Một request từ Postman đi qua những lớp nào trong ứng dụng của em?
  • @Transactional làm gì? Chuyện gì xảy ra nếu bỏ nó khỏi hàm lập phiếu?
  • Tại sao không trả entity trực tiếp ra API mà phải dùng DTO?
  • Nếu API trả 500 khi em gọi, em sẽ tìm nguyên nhân theo thứ tự nào?

Quy trình & Tình huống

  • Em nhận một ticket nhưng đọc không hiểu yêu cầu, em làm gì?
  • Em đã làm 2 ngày mà chưa xong task được giao 1 ngày, em xử lý ra sao?
  • Khách hàng báo “hệ thống tính sai tồn kho”, không nói gì thêm. Em sẽ hỏi gì và kiểm tra gì trước?
  • Em thấy một đồng nghiệp commit thẳng lên nhánh main làm hỏng build, em làm gì?
Cách đánh giá

60% số điểm đến từ đồ án và phỏng vấn

Tiêu chí được công bố ngay từ đầu, để bạn biết mình cần làm tốt điều gì.

Tổng điểm môn học

60%Đồ án kết môn + phỏng vấn trực tiếp: 60%30%Bài tập về nhà (Buổi 1, 3, 4): 30%Chuyên cần & tham gia trên lớp: 10%
  • Đồ án kết môn + phỏng vấn trực tiếpChấm trong Buổi 7 theo phiếu chấm
    60%
  • Bài tập về nhà (Buổi 1, 3, 4)Chấm và review ở đầu buổi kế tiếp
    30%
  • Chuyên cần & tham gia trên lớpCó mặt, code theo, trả lời câu hỏi
    10%

Phiếu chấm Buổi 7 - cũng là điểm đồ án kết môn

  • Giới thiệu bản thân & CV

    Đúng 1 phút, rõ ràng; CV có mục dự án ghi đúng những gì tự làm

  • Đồ án – chức năng

    Chạy được ngay, CRUD đủ, phiếu nhiều dòng đúng, xuất vượt tồn bị từ chối và rollback, 3 API báo cáo đúng số liệu

  • Đồ án – chất lượng code & kiểm thử

    3 lớp rõ ràng, DTO + validation, xử lý lỗi tập trung, naming chuẩn, unit test pass, README đầy đủ

  • Câu hỏi kỹ thuật

    Đúng bản chất 3/3 câu, liên hệ được với code của mình; thành thật khi không biết

  • Câu hỏi tình huống & quy trình

    Xử lý hợp lý, biết hỏi lại, thể hiện đúng quy trình 8 bước

  • Thái độ & giao tiếp

    Đúng giờ, tự tin, nghe hết câu hỏi, có câu hỏi ngược

Hỏi đáp

Câu hỏi thường gặp

Mình cần biết gì trước khi học?

Bạn cần có nền tảng lập trình cơ bản. Khoá học dành cho người cần hệ thống lại Database, OOP và làm quen Spring Boot, nên không yêu cầu biết trước Spring.

Khoá học kéo dài bao lâu?

7 buổi, mỗi buổi 2 giờ. Buổi cuối là buổi phỏng vấn trực tiếp, mỗi học viên khoảng 10–12 phút trước hội đồng.

Đồ án làm cá nhân hay theo nhóm?

Đồ án làm cá nhân. Mỗi học viên fork repo khung về tài khoản của mình, làm trên nhánh riêng, nhận task trên board của lớp (từ Buổi 5) và nộp bài bằng Pull Request.

Nếu mình bị hụt tiến độ giữa chừng thì sao?

Repo khung có tag tương ứng từng buổi (buoi-4, buoi-5, buoi-6). Bạn checkout tag của buổi đó để tiếp tục cùng lớp.

Cần cài những công cụ gì?

JDK 21 LTS, IntelliJ IDEA, Maven, PostgreSQL 16, Git/GitHub, Postman và draw.io hoặc dbdiagram.io để vẽ ERD. PostgreSQL được cài và thực hành ngay trên lớp ở Buổi 1.

Học xong nên học tiếp gì?

Gợi ý lộ trình tiếp theo: Spring Security và JWT; Docker và triển khai ứng dụng; CI/CD cơ bản với GitHub Actions; frontend tối thiểu (React/Vue) gọi bộ API của đồ án; tiếp tục luyện SQL, viết test và thiết kế hệ thống.

Đăng ký khoá học

Sẵn sàng re-skill để ứng tuyển Backend Java?

Nhắn cho DevLab qua Zalo để được tư vấn lịch khai giảng và xem khoá học có phù hợp với nền tảng hiện tại của bạn không.

Khoá học bao gồm
  • 7 buổi học, mỗi buổi 2 giờ
  • Repo khung Spring Boot + Postman collection
  • Bài tập và Pull Request được giảng viên review
  • Buổi phỏng vấn mô phỏng + bản nhận xét cá nhân