Tópicos de Estudo em Java: Iniciante ao Intermediário
Java Básico (Iniciante)
Sintaxe básica: variáveis, operadores e condicionais.
Estruturas de controle: loops (for, while, do-while).
Tipos de dados primitivos e referências.
Manipulação de Strings: `String`, `StringBuilder`, e `StringBuffer`.
Arrays e matrizes multidimensionais.
Métodos: declaração, parâmetros, retorno.
Introdução ao Java Collections Framework: `ArrayList`, `LinkedList`, `HashSet`.
Introdução à Orientação a Objetos (OOP): classes, objetos, métodos.
Java Intermediário
Herança: superclasses, subclasses, e sobrescrita de métodos.
Polimorfismo: conceito e exemplos práticos.
Encapsulamento e modificadores de acesso (`public`, `private`, `protected`).
Abstração: classes abstratas e interfaces.
Tratamento de exceções: `try-catch`, `finally`, e `throws`.
Enumerações (Enums) e seus usos práticos.
Generics: uso com coleções e métodos.
Coleções avançadas: `HashMap`, `TreeMap`, `LinkedHashMap`, `PriorityQueue`.
Streams e Lambda Expressions (Java 8+).
Java I/O: leitura e escrita de arquivos com `BufferedReader`, `BufferedWriter`, e `Files`.
Multithreading e Concorrência
Conceitos básicos de threads e paralelismo.
Criação de threads: implementando `Runnable` e estendendo `Thread`.
Sincronização de blocos e métodos.
Classes de utilitários em concorrência: `ExecutorService`, `Future`.
Locks explícitos com `ReentrantLock`.
Coleções concorrentes: `ConcurrentHashMap`, `CopyOnWriteArrayList`.
Introdução às APIs de Parallel Streams.
Frameworks e Spring
Spring Core: introdução ao Spring e conceitos básicos de Inversão de Controle (IoC).
Spring Boot: configuração automática e criação de projetos simples.
Anotações Spring: `@Component`, `@Autowired`, `@Configuration`.
Criação de APIs REST com Spring Boot: `@RestController`, `@GetMapping`,
`@PostMapping`.
Spring Data JPA: introdução ao ORM e bancos de dados relacionais.
Configuração de aplicações com arquivos `[Link]`.
Spring Security: autenticação e autorização básicas.
Spring Testing: criação de testes unitários e de integração com Spring.
Boas Práticas e Padrões de Projeto
Uso de design patterns: Singleton, Factory, Builder.
Princípios SOLID em Java.
Refatoração de código para melhorar legibilidade e performance.
Gerenciamento de dependências com Maven e Gradle.
Criação de logs com SLF4J e Logback.
Testes unitários com JUnit 5 e Mockito.