Как обеспечивалась отказоустойчивость сервиса?
Отказоустойчивость сервиса в Go обычно обеспечивается несколькими способами:
Читать ответПодготовка к интервью
21 вопрос с собеседований в Startribe
Что проверяют на интервью
Подборка объединяет вопросы, отмеченные на этапах интервью в Startribe. Здесь можно понять структуру технической проверки и заранее повторить связанные темы. В подборке чаще встречаются темы: go, microservices, backend.
Каталог
Отказоустойчивость сервиса в Go обычно обеспечивается несколькими способами:
Читать ответПланировщик горутин в Go распределяет горутины из общего списка ожидания с помощью модели M:N, где M — количество системных потоков (OS threads), а N — количество горутин.
Читать ответИдемпотентность в запросах к сервису означает, что повторное выполнение одного и того же запроса приводит к одному и тому же результату и не изменяет состояние сервиса после первого вызова.
Читать ответВ объектно-ориентированном программировании (и в Go, в частности) наследование и встраивание — это два способа повторного использования кода, но они отличаются по механике и семантике.
Читать ответПаттерн Circuit Breaker используется для повышения надежности распределённых систем, предотвращая повторные вызовы к неработающему или медленно отвечающему сервису.
Читать ответДа, структура errgroup.Group из пакета golang.org/x/sync/errgroup часто использовалась для управления параллельными задачами.
Читать ответПри объединении двух строк в Go происходит создание новой строки, которая содержит последовательность символов обеих исходных строк.
Читать ответВ Go канал (channel) — это тип, который позволяет безопасно передавать данные между горутинами, обеспечивая синхронизацию и обмен сообщениями.
Читать ответВ Go стандартная карта (map) не является потокобезопасной для одновременного чтения и записи из разных горутин. Чтобы обеспечить безопасную работу с map в многопоточной среде, можно использовать следующие подходы:
Читать ответHTTP/3 — это новая версия протокола HTTP, которая использует транспортный протокол QUIC вместо TCP, применяемого в HTTP/1.1 и HTTP/2. Ключевые отличия:
Читать ответГорутина — это легковесный поток выполнения в языке Go.
Читать ответАсинхронная репликация данных означает, что изменения на основном сервере не обязательно сразу применяются на репликах.
Читать ответ