Специализация
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 в телеграм
Что такое goroutine leak и как её избежать?
Goroutine leak — это «утечка» горутины, которая продолжает работать или висеть в ожидании. Избежать можно с помощью context, таймаутов и корректного закрытия каналов.
Почему в Go можно наблюдать goroutine leak и как их диагностировать?
Goroutine leak — это ситуация, когда горутина остаётся навсегда заблокированной (например, при чтении из канала, в который никто не пишет).
Что произойдёт, если panic возникнет внутри goroutine и не будет перехвачен?
Если panic возникает внутри goroutine и не перехвачен recover, падает весь процесс. Panic в goroutine не изолирован от остальной программы.
Чем goroutine отличается от системного потока?
Goroutine — это легковесная единица выполнения, управляемая runtime Go, а не операционной системой. Она потребляет меньше памяти и создается быстрее, чем поток. Планировщик Go распределяет goroutine по системным потокам. Благодаря этому можно запускать тысячи goroutine.
Что происходит с goroutine при блокирующих операциях (каналы, mutex, I/O)?
Когда goroutine выполняет блокирующую операцию, она не блокирует поток целиком. Runtime переводит goroutine в состояние ожидания и может запустить другую goroutine на том же потоке. Когда операция завершается, goroutine возвращается в очередь выполнения. Это позволяет эффективно использовать ресурсы.
Как goroutine возвращается к выполнению после блокировки?
Какие проблемы могут возникнуть при одновременной записи в один файл из нескольких goroutine?
Какие проблемы могут возникнуть при преждевременном закрытии ресурса, который используется несколькими goroutine?
Рейтинг:
4
Сложность:
6
Когда событие, на которое ожидала goroutine, происходит, runtime переводит ее в очередь готовых к выполнению. Планировщик затем назначает ее на доступный поток. Это происходит автоматически и прозрачно для разработчика. Механизм используется для каналов, mutex и I/O.
Рейтинг:
5
Сложность:
4
При одновременной записи может возникнуть перемешивание данных, потеря части информации и повреждение файла. Запись в файл не является потокобезопасной по умолчанию. Обычно используется mutex или отдельная goroutine-писатель. Это предотвращает гонки данных.
Рейтинг:
4
Сложность:
5
Если ресурс закрыт слишком рано, другие goroutine могут получить ошибку, панику или поврежденные данные. Например, запись в закрытый канал вызывает panic. Это часто происходит из-за отсутствия координации между goroutine. Необходимо управлять временем жизни ресурса.
Рейтинг:
3
Сложность:
8
Рейтинг:
4
Сложность:
8
Рейтинг:
4
Сложность:
6
Рейтинг:
5
Сложность:
4
Рейтинг:
5
Сложность:
5