Java Backend Career Track: Tam tədris planı — 24 həftə
İlk proqramdan müdafiə olunan backend layihəyə qədər altı mərhələ. Hər həftənin konkret laboratoriya işi və praktik tapşırığı var, tapşırıqların çoxu Pull Request kimi təhvil verilir.
Bu, ilk qrup üçün planlaşdırılan tədris planıdır. Ardıcıllıq və dərinlik qrupun səviyyəsinə görə qrupdan əvvəl və qrup zamanı dəyişdirilə bilər. Həftəlik saatlar və cədvəl qrupla birlikdə elan olunur.
01 · 1–4-cü həftələr
Əsaslar
Mərhələnin məqsədi: Kiçik Java proqramları yazmaq, onları debug etmək və Git-dən istifadə etmək.
Həftə 1
Proqramlar necə işləyir
- JDK, JVM və IDE
- Proqramın kompilyasiyası və işə salınması
- Dəyişənlər, tiplər və operatorlar
- Kompilyator xətalarını oxumaq
- İlk Git commit-ləri
Laboratoriya: JDK, IntelliJ IDEA və Git-i qurun, sonra kiçik konsol kalkulyatoru yazın və onu mənalı addımlarla commit edin.
Tapşırıq: Vahid çeviricisi (məsələn, temperatur və uzunluq), səliqəli commit tarixçəsi ilə GitHub repozitoriyasına yüklənmiş.
Həftə 2
İdarəetmə axını, metodlar və debugging
- Şərtlər və dövrlər
- Metodlar və parametrlər
- Breakpoint ilə debugging
- Məsələni addımlara bölmək
Laboratoriya: Ədəd tapmaq oyununu kiçik metodlara bölərək yazın və əvvəlcədən qoyulmuş xətanı debugger ilə tapın.
Tapşırıq: Mətn menyulu proqram (məsələn, yaddaşda işləyən sadə xərc izləyicisi) və məsələni addımlara necə böldüyünüz barədə qısa qeyd.
Həftə 3
Massivlər, sətirlər və sadə alqoritmlər
- Massivlər və sətirlər
- Xətti və ikili axtarış
- Çeşidləmə intuisiyası
- Xərc haqqında düşünmək (Big-O intuisiyası)
Laboratoriya: Axtarışı və sadə çeşidləməni əl ilə yazın, sonra böyüyən giriş verilənlərində hər birinin neçə addım atdığını müqayisə edin.
Tapşırıq: Mətn üçün söz statistikası aləti (söz sayı, ən çox işlənən sözlər) və iki yanaşmanın yazılı müqayisəsi.
Həftə 4
OOP I və ilk Pull Request
- Siniflər və obyektlər
- Encapsulation
- Konstruktorlar
- Git branch-ləri
- İlk Pull Request
Laboratoriya: Kiçik domeni (məsələn, bank hesabı və ya kitabxana kitabı) siniflərlə modelləşdirin və feature branch-dən Pull Request kimi təqdim edin.
Tapşırıq: Mərhələ ərzindəki konsol tətbiqini siniflərlə yenidən yazın, Pull Request kimi təhvil verin və review qeydlərini nəzərə alın.
Yoxlama nöqtəsi: Pull Request kimi təhvil verilmiş, review olunmuş və rəydən sonra təkmilləşdirilmiş konsol tətbiqi.
02 · 5–9-cü həftələr
Java Core
Mərhələnin məqsədi: Domeni təmiz və testlənmiş Java kodu ilə modelləşdirmək.
Həftə 5
OOP II və ilk SOLID prinsipləri
- İnterfeyslər və polimorfizm
- Inheritance və composition
- Single responsibility və open/closed
- Dəyişikliyə uyğun dizayn
Laboratoriya: Kiçik bildiriş və ya ödəniş nümunəsini inheritance-dən interfeys və composition-a refaktor edin.
Tapşırıq: Kiçik domeni (məsələn, bir neçə endirim qaydası ilə sifariş qiymətləndirilməsi) interfeyslər arxasında dizayn edin, Pull Request kimi təhvil verin.
Həftə 6
Collections və generics
- List, Set, Map və Deque
- Kolleksiyanı giriş nümunəsinə görə seçmək
- Generics və tip təhlükəsizliyi
- Comparator ilə iterasiya və çeşidləmə
Laboratoriya: Eyni məsələni (məsələn, müştəriyə görə sifarişlərin axtarışı) müxtəlif kolleksiyalarla həll edin və hansının daha uyğun olduğunu izah edin.
Tapşırıq: Axtarış, qruplaşdırma və çeşidləmə ilə yaddaşda işləyən kataloq və hər kolleksiyanı niyə seçdiyiniz barədə qısa qeyd.
Həftə 7
Exceptions, bərabərlik, record və enum
- Checked və unchecked exception-lar
- equals və hashCode
- Record və enum
- Immutability
- Xəta idarəsinin dizaynı
Laboratoriya: Əvvəlki layihədəki xəta kodlarını mənalı exception-larla əvəz edin və dəyər obyektlərini record-a çevirin.
Tapşırıq: Domen modelinə validasiya, xüsusi exception-lar və dəyişməz dəyər obyektləri əlavə edin, Pull Request kimi təhvil verin.
Həftə 8
Lambda, stream və clean code
- Lambda və funksional interfeyslər
- Stream: map, filter, collect
- Optional
- Adlandırma və kiçik funksiyalar
- Oxunaqlı şərtlər
Laboratoriya: Dövrlə dolu kodu oxunaqlığa kömək etdiyi yerdə stream ilə yenidən yazın və bir uzun metodu kiçik adlı metodlara bölün.
Tapşırıq: Domeninizdə stream ilə hesabat funksiyası (məsələn, müştəri üzrə cəmlər) və oxunaqlıq üzrə özünü-review.
Həftə 9
Testing, Maven və concurrency əsasları
- JUnit 5 və AssertJ ilə unit testlər
- Maven build və asılılıqlar (Gradle-ın fərqi)
- Test dizaynı: arrange, act, assert
- Thread-lər və ExecutorService
- Paylaşılan vəziyyət niyə çətindir
Laboratoriya: Domen layihəsini Maven-ə keçirin, əsas qaydalar üçün unit testlər yazın və ExecutorService ilə kiçik tapşırıq işə salın.
Tapşırıq: Domenin testlərini mənalı davranış üzrə artırın, race condition nümayiş etdirin və onu aradan qaldırmağın bir yolunu göstərin.
Yoxlama nöqtəsi: Testlənmiş domen kitabxanası (məsələn, kitabxana və ya sifariş domeni), code review və dizayn qərarlarının qısa müdafiəsi.
03 · 10–12-cü həftələr
Verilənlər
Mərhələnin məqsədi: Relyasiya modelini dizayn etmək, ondan sorğu yazmaq və Java-dan istifadə etmək.
Həftə 10
PostgreSQL ilə SQL əsasları
- Docker-də PostgreSQL
- SELECT və filtrləmə
- Join-lər
- Aqreqasiya və qruplaşdırma
Laboratoriya: PostgreSQL-i Docker-də işə salın, kiçik nümunə verilənləri yükləyin və biznes suallarına sorğularla cavab verin.
Tapşırıq: Verilmiş sxem üzərində SQL sorğuları toplusu, hər birinin bir sətirlik izahı ilə, Pull Request kimi təhvil verilir.
Həftə 11
Verilənlərin modelləşdirilməsi və transaction-lar
- Primary və foreign key-lər
- Normallaşdırma
- Constraint-lər
- İlk index-lər və sorğu planını oxumaq
- Transaction və ACID
Laboratoriya: Sifariş domeni üçün sxem dizayn edin, constraint və index əlavə edin, sorğu planını əvvəl və sonra müqayisə edin.
Tapşırıq: Öz kiçik domeniniz üçün ER diaqramı və SQL sxemi, həmçinin hansı constraint-in hansı qaydanı qoruduğu barədə qeyd.
Həftə 12
JDBC-dən JPA/Hibernate-ə
- JDBC əsasları
- Entity-lər və əlaqələr
- Repository-lər
- N+1 problemi
- Flyway migration-ları
Laboratoriya: Əvvəlcə sadə JDBC ilə məlumat oxuyun, sonra JPA ilə map edin, N+1 sorğusunu yaradın və düzəldin.
Tapşırıq: Domeninizi JPA və Flyway migration-ları ilə saxlayın; migration skriptləri daxil olmaqla Pull Request kimi təhvil verin.
Yoxlama nöqtəsi: Verilənlər modelinin review-su: ER diaqramı, migration-lar və izah olunmuş sorğular.
04 · 13–17-cü həftələr
Spring və REST API
Mərhələnin məqsədi: Qorunan, validasiya olunan və testlənmiş REST API qurmaq.
Həftə 13
Spring Core
- Inversion of Control
- Dependency injection və bean-lər
- Konfiqurasiya və properties
- Profile-lar
Laboratoriya: Kiçik servisi əl ilə bağlayın, sonra Spring-ə bağlatdırın və iki profile arasında davranışı dəyişin.
Tapşırıq: Konfiqurasiya olunan komponent (məsələn, mühitə görə parametrləri dəyişən qiymət kalkulyatoru), Pull Request kimi təhvil verilir.
Həftə 14
Spring Boot REST
- Controller-lər və DTO-lar
- HTTP metodları və semantika
- Resurs dizaynı və status kodları
- Pagination və filtrləmə
- HTTP client ilə işləmək
Laboratoriya: Domeninizi yaratma, oxuma, yeniləmə və silmə əməliyyatları ilə REST API kimi açın və HTTP client ilə yoxlayın.
Tapşırıq: Bir resurs üçün düzgün status kodları və pagination ilə endpoint-ləri dizayn edin və yazın, qısa API dizayn qeydi ilə.
Həftə 15
Validasiya, xətalar və service qatı
- Bean Validation
- Ardıcıl xəta cavabları (Problem Details)
- Service qatı
- @Transactional və onun sərhədləri
Laboratoriya: Validasiya və Problem Details qaytaran qlobal exception handler əlavə edin, biznes qaydalarını service-ə köçürün.
Tapşırıq: API yanlış girişi ardıcıl şəkildə rədd etsin və hər biznes əməliyyatı bir transaction-da qalsın; Pull Request kimi təhvil verin.
Həftə 16
Spring Security
- Authentication və authorization
- Parolun hash-lənməsi
- Rollar və qorunan endpoint-lər
- Session və JWT (əsas səviyyə)
- Qarşısı alınmalı tipik səhvlər
Laboratoriya: Qeydiyyat və giriş əlavə edin, parolları hash-ləyin və endpoint-ləri rola görə qoruyun.
Tapşırıq: API-ni elə qoruyun ki, istifadəçilər yalnız icazəsi olanı görsün, və dizaynın nəyi əhatə etmədiyini göstərən qısa təhlükə qeydi əlavə edin.
Həftə 17
Spring tətbiqlərinin testi və API sənədləşməsi
- Slice testlər
- Testcontainers ilə integration testlər
- Uyğun yerdə Mockito ilə mock
- OpenAPI sənədləşməsi
Laboratoriya: Controller slice testi və Testcontainers-də PostgreSQL ilə repository integration testi yazın, OpenAPI sənədini yaradın.
Tapşırıq: API-nin əsas axınlarını testlərlə əhatə edin və OpenAPI təsvirini dərc edin; Pull Request kimi təhvil verin.
Yoxlama nöqtəsi: Pull Request-lər kimi review olunmuş və müdafiə edilmiş qorunan REST API.
05 · 18–21-cü həftələr
Çatdırılma və sistemlər
Mərhələnin məqsədi: Servisi komandanın etdiyi kimi işə salmaq və sistemlərin növbəti qatını anlamaq.
Həftə 18
Docker və konfiqurasiya
- Image və container-lər
- API üçün Dockerfile
- API və verilənlər bazası üçün docker compose
- Konfiqurasiya və secret əsasları
Laboratoriya: API-ni container-ə salın və docker compose ilə PostgreSQL ilə birlikdə işə salın, konfiqurasiyanı mühitdən alın.
Tapşırıq: Təkrarlana bilən lokal mühit: bir əmrlə API və verilənlər bazası qalxır, README-də sənədləşdirilib, Pull Request kimi təhvil verilir.
Həftə 19
CI/CD və müşahidəlilik əsasları
- Build, test və paketləmə edən pipeline
- GitHub Actions
- Strukturlu log-lar
- Actuator ilə health check və metrikalar
- Problemi tapmaq üçün log oxumaq
Laboratoriya: Layihəni build və test edən, image yaradan GitHub Actions workflow-u yazın, health və metrika endpoint-lərini açın.
Tapşırıq: Layihəyə pipeline və Actuator endpoint-lərini əlavə edin və qəsdən pozulmuş build-i düzəldin; Pull Request kimi təhvil verin.
Həftə 20
Redis, messaging və Kafka əsasları
- Redis və TTL ilə caching
- Nəyi cache etməmək
- Asinxron messaging niyə lazımdır
- Kafka topic-ləri, producer və consumer
- Hər alət üçün bir praktik məşq
Laboratoriya: Çox oxunan bir endpoint-i Redis-də cache edin, sonra lokal Kafka-ya event göndərin və ikinci kiçik tətbiqdə qəbul edin.
Tapşırıq: Caching və messaging-in layihənizdə harada kömək edəcəyi və harada etməyəcəyi barədə qısa yazı və işləyən məşqlər.
Həftə 21
Mikroservislər və cloud əsasları
- Servis sərhədləri
- Sistemi nə vaxt bölməmək
- Region-lar və idarə olunan verilənlər bazaları
- Cloud-da container işə salmaq
Laboratoriya: Layihənizin necə bölünə biləcəyini çəkin, bölünməməsinin əleyhinə arqument yazın və container-in cloud mühitində işə salınmasını addım-addım keçin.
Tapşırıq: Layihəniz üçün vahid tətbiqi və bölünmüş dizaynı müqayisə edən, tövsiyəniz olan bir səhifəlik arxitektura qeydi.
Yoxlama nöqtəsi: İşləyən sistemin demosu (API, verilənlər bazası, container və pipeline) və qısa izah.
06 · 22–24-cü həftələr
Yekun layihə və karyera
Mərhələnin məqsədi: Tam backend layihəni təhvil vermək, müdafiə etmək və müsahibəyə hazırlaşmaq.
Həftə 22
Yekun layihənin planlaşdırılması və ilk artımlar
- Tələblər
- Domen modeli
- API dizaynı
- Qərar qeydləri (ADR)
- Pull Request-lərlə qurmaq
Laboratoriya: Yekun layihə üçün tələbləri, domen modelini və API cizgisini yazın, əsas qərarları ADR kimi qeyd edin və ilk Pull Request-ləri açın.
Tapşırıq: Planlaşdırılmış və review olunmuş yekun layihə backlog-u və merge edilmiş ilk işləyən vertical slice.
Həftə 23
Yekun layihənin qurulması, review və müsahibəyə hazırlıq
- Pull Request-lərlə qurmaq və review
- Java, SQL və Spring müsahibə sualları
- Öz layihənizi izah etmək
- Həmkarın kodunu review etmək
Laboratoriya: Əsas funksiyaları testlər və pipeline ilə tamamlayın və bir dizayn qərarını səsli izah etməyi məşq edin.
Tapşırıq: README, testlər və pipeline-ı olan stabil yekun layihə branch-i və texniki suallar toplusuna yazılı cavablar.
Həftə 24
Yekun praktik qiymətləndirmə
- Yekun layihənin müdafiəsi
- Canlı code review tapşırığı
- Müsahibə simulyasiyası
- Şəxsi növbəti addım planı
Laboratoriya: Yekun layihəni təqdim və nümayiş edin, tanış olmayan kodu canlı review edin və nümunə texniki müsahibədə iştirak edin.
Tapşırıq: Qiymətləndirmə rəyinə əsaslanan şəxsi növbəti addım planı: güclü tərəflər, boşluqlar və növbəti məşq istiqaməti.
Yoxlama nöqtəsi: Yekun praktik qiymətləndirmə.
Öyrənmə necə qiymətləndirilir
- Hər həftə Pull Request review-su: adlandırma, struktur, testlər və dizayn üzrə yazılı rəy.
- Hər mərhələnin sonunda qərarlarınızın qısa müdafiəsi ilə checkpoint.
- Əzbərləmə yox, praktik tapşırıqlar: özünüzün yazdığınız və izah edə bildiyiniz kod qiymətləndirilir.
- Yekun layihə, canlı code review və müsahibə simulyasiyasını əhatə edən yekun praktik qiymətləndirmə.
- Rəy növbəti addımlar üçün tövsiyədir; nəticə sizin öz işinizdən və ardıcıllığınızdan asılıdır.
- Heç bir proqram işlə təminatı verə bilməz, bu proqram da vermir.
İstifadə edəcəyiniz alətlər
- JDK 21
- IntelliJ IDEA
- Git və GitHub
- Maven (Gradle icmalı ilə)
- JUnit 5
- AssertJ
- Mockito
- PostgreSQL
- Flyway
- Spring Boot 3
- Spring Security
- Testcontainers
- Docker və docker compose
- HTTP client (məsələn, Postman və ya IntelliJ HTTP Client)
- GitHub Actions
- Redis
- Kafka (lokal)
Yük
Həftəlik saatlar və cədvəl qrupla birlikdə elan olunur. Canlı dərslərdən əlavə, hər həftə müntəzəm müstəqil praktika üçün vaxt ayırın: öyrənmənin böyük hissəsi laboratoriya işləri və tapşırıqlarda baş verir.