Khóa học Fullstack Java + Spring + React

Khóa học lập trình Java từ cơ bản đến nâng cao, trang bị cho bạn các kỹ năng thực chiến với các công nghệ hiện đại nhất.

Tại sao chọn khóa học
  • Lộ trình học được thiết kế chi tiết từ cơ bản đến nâng cao, phù hợp cho người mới bắt đầu
  • Tập trung vào thực hành với 10 dự án thực tế theo xu hướng công nghệ mới nhất
  • Giảng viên có nhiều năm kinh nghiệm trong ngành và giảng dạy
  • Được hỗ trợ 24/7 từ mentor và cộng đồng học viên
  • Nội dung cập nhật liên tục theo xu hướng công nghệ mới nhất
  • Có cơ hội thực tập và việc làm sau khóa học
Mục tiêu khóa học
  • Nắm vững kiến thức cơ bản và nâng cao về lập trình Java và các framework phổ biến như Spring Boot, Hibernate
  • Phát triển kỹ năng lập trình full-stack với Java Spring Boot cho Backend và ReactJS cho Frontend
  • Hiểu và áp dụng quy trình phát triển phần mềm Agile/Scrum trong dự án thực tế
  • Xây dựng các ứng dụng web hoàn chỉnh và triển khai chúng lên các cloud platform như AWS, Docker
  • Làm chủ các công nghệ hiện đại như Microservices, RESTful APIs, JWT Authentication
  • Thực hành với 10 dự án thực tế theo xu hướng công nghệ mới nhất
Kết quả mong đợi
  • Có khả năng phát triển ứng dụng web full-stack với Java Spring Boot và ReactJS
  • Hiểu và áp dụng các kỹ thuật tối ưu hóa và bảo mật trong phát triển web
  • Phát triển kỹ năng làm việc nhóm và quản lý dự án với phương pháp Agile/Scrum
  • Tự tin triển khai và quản lý các dự án lập trình thực tế
  • Nắm vững kiến trúc Microservices và cách triển khai ứng dụng lên cloud
  • Có portfolio với 10 dự án thực tế để phỏng vấn xin việc
Đối tượng hướng đến
  • Người mới bắt đầu học lập trình muốn trở thành Fullstack Developer
  • Lập trình viên Frontend muốn học thêm về Backend Java Spring Boot
  • Lập trình viên Backend Java muốn học thêm về Frontend ReactJS
  • Sinh viên CNTT muốn có định hướng về nghề nghiệp Fullstack Developer
  • Người đi làm muốn chuyển nghề sang lập trình web Fullstack
  • Lập trình viên muốn cập nhật công nghệ mới trong phát triển web

Nội dung chương trình học

Module 1: FE Basic
Tổng quan về lập trình web

Giới thiệu về Internet và World Wide Web

Cách hoạt động của trình duyệt web

Các thành phần cơ bản của một trang web

Frontend và Backend là gì?

Các công nghệ phổ biến trong phát triển web

Lộ trình học Frontend Developer

Giới thiệu về khóa học, lộ trình học

Tổng quan về khóa học Fullstack Java Spring Boot + ReactJS

Các công nghệ sẽ được học trong khóa

10 dự án thực tế sẽ được thực hiện

Phương pháp học tập hiệu quả

Cách sử dụng tài liệu và resource của khóa học

Q&A về lộ trình học

Làm quen một số thẻ trong HTML

Cấu trúc cơ bản của file HTML

Các thẻ HTML cơ bản: heading, paragraph, div, span

Thẻ định dạng văn bản: b, i, u, strong, em

Thẻ danh sách: ul, ol, li

Thẻ liên kết và hình ảnh: a, img

Thực hành xây dựng trang profile đơn giản

Tìm hiểu HTML5 các thẻ hay sử dụng trong thực tế

Các thẻ semantic trong HTML5: header, nav, main, article, section, footer

Form và các elements: input, select, textarea, button

