Виталий Лихачев, Наталья Саушкина: Публичное собеседование Senior Golang Engineer

YOUTUBE · 30.11.2025 05:24

Ключевые темы и таймкоды

Собеседование на Java-разработчика

0:00
  • Гриша Скобелев и Виталий обсуждают вопросы, которые задают на собеседованиях на Java-разработчиков.
  • Виталий рассказывает о своем опыте проведения собеседований и о том, как он выбирает вопросы для собеседования.

Собеседование на Golang-разработчика

3:49
  • Виталий проводит собеседование на Golang-разработчика, обсуждая вопросы, связанные с дефером и указателями в Golang.
  • Виталий объясняет, как работает дефер и как он влияет на вывод кода.
  • Обсуждаются ошибки, которые могут быть допущены при использовании указателей в Golang.

Работа с слайсами

16:26
  • Создание слайса и добавление последнего элемента из гетсапслайс в массив.
  • Использование рантайма для получения статистики использования памяти.

Работа с коллектором

20:04
  • Горб-коллектор работает по ссылочному принципу и анализирует объекты по принципу достижимости.
  • Решение: использование массива вместо слайса для корректной обработки переменной с.

Ограничение запросов

24:45
  • Задача: ограничить количество запросов в секунду, отправляя их параллельно.
  • Реализация: создание канала стикером, слушание тиков и отправка запросов при разрешении.
  • Концептуальная ошибка: часть запросов не будет отправлена из-за неправильной работы с окружением.

Проблемы с реализацией

34:17
  • В коде есть проблема с безопасностью потоков и реализацией структуры данных.
  • Необходимо подумать о том, как потоки могут влиять на структуру данных и как это может отразиться на текущей реализации.

Таймеры и реализация функции

37:07
  • Задача с таймерами: правильно обрабатывать функции, которые могут быть вызваны в разное время.
  • Необходимо добавить контроль за тем, как функция работает и как она взаимодействует с другими функциями.

Веб-сокеты и реализация функций

42:02
  • Задача с веб-сокетами: реализовать функции для подключения и отключения пользователей.
  • Необходимо учитывать количество подключенных пользователей и их взаимодействие с другими функциями.

Слайсы и реализация слайса

50:14
  • Задача с слайсами: реализовать слайс для хранения подключенных пользователей и добавления новых пользователей.
  • Необходимо определить, почему слайс, а не другая структура данных, и как это может повлиять на реализацию.

Обсуждение структуры данных

51:38
  • Обсуждение использования слайса для хранения коннекшенов пользователей и его эффективности при работе с большим количеством данных.
  • Обсуждение использования мапы для хранения коннекшенов и ее преимуществ перед слайсом.

Задача с такси

54:56
  • Задача: сервис такси, который хранит сетку координат и обрабатывает запросы от райдеров и водителей.
  • Обсуждение проблемы: как реализовать функцию, которая определяет потребность в водителях в конкретной точке.

Реализация функции

1:00:05
  • Обсуждение наивной реализации функции и ее оптимизации.
  • Обсуждение структуры данных и алгоритмов для решения задачи.
  • Обсуждение необходимости сохранения количества райдеров и водителей в каждом квадрате.
  • Обсуждение использования мапы для хранения количества райдеров и водителей и их подсчета.

Решение задач на собеседовании

1:06:57
  • Обсуждение различных способов решения задач на собеседовании, включая использование двумерного массива для хранения границ квадратов и использование кольцевого буфера для экономии памяти.
  • Обсуждение важности понимания различий между каналами и их влияния на производительность сервиса с большими РПСами.

Впечатления от собеседования

1:10:41
  • Участники делятся своими впечатлениями от собеседования, отмечая его ценность для развития и открытия новых знаний.
  • Выражают благодарность Виталию за подготовку задач и организаторам за проведение мероприятия.