Общие вопросы
Смешанные вопросы по Java.
Открыть разделБаза Hintsage
Язык Java, JVM и экосистема серверной разработки.
Темы раздела
Смешанные вопросы по Java.
Открыть разделБазовая семантика языка, типы, методы, классы и ключевые конструкции.
Открыть разделНаследование, полиморфизм, интерфейсы, классы и разрешение методов.
Открыть разделJava Collections Framework, контракты, реализации и сложность операций.
Открыть разделJava Memory Model, потоки, синхронизация и java.util.concurrent.
Открыть разделЗагрузка классов, память JVM, GC, JIT и диагностика.
Открыть разделПараметризация типов, bounds, wildcards и стирание типов.
Открыть разделФункциональные интерфейсы, streams, collectors и параллельная обработка.
Открыть разделИерархия исключений, обработка ошибок и управление ресурсами.
Открыть разделПрактика
Сравните параметр типа с верхней границей и wildcard с верхней границей: какой вариант сохраняет в результате метода конкретный тип аргумента?
В практической ситуации параллельный стрим добавляет элементы во внешний ArrayList через forEach. Какой механизм делает результат ненадёжным?
При параллельном сборе один и тот же Collector получает несколько частичных контейнеров: чем определяется их корректное объединение?
Объясните механизм, из-за которого промежуточная операция Stream не обрабатывает элементы сразу после своего вызова.
Разберите последствия выполнения метода: какое исключение попадёт в catch и где окажется ошибка закрытия ресурса?
class Demo {
static class R implements AutoCloseable {
void use() { throw new IllegalStateException("body"); }
@Override public void close() {
throw new IllegalArgumentException("close");
}
}
public static void main(String[] args) {
try (R r = new R()) {
r.use();
} catch (Exception e) {
System.out.println(e.getClass().getSimpleName());
System.out.println(e.getSuppressed().length);
}
}
}
Объясните, почему обработчик общего типа исключения нельзя ставить перед обработчиком его подкласса.
Разберите последствия: какое исключение увидит вызывающий код, если тело try выбросило исключение, а блок finally завершился другим исключением?
Разберите обращение к статическому полю через null-ссылку: возникнет ли исключение при таком доступе?
Объясните механизм: почему объявление ссылочной переменной как final не делает объект неизменяемым?
К каким последствиям приводит вызов переопределяемого метода из конструктора Java-класса?
Сравнение двух объектов Integer через ==: когда результат может зависеть от значения числа?
Практическая ситуация: переменная объявлена типом родителя, но ссылается на объект потомка с переопределённым экземплярным методом. Реализацию какого класса выберет Java при вызове?
Как ведёт себя Java при выполнении return из блока try, если блок finally завершает метод собственным return?
Рассмотрите ситуацию: при вызове метода с параметром примитивного типа ему передают null через ссылку-оболочку. На каком этапе и почему возникает ошибка?
Из-за чего добавление нового проверяемого исключения в сигнатуру переопределяемого метода может нарушить компиляцию реализации потомка?
Практическая ситуация: определите, какое исключение увидит вызывающий код после выполнения метода run.
class Demo {
static class Resource implements AutoCloseable {
@Override
public void close() {
throw new IllegalStateException("close");
}
}
static void run() {
try (Resource resource = new Resource()) {
throw new IllegalArgumentException("body");
}
}
}
Как Java выбирает поле при обращении через переменную типа родителя, если потомок объявил поле с тем же именем?
Практическая ситуация: класс реализует два интерфейса с одноимёнными default-методами. Как Java разрешает конфликт?
Что произойдёт в Java, если обработчик общего типа исключения объявлен перед обработчиком его подкласса?
Практическая ситуация: класс-потомок объявил статический метод с тем же именем, что у родителя. Какую реализацию выберет Java при обращении через переменную типа родителя?
Показано 21–40 из 403