Audio và Video trong HTML5

Canvas và SVG

Local Storage và Session Storage

Thực hành xây dựng form đăng ký/đăng nhập

Dùng các thẻ HTML thực hành tạo một số component đơn giản

Xây dựng navigation bar

Tạo card sản phẩm

Thiết kế footer

Làm form liên hệ

Tạo gallery hình ảnh

Thực hành responsive design cơ bản

Các cách viết CSS trong dự án (Inline Internal External)

CSS Inline style

Internal CSS với thẻ style

External CSS với file riêng

Import CSS từ file khác

CSS Variables

So sánh ưu nhược điểm của từng cách viết CSS

Các thuộc tính cơ bản hay dùng trong CSS

Color và Background

Font và Text properties

Margin và Padding

Border và Border-radius

Width và Height

Display và Visibility

Cách đặt tên CSS (BEM ...)

Giới thiệu về BEM methodology

Cách đặt tên class theo BEM

Các quy tắc đặt tên trong BEM

Ưu điểm của việc sử dụng BEM

So sánh BEM với các phương pháp đặt tên khác

Thực hành áp dụng BEM vào project

Tìm hiểu về Box Model và Position để căn chỉnh CSS cho các thành phần trong HTML

Box Model: margin, border, padding, content

Position: static, relative, absolute, fixed, sticky

Z-index và stacking context

Float và clear

Overflow handling

Thực hành layout với Box Model và Position

Thuộc tính display và flex để bố cục website thêm linh hoạt và đẹp mắt

Display: block, inline, inline-block

Flexbox layout

Flex container properties

Flex item properties

Flex direction và flex wrap

Justify content và align items

Phân biệt được các giá trị inline block inline-block

Đặc điểm của display: inline

Đặc điểm của display: block

Đặc điểm của display: inline-block

So sánh các loại display

Use cases cho từng loại display

Thực hành với các loại display

Responsive trong CSS tầm quan trọng tại sao phải biết cách sử dụng Responsive

Media queries trong CSS

Breakpoints cho responsive design

Mobile-first vs Desktop-first approach

Flexible images và media

CSS Grid system

Thực hành làm website responsive

Sử dụng bootstrap để làm 1 vài component hay gặp: card product ...

Giới thiệu Bootstrap framework

Grid system trong Bootstrap

Components: Navbar, Card, Button

Utilities classes trong Bootstrap

Customizing Bootstrap

Thực hành xây dựng landing page với Bootstrap

Áp dụng các kiến thức để xây dựng layout 1 trang web

Phân tích layout website

Xây dựng header và navigation

Thiết kế main content area

Tạo sidebar components

Xây dựng footer

Responsive cho tất cả các thành phần

Deploy và làm bài kiểm tra cuối module

Cách deploy website lên hosting

Sử dụng GitHub Pages

Kiểm tra cross-browser compatibility

Tối ưu hóa performance

Làm bài kiểm tra lý thuyết

Code challenge cuối module

Module 2: FE Intermediate
Cách khởi tạo biến trong JS

Khai báo biến với var, let, const

Scope của từng loại biến

Hoisting trong JavaScript

Best practices trong khai báo biến

Đặt tên biến theo quy chuẩn

Thực hành với các loại biến

Datatypes

Primitive types: string, number, boolean, null, undefined

Reference types: object, array, function

Type coercion trong JavaScript

Kiểm tra kiểu dữ liệu với typeof

Chuyển đổi giữa các kiểu dữ liệu

Common pitfalls với datatypes

Toán tử trong JS

Toán tử số học (+, -, *, /, %, ++, --)

Toán tử gán (=, +=, -=, *=, /=, %=)

Toán tử so sánh (==, ===, !=, !==, >, <, >=, <=)

Toán tử logic (&&, ||, !)

Toán tử ba ngôi (?:)

Thứ tự ưu tiên của các toán tử

Best practices khi sử dụng toán tử

Các lỗi thường gặp với toán tử

