Training Materials - vinhtbkit/bkit-kb GitHub Wiki

Training targets

Each of the training content should qualify the following targets

Goals

  • The content should clearly specify what learners are expected to achieve by the end of the training
  • Label each content with REQUIRED or OPTIONAL tag

Assessment

  • Participants will be assessed through quizzes, assignments, and a final project.

Duration

  • The training is expected to last in , including both theoretical learning and doing hands-on exercises.

Training contents

This section provides an overview of the essential content that a trainee should grasp and comprehend.

Java

Java Core

  • Overview:
    • Java, JDK, JRE
    • Java CLI: javac, classpath, arguments, setting up environments
  • Basic syntax
  • Data types
  • Class, Interface, Enum, Record
  • modifier: static, private, public, protected, default, final
  • Collections framework
  • Streams, Optional, Functional interfaces
  • Date/Time
    • Java 8 DateTime library
    • Zoned, Offset, Instant, Period, Duration, Clock
    • Date Time formatting
  • Blocking I/O: InputStream, OutputStream,Socket...
  • Multi-threading
    • Thread, Runnable, Callable
    • ExecutorService
    • Future, CompletableFuture
  • Annotation
    • Annotation processing
  • Working with process, environments

Logging

  • Log4j 2
  • Logback
  • Sl4j
  • java.util.logging
  • Log Appenders, Log level
  • Log format

Unit tests

  • JUnit 4, JUnit 5
  • Assertions
  • Mocking with Mockito
  • TestSuite, Tags

Thread-safety

  • Synchronized, volatile, ThreadLocal

Advanced topics

  • Reflections
  • Classloading
  • Non-blocking I/O: Buffer, Channel, Selector...
  • Garbage Collections
  • JVM under the hood
  • Virtual Thread

Maven

  • Basic:
    • pom.xml
    • Blocks: parent, properties, dependency, dependencyManagement, plugins
  • Maven Lifecycle
    • Phase, goal
  • Repository, mirrors
  • Maven archetype
  • Maven plugins
  • Maven wrapper
  • mvnd

Database

Transactions

Topics:

  • What is a transaction
  • ACID
  • How it works: PostgreSQL, MySQL, MSSQL

Reference materials

Hibernate

Spring

Spring Core

Spring AOP

Spring Boot

Spring Configuration

  • Configuration
  • ConfigurationProperties
    • Validating configuration properties on startup
  • Externalized configuration
    • Relaxed Bindings

Spring Data JPA

Caching

Spring Actuator

Spring Security

  • Authentication and authorization basics
  • Authentication method: basic, OAuth,...
    • OAuth authorization flows
    • OAuth models
  • Filters, Security Filter Chain, Security Context
  • Tokens: access tokens, refresh tokens, ID tokens. JWT, opaque tokens,...
  • CORS, CSRF
  • Authorization: PreAuthorize, hasRole, hasPermission
  • Third party integration: Keycloak, Firebase Authentication,...

Unit tests

Integration tests

Microservices

Messaging systems

Training assignments

Within this section, you will discover assignments related to the previous training topics. These assignments provide you with an opportunity to apply your knowledge and reinforce your coding skills.

Common Format

- Required knowledge: Describe necessary knowledge prior to working on this assignment
- Overview: What needs to be done
- Acceptance Criteria: list out specific conditions that need to be met for a user story to be considered complete

Money transferring system

  • Required knowledge: Java, Spring, Database, JPA
  • Overview: Setup Spring Boot (without security) + JPA + Postgres DB to build RESTFul API to transfer money from account A to account B.
  • Acceptance Criteria:
⚠️ **GitHub.com Fallback** ⚠️