Mediumfinalfinally
Что такое final, finally и finalize?
1Постановка
Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.
2Решение
final — модификатор (переменная/поле — одно присваивание, метод — нельзя переопределить, класс — нельзя наследовать). finally — блок после try/catch, выполняется всегда (для очистки ресурсов). finalize() — метод Object, вызывался GC перед уничтожением (deprecated с Java 9, удалён в Java 18).
public final class Config { // final класс — нельзя наследовать
private final int timeout; // final поле — immutable
public Config(int timeout) {
this.timeout = timeout;
}
public final void reload() { /* final метод — без override */ }
}- Ресурсы освобождать через try-with-resources (AutoCloseable), не
finalize; - JIT лучше оптимизирует
finalполя (immutable, safe publication); - final классы: String, Integer, все wrapper'ы.
3Как отвечать
- Сначала уточните условия и ограничения, покажите аналитическое мышление.
- Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
- Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡
На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.