Подборка объединяет вопросы, отмеченные на этапах интервью в 2ГИС. Здесь можно понять структуру технической проверки и заранее повторить связанные темы. В подборке чаще встречаются темы: api, backend, microservices.
В Go используется трёхцветная маркировка для реализации сборщика мусора (GC), основанного на алгоритме маркировки и очистки. Основная идея — разделить объекты на три категории (цвета) во время обхода графа объектов:
Для проверки корректности временного диапазона бронирования в Go нужно убедиться, что время начала (from) строго меньше времени окончания (to). Обычно для этого используют типы time.Time.
Транзакция — это последовательность операций с базой данных, которая выполняется как единое целое. Если одна из операций неудачна, все изменения откатываются, чтобы сохранить целостность данных.
При рассмотрении предложения по зарплате я ориентируюсь на рыночные ставки для моего уровня и опыта в Golang, а также на общие условия работы и возможности для развития.
В Go интерфейсы обычно располагают по месту использования, а не по месту объявления. Это связано с философией Go — интерфейсы описывают поведение, которое требуется клиенту, а не то, что реализует конкретный тип.
Без Graceful Shutdown при завершении процесса в Go текущие запросы прерываются сразу, так как процесс завершается без ожидания завершения обработки. Это может привести к: