Вернуться в видеотекуКоротко о видео
Это запись открытого образовательного интервью на Go-разработчика: после презентации менторской программы Даниил собеседует Дениса по разработке, тестированию, базам данных, распределённым системам и внутреннему устройству Go. В интервью разбирают работу с legacy-кодом и инцидентами, пирамиду тестов, PostgreSQL, Redis, Kafka, Saga, идемпотентность, планировщик Go и слайсы. В финале интервьюер оценивает ответы Дениса как соответствующие уровню middle, отмечая необходимость усилить практику и system design, после чего участники отвечают на вопросы зрителей о подготовке, алгоритмах, тимлидстве и работе в компаниях.
Затронутые темы
Что взять на заметку
- Для критичной фичи Денис предлагает начинать с тестов, но только после уточнения требований; при инциденте первым шагом он назвал проверку возможности отката, затем сбор логов и метрик.
- Для доработки незнакомого legacy-микросервиса обсуждают последовательность: самостоятельно изучить код, сформулировать вопросы, обратиться к прежним владельцам или смежным командам, проверить staging, логи, чаты и знания тестировщиков.
- В блоке о тестировании разбирают unit-, integration- и end-to-end-тесты; отдельно поднимают риск Testcontainers и Docker-in-Docker, когда тестовый Docker получает доступ к машине.
- К подготовке по базам и system design относят индексы и bloat в PostgreSQL, ACID, репликацию, Raft, шардирование, consistent hashing и CAP-теорему.
- Идемпотентность объясняют на платеже: сервис сохраняет идентификатор уже обработанной операции, например в Redis, и пропускает повторное сообщение с тем же ID.
- По обратной связи интервьюера, Денису для уровня middle+ стоит набрать больше практических кейсов system design, в частности по идемпотентности, а также укрепить базы данных и практику тестирования.
- Для Go стоит повторить модель GMP и работу scheduler, сетевые ожидания через netpoller, а также устройство слайса: копирование заголовка, общий backing array и изменение поведения после выхода за capacity.