Специализация
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 в телеграм
Что такое self?
self — это ссылка на экземпляр класса, используемая внутри методов для доступа к его атрибутам и другим методам. Она передается первым аргументом в методы экземпляра.
Всегда ли в замыканиях нужно использовать [weak self]? (Нет, не всегда, только при риске цикла сильных ссылок)
Нет, использовать [weak self] нужно не всегда. Это необходимо только в ситуациях, когда существует риск создания цикла сильных ссылок. Например, когда объект (как контроллер) хранит сильную ссылку на замыкание, а это замыкание захватывает self сильной ссылкой. Если замыкание будет выполнено сразу и не сохранено, цикл не образуется.
Нужно ли использовать [weak self] внутри UIView.animate? (Нет)
Нет, использовать [weak self] внутри UIView.animate(withDuration:animations:) не нужно. Система анимаций UIKit выполняет переданное замыкание и сразу освобождает его после завершения анимации. Это не приводит к созданию цикла сильных ссылок, так как замыкание не сохраняется надолго.
Как избежать краша при асинхронных вызовах и weak self?
weak self может стать nil к моменту выполнения замыкания. Чтобы избежать краша, нужно безопасно разворачивать self через guard let или if let. Также важно не выполнять логику, если объект уже деаллоцирован. Это нормальная и ожидаемая ситуация. Код должен быть готов к такому сценарию.
Что такое self-invocation в Spring?
Self-invocation — это вызов метода бина из другого метода того же бина. Такой вызов происходит напрямую, минуя прокси Spring. В результате AOP-аннотации не применяются. Это часто приводит к тому, что @Transactional или @Async не работают. Проблема неочевидна и часто встречается на практике.
Почему self-invocation не работает с @Transactional?
Рейтинг:
5
Сложность:
7
@Transactional в Spring работает через прокси. При self-invocation метод вызывается внутри того же объекта, минуя прокси. В результате транзакция не создаётся и аннотация игнорируется. Это ограничение прокси-механизма Spring. Для корректной работы нужен вызов через прокси.
Рейтинг:
3
Сложность:
5
Рейтинг:
2
Сложность:
7
Рейтинг:
1
Сложность:
6
Рейтинг:
5
Сложность:
6
Рейтинг:
5
Сложность:
6