Как проходит техническое интервью в IT: этапы, задачи и критерии оценки

Разбираем, как проходит техническое интервью в IT: какие этапы бывают, что проверяют интервьюеры, как отвечать на вопросы и где кандидаты теряют баллы.

08 апреля 2026 г.18 минLexicon Team

Введение

Техническое интервью в IT редко сводится к набору случайных вопросов по языку или фреймворку. Обычно это управляемый сценарий, в котором компания пытается быстро понять три вещи: умеете ли вы решать практические инженерные задачи, насколько глубоко понимаете свой стек и как вы действуете в условиях неопределённости. Именно поэтому два кандидата с одинаковым опытом на резюме могут пройти этап совсем по-разному.

Проблема для многих соискателей не в нехватке знаний как таковых, а разрыв между пониманием материала и способностью внятно объяснить его в условиях ограниченного времени. Если нужен более широкий контекст по всей воронке найма, сначала полезно посмотреть как проходит IT-собеседование по этапам. А здесь разберем именно техническое интервью: из каких блоков оно состоит, как интервьюер принимает решение и что помогает пройти его без хаотичной зубрежки.

Больше вопросов в Telegram

Ежедневные разборы и реальные кейсы с интервью

Подписаться

Из чего обычно состоит техническое интервью

Технический этап почти всегда собирается из нескольких типовых блоков. Их порядок меняется от компании к компании, но логика остается одинаковой.

Анализ предыдущего опыта работы

Разговор часто начинается не с алгоритмов, а с ваших реальных задач. Интервьюер просит рассказать о проекте, сложном релизе, аварии, спорном архитектурном решении или оптимизации. На этом участке проверяют не память на термины, а инженерную зрелость:

  • понимаете ли вы границы своей ответственности;
  • умеете ли вы отделять личный вклад от командного результата;
  • можете ли объяснить компромисс, а не только результат;
  • видите ли вы риски, стоимость решения и точки отказа.

Если вы ограничиваетесь общими формулировками вроде "занимался производительностью" или "улучшал архитектуру", интервьюеру сложно оценить уровень. Рабочий ответ всегда опирается на контекст: какая была проблема, какие ограничения, какие варианты рассматривались и почему выбрали именно этот.

Теория по стеку

Дальше обычно идет углубление в ваш основной стек. Для frontend это могут быть рендеринг, состояние, сеть, браузерный event loop и устройство React или Angular. Для backend чаще спрашивают память, потоки, модели конкурентности, транзакции, индексы, сетевое взаимодействие, очереди и кэш.

Здесь важно понимать, что интервьюер почти никогда не ищет "учебниковое определение". Ему важнее увидеть причинно-следственные связи. Например, хороший ответ на вопрос про индексы в SQL не заканчивается словами "индекс ускоряет поиск", а продолжается разговором про селективность, стоимость записи, влияние на память и планы выполнения.

Live coding или задача на доске

Многие компании дают одну задачу вживую. Это может быть:

  • алгоритмическая задача;
  • прикладная задача по вашему стеку;
  • отладка сломанного куска кода;
  • проектирование API или схемы данных;
  • разбор существующего решения с поиском узких мест.

На live coding оценивают не только финальный код. Интервьюер смотрит:

  • как вы уточняете требования;
  • проверяете ли граничные случаи;
  • замечаете ли ошибки в предположениях;
  • комментируете ли ход мысли;
  • умеете ли корректировать решение без паники.

Архитектурный блок

Для middle и senior почти всегда есть архитектурная часть. Иногда это отдельный этап по System Design, иногда 15-20 минут в конце разговора. Спрашивают не просто "нарисуйте идеальную систему", а "как бы вы решили задачу при заданной нагрузке и ограничениях".

Если вы готовитесь к этой части с нуля, полезно отдельно изучить материалы по system design для начинающих и system design для frontend-разработчика. Эти материалы хорошо дополняют именно техническое интервью, потому что учат говорить не только о коде, но и о границах системы.

Архитектура технического интервью: как компания принимает решение

Если смотреть на техническое интервью как на систему, у нее есть несколько компонентов, и у каждого своя роль.

Компоненты системы

  • кандидат со своим опытом, сильными сторонами и пробелами;
  • интервьюер, который должен получить достаточно сигнала за ограниченное время;
  • оценочная форма или scorecard;
  • задача или сценарий, через который проверяют глубину;
  • нанимающий менеджер, который потом читает краткое резюме этапа.

