Специализация
Python Backend Developer
Java Backend Developer
Node.js Backend Developer
Golang Backend Developer
React Frontend Developer
Выберите навыки
React
JavaScript
Git
Redux
Webpack
Сложность
1-3
4-6
7-8
9-10
Рейтинг вопросов
1
2
3
4
5
Подпишись на React Developer в телеграм
Расскажите про обработку исключений в PHP (try / catch / finally)
Исключения в PHP обрабатываются с помощью try, catch и finally. Код, который может выбросить исключение, помещается в try. В catch происходит обработка ошибки. Блок finally выполняется всегда, независимо от того, была ошибка или нет.
Можно ли переопределить методы final class?
Нет, методы final class нельзя переопределить. Такой класс нельзя унаследовать, а значит и изменить его методы через наследование невозможно. Это ограничение задаётся намеренно. Оно защищает поведение класса от изменений.
Что такое final class?
final class — это класс, от которого нельзя наследоваться. Он полностью закрыт для расширения. Это гарантирует, что поведение класса не будет изменено через наследование. Часто используется для инфраструктурного или критичного кода.
Что означает ключевое слово final?
Ключевое слово final используется для обозначения, что объект, переменная или метод не могут быть изменены после их инициализации. Оно может быть применено к переменным, методам и классам.
В чем разница между try-with-resources и try-catch-finally при работе с ресурсами?
try-with-resources автоматически закрывает ресурсы, такие как потоки или файлы, после завершения блока. В try-catch-finally закрытие ресурсов нужно обрабатывать вручную в блоке finally, что увеличивает объем кода и может привести к ошибкам.
Для чего используется ключевое слово final?
Если класс финализирован (final), но реализует метод протокола, какой тип диспетчеризации будет использоваться?
Как влияет ключевое слово final на диспетчеризацию?
Что такое паттерн IDisposable, как работают методы Dispose и блок Finalize?
В чем разница между методами Dispose и Finalize в C#?
Рейтинг:
2
Сложность:
7
Ключевое слово final запрещает переопределение метода, свойства или наследование от класса.
Рейтинг:
2
Сложность:
6
Даже в final классе методы, реализующие требования протокола, могут вызываться через динамическую диспетчеризацию при работе с типом протокола. Однако компилятор Swift применяет оптимизацию и в большинстве случаев заменяет такие вызовы на статические, если тип известен на этапе компиляции.
Рейтинг:
2
Сложность:
6
Объявление класса или метода как final запрещает наследование или переопределение, что позволяет компилятору использовать статическую (direct) диспетчеризацию вместо динамической. Это убирает накладные расходы виртуальных вызовов и ускоряет исполнение.
Рейтинг:
2
Сложность:
6
IDisposable реализуют классы, владеющие неуправляемыми ресурсами (файлы, сокеты). Метод Dispose() вызывается вручную или через using для немедленного освобождения. Finalize (деструктор) запускается GC при сборке, если Dispose не был вызван, но не гарантирует время выполнения. Реализация часто сочетает оба: в finalizer’е вызывают Dispose(false), а в Dispose() — GC.SuppressFinalize(this).
Рейтинг:
1
Сложность:
5
Метод Dispose используется для явного освобождения ресурсов, которые не управляются сборщиком мусора, и должен быть вызван пользователем. Метод Finalize вызывается сборщиком мусора автоматически перед уничтожением объекта и используется для освобождения ресурсов, которые не были освобождены явно.
Рейтинг:
5
Сложность:
6
Рейтинг:
5
Сложность:
3
Рейтинг:
4
Сложность:
4
Рейтинг:
2
Сложность:
6
Рейтинг:
2
Сложность:
6