Структурированный список ресурсов для изучения Java, который поможет систематизировать занятия. Основан на личном опыте и самостоятельном изучении данной области.
- JAVA CORE
- ALGORYTHMS & DATA STRUCTURES
- SQL & JDBC
- HTTP & SERVLETS
- MAVEN & GRADLE
- SPRING
- JPA & HIBERNATE
- TESTING
- Дополнительный материал
Это целый ряд тем. Оновные: ООП в Java, Ветвление, Циклы, Массивы, Исключения, Коллекции, Внутренние классы, Ввод-вывод, Многопоточность, Stream API, и еще разный ряд базовых принципов для использование всего, например основные классы Java (Object) и тд.
- Java Core с нуля Link 1 | Link 2
- Java Core продвинутый Link 1 | Link 2
- Книги: Java Полное руководство Г.Шилдт | Java Эффективное программирование Д.Блох | Философия Java Брюс.Экк
- Практика: Codewars | CodingBat | Практические задачи по Java | 1000 задач на Java
Дополнительный материал
Ниже лекции от Головача которые покрывают пробелы в знаниях.
-
Java Core Процедурное программирование(детали основ), итерация, рекурсия, динамические структуры данных, память в Java:
- Additional#1.Dec2013(Сети база) №1
- Additional#2.SQL.Dec2013 №2
- (Итерация) 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 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 IO, Стримы, адаптер/декоратор, клонирование, файловая система:
-
Продолжение Java Collection:
-
Многопоточность(введение, Thread/Runnable run(), start(), join(), currentThread(), Модель памяти джавы, монитор, synchronized и многое другое, прерывание потока):
-
Объектно-ориентированная Java(конструирование объекта, методы класса Object, перегрузка метода (overload), переопределение метода (overriding), и тд):
Нужно уметь применять наиболее эффективные способы решения некоторых задач, а для этого стоит быть в курсе базовых алгоритмов и структур данных: Algorythms(Различные сортировки, поиск значений, поиск кратчайшего пути и тд.), Data Structures(Списки, Очереди, Мапы, Деревья, Графы и прочее).
- Книги. Грокаем алгоритмы Б.Адитья | Алгоритмы. Построение и анализ
- Практика:
- Вариант 1. Заходим на сайт LeetCode в разделе Explore заходим в лист Top Interview Questions (Easy / Medium / Hard) -> берем задание -> смотрим теги задачи(Related Topics) -> берем книгу и читаем нужную тему.
- вариант 2: читаем книгу -> узнаем новый алгоритм или структуру данных -> пытаемся написать код который делает тоже самое(сортировки, списки, очереди, поиск в ширину).
- вариант 3: решаем задачки по теме на Codewars или HackerRank.
Дополнительный материал
Дополнительный материал
Содержит множество компонентов для работы с разнообразными задачами. Spring MVC(для разработки веб-приложений), Spring Data(для работы с бд), Spring Security(для обеспечения безопасности приложений) и тд. Нужно разобраться с базовыми принципами работы с спринг, на чем все строится. Spring Basics(IoC Container, Spring Beans, Bean Configuration, Bean Wiring и тд).
- Статья на хабре о механике Spring Framework и MVC
- ru Руководство по Spring
- База Spring Core, MVC
- Простой пример Spring Boot app, охвачены темы: MVC, REST API, Flyway
- Spring Boot pet-p
- Spring Boot + Vue.js pet-p
- Практика. Написать веб приложение, можно взять пример с вышеупомянутых каналов LetsCode / Alishev
Так же на данном этапе будет хорошим тоном понимать правила/принципы/подходы/стили проектирования такие как: The Clean Architecture, REST, SOLID, MVC:
- Принципы Чистой Архитектуры от Дяди Боба
- Создание RESTfull API app с помощью Spring
- REST с Spring, туториалы
- SOLID принципы простым языком с примерами
Спецификация, описывающая, как удобно представлять данные из бд в виде Java объектов. Спецификация не является фреймворком. Она только показывает, что должен уметь реальный фреймворк. А вот фреймворк уже реализует спецификацию. т.е. реальная работа происходит как раз в нем. Hibernate(фреймворк, реализующий спецификацию jpf), ORM(общее понятие для представления данных из бд в виде java объектов, тогда каждая строка таблицы становится java объектом).
Позволяет убедиться, что вы не допустили ошибку при написании программы. Это как бы набор маленьких программ на Java, которые проверяют правильность вашей основной программы. Также гарантируют, что будущие изменения кода программы не затронут старую логику. Таким образом вы всегда будете уверены, что ничего не сломали. Это серьезно ускоряет разработку, т.к. вам не приходится каждый раз проверять потенциальные баги. Junit(Java фреймворк для написания тестов самых разных видов), Integration(прекрасно работает в паре с другими фреймворками, например Spring). Стоит просто разобратся какие бывают виды тестов на джава, как их писать на 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 как резюме программиста
- Тестовые собеседования: плейлист Жени
- Разное:
- Если у тебя все совсем плохо - лекции CS50
- Краткие гайды по Java
- Книга "Архитектура Современных Веб-Приложений"
- Телеграм канал с книгами , здесь можно по тегу it найти следующие книги:
- Java. Полное руководство 10-е изданание. Г.Шилдт
- Java. Эффективное программирование
- Алгоритмы на Java
- Грокаем алгоритмы
- Годные Youtube каналы:
- Статьи: