Структурированный список ресурсов для изучения Java, который поможет систематизировать занятия. Основан на личном опыте и самостоятельном изучении данной области.
- JAVA CORE
- ALGORYTHMS & DATA STRUCTURES
- SQL & JDBC
- HTTP & SERVLETS
- MAVEN & GRADLE
- SPRING
- JPA & HIBERNATE
- TESTING
- Дополнительный материал
Это целый ряд тем. Оновные: ООП в Java, Ветвление, Циклы, Массивы, Исключения, Коллекции, Внутренние классы, Ввод-вывод, Многопоточность, Stream API, и еще разный ряд базовых принципов для использование всего, например основные классы Java (Object) и тд.
🔶 Java Core детали от Головача
🔸 Книги. Покрывают все особенности языка: Философия Java Брюс.Экк, Java Полное руководство Г.Шилдт.
🔸 Книги. Для укрепления знаний и как их использовать должным образом: Java Эффективное программирование Д.Блох, Чистый код Р.Мартин.
🔺 Для закрепления темы можно потренироваться решая задачи: CodingBat, Практические задачи по Java, 1000 задач на Java, Codewars.
🔷 Можно еще покрыть пробелы в знаниях через конкретные лекции Головача:
Java Core Процедурное программирование(детали основ), итерация, рекурсия, динамические структуры данных, память в Java:
(Итерация) Java Core December: Procedural Java. Лекция #1 №3
(Итерация) Java Core December: Procedural Java. Лекция #2 №4
(Рекурсия) Java Core December: Procedural Java. Лекция #3 №5
(Динамические структуры данных) Java Core December: Procedural Java. Лекция #4 №6
(Память в Java) Java Core December: Procedural Java. Лекция #5 №7
Исключения в Java, механика работы исключений, throws + checked/unchecked, иерархия исключений, классификация исключений, "устройство": message, cause, custom fields, сцепленные исключения, стратегии обработки ошибок, try-with-resources (+ suppressed exceptions), multi-catch (+ more precise rethrow):
(Основы иключения) Java Core December: Exceptions. Лекция #6 №1
(try-with-resources, иерархия) Java Core December: Exceptions. Лекция #7 №2
(checked/unchecked, иерархия) Java Core December: Exceptions. Лекция #8 №3
Java I/O, byte-ориентированные потоки, char-ориентированные потоки, java-type-ориентированные потоки(классы-адаптеры, классы-декораторы, работа с файловой системой, сериализация и клонирование)
Java Collection API (big-O notation, Java generics, Iterable / Iterator, Collection API (general), List/ArrayList/LinkedList, Set/List/Map/SortedSet/SortedMap, HashSet/HashMap/hashCode()/equals(), TreeSet/TreeMap/Comparable/Comparator, Collection API (detailed)):
(дженерикс) Java Core December:Collections API. Лекция #14 №2
Продолжение Java IO, Стримы, адаптер/декоратор, клонирование, файловая система:
Продолжение Java Collection:
(нотации О, equals list, сд хеш сет, мап и тд.) Java Core December: Collections. Лекция #16 №3
(хеш сет и хеш мап, структуры данных) Java Core December: Collections. Лекция #17 №4
Многопоточность(введение, Thread/Runnable run(), start(), join(), currentThread(), Модель памяти джавы, монитор, synchronized и многое другое, прерывание потока):
Объектно-ориентированная Java(конструирование объекта, методы класса Object, перегрузка метода (overload), переопределение метода (overriding), и тд):
(конструирование объекта) Java Core December: OOP. Лекция#21 №1
(singleton,enom,multiton) Java Core December: OOP. Лекция#24 №4
🔹 Ролики на Youtube которые могут помочь:
Нужно уметь применять наиболее эффективные способы решения некоторых задач, а для этого стоит быть в курсе базовых алгоритмов и структур данных: Algorythms(Различные сортировки, поиск значений, поиск кратчайшего пути и тд.), Data Structures(Списки, Очереди, Мапы, Деревья, Графы и прочее).
🔶 Книги: Грокаем алгоритмы Б.Адитья, Алгоритмы. Руководство по разработке. 2-е издание С.Скиена, Структуры данных и алгоритмы Java Р.Лафоре, Алгоритмы. Построение и анализ.
🔶 Практика:
- вариант 1: заходим на сайт LeetCode -> в разделе Explore заходим в лист Top Interview Questions (Easy / Medium / Hard) -> берем задание -> смотрим теги задачи(Related Topics) -> берем книгу и читаем нужную тему.
- вариант 2: читаем книгу -> узнаем новый алгоритм или структуру данных -> пытаемся написать код который делает тоже самое(сортировки, списки, очереди, поиск в ширину).
- вариант 3: решаем задачки по теме на Codewars или HackerRank.
🔹 Ролики на Youtube которые могут помочь:
🔶 Базы данных SQL | Основы SQL
🔶 Практика: Чтобы потренироватся, нужно взять пару задач на sql и написать прогу на джава которая будет входить в вашу собственную бд и выполнять там нужные запросы.
🔶 Практика: По прохождению курса что выше мы напишем простой сайт, просто стоит повторить написанное за автором. Затем можно добавить свои собственные сервлеты с дополнительной логикой. Также можно добавить свою базу данных, чтобы потренироваться в SQL & JDBC.
🔹 Ролики на Youtube которые могут помочь:
🔶 Гайд от принга по мавен и градл
Содержит множество компонентов для работы с разнообразными задачами. Spring MVC(для разработки веб-приложений), Spring Data(для работы с бд), Spring Security(для обеспечения безопасности приложений) и тд. Нужно разобраться с базовыми принципами работы с спринг, на чем все строится. Spring Basics(IoC Container, Spring Beans, Bean Configuration, Bean Wiring и тд).
🔶 Гайд от алишева Spring Core, MVC
🔶 Гайд на канале letsCode Spring Boot MVC
🔶 Гайд на канале letsCode Spring Boot Rest
🔶 Гайд на канале letsCode Spring Boot + Webix
🔶 Практика: Написать веб приложение вместе с letsCode / alishev и добавить туда свою логику.
Спецификация, описывающая, как удобно представлять данные из бд в виде Java объектов. Спецификация не является фреймворком. Она только показывает, что должен уметь реальный фреймворк. А вот фреймворк уже реализует спецификацию. т.е. реальная работа происходит как раз в нем. Hibernate(фреймворк, реализующий спецификацию jpf), ORM(общее понятие для представления данных из бд в виде java объектов, тогда каждая строка таблицы становится java объектом).
- поискать курсы на эту тему
Позволяет убедиться, что вы не допустили ошибку при написании программы. Это как бы набор маленьких программ на Java, которые проверяют правильность вашей основной программы. Также гарантируют, что будущие изменения кода программы не затронут старую логику. Таким образом вы всегда будете уверены, что ничего не сломали. Это серьезно ускоряет разработку, т.к. вам не приходится каждый раз проверять потенциальные баги. Junit(Java фреймворк для написания тестов самых разных видов), Integration(прекрасно работает в паре с другими фреймворками, например Spring).
- Стоит просто разобратся какие бывают виды тестов на джава, как их писать на Junit, что такое моки и тд.
🔶 Habr Инструменты тестирования Java
🔶 Habr Тестирование в Java. JUnit
🔷 Пробелы в знаниях SQL & JDBC | HTTP & SERVLETS | MAVEN & GRADLE | SPRING | JPA & HIBERNATE | TESTING можно покрыть через следующие лекции от Головача:
Обзор Java EE / Обзор Java 8:
Протокол TCP/IP, протокол HTTP (детально) / многопоточная архитектура HTTP-сервера:
Servlet API (детально) / Spring MVC:
Spring / Maven (детально) / Log4j (детально):
Test Driven Development: JUnit, Mockito (детально):
SQL / JDBC, connection pool (детально) / JPA 2/Hibernate:
OOD(SOLID)
GOF(Шаблоны ООП):
JSF(JavaServer Faces):
WebSockets:
Apache Maven:
Log4J:
JPA 2/Hibernate:
- ООП
- Object (знать методы этого класса)
- Exception (логирование, ловля их, обработка в логи)
- Collections (больше всего спрашивают, надо очень подробно знать)
- Generics (как применять, как он работает).
- Concurrency (базовые знания) (монитор, лог, светофор, как работает многопоточность, как создавать тред)
- GC (как он чистит мусор, как он работает, можно ли его заставить или нет) (9Урок49:20)
- JDBC (mybatis / hibernate) (как создавать коннект, как создавать пул, работать с бд)
- Maven (меньше всего спрашивают) (как он устроен и как им пользоватся)
- Lamda (как она работает, как оно устроено, черный ящик)
- Stream (как работает)
- String (и память) (Часто спрашивают!) (работа с памятю, как он копирует, и многое другое)
- SQL (лучше postgre) Надо знать основы, не более! (главное понять как с ним работать)
- SOLID (как правильно программировать, понятия ООП, интерфейсы и тд.)
- Уровни изоляции транзакций sql (isolation levels) (грязно чтение, понимание что будет происходить на уровне бд если человек читает эту запись, а другой изменяет какие то данные, какие данные будут у них видны)
- Тестирование (хотя бы понимание как это делать и зачем). (создать мини метод, сделать на него тест, на истину/ложь и на ошибку)
- Паттерны (хватит поверхностных знаний) (минимальные знания, рассказать что они из себя представляют, знать самые базовые и популярные, сингл тон, прокси)
- Spring (базовые знания)
- Git (хватит базы, уметь использовать на практике)
- Подготовка к собеседоваию: частые вопросы
- Как найти первую работу в it: Немчинский, что делать после завершения обучения
- Резюме на английском: Немчинский, как писать резюме | GitHub как резюме программиста
- Тестовые собеседования: плейлист Жени
- Разное:
- Е.Книга "Архитектура Современных Веб-Приложений"
- Краткие гайды от Жени
- Телеграм канал с книгами , здесь можно по тегу it найти следующие книги:
- Java. Полное руководство 10-е изданание. Г.Шилдт
- Java. Эффективное программирование
- Алгоритмы на Java
- Грокаем алгоритмы
- Если у тебя все совсем плохо - лекции CS50
- Годный плагин для Идеи, он заставляет тебя придерживаться чистому стилю письма
- Интересные yt каналы:
- Интересные статьи:
- Интересные ролики: