Backend Go — техническое интервью

60 минут, middle → senior. Go 1.21+, goroutines, channels, interfaces, HTTP-сервисы.

Questions
14
Live coding
2

Разогрев: опыт и контекст

  1. Недавний проект

    BehavioralEasy

    Расскажите о недавнем проекте, где вы были ключевым разработчиком. Что делали вы лично?

    Scoring rubric (0–10)
    3–5: Описывает проект общими словами, свою роль называет расплывчато («участвовал в команде»).
    6–8: Конкретная задача, стек, результат; понятна личная зона ответственности.
    9–10: Контекст бизнеса, trade-offs, метрики успеха; честно говорит, что делали другие.
    Красный флаг: не может назвать ни одного решения, которое принимал сам.
    Interviewer notes
    Follow-up: что бы сделали иначе? 3–4 минуты.
  2. Мотивация смены

    BehavioralEasy

    Почему сейчас рассматриваете новые возможности? Что ищете в следующей роли?

    Scoring rubric (0–10)
    3–5: «Хочу роста / денег» без конкретики.
    6–8: Понятные критерии (стек, продукт, процессы); не toxic про текущего работодателя.
    9–10: Осознанный fit: что даст компания кандидату и наоборот.
    Красный флаг: только негатив про прошлые команды, обвиняет всех кроме себя.
    Interviewer notes
    Не давить — достаточно 2–3 минут.
  3. Опыт с Go

    BehavioralEasy

    Сколько пишете на Go? Какие проекты — микросервисы, CLI, high-load?

    Scoring rubric (0–10)
    3–5: «Год-два Go» без контекста нагрузки.
    6–8: Конкретные сервисы; stdlib vs gin/echo; версия Go в проде.
    9–10: Миграции модулей; performance tuning; когда Go не лучший выбор — честно.
    Красный флаг: «Go как Python, только быстрее» без понимания модели concurrency.
    Interviewer notes
    2–3 минуты.

Язык и concurrency

  1. Goroutines

    TheoryMedium

    Чем goroutine отличается от OS thread? Сколько goroutines «можно» и что их останавливает?

    Scoring rubric (0–10)
    3–5: «Легковесные потоки» без scheduler.
    6–8: M:N scheduling; stack growth; goroutine завершится когда функция return.
    9–10: GOMAXPROCS; leak через blocked channel; pprof goroutine dump.
    Красный флаг: «можно миллионы без последствий» без mention blocked goroutines.
    Interviewer notes
    4 минуты.
  2. Channels

    TheoryMedium

    Buffered vs unbuffered channel. Когда select и что будет при send в закрытый channel?

    Scoring rubric (0–10)
    3–5: «Channels для общения goroutines».
    6–8: Unbuffered sync handshake; buffer decouples; close — broadcast done; panic on send to closed.
    9–10: context cancellation; fan-in/fan-out; nil channel blocks forever in select.
    Красный флаг: close channel со стороны receiver без понимания.
    Interviewer notes
    Follow-up: worker pool pattern. 5 мин.
  3. Interfaces

    TheoryMedium

    Как работают interfaces в Go? Что значит «implicit satisfaction»?

    Scoring rubric (0–10)
    3–5: «Как Java interface».
    6–8: Structural typing; empty interface{} / any; compile-time check via var _ Interface = (*T)(nil).
    9–10: Small interfaces (io.Reader); accepting interfaces returning structs; nil interface gotcha.
    Красный флаг: giant interface with 20 methods.
    Interviewer notes
    4 минуты.
  4. Ошибки

    TheoryMedium

    Как обрабатываете ошибки в Go? Зачем errors.Is / errors.As и fmt.Errorf %w?

    Scoring rubric (0–10)
    3–5: «return err» everywhere без wrap.
    6–8: Wrapping with context; Is/As for sentinel errors; don't panic in libraries.
    9–10: Custom error types; multierror; logging vs returning.
    Красный флаг: panic для expected validation errors in HTTP handler.
    Interviewer notes
    4 минуты.
  5. Память и GC

    TheoryHard

    Как уменьшить аллокации в hot path? Что такое escape analysis на бытовом уровне?

    Scoring rubric (0–10)
    3–5: «Go быстрый, не думаем о памяти».
    6–8: sync.Pool; preallocate slices; avoid unnecessary string concat in loop.
    9–10: go test -bench; pointer vs value receiver trade-offs; GC pacing basics.
    Красный флаг: premature micro-opts без профилирования.
    Interviewer notes
    5 минут.

Практика: живой код

  1. Two Sum

    Coding taskMediumCode

    Дан слайс nums и target. Верните индексы двух чисел с суммой target (ровно одно решение).

    Scoring rubric (0–10)
    3–5: O(n²) nested loops.
    6–8: map[value]index O(n); объясняет ключи.
    9–10: Edge cases; preallocate map capacity; tests table-driven.
    Красный флаг: модифицирует входной slice без необходимости.
    Interviewer notes
    15 минут.
  2. Worker pool

    Coding taskHardCode

    Реализуйте RunJobs(jobs <-chan func(), workers int), которая запускает workers goroutines и обрабатывает jobs до закрытия канала.

    Scoring rubric (0–10)
    3–5: Одна goroutine на job без лимита.
    6–8: Fixed worker count; range jobs; wg.Wait after close.
    9–10: context cancel; panic recovery in worker; backpressure discussion.
    Красный флаг: busy spin или leak — wg не Wait.
    Interviewer notes
    15 минут.

HTTP и тестирование

  1. context.Context

    TheoryMedium

    Зачем context в HTTP handlers? Как пробросить deadline в downstream вызов?

    Scoring rubric (0–10)
    3–5: «Для отмены» без примера.
    6–8: ctx from request; WithTimeout; cancel on client disconnect.
    9–10: Context values anti-patterns; propagation through grpc/http client.
    Красный флаг: context.Background() в каждом internal call.
    Interviewer notes
    4 минуты.
  2. Тесты в Go

    TheoryMedium

    Как тестируете HTTP handler? Чем table-driven tests удобны?

    Scoring rubric (0–10)
    3–5: «testing package и assert».
    6–8: httptest.ResponseRecorder; table cases; t.Parallel cautions.
    9–10: Integration with testcontainers; golden files; fuzzing intro.
    Красный флаг: тесты зависят от порядка запуска и shared global state.
    Interviewer notes
    4 минуты.

Инженерная культура и вопросы

  1. Конфликт в команде

    BehavioralMedium

    Был ли случай технического или процессного конфликта в команде? Как разрешили?

    Scoring rubric (0–10)
    3–5: «Конфликтов не было» или история без своих действий.
    6–8: Описывает ситуацию, свою позицию, итог; без обвинений.
    9–10: Фокус на данных/компромиссе; что изменил в процессе после.
    Красный флаг: «я был прав, они нет» без рефлексии.
    Interviewer notes
    Follow-up: чему научились? 4 минуты.
  2. Вопросы к нам

    BehavioralEasy

    Какие вопросы у вас к нам про команду, продукт или процессы?

    Scoring rubric (0–10)
    3–5: «Нет вопросов» или только про отпуск/ЗП.
    6–8: 2–3 содержательных вопроса про продукт, команду, релизы.
    9–10: Вопросы показывают, что изучил компанию; уточняет ожидания от роли.
    Красный флаг: нулевой интерес к продукту на middle+.
    Interviewer notes
    Оставить 3–5 минут в конце интервью.

Run an interview with this template

Sign up free: copy the template to your org, schedule an interview, and run it in a room with live coding.

Get started in FlashTalk