136 lines
7.7 KiB
TeX
136 lines
7.7 KiB
TeX
\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}
|
||
|