Подборка объединяет вопросы, отмеченные на этапах интервью в Lamoda Tech. Здесь можно понять структуру технической проверки и заранее повторить связанные темы. В подборке чаще встречаются темы: go, database, sql.
Взаимные блокировки (deadlocks) в базе данных возникают, когда две или более транзакций блокируют ресурсы, которые нужны друг другу для продолжения работы, и ни одна из них не может продолжить выполнение.
Saga — это паттерн управления распределёнными транзакциями, который разбивает большую транзакцию на серию локальных транзакций, каждая из которых выполняется в отдельном сервисе.
Polling в Go — это механизм периодической проверки состояния какого-либо ресурса или события. Вместо того чтобы ждать уведомления, программа регулярно опрашивает (poll) источник данных с определённым интервалом.
В таблице transfers будет две внешние ключа (FK), обе ссылающиеся на таблицу accounts: одна для счета отправителя (fromaccountid), другая — для счета получателя (toaccountid).
Процессы — это изолированные экземпляры программ с собственным адресным пространством и ресурсами операционной системы. Они работают независимо и взаимодействуют через межпроцессное взаимодействие (IPC).
Архитектурные паттерны, позволяющие избавиться от необходимости атомарных транзакций между микросервисами, обычно основаны на асинхронной обработке и компенсационных механизмах. Один из таких паттернов — Saga.
Основная роль очередей в программных системах — организовать упорядоченную обработку данных или задач по принципу FIFO (первым пришёл — первым обслужен). Очереди позволяют:
Да, архитектура, основанная на разделении на слои, предполагает разделение приложения на несколько логических уровней, каждый из которых отвечает за свою зону ответственности. Обычно выделяют:
В структуре формы блокировки для запроса обычно фиксируются в момент обработки данных формы, чаще всего в методах, отвечающих за валидацию или отправку данных.