Зачёт дифференцированный. Будет состоять из семи домашних заданий и финального очного зачёта.
##Критерий оценки
- удовл (3-4) - четыре задачи + ответы на вопросы
- хор (5-6) - пять задач + ответы на вопросы
- хор (7) - шесть задач + ответы на вопросы
- отл (8-9) - семь задач + ответы на вопросы
- отл (10) - отл(9) + выполненные пункты со звёздочкой в заданиях
- Примитивные типы данных.
- Семантика final.
- Сборщик мусора: что это такое, зачем он в Джаве.
- this, super.
- Статические поля, методы, классы.
- Массивы, создание многомерных массивов, вложенные массивы переменной длины.
- Методы класса Object. Когда вызывается toString()? Контракт equals()/hashCode().
- extends, множественное наследование в Джаве, единый общий предок.
- Интерфейсы. Чем отличаются от абстрактных классов.
- Исключения: checked/unchecked, иерархия, try/catch/finally, try-with-resources, throw, throws.
- Атрибуты доступа: public/private/protected/package.
- Конструкторы: конструкторы по умолчанию, наследуемость конструкторов.
- Порядок инициализации объектов и вызова конструкторов базовых классов.
- Геттеры/сеттеры: что, naming convention, зачем нужны?
- Перегрузка методов, разрешение перегрузки.
- abstract vs interface, default методы.
- Приведение типов, Boxing/unboxing.
- Арифметика (+битовые операции): операции, приоритеты, сокращённые формы.
- foreach, Iterable
- Методы класса String.
- Многопоточность: synchronized-блок, synchronized-метод.
- двойная семантика volatile
- Collections.synchronizedMap() vs ConcurrentHashMap vs Hashtable
- Пакет java.io: зачем все эти классы, что использовать для ввода-вывода.
- StringBuilder vs StringBuffer vs String.concat vs + operator
- Что такое ковариантность массивов? Зачем она нужна? Есть ли ковариантность у дженерик-контейнеров?
- Дженерики, синтаксис, выведение типа.
- Лямбда-функции: синтаксис объявления, как принимать, захват имен.
- Возможности reflection.
- wait/notify, condition
- Аннотации: как объявлять и использовать, как получать в рантайме.
- Перечисления (Enum): синтаксис, реализация.
- Тестирование с помощью JUnit: модульное тестирование, api.
- ArrayList vs LinkedList: сложности различных операций
- Множества в java: LinkedHashSet, HashSet, TreeSet.
- TreeMap vs HashMap
- Сортировка списка строк в обратном лексикографическом порядке.
- Оставить из списка только уникальные элементы в исходном порядке
- Отсортировать список строк по возрастанию без учёта регистра
- Иерархия коллекций: Iterable, Collection, List, Set, Map и их реализации.
- SoftReference, WeakReference, WeakHashMap, PhantomReference
- Внутренние классы: синтаксис, реализация.
- ThreadLocal, Lock, ReadWriteLock.
- CyclicBarier, CountDownLatch
- Взаимные блокировки и как с ними бороться.
- Race condition, data race, thread starvation, live lock.
- Thread, Runnable, Callable, ExecutorService, Future: запуск и остановка потоков