В реальности решение почти никогда не принимается по ощущению "понравился или нет". После встречи интервьюер обычно должен оставить структурированную оценку: прошел ли кандидат по fundamentals, коммуникации, quality of reasoning, уровню самостоятельности и соответствию грейду.

Поток сигнала и точки отказа

Поток выглядит так:

  1. Вам дают вопрос или задачу.
  2. Вы строите ответ и озвучиваете логику.
  3. Интервьюер ищет сигналы уровня, а не только правильный итог.
  4. Эти сигналы превращаются в краткий пересказ для hiring manager.
  5. На основе пересказа решают, двигать ли вас дальше.

Узкое место здесь простое: часть кандидатов мыслит неплохо, но не умеет чётко выражать свои мысли в речи. На практике это выглядит так: решение есть, но оно неочевидно для наблюдателя. Интервьюер не понимает, случайно ли вы попали в ответ, умеете ли повторить такой ход мысли на рабочей задаче и где заканчивается реальное понимание.

Ниже пример того, как технический этап часто фиксируется в оценочной форме.

{
  "candidate": "Middle Backend Engineer",
  "signals": {
    "core_fundamentals": "strong",
    "problem_solving": "strong",
    "communication": "mixed",
    "system_design": "borderline",
    "production_judgment": "strong"
  },
  "notes": [
    "Хорошо объяснил компромиссы между Redis и PostgreSQL для rate limiting",
    "На live coding сначала пропустил edge case с пустым входом, но быстро исправил",
    "В архитектурной части недооценил стоимость fan-out при росте нагрузки"
  ],
  "decision": "hire"
}

Этот пример полезен по одной причине: он показывает, что интервьюер пишет не "ответил на 8 из 10 вопросов", а фиксирует наблюдаемые сигналы. Поэтому на интервью так важна прозрачность мышления.

Где система чаще всего ломается

Первая точка отказа: кандидат отвечает заученными шаблонными фразами. Звучит уверенно, но без связи с реальными ограничениями.

Вторая точка отказа: кандидат сразу приступает к написанию кода или рассуждениям без уточнения требований.

Третья точка отказа: кандидат знает тему, но теряется, когда нужно сравнить два приемлемых варианта и объяснить, почему выбран один из них.

Какие форматы технического интервью бывают

ФорматЧто проверяютСильный сигналГде чаще проваливаются
Теория по стекуглубину понимания механизмовобъяснение через причины и ограниченияпересказ определений без практики
Live codingход мысли, качество кода, работа с неопределенностьюуточнение требований и проверка edge casesмолчание, спешка, отсутствие тестовых примеров
Debugging sessionнавык диагностики и приоритизациидвижение от симптома к гипотезехаотичный перебор без плана
System Designархитектурное мышление и компромиссыоценка нагрузки, узких мест и деградациирисование абстрактной схемы без цифр
Разбор прошлого опытареальную самостоятельностьясная зона ответственности и честные trade-offобщие формулировки и присвоение себе чужих результатов
Take-home reviewкачество инженерного исполненияобъяснение решений и ограниченийзащита слабого кода без признания компромиссов

Из этой таблицы полезно вынести одну мысль: разные форматы проверяют разное. Поэтому подготовка "почитаю список вопросов" почти всегда слабее, чем подготовка по типам сигнала.

Что именно хотят услышать на техническом интервью

Не энциклопедию, а рабочее мышление

Интервьюеру нужен не просто человек, заучивший учебник, а человек, с которым можно обсуждать решение. Сильный ответ обычно имеет такую форму:

  1. сначала вы уточняете рамку задачи;
  2. затем называете основной подход;
  3. после этого обозначаете компромиссы;
  4. в конце проговариваете ограничения или следующий шаг.

Например, на вопрос "когда вы бы не стали кэшировать ответ API?" слабый ответ звучит так: "Когда данные часто меняются". Сильный ответ уже инженерный: "Я бы не ставил агрессивный кэш на ручку, где цена устаревших данных выше выигрыша в latency. Например, если это остатки на складе или лимиты пользователя, то устаревший ответ может нанести больший ущерб, чем те 30–50 мс, которые мы экономим.

Честная граница знания работает лучше догадки

Один из самых частых провалов происходит, когда кандидат не знает ответа, но пытается скрыть это уверенным тоном. Обычно это заканчивается серией уточнений, после которых становится понятно, что база знаний неустойчива. Гораздо сильнее звучит формулировка такого типа:

"С этим инструментом у меня не было глубокого production-опыта, но соседнюю задачу я решал вот так. Если рассуждать от известных мне принципов, я бы начал с..."

Такой ответ показывает зрелость. Он не выдаёт пробел за достоинство, но и не делает его критичным сигналом.

Для тренировки именно этого навыка хорошо помогает статья что делать, если не знаешь ответ на вопрос.

Как проходит live coding на практике

Live coding часто пугает больше всего, хотя логика оценки там достаточно прозрачна. Интервьюер хочет увидеть не магию, а процесс.

С чего начинается сильное решение

Перед тем как писать код, полезно проговорить:

  • что считается входом и выходом;
  • какие ограничения по объему данных;
  • что делать с невалидными значениями;
  • нужна ли оптимизация сразу или сначала достаточно корректного базового решения.

Если вы сразу открываете редактор и начинаете писать, вы не демонстрируете инженерную дисциплину.

Пример: как комментировать прикладную задачу

Ниже упрощенный пример live coding на TypeScript. Задача: сгруппировать события по пользователю и отбросить записи без userId.

type Event = {
  userId?: string;
  type: "click" | "view" | "purchase";
  ts: number;
};

function groupEventsByUser(events: Event[]): Record<string, Event[]> {
  const result: Record<string, Event[]> = {};

  for (const event of events) {
    if (!event.userId) {
      continue;
    }

    if (!result[event.userId]) {
      result[event.userId] = [];
    }

    result[event.userId].push(event);
  }

  return result;
}

Сам код здесь несложный. Но на интервью важнее комментарий вокруг него:

  • сначала я выбираю Record<string, Event[]>, потому что нужен быстрый доступ по ключу;
  • явно пропускаю события без userId, потому что это оговоренное поведение;
  • базовая сложность по времени O(n), по памяти O(n);
  • если потом потребуется сохранять порядок по ts, надо либо сортировать внутри групп, либо предположить, что вход уже отсортирован.

Вот этот слой объяснения и отделяет рабочее решение от "молча написал что-то похожее".

Что делать, если заметили ошибку посреди решения

Исправление ошибки само по себе не проблема. Проблема начинается, когда кандидат делает вид, что ничего не произошло. Намного лучше прямо сказать: "Я пропустил крайний случай, сейчас поправлю. Для пустого массива функция и так корректна, а вот для невалидного userId я хочу явно оставить continue".

Интервьюеры обычно нормально относятся к корректировкам. В реальной работе вы тоже сначала строите гипотезу, потом уточняете ее о факты.

Архитектурная часть: как обсуждать систему, а не рисовать красивые блоки

На вопрос по архитектуре многие отвечают слишком абстрактно: "тут будет API, база и кэш". Формально это не ошибка, но такой ответ мало что говорит о вашем уровне.

Минимальный каркас хорошего ответа

  1. Уточнить функциональные требования.
  2. Оценить примерную нагрузку.
  3. Назвать основной путь данных.
  4. Показать узкие места.
  5. Объяснить стратегию деградации при сбоях.

Допустим, вас спрашивают: "Как спроектировать сервис коротких ссылок?". Минимально внятный ответ уже должен затронуть:

  • поток создания и чтения ссылок;
  • выбор хранилища для короткого кода и оригинального URL;
  • кэш для популярных ключей;
  • коллизию ключей;
  • метрики ошибок и задержек;
  • поведение при недоступности кэша.

Если вы хотите отдельно прокачать именно объяснение сложных тем, полезно пройти материал как объяснять сложные темы простыми словами на интервью.

Пример технического артефакта, который звучит сильно

Иногда полезно структурировать архитектурный ответ почти как конфигурацию системы:

service: short-link
read_path:
  - edge_load_balancer
  - api_service
  - redis_cache
  - postgres_fallback
write_path:
  - api_service
  - key_generator
  - postgres_primary
failure_strategy:
  redis_down: "читать из Postgres, временно теряя latency"
  postgres_slow: "ограничить создание новых ссылок и сохранить read path"
primary_metrics:
  - p95_latency
  - cache_hit_ratio
  - write_error_rate
  - redirect_success_rate

Это не "код для кода". Такой формат помогает не потерять важные компоненты: путь запроса, точки отказа и критерии наблюдаемости.

Разбор производительности: о чем на интервью говорят, когда речь идет о нагрузке

Почти в каждом хорошем техническом интервью рано или поздно возникает разговор о производительности. Даже если ваша роль не связана с высокими нагрузками, проверяют базовую способность видеть стоимость решения.

Что считается узким местом

