Почему горутин может быть много, а потоков ОС обычно существенно меньше?
В Go количество горутин не соответствует количеству потоков операционной системы, потому что горутины — это легковесные потоки, управляемые рантаймом Go, а не ОС.
Читать ответПодготовка к интервью
41 вопрос с собеседований в IDT
Что проверяют на интервью
Подборка объединяет вопросы, отмеченные на этапах интервью в IDT. Здесь можно понять структуру технической проверки и заранее повторить связанные темы. В подборке чаще встречаются темы: microservices, backend, api.
Каталог
В Go количество горутин не соответствует количеству потоков операционной системы, потому что горутины — это легковесные потоки, управляемые рантаймом Go, а не ОС.
Читать ответНа моём последнем месте работы инфраструктура была организована следующим образом:
Читать ответДля обнаружения и диагностики утечки памяти в микросервисе на Go можно использовать следующие методы:
Читать ответMutex (взаимное исключение) и RWMutex (мьютекс с разделением на чтение и запись) — это механизмы синхронизации в Go для защиты общих ресурсов от одновременного доступа.
Читать ответОбновление содержимого кэш-сервиса в Go обычно происходит через несколько подходов:
Читать ответRabbitMQ стоит использовать в следующих случаях:
Читать ответВ Go данные из канала можно извлекать несколькими способами:
Читать ответБез Graceful Shutdown при завершении процесса в Go текущие запросы прерываются сразу, так как процесс завершается без ожидания завершения обработки. Это может привести к:
Читать ответВ Go синхронизация с помощью WaitGroup реализована через структуру из пакета sync, которая позволяет ждать завершения набора горутин.
Читать ответГорутины в Go выполняются на уровне пользовательского пространства, управляются планировщиком (scheduler) рантайма Go. Они не соответствуют системным потокам напрямую, а маппятся на меньший набор потоков ОС.
Читать ответHTTP и gRPC — это протоколы для обмена данными между клиентом и сервером, но они существенно отличаются по архитектуре и способу передачи данных.
Читать ответПример запуска тестов:
Читать ответ