TypeScript

Giới thiệu về TypeScript và lợi ích

Cài đặt và cấu hình TypeScript

TypeScript compiler và tsconfig.json

Debugging TypeScript code

Tích hợp TypeScript với IDE

TypeScript với React

Best practices khi code TypeScript

Migration từ JavaScript sang TypeScript

Tìm hiểu về các kiểu dữ liệu cơ bản trong TypeScript

Boolean, Number, String trong TypeScript

Array và Tuple types

Enum và cách sử dụng

Any, Void, Null và Undefined

Never và Unknown types

Object và interface types

Union và Intersection types

Type assertions và type guards

Literal types và type aliases

Utility types trong TypeScript

Generic

Generic Types là gì và tại sao cần dùng

Generic Classes và Interfaces

Generic Functions và Methods

Generic Constraints

Generic Parameter Defaults

Generic với Array và Promise

Utility Types với Generic

Best practices khi sử dụng Generic

Các design pattern với Generic

Real-world examples của Generic

Validate props (sử dụng props type)

Tìm hiểu về PropTypes và tầm quan trọng của việc kiểm tra props

Cách cài đặt và cấu hình PropTypes trong dự án React

Các loại kiểm tra props: isRequired, array, object, func, node,...

Kiểm tra props với các kiểu dữ liệu phức tạp

Custom validators cho PropTypes

Best practices khi sử dụng PropTypes

So sánh PropTypes với TypeScript

Thực hành: Xây dựng component với PropTypes validation

Default props

Khái niệm và cách sử dụng defaultProps

Cách khai báo defaultProps cho class và function components

Ưu điểm của việc sử dụng defaultProps

Best practices khi sử dụng defaultProps

Kết hợp defaultProps với PropTypes

Thực hành: Xây dựng component với defaultProps

List rendering

Cách render danh sách trong React

Sử dụng map() để render lists

Keys trong React và tầm quan trọng

Các lỗi thường gặp khi render lists

Tối ưu hiệu suất khi render lists lớn

Thực hành: Xây dựng ứng dụng Todo List

Phân trang và infinite scroll với lists

Virtual scrolling cho danh sách lớn

Rendering có điều kiện

Các cách thực hiện conditional rendering trong React

If/else statements trong JSX

Toán tử ba ngôi (ternary operator)

Logical && operator

Switch case trong rendering

Null và undefined trong rendering

Best practices cho conditional rendering

Thực hành: Xây dựng component với nhiều điều kiện render

State và event

Khái niệm về state trong React

useState hook và cách sử dụng

setState và cách cập nhật state

Bất đồng bộ trong setState

State lifting và data flow

Các lỗi thường gặp khi sử dụng state

Best practices khi quản lý state

Thực hành: Xây dựng form với state management

Event trong ReactJS

Synthetic Events trong React

Các loại event handlers phổ biến

Event bubbling và capturing

preventDefault và stopPropagation

Event delegation trong React

Custom events

Best practices khi xử lý events

Thực hành: Xây dựng interactive components

Cách khai báo sử dụng state

Các cách khai báo state khác nhau

Class component state vs Function component state

useState vs useReducer

State initialization patterns

Lazy state initialization

State updates và batching

Immutability trong state updates

Thực hành: Quản lý complex state

So sánh state và props

Sự khác biệt giữa state và props

Khi nào sử dụng state, khi nào sử dụng props

Props drilling và cách khắc phục

State management patterns

Context API vs Props

Performance considerations

Best practices khi làm việc với state và props

Thực hành: Xây dựng ứng dụng quản lý state phức tạp

Routing

Giới thiệu về React Router

Cài đặt và cấu hình React Router

Các loại Router: BrowserRouter, HashRouter

Route matching và parameters

Nested routes

Protected routes

Navigation programmatically

Route guards và authentication

Lazy loading routes

Thực hành: Xây dựng ứng dụng multi-page

Hướng dẫn cài đặt và sử dụng thư viện routing

Cài đặt React Router DOM

Cấu hình routes trong ứng dụng

useNavigate và useLocation hooks

Route parameters và query strings

History API và navigation

Error boundaries cho routing

Code splitting với React Router

Thực hành: Implement routing system

Setup routing cho project thực hành

Thiết kế cấu trúc routing cho project

Implement authentication routes

Protected route components

Route-based code splitting

Navigation guards

Error handling trong routing

Performance optimization cho routes

Thực hành: Setup complete routing system

Hướng dẫn setup routing cho project cuối khóa

Phân tích yêu cầu routing của project

Thiết kế hệ thống routing

Implement authentication và authorization

Dynamic routes và parameters

Nested routing structure

Loading states và error handling

Route transitions và animations

Thực hành: Setup production-ready routing

Thực hành làm project Ecommerce CRM

Phân tích yêu cầu và thiết kế hệ thống CRM

Xây dựng cấu trúc project theo mô hình Clean Architecture

Thiết kế database schema với MySQL Workbench

Setup project với Spring Boot, Spring Security, JWT

Tích hợp Swagger để tạo API documentation

Xây dựng RESTful APIs cho các module chính

Implement authentication/authorization với JWT

Tích hợp Redis để cache dữ liệu

Unit testing với JUnit và Mockito

Triển khai CI/CD pipeline với Jenkins

Xây dựng các Frontend và tích hợp các APIs vào các chức năng chính trong project Ecommerce CRM

Setup React project với Create React App

Cấu hình routing với React Router v6

State management với Redux Toolkit

Tích hợp Material UI cho UI components

Implement form validation với Formik và Yup

Tích hợp React Query để quản lý API calls

Xây dựng các components cho dashboard

Implement real-time features với WebSocket

Tối ưu performance với React.memo, useMemo

Unit testing với React Testing Library

Làm bài thi cuối module

Ôn tập kiến thức đã học

Làm bài kiểm tra lý thuyết

Làm bài kiểm tra thực hành

Đánh giá và nhận xét kết quả

Tổng kết module và định hướng tiếp theo

Giải đáp thắc mắc của học viên

Review các điểm cần cải thiện

Đưa ra lộ trình học tập tiếp theo

Hướng dẫn tự học và tài liệu tham khảo

Chia sẻ kinh nghiệm thực tế

Cài đặt môi trường

Cài đặt JDK và thiết lập biến môi trường

Cài đặt IDE IntelliJ IDEA Ultimate

Cài đặt Git và GitHub Desktop

Cài đặt Node.js và npm

Cài đặt các công cụ phát triển web

Cấu hình Maven và Gradle

Thiết lập môi trường React

Cài đặt các extensions cần thiết

Kiểm tra môi trường với Hello World

Troubleshooting các vấn đề thường gặp

Môi trường chạy Java JVM JRE môi trường phát triển Java JDK

Tìm hiểu về JVM và cách hoạt động

Phân biệt JDK, JRE và JVM

Cài đặt và cấu hình JDK

Cách Java biên dịch và thực thi code

Garbage Collection trong Java

Class loader và memory management

Tối ưu hiệu suất JVM

Debug và monitoring JVM

JVM tuning và configuration

Best practices khi làm việc với JVM

Sử dụng IDE trong chương trình IntelliJ phiên bản Ultimate

Giao diện và các thành phần chính của IntelliJ

Các phím tắt quan trọng để code hiệu quả

Debug và run configuration

Quản lý project và modules

Version control integration

Database tools và SQL editor

Unit testing với IntelliJ

Code refactoring tools

Code inspection và static analysis

Plugins hữu ích cho Java development

Cài đặt biến môi trường và giải thích ý nghĩa

Khái niệm về biến môi trường

Cài đặt JAVA_HOME và PATH

Biến môi trường cho Maven và Gradle

Environment variables cho development

System variables vs User variables

Cấu hình classpath trong Java

Quản lý multiple Java versions

IDE environment setup

Debug environment variables

Best practices trong quản lý môi trường

Chương trình Helloworld các phím tắt để chạy chương trình

Tạo project Java đầu tiên

Cấu trúc của một class Java

Main method và entry point

Compile và run từ command line

Run configuration trong IDE

Debug shortcuts và techniques

Code templates và live templates

Code completion và suggestions

Refactoring shortcuts

Navigation shortcuts

Chương trình in ra màn hình và nhập vào từ bàn phím chuỗi và số

System.out và các phương thức in

Scanner class để nhập dữ liệu

BufferedReader và InputStreamReader

Xử lý ngoại lệ khi nhập liệu

Định dạng output với printf

Parse các kiểu dữ liệu

Validate input data

Console I/O best practices

Handling special characters

Performance considerations

Hướng dẫn sử dụng Git thực hành các thao tác trên Git

Khởi tạo repository với git init

Quản lý files với git add và commit

Làm việc với branches

Merge và resolve conflicts

Remote repositories và git push/pull

Git workflow trong team

Git hooks và automation

Code review với pull requests

Git best practices và conventions

Advanced git commands và tips

Cấu trúc chuẩn chương trình trong Java câu lệnh khởi lệnh quy tắc đặt tên biến hàm class trong Java

Giới thiệu về Java và lịch sử phát triển

Các đặc điểm của Java: Write Once Run Anywhere

Kiến trúc JVM (Java Virtual Machine)

So sánh Java với các ngôn ngữ khác

Các phiên bản Java và tính năng mới

Cách Java hoạt động: Bytecode và JIT compiler

Các công cụ phát triển Java (JDK, IDE)

Best practices trong lập trình Java

Coding conventions trong Java

Tổng quan về hệ sinh thái Java

Các đặc trưng cơ bản của Java so với ngôn ngữ C++

So sánh cú pháp Java và C++

Quản lý bộ nhớ: Garbage Collection vs Manual Memory Management

Tính đa kế thừa và interface trong Java

Con trỏ và tham chiếu

Xử lý ngoại lệ trong Java và C++

Template C++ vs Generic Java

Namespace vs Package

Standard Template Library vs Java Collections Framework

Build và biên dịch trong hai ngôn ngữ

Performance và use cases của mỗi ngôn ngữ

Deploy hệ thống

Chuẩn bị môi trường production

Build và đóng gói ứng dụng với Maven/Gradle

Triển khai lên các cloud platform (AWS, GCP, Azure)

Cấu hình NGINX và Apache

Setup SSL/TLS và HTTPS

Monitoring và logging

Backup và disaster recovery

Auto scaling và load balancing

CI/CD pipeline setup

Security best practices trong deployment

LoadBalancer RevertProxy...

Nguyên lý hoạt động của Load Balancer

Các thuật toán cân bằng tải

Cấu hình Nginx làm reverse proxy

Session persistence và sticky sessions

Health checks và fault tolerance

SSL termination tại load balancer

Rate limiting và throttling

Access control và security

Monitoring load balancer metrics

High availability setup

Hướng dẫn sử dụng docker container

Docker architecture và components

Dockerfile và image building

Container lifecycle management

Docker networking

Docker volumes và data persistence

Docker registry và repository

Multi-stage builds

Docker security best practices

Docker debugging và troubleshooting

Resource management và limits

Deploy ứng dụng với docker và docker compose

Docker Compose file syntax

Multi-container applications

Environment variables và configs

Network configuration trong Compose

Volume management

Service dependencies và startup order

Scaling services

Production deployment considerations

Logging và monitoring

Rolling updates và zero-downtime deployment

Module 3: FE Advanced
Quản lý state với Redux và Redux Toolkit

Kiến trúc Flux và Redux flow

Setup Redux store và reducers

Actions và action creators

Redux Toolkit và createSlice

Redux middleware và side effects