Узкое место зависит от контекста:

  • в backend-сервисе это может быть база, сеть или блокировки;
  • во frontend-приложении это может быть тяжелый рендер, лишние запросы или большой bundle;
  • в ETL или data pipeline это может быть сериализация, диск или fan-out в очередях.

Сильный кандидат не говорит "нужно оптимизировать". Он сначала обозначает, где именно стоимость:

  • latency, если пользователю критичен отклик;
  • throughput, если система упирается в количество запросов;
  • memory, если большой кэш или тяжелые структуры;
  • cpu, если дорогое преобразование или компрессия;
  • сетевые затраты, если сервисы чрезмерно взаимодействуют друг с другом.

Когда оптимизация оправдана, а когда преждевременна

Это частый вопрос на интервью, и правильный ответ редко бывает абсолютным. Например, переход с одного SQL-запроса на сложный кэш с инвалидацией не всегда улучшение. Если ручка вызывается редко, а риск устаревших данных высок, вы получаете повышенную сложность без реальной выгоды.

Интервьюеру нравится, когда вы умеете так и сказать: сначала измерил бы p95 latency, частоту вызовов и стоимость промаха, а уже потом решал, нужен ли кэш, реплика чтения или переработка схемы.

Для frontend-кандидатов хорошим дополнением к этой теме будет как искать узкие места через React Profiler.

Практики, которые реально помогают пройти этап

Практика 1. Готовить ответы не по вопросам, а по сигналам

Вместо списка из ста вопросов полезнее подготовить:

  • три истории про реальные инженерные решения;
  • два кейса, где вы ошиблись и что из этого вынесли;
  • одну архитектурную задачу по своему стеку;
  • несколько коротких объяснений базовых тем;
  • одну live coding задачу вслух.

Такой подход ближе к реальному интервью, потому что этап редко идет по заранее известному скрипту.

Практика 2. Репетировать объяснение вслух

Мысленно вы почти всегда отвечаете лучше, чем голосом. Поэтому репетиция без речи дает ложное ощущение готовности. Полезно хотя бы 2-3 раза проговорить:

  • рассказ о проекте;
  • ответ на сложный теоретический вопрос;
  • решение короткой задачи с комментариями.

Если хотите тренировать именно формат пробного собеседования, сначала посмотрите зачем нужно mock interview и как оно проходит.

Практика 3. Проверять, можно ли ваш ответ пересказать одной фразой

Это простой тест качества. После каждого большого ответа спросите себя: какую одну строку написал бы интервьюер в заметках? Если из вашего ответа нельзя собрать короткий, ясный вывод, значит, он был перегружен или неконкретен.

Практика 4. Готовить вопросы к интервьюеру

Техническое интервью двустороннее. Сильные вопросы в конце тоже дают сигнал зрелости:

  • какие технические проблемы у команды самые болезненные сейчас;
  • как принимаются архитектурные решения;
  • что считается хорошим результатом для этой роли через 3 месяца;
  • есть ли on-call, SLA, ограничения по latency или reliability;
  • как устроены code review и incident review.

Пройди мок-интервью по фронтенду

Живой диалог + разбор ответов

Записаться

Ошибки, которые дорого обходятся: где кандидаты теряют баллы, хотя думают, что отвечают нормально

Ошибка 1. Отвечать без рамки задачи

Признак: вы сразу предлагаете решение, не спросив про ограничения.

Что видит интервьюер: либо вы слишком спешите, либо не привыкли работать с неполными требованиями.

Последствие в продакшене такое же, как на интервью: команда строит решение под неверную постановку и потом дорого переделывает.

Как исправить: начинать хотя бы с двух-трех уточняющих вопросов.

Ошибка 2. Путать знание терминов с пониманием механизма

Признак: вы называете CAP, event loop, idempotency, memoization, но не можете пройти один шаг глубже.

Что видит интервьюер: терминологическая поверхность без опоры на причинно-следственную модель.

В логах и метриках такая проблема обычно проявилась бы так же: человек говорит "система тормозит", но не может назвать метрику, где именно это видно.

Как исправить: готовить ответы через формулу "что это, зачем нужно, где ломается, когда не подходит".

Ошибка 3. Молчать во время live coding

Признак: вы ушли в редактор на 5 минут без комментариев.

Что слышит интервьюер: почти ничего. Даже сильное решение становится непрозрачным.

Последствие: оценка смещается вниз не из-за кода, а из-за нехватки наблюдаемого сигнала.

