gb-java-devel/j-spec.tex

136 lines
7.7 KiB
TeX
Raw Normal View History

2022-08-12 23:32:35 +03:00
\immediate\write18{texcount -sum -1 prog-draft.tex > /tmp/wordcount.tex}
\documentclass[12pt, a4paper]{report}
\usepackage[english,russian]{babel} % локализация и переносы
\usepackage{fancyhdr}
\usepackage{graphicx}
\usepackage{titlesec}
\usepackage{tikz}
\usepackage{indentfirst}
\usepackage{datetime2}
\usepackage{geometry}
\usepackage{enumitem}
\usepackage{multicol}
\usepackage{float}
\usepackage{fontawesome}
\usepackage{longtable}
\usepackage{tikz}
\usepackage{hyperref}
\usetikzlibrary{mindmap,trees}
\titlelabel{\thetitle. \quad}
\babelfont{rm}{PT Astra Serif}
\babelfont{sf}{PT Astra Serif}
\babelfont{tt}{PT Mono}
\graphicspath{{./pics/}}
\newcommand{\wordcount}{\input{/tmp/wordcount.tex}}
\newcommand{\code}[1]{\small{\texttt{\detokenize{#1}}}\normalsize}
\renewcommand\labelitemi{\textemdash}
\newenvironment{frm}
{ \begin{center} \begin{tabular}{|p{0.9\textwidth}|} \hline\\ }
{ \\\\\hline \end{tabular} \end{center} }
\fancypagestyle{plain}{
\setlength{\headheight}{33pt}
\fancyhf{}
\lhead{\includegraphics[height=5mm]{logo.png}}
\rhead{И.И. Овчинников \\ \href{https://t.me/ivanigorevichfeed}{Telegram: ivanigorevichfeed}}
\chead{\thepage}
\cfoot{\faRocket}
\rfoot{Всего слов: \wordcount}
}
\geometry{
left=2cm,
right=1cm,
top=2cm,
bottom=2cm
}
\title{ТЗ на "Специализацию Java"}
\author{Иван Игоревич Овчинников}
\date{\today{} (\DTMcurrenttime)}
\setlist{nolistsep}
\setlist[itemize]{leftmargin=10mm}
\setlist[enumerate]{leftmargin=10mm}
\usepackage{subfiles}
\begin{document}
\maketitle
\tableofcontents
\chapter{Java Core}
\section{Платформа: история и окружение}
Краткая история (причины возникновения); JDK, JRE, JVM, выбор версии; CLI: сборка, множественные источники, пакеты, запуск; структура проекта: пакеты, классы, метод main, комментарии, документирование;
\subsection{Задания к семинару}
\begin{itemize}
\item [C-1] Скомпилировать проект из трёх классов, находящихся в двух пакетах, а также создать для этого проекта стандартную веб-страницу с документацией
\end{itemize}
\section{Управление проектом: сборщики проектов}
Управление проектом: Jar-файлы; Gradle/Maven: зависимости, выгрузка артефакта, публичные репозитории, свойства проекта, приватные репозитории (хостинг); Bazel
\subsection{Задания к семинару}
\begin{itemize}
\item [C-2] Создать загружаемый артефакт с функцией суммирования двух чисел и загрузить его в локальный кэш артефактов;
\end{itemize}
\section{Специализация: данные и функции}
Базовые функции языка: математические операторы, условия, циклы, бинарные операторы; Данные: типы, преобразование типов, константы и переменные (примитивные, ссылочные), бинарное представление, массивы (ссылочная природа массивов, индексация, манипуляция данными); Функции: параметры, возвращаемые значения, перегрузка функций;
\subsection{Задания к семинару}
\begin{itemize}
\item [C-3] Написать как можно больше вариантов функции инвертирования массива единиц и нулей за 15 минут (без ветвлений любого рода);
\item [C-3] Сравнить без условий две даты, представленные в виде трёх чисел гггг-мм-дд;
\end{itemize}
\section{Специализация: ООП}
Инкапсуляция: Классы и объекты (внутренние классы, вложенные классы, static, private/public, final, интерфейс взаимодействия с объектом), перечисления (создание, конструкторы перечислений, объекты перечислений, дополнительные свойства); Наследование: extends, Object (глобальное наследование), protected, преобразование типов, final; Полиморфизм: override, abstract, final;
\subfile{scenarios/jc-4}
\section{Специализация: Тонкости работы}
Файловая система и представление данных; Пакеты \code{java.io}, \code{java.nio}, \code{String}, \code{StringBuilder}, string pool, ?JSON/XML?
\chapter{Java Development Kit}
\section{Исключения}
Механизм и понятие, введение в \textbf{многопоточность}, throw; Наследование и полиморфизм в исключениях; Способы обработки исключений (try/catch, throws, finally); try-with-resources, штатные и нештатные ситуации
\section{Интерфейсы}
Понятие и принцип работы, implements; Наследование и множественное наследование интерфейсов; Значения по-умолчанию
\section{Обобщённое программирование}
\section{Коллекции}
List, Set; Хэш-код, интерфейс Comparable; Map, Object (Использование методов, Переопределение методов); Итераторы, \textbf{Многопоточные} коллекции
\section{Многопоточность}
Понятие, Принцип (реальная и псевдопараллельность); Runnable, Thread (Свойства, Особенности создания); Deadlock, Состояние гонки, Object (Ожидание/уведомление); Синхронизация (Синхронизация по монитору, Частичная, по классу)
\section{Графический интерфейс пользователя}
GUI (Swing): Окна и свойства окон, \textbf{Многопоточность} и абстргирование асинхронных вызовов; менеджеры размещений и проведение параллелей с веб-фреймворками, разделение на фронт-энд и бэк-энд; JPanel и рисование, Обработка действий пользователя
\chapter{Java Junior}
\section{JDBC}
\section{Сетевое программирование}
Socket, ServerSocket, Многопоточность, абстрагирование сетевого взаимодействия, интерфейсы
\section{Введение в архитектуры приложений на Java}
клиент-серверы, веб-приложения, сервлеты, толстые и тонкие клиенты, выделение бизнес-логики и хранения, создание общих пространств и модульность проекта
\section{Сериализация, StreamAPI, ReflectionAPI}
\section{Введение в Java EE}
\section{Введение в Spring framework}
\chapter{Java Junior+}
\end{document}