Tech Interview Fest | Моковое cобеседование для Go Junior | Solvery + Go-go! | Владимир Балун, Ozon
Моковое собеседование Junior Go с разбором фундаментальных вопросов и проектированием кэша для удалённого key-value-хранилища. В конце — обратная связь кандидату и ответы на вопросы зрителей о подготовке и поиске первой работы.
Это партнёрский стрим Tech Interview Fest с моковым техническим собеседованием на позицию Junior Go: Владимир Балун задаёт Максиму вопросы и поясняет ожидаемую логику рассуждений. Разбираются устройство map, коллизии и ключи с денежными значениями, строки и strings.Builder, slice, диагностика HTTP 500, процессы, потоки и goroutine. В практической части проектируют кэширующий декоратор над key-value-хранилищем, затем обсуждают ограничения кэша, обратную связь и подготовку к собеседованиям.
Для денежных ключей map не стоит использовать float: безопаснее хранить сумму в минимальных единицах, например в копейках как int, либо применять отдельную структуру.
Нужно уметь объяснить, что ключ map должен быть comparable, как хеширование приводит к бакету, что такое коллизия и зачем при поиске сравнивать фактические ключи.
Go-строки неизменяемы; при многократном добавлении фрагментов стоит рассматривать strings.Builder или буфер со slice и заранее резервировать ёмкость, чтобы сократить лишние аллокации.
По slice важно знать состав заголовка (указатель, length, capacity), амортизированную стоимость append в конец и необходимость сдвигать элементы при вставке или удалении в начале и середине.
При HTTP 500 сначала локализуйте сбой по логам, метрикам и трассировкам: проверьте RPS, отдельные endpoint’ы, память и CPU, сетевую доступность, а также корреляцию ошибки с недавними релизами.
Кэш-декоратор должен прозрачно реализовывать тот же интерфейс, различать cache hit и cache miss, учитывать конкурентный доступ к map, ограничение размера и вытеснение редко используемых данных, а также устаревание значений.
По мнению интервьюера, лучше готовиться на практических сценариях и регулярно проходить собеседования: это помогает увидеть пробелы в основах Go, алгоритмах, сетях, ОС и наблюдаемости сервисов.