Redux Thunk cho async actions

Redux DevTools và debugging

Tối ưu performance với Redux

Redux Persist để lưu state

Best practices khi làm việc với Redux

React Hooks nâng cao

Custom hooks và use cases

useCallback và useMemo cho optimization

useRef và DOM manipulation

useContext cho global state

useReducer cho complex state logic

useLayoutEffect vs useEffect

Hook dependencies và closure

Testing custom hooks

Common hook patterns

Hook rules và best practices

React Performance Optimization

React DevTools và Performance tab

Profiling và measuring performance

Code splitting và lazy loading

Memo và PureComponent

Virtual DOM và reconciliation

Debouncing và throttling events

List virtualization với react-window

Image optimization techniques

Bundle size optimization

Server-side rendering với Next.js

Testing trong React

Jest và React Testing Library setup

Unit testing components

Integration testing

Mock functions và API calls

Testing hooks và custom hooks

Testing Redux connected components

Snapshot testing

E2E testing với Cypress

Test coverage và reporting

CI/CD integration cho tests

Advanced React Patterns

Compound Components pattern

Render Props pattern

Higher Order Components (HOC)

Control Props pattern

State Reducer pattern

Provider pattern

Error Boundaries

Portal và Modal patterns

Suspense và Error handling

React.memo và performance patterns

Module 4: BE Basic
OOP trong Java

Classes và Objects

Inheritance và Polymorphism

Encapsulation và Access modifiers

Abstract classes và interfaces

Static và final keywords

Method overloading và overriding

Constructor và constructor chaining

This và super keywords

Package và import statements

Object lifecycle và garbage collection

Java Collections Framework

ArrayList và LinkedList

HashSet và TreeSet

HashMap và TreeMap

Queue và Stack

Iterator và Enumeration

Comparable và Comparator

Collections utility methods

Generic types

Type erasure và wildcards

Performance considerations

Exception Handling

Try-catch-finally blocks

Checked vs Unchecked exceptions

Custom exceptions

Exception hierarchy

Multiple catch blocks

Try-with-resources

Exception propagation

Best practices in exception handling

Logging exceptions

Error handling patterns

File I/O và NIO

File và Directory operations

FileInputStream và FileOutputStream

BufferedReader và BufferedWriter

Character vs Byte streams

NIO.2 Path và Files

File attributes và metadata

File watching service

Memory mapped files

File locking

Resource management

Multithreading và Concurrency

Thread lifecycle

Runnable và Callable

Synchronization và locks

Volatile và atomic variables

ExecutorService và thread pools

Future và CompletableFuture

Thread safety và race conditions

Deadlock prevention

Fork/Join framework

Parallel streams

Module 5: BE Intermediate
Spring Core và IoC Container

Spring container và beans

Dependency Injection types

Bean lifecycle và scopes

Configuration styles (XML, Java, Annotation)

Component scanning

Autowiring và qualifiers

Bean validation

Properties và profiles

SpEL (Spring Expression Language)

AOP fundamentals

Spring MVC

MVC architecture

Controllers và RequestMapping

Handler methods

View resolvers

Form handling và validation

File upload/download

Exception handling

Interceptors

RESTful web services

Content negotiation

Spring Data JPA

JPA Entity mapping

Repository pattern

CRUD operations

Query methods

Native queries

Relationships (One-to-One, One-to-Many, Many-to-Many)

Transaction management

Auditing

Pagination và sorting

Caching strategies

Spring Security

Authentication và authorization

UserDetailsService

Password encoding

JWT authentication

OAuth2 và OpenID Connect

Method security

CORS và CSRF

Remember-me authentication

Session management

Security best practices

Testing trong Spring

Unit testing với JUnit

Integration testing

MockMvc testing

WebTestClient

TestContainers

Service layer testing

Repository layer testing

Security testing

Test configurations

Test coverage và reporting

Module 6: BE Advanced
Spring Boot Advanced

Auto-configuration

Custom starters

Externalized configuration

Logging configuration

Actuator endpoints

Custom metrics

Application events

Async processing

Caching mechanisms

Production-ready features

Microservices Architecture

Service discovery (Eureka)

API Gateway (Spring Cloud Gateway)

Circuit Breaker (Resilience4j)

Configuration Server

Distributed tracing (Sleuth, Zipkin)

Message queues (RabbitMQ, Kafka)

Event-driven architecture

Service mesh

Container orchestration

Microservices patterns

Cloud Native Development

12-Factor App methodology

Cloud platforms (AWS, GCP, Azure)

Containerization với Docker

Kubernetes deployment

CI/CD pipelines

Infrastructure as Code

Cloud security

Monitoring và logging

Auto-scaling

Disaster recovery

Performance Optimization

JVM tuning

Memory optimization

Database optimization

Connection pooling

Caching strategies

Profiling tools

Load testing

Performance monitoring

Query optimization

Scalability patterns

Security Best Practices

OWASP Top 10

Secure coding practices

Authentication mechanisms

Authorization patterns

API security

Encryption và hashing

Security headers

Penetration testing

Security auditing

Compliance và regulations

Module 7: Agile/Scrum - Software Development Life Cycle
Tìm hiểu về các Quy trình phát triển phần mềm

Waterfall model và ưu nhược điểm

Iterative và Incremental development

Spiral model

V-model

RAD (Rapid Application Development)

Prototype model

DevOps và CI/CD

Test-driven development (TDD)

Behavior-driven development (BDD)

Domain-driven design (DDD)

Các mô hình phát triển phần mềm

So sánh các mô hình phát triển phần mềm

Lựa chọn mô hình phù hợp với dự án

Project planning và estimation

Risk management

Quality assurance processes

Change management

Configuration management

Release management

Maintenance và support

Documentation requirements

Giới thiệu về Agile/Scrum

Agile manifesto và principles

Scrum roles và responsibilities

Sprint planning và execution

Daily standup meetings

Sprint review và retrospective

Product backlog management

User stories và acceptance criteria

Velocity và burndown charts

Agile estimation techniques

Scrum artifacts và ceremonies

Tìm hiểu về Jira và Trello

Jira project setup và configuration

Issue types và workflows

Agile boards (Scrum và Kanban)

Trello boards và lists

Task management và assignment

Time tracking

Reporting và analytics

Integration với các tools khác

Customization và automation

Best practices cho project management

Áp dụng Agile/Scrum Jira vào 1 dự án thực tế

Setup project trong Jira

Creating và managing sprints

User story mapping

Sprint planning meeting simulation

Daily standup practice

Backlog grooming

Sprint review và demo

Retrospective facilitation

Metrics và reporting

Continuous improvement process

Software Development Life Cycle (SDLC)

Requirements gathering và analysis

System design (HLD/LLD)

Implementation/coding

Testing phases

Deployment strategies

Maintenance và support

Documentation standards

Version control practices

Code review process

Technical debt management

Cài đặt môi trường

Download và cài đặt JDK

Thiết lập biến môi trường JAVA_HOME

Cài đặt IDE IntelliJ IDEA

Cấu hình Maven và Gradle

Setup Git và GitHub

Cài đặt các plugins cần thiết

Kiểm tra môi trường với Hello World

Debug tools setup

Code formatting tools

Version control integration

Cách estimate một task theo chuẩn

Story point estimation

Planning poker technique

T-shirt sizing method

Task breakdown strategies

Effort vs complexity estimation

Risk assessment trong estimation

Team velocity calculation

Re-estimation guidelines

Historical data analysis

Estimation best practices

Phỏng vấn thử ứng viên

Technical interview preparation

Behavioral interview questions

Problem-solving exercises

Code review exercises

System design questions

Cultural fit assessment

Mock interview practice

Feedback và evaluation

Interview scoring criteria

Post-interview analysis