Как исправить: комментировать намерение, а не каждую строчку. Достаточно комментировать смену гипотезы, выбор структуры данных и проверку граничных случаев.

Ошибка 4. Защищать слабое решение вместо честного улучшения

Признак: интервьюер поднимает очевидный риск, а кандидат начинает спорить из принципа.

Что видит интервьюер: низкая адаптивность и слабая способность к техническому диалогу.

Как исправить: отделять "я выбрал такой базовый вариант, потому что..." от "если нам важнее масштабирование, я бы менял решение вот так".

Если хочется отдельно пройтись по типичным провалам, рядом есть полезная статья типичные ошибки на IT-собеседовании.

Частые ошибки

  • Заучивать ответы поверхностно, не тренируя объяснение вслух.
  • Пытаться казаться экспертом в теме, где есть только базовое знакомство.
  • Начинать live coding без уточнения требований и проверки примеров.
  • Давать архитектурный ответ без цифр, узких мест и стратегии деградации.
  • Спорить с интервьюером вместо совместного разбора компромиссов.
  • Говорить о прошлых задачах без ясной зоны ответственности и измеримого вклада.
  • Игнорировать производительность, надежность и стоимость поддержки решения.

Как отвечать на техническом интервью

Рабочая формула ответа выглядит так:

  1. Уточнить, что именно нужно решить.
  2. Назвать базовый подход.
  3. Коротко сравнить его с альтернативой.
  4. Обозначить ограничения и крайние случаи.
  5. Сказать, что бы вы проверили в продакшене.

Пример на вопрос про кэширование:

"Если задача в том, чтобы снизить p95 latency на горячем чтении, я бы сначала посмотрел на профиль запросов и стоимость промаха. Базовый вариант - Redis перед основной базой. Но если данные меняются часто и stale response критичен, кэш без продуманной инвалидации только добавит сложность. Поэтому решение зависит от цены консистентности и частоты чтения".

Такой ответ хорош тем, что в нем есть и структура, и компромисс, и инженерная осторожность.

Если вам сложно держать ответ коротким и понятным, помогает статья как объяснять сложные темы простыми словами на интервью.

Потренируй техническое интервью до реального этапа

Платформа проводит mock interview по стеку, задает уточняющие вопросы и помогает собрать сильные, структурированные ответы

Попробовать бесплатно

FAQ

Чем техническое интервью отличается от HR-этапа

HR обычно проверяет мотивацию, совпадение ожиданий и общую адекватность коммуникации. Техническое интервью уже проверяет глубину по стеку, мышление в задачах и способность принимать инженерные решения.

Нужно ли решать алгоритмы, если я иду в продуктовую команду

Часто да, но глубина зависит от компании. В продуктовых командах задачи чаще прикладные, однако базовые структуры данных, оценка сложности и умение писать аккуратный код все равно проверяются регулярно.

Нормально ли просить уточнить вопрос

Да, и обычно это плюс. Уточнение требований показывает, что вы не бросаетесь решать задачу в вакууме. В реальной работе это снижает цену неправильных решений.

Что делать, если интервьюер перебивает или давит по времени

Сохранять структуру ответа. Коротко обозначьте гипотезу, скажите, что сначала решаете базовую версию, а затем при необходимости обсудите оптимизацию или альтернативы. Давление времени проверяет не только знания, но и способность сохранять ясность мысли.

Как понять, что я готов к техническому интервью

Обычно достаточно трех признаков: вы можете объяснить 8-10 базовых тем своего стека без конспекта, решить простую live coding задачу вслух и разобрать хотя бы один архитектурный кейс с цифрами, рисками и метриками.

Итоги

Техническое интервью в IT устроено намного логичнее, чем кажется в стрессе. Компания ищет не человека, который знает все ответы, а инженера, чье мышление можно наблюдать и которому можно доверить реальные задачи. Поэтому сильнее всего работают не заученные формулировки, а умение уточнять рамку, строить решение по шагам, говорить о компромиссах и честно обозначать границы знания.

Подготовка к такому этапу тоже должна быть прикладной: не просто читать списки вопросов, а тренировать объяснение, разбирать архитектурные сценарии, проговаривать live coding и учиться не терять мысль под давлением. Если нужен следующий шаг, полезно продолжить с материалов как подготовиться к техническому интервью за 2 недели, что делать, если не знаешь ответ на вопрос и зачем нужно mock interview.

Больше вопросов в Telegram

Ежедневные разборы и реальные кейсы с интервью

Подписаться

Автор

Lexicon Team

Читайте также