gb-java-devel/j-spec.tex

175 lines
9.3 KiB
TeX
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

\immediate\write18{texcount -sum -1 j-spec.tex > /tmp/wordcount.tex}
%\immediate\write18{texcount -sum -1 scenarios/jc-1-c.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}
\setcounter{tocdepth}{1}
\babelfont{rm}{PT Astra Serif}
\babelfont{sf}{PT Astra Serif}
\babelfont{tt}{PT Mono}
\graphicspath{{./pics/}}
\newcounter{slidenum}
\setcounter{slidenum}{1} % set to 2 if want to exclude title page of presentation
\newcommand{\showslide}[1]{
\noindent\makebox[\linewidth]{\rule{.90\paperwidth}{1.4pt}}
\begin{center}
\framebox{\includegraphics[page=\arabic{slidenum},width=.95\textwidth]{#1}}
\stepcounter{slidenum}
\end{center}
}
\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
\pagestyle{plain}
\chapter{Java Core}
\section{Платформа: история и окружение}
\subsection*{Конспект лекции}
\subsubsection{Краткая история (причины возникновения)}
\begin{figure}[H]
\centering
\includegraphics[width=17cm]{jc-01-tiobe.png}
\caption{График популярности языков программирования TIOBE}
\label{pic:java-in-tiobe}
\end{figure}
\subsubsection{Базовый инструментарий, который понадобится (выбор IDE)}
\begin{itemize}
\item NetBeans - хороший, добротный инструмент с лёгким ностальгическим оттенком;
\item Eclipse - для поклонников Eclipse Foundation и швейцарских ножей с полусотней лезвий;
\item IntelliJ IDEA - стандарт де-факто, используется на курсе и в большинстве современных компаний;
\item Android Studio - если заниматься мобильной разработкой.
\end{itemize}
\subsubsection{Что нужно скачать, откуда (как выбрать вендора)}
\subsubsection{Из чего всё состоит (JDK, JRE, JVM, выбор версии)}
\subsubsection{Структура проекта (пакеты, классы, метод main, комментарии)}
\subsubsection{Отложим мышки в сторону (CLI: сборка, пакеты, запуск)}
\subsubsection{Документирование (Javadoc)}
\subsection*{Задания к семинару}
\begin{itemize}
\item Скомпилировать проект из трёх классов, находящихся в двух пакетах, а также создать для этого проекта стандартную веб-страницу с документацией
\end{itemize}
\subsection*{Сценарий лекции}
%\subfile{scenarios/jc-1-c}
\section{Управление проектом: сборщики проектов}
Управление проектом: Jar-файлы; Gradle/Maven: зависимости, выгрузка артефакта, публичные репозитории, свойства проекта, приватные репозитории (хостинг); Bazel
\subsection*{Задания к семинару}
\begin{itemize}
\item Создать загружаемый артефакт с функцией суммирования двух чисел и загрузить его в локальный кэш артефактов;
\end{itemize}
\section{Специализация: данные и функции}
Базовые функции языка: математические операторы, условия, циклы, бинарные операторы; Данные: типы, преобразование типов, константы и переменные (примитивные, ссылочные), бинарное представление, массивы (ссылочная природа массивов, индексация, манипуляция данными); Функции: параметры, возвращаемые значения, перегрузка функций;
\subsection*{Задания к семинару}
\begin{itemize}
\item Написать как можно больше вариантов функции инвертирования массива единиц и нулей за 15 минут (без ветвлений любого рода);
\item Сравнить без условий две даты, представленные в виде трёх чисел гггг-мм-дд;
\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}