Wpis z mikrobloga

#programowanie #programista15k #pracait #kryzysit

@rolling_stone_with_no_hope AI mi kiedyś wygenerowało sensowny plan powtórki pod rekrutacje na senior java developera.

8-10 godzin nauki dziennie od poniedziałku do piątku przez 3 miesiące i możesz śmiało słać CV ( ͡°( ͡° ͜ʖ( ͡° ͜ʖ ͡°)ʖ ͡°) ͡°)

1. Zaawansowane zagadnienia Java

Mechanizmy JVM: understand, heap vs stack, garbage collection (G1, ZGC, porównanie), JIT
Java 9-21: moduły, var, switch expressions, text blocks, record, sealed classes, pattern matching
Współbieżność: CompletableFuture, ExecutorService, Fork/Join, ThreadLocal, Virtual Threads (Project Loom)
Kolekcje i Stream API: zaawansowane operacje, Custom Collectors
Memory management: leak detection, heap dumps, profiling

2. Spring Framework

Spring Core: cykl życia beana, scope, AOP, transakcje
Spring Boot: auto-konfiguracja, actuator, testowanie
Spring Cloud: Service Discovery, Config Server, Circuit Breaker
Spring Security: OAuth2, JWT, implementacja niestandardowa
Spring Data: JPA, Reactive, integracja z różnymi bazami danych
Spring WebFlux: programowanie reaktywne, Mono/Flux, backpressure

3. Bazy danych i wyszukiwanie

Elasticsearch: zaawansowane zapytania, analizatory, sharding, repliki, percolator
SQL: optymalizacja zapytań, indeksy, transakcje, izolacja
NoSQL: DynamoDB, różnice między typami baz NoSQL
ACID vs BASE: kiedy stosować jakie podejście

4. AWS i Cloud Computing

Usługi AWS: szczegółowa wiedza o S3, DynamoDB, SNS, SQS, Lambda, CloudWatch
Serverless Architecture: projektowanie, ograniczenia, wzorce
Infrastructure as Code: CloudFormation, Terraform (warto znać podstawy)
AWS Well-Architected Framework: 5 filarów

5. Architektury systemów

Mikroserwisy: komunikacja, choreografia vs orkiestracja, saga pattern
Event-driven architecture: wzorce, implementacja z SNS/SQS
Domain-Driven Design: bounded contexts, agregaty, value objects
Wzorce projektowe: creational, structural, behavioral, kiedy stosować
System Design: skalowalność, wydajność, niezawodność, dostępność

6. DevOps i narzędzia

Git: zaawansowane scenariusze, git flow, trunk-based development
Docker: multi-stage builds, optymalizacja obrazów, Docker Compose
CI/CD: branching strategies, pipeline jako kod, blue-green deployment
Monitorowanie: metryki, logi, tracing (np. AWS CloudWatch, ELK)

7. Algorytmy i struktury danych

Struktury danych: implementacje, złożoność operacji, zastosowanie
Algorytmy sortowania i wyszukiwania: binary search, quicksort, mergesort
Grafy i drzewa: BFS, DFS, najkrótsza ścieżka
Techniki algorytmiczne: dynamic programming, greedy algorithms, divide & conquer
LeetCode/HackerRank: regularne rozwiązywanie zadań na poziomie medium/hard

8. Przygotowanie do livecoding

Test-Driven Development: pisanie testów przed implementacją
Refactoring: techniki, identyfikacja code smells
Clean Code: SOLID, DRY, KISS, YAGNI
Pair programming: komunikacja podczas kodowania

9. Przygotowanie do rozmowy techncznej

Prezentacja projektów: przygotuj portfolio z opisem wyzwań i rozwiązań
Pytania behawioralne: przygotuj przykłady problemów i jak je rozwiązałeś
System Design: ćwicz projektowanie systemów wysokodostępnych
Soft skills: komunikacja, praca zespołowa, zarządzanie czasem

11. Podstawy informatyki i sieci komputerowych
Systemy operacyjne

Zarządzanie procesami: scheduling, context switching, deadlock prevention
Zarządzanie pamięcią: virtual memory, paging, segmentation
System plików: journaling, POSIX, permisje
Podstawy Linuxa: komendy powłoki, bash scripting, diagnostyka systemowa

Sieci komputerowe

Model OSI i TCP/IP: warstwy, odpowiedzialności, porównanie
Protokoły: HTTP/HTTPS, WebSockets, TCP vs UDP, DNS, DHCP
HTTP/2 i HTTP/3: multiplexing, server push, QUIC
REST i beyond: GraphQL, gRPC, porównanie wydajności
Load balancing: algorytmy, sticky sessions, health checks

Bezpieczeństwo

Kryptografia: symetryczna vs asymetryczna, funkcje haszujące, TLS/SSL
OWASP Top 10: SQL Injection, XSS, CSRF, zabezpieczenia
Uwierzytelnianie i autoryzacja: OAuth 2.0, OpenID Connect, JWT bezpieczeństwo
Bezpieczeństwo w Javie: SecureRandom, KeyStore, JAAS

Podstawy teoretyczne

Złożoność obliczeniowa: notacja Big O, space vs time complexity
Teoria kompilatorów: JIT w JVM, optymalizacje
Kodowanie i standardy: UTF-8, Unicode, Base64, serializacja

Infrastruktura i komunikacja

CDN: zasada działania, edge computing
DNS: rekordy, propagacja, TTL
VPN i proxy: rodzaje, zastosowania, różnice
Komunikacja w chmurze: load balancing, service mesh, API Gateway

Aplikacja Java w kontekście sieciowym

Sockets w Javie: blokujące vs nieblokujące I/O
NIO i NIO.2: asynchroniczność, Channels, Buffers
Protokoły transportowe w aplikacjach Java: implementacja klientów, long polling vs SSE vs WebSockets
Monitoring sieciowy: wireshark, tcpdump, analiza ruchu

Zagadnienia wydajnościowe

Throughput vs latency: pomiar, optymalizacja
Connection pooling: konfiguracja, monitorowanie
Timeout handling: strategie, circuit breaker
Miary wydajności sieci: bandwidth, jitter, packet loss

12. Inżynieria jakości i testowanie

Strategie testowania: piramida testów, kontrakty, testy wydajnościowe
Narzędzia testowe: JUnit 5, TestContainers, Mockito, WireMock, Selenium
Test-Driven Development/Behavior-Driven Development: Cucumber, Spock
Testy integracyjne w środowisku mikrousług: strategie, wyzwania
Mutation testing: PIT, analiza pokrycia kodu
Continuous Testing: automatyzacja, smoke tests, regression tests

13. Programowanie reaktywne i asynchroniczne

Project Reactor: Mono, Flux, operatory, debugowanie
RxJava: Observables, transformacje, backpressure
Modele concurrency w Javie: blokujący, callbacks, Future, reactive
Backpressure handling: strategie, implementacje
Reactive Stream specification: Publisher, Subscriber, Processor
Reactive programming w kontekście mikrousług

14. Performance tuning i monitorowanie

JVM tuning: flagi JVM, GC tuning, thread dumps
Memory management: finding leaks, heap dump analysis
Profiling: async-profiler, VisualVM, Flight Recorder
Strategie cachowania: local caches, distributed (Redis, Hazelcast)
Monitorowanie: Prometheus, Grafana, Micrometer, distributed tracing
Flamegraphs: interpretacja, diagnozowanie wąskich gardeł

15. Rozwój techniczny i przywództwo

Mentoring i code reviews: techniki, najlepsze praktyki
Architektural decision records (ADR): dokumentowanie decyzji
Szacowanie złożoności i czasu: techniki, zarządzanie oczekiwaniami
Komunikacja techniczna: prezentacja złożonych zagadnień nietech. odbiorcom
Managing technical debt: strategie identyfikacji i redukcji
Wdrażanie nowych technologii: proof of concept, risk assessment

16. Znajomość ekosystemu JVM poza Javą

Kotlin: interoperability, coroutines, kluczowe różnice
Groovy: dynamic features, DSL creation, testing
Scala/Clojure: paradygmaty funkcyjne, zastosowania
GraalVM: native image, polyglot applications
Zarządzanie zależnościami: Maven vs Gradle, BOM, dependency hell

17. Integracja i komunikacja

API design: REST, GraphQL, gRPC - porównanie, zastosowania
Message brokers: Kafka, RabbitMQ, integracja, wzorce
Event sourcing/CQRS: implementacja, zastosowania w Java
API Gateway: autoryzacja, rate limiting, transformacje
Contract testing: consumer-driven contracts, Pact
Idempotency: implementacja, obsługa duplikatów

18. Przygotowanie do negocjacji wynagrodzenia

Badanie rynku: źródła informacji o zarobkach, benchmarking
Kwantyfikacja osiągnięć: oszczędności, optymalizacje, wartość biznesowa
Positioning w rozmowie: specjalizacja vs generalista
Negocjacja pakietu benefitów: praca zdalna, elastyczność, rozwój
Przygotowanie do pytania o oczekiwania finansowe

Tydzień 1-2: Odświeżenie zaawansowanych zagadnień Java i Spring
Tydzień 3-4: Fokus na algorytmy i struktury danych,
Tydzień 5-6: Architektura systemów i system design
Tydzień 7-8: Podstawy informatyki i sieci komputerowych
Tydzień 9-10: Cloud/AWS i DevOps
Tydzień 11-12: Inżynieria jakości i testowanie, programowanie asynchroniczne, performance tuning i monitorowanie

Równolegle: Rob codziennie 2-3 zadania z leetcode poziom medium, ćwicz symulacje rozmów i livecoding
  • 7
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@nad__czlowiek: i to mówimy o zwykłej firmie typu body leasing, mała/średnia produktowa.

Teraz wyobraź sobie co się dzieje w FAANG i podobnych ()

Moi znajomi rekrutowali się na Mid PHP do dropboxa, live coding z jakiś algorytmów, a to dopiero 2 z 7 etapów XD
  • Odpowiedz