Оглавление:

Введение
Общая структура собеседования QA-инженера
Интервью с HR: что и зачем спрашивают
Техническое интервью
Теоретическая часть для Manual QA
Блок 1: Основы тестирования
Блок 2: Документы и отчеты
Блок 3: Основные понятия
Блок 4: Модели разработки
Блок 5: Agile и Scrum
Блок 6: Уровни и виды тестирования
Блок 7: Баги и дефекты
Блок 8: Тест-дизайн
Блок 9: Эстимация и метрики
Блок 10: API
Блок 11: Сети и протоколы
Блок 12: HTTP
Блок 13: Архитектура ПО
Блок 14: Базы данных и SQL
Блок 15: Мобильное тестирование
Блок 16: Логирование и метрики
Блок 17: Типы данных и форматы
Блок 18: Командная строка
Теоретическая часть для Automation QA (Java)
Блок 1: Основы автоматизации
Блок 2: Git
Блок 3: CI/CD
Блок 4: Тест-раннеры (JUnit / TestNG)
Блок 5: Системы сборки (Maven / Gradle)
Блок 6: Локаторы
Блок 7: Инициализация браузера и Selenium
Блок 8: Playwright
Блок 9: API-тестирование
Блок 10: Архитектура фреймворка
Блок 11: Логгеры, репортеры, метрики
Блок 12: Автоматизация мобильных приложений
Вопросы по java
Блок 1: Типы данных
Блок 2: Ключевые концепции ООП
Блок 3: Модификаторы и управление доступом
Блок 4: Операторы и циклы
Блок 5: Работа с исключениями
Блок 6: Современные API
Блок 7: Коллекции (Java Collections Framework)
Блок 8: Глубокие концепции Java
Блок 9: Структуры данных и обобщения (Generics)
Блок 10: Управление памятью и работа со ссылками
Блок 11: Фундаментальные концепции
Блок 12: Архитектурные подходы и паттерны проектирования
Лайвкодинг
Лайвкодинг Java
Блок 1: Stream API
Блок 2: Коллекции (List, Set, Map)
Блок 3: Работа со строками (String, StringBuilder)
Блок 4: Алгоритмы и логика
Блок 5: Специальные задачи
Лайвкодинг SQL
Блок 1: Базовые запросы и фильтрация (SELECT, WHERE)
Блок 2: Сортировка, группировка и агрегатные функции (ORDER BY, GROUP BY, HAVING)
Блок 3: JOINs (Работа с несколькими таблицами)
Блок 4: Подзапросы и обновление данных (Subqueries, UPDATE, DELETE)
Блок 5: Проектирование и модификация структуры (DDL)
Блок 6: Продвинутые концепции
Вопросы на логику и мышление
Вопросы от кандидата интервьюерам
Знакомство с командой
Заключение

Введение

В этой статье мы подробно разберем процесс собеседования QA-инженера в 2026 году. Материал построен на анализе десятков реальных интервью в компаниях разного масштаба — от небольших стартапов до крупных корпораций и аутсорсеров.

Если посмотреть на текущий рынок найма, картина получается неоднозначная. Джуниорам стало сложнее: компании реже готовы учить с нуля и хотят видеть хотя бы базовую подготовку. Требования к опытным специалистам растут — теперь недостаточно просто уметь писать тесты, нужно разбираться в архитектуре, CI/CD и думать о производительности. При этом работодатели все чаще ищут универсалов: чтобы и руками протестировать могли, и автотесты написать, и в базе данных разобраться. Да и кандидаты стали внимательнее выбирать — им важна не только зарплата, но и интересные задачи, нормальная атмосфера в команде и понятные перспективы.

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

Цель этой статьи — системно разобрать процесс собеседования QA-инженера и дать читателю полную картину: что будет на каждом этапе, какие вопросы могут задать и, главное, почему их задают. Что на самом деле проверяет интервьюер, когда спрашивает про разницу коллекций в Java или про то, как вы ищете ошибки в готовом продукте?

Кому будет полезно:

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

  • Сеньорам и тимлидам — как памятка для проведения собеседований или оценки своей команды.

  • Тем, кто переходит из manual в automation — здесь можно найти список тем, которые стоит подтянуть.

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

Универсального шаблона не существует. В каждой компании свои порядки, свой стек и свои особенности. Где-то до сих пор работают с чистым Selenium без паттернов, а где-то уже вовсю используют Playwright и современные фреймворки. Но, проанализировав десятки интервью в самых разных компаниях, можно выделить общие закономерности. О них и пойдет речь.

1. Общая структура собеседования QA-инженера

Чтобы легче было ориентироваться, давайте сначала посмотрим на типичный путь кандидата. Это как карта уровней в игре — зная её, проще проходить. Сразу оговорюсь: порядок этапов может меняться, что-то могут убрать или, наоборот, добавить. Но в среднем всё выглядит так:

Общая структура собеседования
Общая структура собеседования
  1. Отправка резюме. С этого всё начинается.

  2. Разговор с HR (скрининг). Короткий звонок минут на 15–30. HR смотрит, адекватный ли человек, сверяет ожидания по зарплате, графику, мотивацию.

  3. Тестовое задание (не всегда). Могут дать до или после технического собеседования. Часто практикуют для джунов или когда хотят посмотреть, как человек решает реальные задачи.

  4. Техническое собеседование. Самый важный этап, длится обычно час-полтора. Именно здесь решают, берут вас или нет.

  5. Интервью с командой / руководителем. Смотрят, как вы общаетесь, подходите ли команде по духу, насколько вам интересна работа.

  6. Оффер и обсуждение деталей. Если всё хорошо — получаете предложение.

Возможные вариации:

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

  • В крупных компаниях процесс длиннее. Могут добавить онлайн-тестирование, встречу с эйчаром из другого отдела, проверку службой безопасности (особенно в банках) и разговор с руководством.

  • В аутсорсе сначала вы проходите собеседование внутри компании, а потом — ещё одно с представителем заказчика. И там требования могут отличаться.

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

2. Интервью с HR: что и зачем спрашивают

HR-интервью — это не просто "разговор для галочки". У HR-а есть конкретный чек-лист:

HR-интервью
HR-интервью
  • Адекватность и коммуникабельность. Сможет ли кандидат нормально разговаривать с командой?

  • Соответствие формальным критериям. Ожидания по зарплате, график работы, готовность к переезду.

  • Мотивация. Почему уходит с текущего места? Почему хочет к нам?

  • Первичная проверка опыта. Сбор информации для передачи техническому интервьюеру.

Вот примеры реальных вопросов от HR-ов (имена изменены):

ВОПРОСЫ ОТ HR

Эти вопросы помогают HR-у понять, что вами движет, надолго ли вы к ним, не возникнет ли конфликтов в команде и насколько ваши ожидания совпадают с реальностью компании.

Вопрос: Почему решил(а) менять текущее место работы?

Вопрос: Почему заинтересовала именно наша компания / вакансия?

Вопрос: Если будет несколько офферов с одинаковой зарплатой — по каким критериям будешь выбирать?

Вопрос: Что для тебя самое важное в работе? А что категорически не принимаешь?

Вопрос: Что для тебя является красным флагом в будущей компании? От чего сразу хочется отказаться?

Вопрос: Какие задачи тебе не нравятся / не хотелось бы делать?

Вопрос: Бывали ли случаи, когда не успевал(а) к дедлайнам? Как выходил(а) из ситуации?

Вопрос: Какой формат работы тебе комфортнее: офис, гибрид или полная удаленка? Почему?

Вопрос: Расскажи про свой прошлый опыт: как у вас было организовано взаимодействие в команде?

Вопрос: Что для тебя важно в коллективе? В какой команде тебе работалось лучше всего и почему?

Вопрос: Проводил(а) ли время с коллегами вне работы (корпоративы, совместные активности)? Как к этому относишься?

Вопрос: Есть ли у тебя хобби, увлечения помимо работы?

Вопрос: Куда хочешь расти профессионально? Видишь себя в будущем больше в управлении, в экспертизе или в архитектуре?

Вопрос: Как представляешь себе идеальный рабочий день?

На что реально обращает внимание HR в этих вопросах:

  • На честность и рефлексию. Если кандидат отвечает шаблонно ("хочу развиваться", "не люблю плохих людей"), это хуже, чем конкретные формулировки ("не люблю задачи без четких критериев приемки", "важно, чтобы код проходил ревью").

  • На ценности. Если вы интроверт и не любите корпоративы, а компания ищет "заводного аниматора" для сплочения команды — лучше проговорить это сразу.

  • На зрелость. Ответы про дедлайны и красные флаги показывают, был ли у человека негативный опыт и как он его переработал.

  • На приоритеты. Вопрос про выбор между офферами с одинаковой зарплатой — отличный способ понять, что для человека действительно важно (проект, люди, процессы, технологии, график).

3. Техническое интервью — самый важный этап

Здесь вас будут оценивать ваши будущие коллеги или технический эксперт. Интервью может проводить один человек, а может и несколько (панельное интервью). Длительность — около часа.

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

  1. Рассказ о себе и проектах (5-10 минут). Интервьюер слушает и задает уточняющие вопросы по резюме.

  2. Теоретическая часть (25-30 минут). Здесь мы и разделим вопросы на manual и automation. Важно понимать: если вы идете на manual, вас не будут гонять по устройству HashMap. Но по процессам, тест-дизайну и инструментам ручного тестирования — обязательно. Для автоматизаторов же знание теории тестирования также обязательно.

  3. Практическая часть (оставшееся время). Решение задач, написание кода, SQL-запросы.

3.1. Теоретическая часть для Manual QA

Теоретическая часть для Manual QA
Теоретическая часть для Manual QA

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

Сразу важное замечание: список вопросов ниже — не для заучивания, а для ориентира. На собеседовании могут спросить вообще всё что угодно, и количество возможных вопросов просто несчетное. Кто-то любит копать вглубь одной темы, кто-то — пройтись по верхам, но широко. Я постарался собрать самые частые и показательные вопросы, сгруппировав их по блокам для удобства. Если вы уверенно отвечаете на большую часть из них — скорее всего, с теорией у вас порядок.

ВОПРОСЫ ПО ТЕОРИИ ДЛЯ MANUAL QA

Блок 1: Основы тестирования

  • Что такое тестирование программного обеспечения? Дайте определение.

  • Перечислите основные цели тестирования.

  • В чем разница между статическим и динамическим тести��ованием?

  • Какие вы знаете виды тестирования по типу выполнения (ручное/автоматизированное)?

  • Кто может выступать в роли исполнителя тестирования (разработчик, тестировщик, пользователь)?

  • Назовите основные уровни тестирования.

  • Что такое модульное (unit) тестирование и кто его обычно выполняет?

  • Для чего нужно интеграционное тестирование?

  • Что проверяется на уровне системного тестирования?

  • Чем приемочное тестирование отличается от системного?

  • Что такое Definition of Ready (DoR) и зачем он нужен команде?

  • Какие критерии включает в себя Definition of Done (DoD)?

  • Чем DoR отличается от DoD? Приведите примеры.

  • Что такое Acceptance Criteria (AC) и где они используются?

  • Что такое Exit Criteria в контексте завершения тестирования?

  • Где тестировщик может найти требования и ожидаемый результат?

  • Перечислите основные активности в тестировании (от планирования до завершения).

  • Что происходит на этапе анализа тестирования?

  • В чем заключается проектирование тестов?

  • Что включает в себя реализация тестов?

Блок 2: Документы и отчеты

  • Что такое требования к ПО? Какие типы требований вы знаете?

  • Чем функциональные требования отличаются от нефункциональных? Приведите примеры.

  • Перечислите свойства качественных требований (акроним: например, "ПолПоПроОд").

  • Что значит, что требование должно быть тестируемым?

  • Как тестировщик может участвовать в тестировании требований?

  • Какие методы анализа требований вы знаете (ревью, прототипирование)?

  • Что такое рецензирование (review) требований?

  • Перечислите основные виды тестовой документации.

  • Что такое тест-кейс? Из каких основных атрибутов он состоит?

  • Что такое чек-лист и в каких случаях его удобно использовать?

  • В чем плюсы и минусы чек-листов по сравнению с тест-кейсами?

  • Для чего нужен тест-план? Какие разделы он содержит?

  • Чем мастер-тест-план отличается от тест-плана релиза?

  • Что такое отчет о тестировании и какую информацию он должен содержать?

  • Какие данные обязательно должны быть в баг-репорте?

  • Что такое тестовая стратегия и чем она отличается от тест-плана?

  • Для чего используется тест-сьют (набор тестов)?

  • Что такое тест-ран (прогон тестов)?

  • Какие данные являются тестовыми данными? Приведите примеры.

  • Что такое предусловие и постусловие в тест-кейсе?

  • В каком документе описываются Use Cases?

  • Какая документация служит источником для написания приемочных тестов?

  • Что такое SRS (Software Requirements Specification)?

Блок 3: Основные понятия

  • В чем разница между QA (Quality Assurance) и QC (Quality Control)?

  • Что такое верификация? На какой вопрос она отвечает?

  • Что такое валидация? На какой вопрос она отвечает?

  • Приведите примеры методов верификации и валидации.

  • Какие виды валидации на форме вы знаете (мгновенная, ограничивающая, отложенная)?

  • Что такое PSV (Process and Software Validation)? Где применяется?

  • Назовите и объясните 7 принципов тестирования.

  • Объясните принцип: "Тестирование демонстрирует наличие дефектов".

  • Что означает "Исчерпывающее тестирование невозможно"?

  • Почему раннее тестирование помогает экономить ресурсы?

  • В чем заключается "Парадокс пестицида"?

  • Что такое тестовая среда (Test Environment)? Из каких компонентов она состоит?

  • Какие виды тестовых сред вы знаете (DEV, QA, STAGING, PROD)?

  • Для чего нужна среда STAGING?

  • Чем тестовая среда отличается от продакшн-среды?

  • Дайте определения понятиям: ошибка (error), дефект (defect), отказ (failure).

  • Покажите цепочку возникновения проблемы: от действия человека до проявления в системе.

  • Что такое сбой (fault) и как он соотносится с отказом?

  • Перечислите этапы жизненного цикла тестирования (STLC).

  • Что происходит на этапе Test Closure (завершение тестирования)?

Блок 4: Модели разработки

  • Перечислите основные стадии разработки продукта (SDLC).

  • Какие модели разработки ПО вы знаете?

  • В чем суть водопадной модели (Waterfall)? Какие у нее плюсы и минусы?

  • Чем итеративная модель отличается от водопадной?

  • Что такое спиральная модель и для каких проектов она подходит?

  • В чем особенность V-модели? Как в ней отражено тестирование?

  • Что такое DevOps и как эта культура влияет на процессы разработки и тестирования?

Блок 5: Agile и Scrum

  • Назовите 4 принципа Agile-манифеста.

  • В чем разница между методологиями Scrum и Kanban?

  • Что такое спринт (Sprint) в Scrum?

  • Какие роли определены в Scrum?

  • За что отвечает Product Owner?

  • Какова роль Scrum Master'а?

  • Кто входит в Development Team?

  • Назовите основные артефакты Scrum.

  • Что такое Product Backlog и кто его ведет?

  • Что такое Sprint Backlog?

  • Что такое Increment (инкремент)?

  • Какие церемонии (митинги) проводятся в Scrum?

  • Для чего проводится Sprint Planning?

  • В чем цель ежедневного Daily Scrum?

  • Что происходит на Sprint Review (демо)?

  • Для чего нужна ретроспектива спринта (Retrospective)?

  • Что такое Velocity команды и как он рассчитывается?

  • Что такое Capacity команды?

  • Что такое релизная политика? Какие типы релизов бывают?

  • Что такое Semantic Versioning (MAJOR.MINOR.PATCH)?

  • Какие метрики DORA используются для оценки эффективности релизов?

Блок 6: Уровни и виды тестирования

  • Перечислите 4 основных уровня тестирования (иерархия).

  • Кто обычно пишет модульные тесты?

  • Что проверяется на интеграционном тестировании?

  • Какие методы интеграции вы знаете (Big Bang, Top-Down, Bottom-Up)?

  • Что такое системное тестирование?

  • Что такое приемочное тестирование? Какие у него подвиды (альфа, бета, UAT)?

  • Назовите 4 большие группы тестирования (по целям).

  • Что такое функциональное тестирование? Приведите примеры.

  • Что такое нефункциональное тестирование? Приведите примеры.

  • Что такое тестирование, связанное с изменениями?

  • Что такое структурное тестирование (white-box)?

  • Расскажите о тестировании безопасности (Security testing). Какие виды угроз ищут?

  • Что такое SQL-инъекция?

  • Что такое XSS (Cross-Site Scripting)?

  • Для чего проводится юзабилити-тестирование (Usability testing)?

  • Назовите 5 критериев юзабилити по Нильсену.

  • Чем UI-тестирование отличается от UX-тестирования?

  • Что такое тестирование доступности (Accessibility testing)?

  • Что такое гайдлайны WCAG?

  • Что проверяет тестирование совместимости (Compatibility testing)?

  • Чем кросс-браузерное тестирование отличается от кросс-платформенного?

  • Что такое тестирование локализации (Localization testing)?

  • Что проверяет тестирование интернационализации (Internationalization testing)?

  • Какие виды тестирования производительности вы знаете?

  • В чем разница между нагрузочным (Load) и стрессовым (Stress) тестированием?

  • Что такое объемное тестирование (Volume testing)?

  • Для чего нужно тестирование стабильности (Stability/Soak testing)?

  • Что такое Smoke-тестирование? Когда его проводят?

  • Что такое Sanity-тестирование? Чем оно отличается от Smoke?

  • Что такое регрессионное тестирование (Regression testing)?

  • Чем регрессионное тестирование отличается от ретеста (Re-testing)?

  • Что такое Build Verification Testing (BVT)?

  • Объясните концепцию пирамиды тестирования.

  • Что такое антипаттерн "Мороженое" (Ice Cream Cone)?

Блок 7: Баги и дефекты

  • Дайте определение дефекта (бага).

  • Опишите жизненный цикл бага (основные статусы).

  • Что означают статусы "Assigned", "Fixed", "Verified"?

  • В каких случаях баг получает статус "Reopened"?

  • Чем "Duplicate" отличается от "Not a Bug"?

  • Что такое классификация дефектов? По каким параметрам классифицируют?

  • Что такое Severity (серьезность) дефекта? Кто его определяет?

  • Перечислите градации Severity (от Blocker до Trivial).

  • Что такое Priority (приоритет) дефекта? Кто его назначает?

  • Может ли баг с High Severity иметь Low Priority? Приведите пример.

  • А может ли баг с Low Severity иметь High Priority? Приведите пример.

  • Какую серьезность обычно имеет опечатка в интерфейсе?

  • Что такое RCA (Root Cause Analysis) и для чего он нужен?

  • Расскажите о методике "5 почему" (5 Whys).

  • Для чего используется диаграмма Исикавы (Fishbone)?

  • Какие метрики качества багов вы знаете?

  • Что такое Defect Density?

  • Что показывает Defect Leakage? Почему это важная метрика для QA?

  • Что такое Defect Removal Efficiency (DRE)?

  • Какие основные атрибуты должны быть в баг-репорте?

  • Что должно быть в поле "Шаги к воспроизведению"?

  • Зачем в баг-репорте указывать окружение (Environment)?

Блок 8: Тест-дизайн

  • Что такое тест-дизайн?

  • Какие техники тест-дизайна вы знаете?

  • Объясните технику эквивалентного разделения (Equivalence Partitioning). Приведите пример.

  • Объясните технику анализа граничных значений (Boundary Value Analysis). Приведите пример.

  • В чем разница между этими двумя техниками?

  • Для чего используются таблицы принятия решений (Decision Tables)?

  • Что такое попарное тестирование (Pairwise Testing) и когда оно эффективно?

  • Опишите технику тестирования переходов состояний (State Transition Testing).

  • Что такое исследовательское тестирование (Exploratory Testing)?

  • Что такое тестирование на основе опыта (Error Guessing)? Приведите пример.

  • Что такое фаззинг (Fuzz Testing)?

  • В чем разница между тестированием "черного ящика" и "белого ящика"?

  • Какие техники относят к тестированию "серого ящика"?

  • Что такое тестирование на основе рисков (Risk-Based Testing)?

  • Какие типы тестовых стендов вы знаете?

  • Чем стенд ИФТ отличается от стенда ПСИ (в контексте финтеха)?

  • Для чего нужен стенд со стабами (Stab)?

  • Из чего состоит конфигурация тестового стенда (аппаратная/программная часть)?

Блок 9: Эстимация и метрики

  • Что такое эстимация в тестировании?

  • Какие методы оценки трудозатрат вы знаете?

  • Как работает метод "Planning Poker"?

  • Что такое метод аналогий?

  • Объясните метод оценки по трем точкам (PERT). Приведите формулу.

  • Какие факторы влияют на точность эстимации?

  • Какие метрики тестирования используются для отслеживания прогресса?

  • Что такое покрытие кода тестами?

  • Что такое плотность дефектов (Defect Density)?

  • Что такое среднее время на исправление дефекта?

Блок 10: API

  • Что такое API (Application Programming Interface)?

  • Какие виды API вы знаете (по архитектуре/протоколу)?

  • Что такое REST API? Какие принципы лежат в его основе (RESTful)?

  • Что такое SOAP API? В каком формате передаются данные?

  • Чем REST отличается от SOAP?

  • Что такое GraphQL? В чем его преимущество перед REST?

  • Для чего используется документация в API? Какие форматы документации знаете (OpenAPI, WSDL)?

  • Что такое WSDL?

  • Что такое OpenAPI (Swagger)?

  • Какие существуют токены для авторизации в API (Bearer, JWT, OAuth)?

  • Что такое JWT (JSON Web Token) и из каких частей он состоит?

  • Для чего нужен Refresh Token?

  • Что такое пагинация в API и зачем она нужна?

  • Какие параметры обычно используются для пагинации (limit, offset, page)?

  • Чем синхронное взаимодействие с API отличается от асинхронного?

  • Какие методы асинхронного взаимодействия вы знаете (Polling, WebSocket, WebHooks)?

  • Что такое WebHook?

  • Для чего нужна валидация OpenAPI спецификации в CI/CD?

  • Какие инструменты для валидации API вы знаете (Dredd, Spectral)?

  • Что такое cURL и для чего он используется?

  • Напишите cURL-запрос для отправки POST-данных в формате JSON.

  • Что такое Postman? Для чего он используется в тестировании API?

  • Какова иерархия (приоритет) переменных в Postman?

  • Что такое коллекция (Collection) в Postman и зачем она нужна?

  • Что такое SoapUI?

  • Что такое RESTful-системы?

  • Что такое XSD (XML Schema Definition) в контексте SOAP?

  • Что такое WADL?

  • Что такое WS-Security?

Блок 11: Сети и протоколы

  • Что такое сетевой протокол?

  • Назовите основные протоколы прикладного уровня и их порты (HTTP, HTTPS, FTP, SSH, DNS).

  • Для чего используется протокол SMTP?

  • Что такое протокол TCP? Какие у него особенности (надежность, соединение)?

  • Чем TCP отличается от UDP?

  • Что такое модель OSI? Перечислите ее 7 уровней.

  • Что такое модель TCP/IP? Сколько в ней уровней?

  • Как соотносятся уровни модели OSI и TCP/IP?

  • Что такое прокси-сервер? Какие виды прокси бывают (прямой, обратный)?

  • Для чего нужен обратный прокси (Reverse Proxy)?

  • Что такое VPN (Virtual Private Network) и как он работает?

  • Какие протоколы VPN вы знаете (OpenVPN, WireGuard)?

  • В чем разница между MAC-адресом и IP-адресом?

  • На каком уровне модели OSI работает MAC-адрес? А IP-адрес?

  • Что такое сниффер (анализатор трафика)? Приведите примеры (Wireshark, Fiddler).

  • Для чего используются снифферы в тестировании?

  • Что такое брандмауэр (файрвол)?

  • Что такое CMS (Content Management System)? Приведите примеры.

Блок 12: HTTP

  • Что такое HTTP? Какой порт используется по умолчанию?

  • Чем HTTPS отличается от HTTP? Что такое SSL/TLS?

  • Опишите процесс SSL/TLS Handshake.

  • Что такое публичный, приватный и сессионный ключи?

  • Какова структура HTTP-запроса?

  • Какова структура HTTP-ответа?

  • Что такое методы HTTP? Перечислите основные.

  • Что такое CRUD и как он соотносится с HTTP-методами?

  • Для чего используется метод GET? Каковы его особенности?

  • Для чего используется метод POST? Чем он отличается от GET?

  • Что означает идемпотентность метода HTTP? Какие методы идемпотентны?

  • Какие методы HTTP считаются безопасными (не изменяют состояние на сервере)?

  • Какие коды ответов HTTP вы знаете? Назовите основные группы (1xx, 2xx, 3xx, 4xx, 5xx).

  • Что означает код ответа 200 OK?

  • Что означает код ответа 201 Created?

  • Что означает код ответа 301 Moved Permanently?

  • Что означает код ответа 400 Bad Request?

  • Что означает код ответа 401 Unauthorized?

  • Что означает код ответа 403 Forbidden? Чем он отличается от 401?

  • Что означает код ответа 404 Not Found?

  • Что означает код ответа 500 Internal Server Error?

  • Что такое HTTP-заголовки (Headers)? Для чего они нужны?

  • Какие заголовки запроса вы знаете (Host, User-Agent, Authorization)?

  • Какие заголовки ответа вы знаете (Content-Type, Set-Cookie, Cache-Control)?

  • Что такое CORS (Cross-Origin Resource Sharing)? Какие проблемы он решает?

  • Какие заголовки связаны с CORS?

  • Что такое LocalStorage и SessionStorage? В чем разница?

  • Что такое куки (Cookies) и для чего они используются?

  • Какие виды куки вы знаете (сессионные, постоянные, HttpOnly)?

  • Чем куки отличаются от кэша браузера?

  • Что такое URI, URL и URN? В чем разница?

  • Что такое AJAX и для чего он используется?

  • Какие инструменты DevTools вы используете чаще всего?

  • Что можно увидеть на вкладке Network в DevTools?

  • Как с помощью DevTools эмулировать медленное соединение?

Блок 13: Архитектура ПО

  • Что такое монолитная архитектура? Каковы ее плюсы и минусы?

  • Что такое микросервисная архитектура?

  • В чем преимущества микросервисов перед монолитом?

  • Какие сложности возникают при работе с микросервисами?

  • Что такое клиент-серверная архитектура?

  • Какие виды клиент-серверной архитектуры вы знаете (2-уровневая, 3-уровневая)?

  • Что такое "толстый клиент" и "тонкий клиент"? Приведите примеры.

  • Для чего нужен балансировщик нагрузки (Load Balancer)?

  • Какие алгоритмы балансировки вы знаете (Round Robin, Least Connections)?

  • Чем отличается L4 балансировка от L7?

  • Дайте определения: идентификация, аутентификация, авторизация.

  • Чем оркестрация микросервисов отличается от хореографии?

  • Что такое синхронное и асинхронное взаимодействие в архитектуре?

  • Что такое мок (Mock) и стаб (Stub) в тестировании? Для чего они нужны?

  • Чем WireMock отличается от Mockito?

  • Что такое брокер сообщений (Message Broker)?

  • Для чего используются брокеры сообщений (Kafka, RabbitMQ)?

  • Что такое Apache Kafka? Какие ключевые понятия в ней есть (топик, партиция, продюсер, консьюмер)?

  • Чем Kafka отличается от RabbitMQ?

  • Что такое оффсет (offset) в Kafka?

  • Что такое EDA (Event-Driven Architecture)?

  • Что такое интеграционная шина (ESB)?

  • Что такое шлюз (API Gateway)? Какие функции он выполняет?

  • В чем разница между шлюзом и шиной?

  • Что такое виртуальная машина (VM) и для чего она используется в тестировании?

  • Что такое контейнеризация (Docker) и чем контейнер отличается от виртуальной машины?

Блок 14: Базы данных и SQL

  • Что такое база данных?

  • Что такое СУБД? Приведите примеры.

  • Какие модели баз данных вы знаете?

  • Что такое реляционная база данных?

  • Что такое NoSQL базы данных? Какие типы NoSQL БД бывают?

  • Назовите основные виды связей между таблицами в БД (1:1, 1:N, N:M).

  • Приведите пример связи "один ко многим".

  • Как реализуется связь "многие ко многим"?

  • Что такое первичный ключ (Primary Key)?

  • Что такое внешний ключ (Foreign Key)?

  • Что такое су��рогатный ключ?

  • Что такое индекс (Index) в БД и для чего он нужен?

  • Что такое транзакция? Какими свойствами (ACID) она обладает?

  • Что такое представление (View)?

  • Что такое репликация данных? Для чего она нужна?

  • Чем master-slave репликация отличается от master-master?

  • Что такое шардирование (Sharding)? Какую проблему оно решает?

  • Какие типы данных в SQL вы знаете (числовые, строковые, дата/время)?

  • Чем CHAR отличается от VARCHAR?

  • Что такое SQL (Structured Query Language)?

  • Какие группы операторов SQL вы знаете (DDL, DML, DCL, TCL)?

  • Что относится к операторам DDL (CREATE, ALTER, DROP)?

  • Что относится к операторам DML (SELECT, INSERT, UPDATE, DELETE)?

  • Напишите запрос SELECT для выбора всех данных из таблицы users.

  • Напишите запрос для выборки имени и возраста пользователей старше 18 лет.

  • Как отсортировать результаты запроса по какому-либо полю?

  • Как ограничить количество возвращаемых записей (LIMIT)?

  • Для чего используется оператор WHERE?

  • Какие операторы фильтрации вы знаете (IN, BETWEEN, LIKE)?

  • Для чего используется оператор JOIN?

  • Какие виды JOIN вы знаете (INNER, LEFT, RIGHT, FULL)?

  • Чем INNER JOIN отличается от LEFT JOIN?

  • Напишите запрос, который выведет всех пользователей и их заказы, включая пользователей без заказов.

  • Что такое агрегатные функции? Назовите их (COUNT, SUM, AVG, MAX, MIN).

  • Для чего используется оператор GROUP BY?

  • Чем HAVING отличается от WHERE?

  • Что делают операторы UNION и UNION ALL?

  • Для чего нужен оператор EXISTS?

Блок 15: Мобильное тестирование

  • Какие виды мобильных приложений существуют?

  • Чем нативное приложение отличается от гибридного и веб-приложения?

  • Что такое PWA (Progressive Web App)?

  • Какие элементы управления (UI controls) в мобильных приложениях вы знаете?

  • В чем заключаются особенности тестирования мобильных приложений?

  • Как влияет фрагментация устройств на стратегию тестирования?

  • Как тестировать поведение приложения при прерываниях (звонок, смс)?

  • Что такое жесты в мобильных приложениях? Какие жесты нужно проверять?

  • Как тестировать работу приложения при потере сети или ее переключении (Wi-Fi -> 4G)?

  • Что такое глубокие ссылки (Deep Links) и как их тестировать?

  • Как тестировать Push-уведомления?

  • Какие бывают состояния приложения (жизненный цикл)? Как тестировать переходы между ними?

  • Что такое разрешения (Permissions)? Как тестировать сценарии с разрешениями?

  • Что нужно проверить при тестировании установки и обновления приложения?

  • Как тестировать потребление батареи приложением?

  • Что такое гайдлайны (Apple HIG, Material Design) и зачем их знать тестировщику?

  • Назовите критерии выбора устройства для тестирования.

  • Какие способы установки приложений на устройство вы знаете (для iOS и Android)?

  • Что такое файлы .apk и .ipa?

  • Что такое кросс-платформенная разработка (React Native, Flutter)? Как это влияет на тестирование?

  • Чем эмулятор отличается от симулятора?

  • Какие плюсы и минусы тестирования на реальных устройствах?

  • Что такое облачные фермы устройств (BrowserStack, Firebase Test Lab)?

  • Что такое LogCat? Для чего он нужен тестировщику Android?

  • Что означают уровни логов в LogCat (V, D, I, W, E)?

  • Как с помощью ADB (Android Debug Bridge) установить приложение?

  • Напишите команду ADB для очистки данных приложения.

  • Как с помощью ADB эмулировать нажатие на экран?

  • Как с помощью ADB получить логи устройства?

  • Что такое жизненный цикл Activity в Android?

  • Какие методы жизненного цикла приложения в iOS вы знаете?

  • Что такое BDUI / SDUI (Backend/Server-Driven UI) и как это тестировать?

Блок 16: Логирование и метрики

  • Что такое логи и для чего они нужны?

  • Какие уровни логирования вы знаете (DEBUG, INFO, WARN, ERROR)?

  • На каком уровне логирования стоит фиксировать ошибку, не приводящую к падению?

  • Что такое ELK Stack? Из каких компонентов он состоит?

  • Какую роль в ELK играет Elasticsearch?

  • Для чего используется Logstash?

  • Что можно делать в Kibana?

  • Что такое KQL (Kibana Query Language)? Напишите пример запроса.

  • Как найти в Kibana все логи с уровнем ERROR за последний час?

  • Чем Grafana отличается от Kibana?

Блок 17: Типы данных и форматы

  • Что такое JSON? Опишите его структуру и типы данных.

  • Какие преимущества и недостатки JSON?

  • Что такое JSON Schema и для чего она нужна?

  • Что такое JSONPath? Как с его помощью получить значение поля?

  • Что такое XML? Чем он отличается от JSON?

  • Что такое YAML? Где он чаще всего используется (конфиги, CI/CD)?

  • Что такое CSV?

  • Что такое Protobuf (Protocol Buffers)? В чем его преимущество перед JSON?

  • Что такое Avro? Где он применяется (Kafka, Hadoop)?

Блок 18: Командная строка

  • Для чего нужна командная строка тестировщику?

  • Какие базовые команды CMD (Windows) вы знаете (dir, cd, copy, del)?

  • Что делает команда ipconfig?

  • Что делает команда ping?

  • Что такое PowerShell? Чем он отличается от CMD?

  • Что такое cmdlet в PowerShell?

  • Какие базовые команды Bash (Linux) вы знаете (ls, cd, pwd, mkdir)?

  • Что делает команда grep? Приведите пример.

  • Как посмотреть содержимое файла в Linux?

  • Как следить за изменениями в файле лога в реальном времени (tail -f)?

  • Как найти все процессы, запущенные пользователем (ps aux | grep user)?

  • Как завершить процесс по его PID (kill)?

  • Что делают операторы >, >> и | в командной строке?

  • Что такое bash-скрипт? Напишите простой скрипт для запуска тестов.

  • Что значит $? в bash?

  • Как в bash-скрипте передать параметр и обратиться к нему ($1, $2)?

  • Что такое curl и как с его помощью отправить GET-запрос?

  • Как с помощью curl отправить POST-запрос с JSON-телом?

  • Как передать токен авторизации в curl?

  • Для чего используется xargs?

Комментарий для manual'щиков:
Обратите внимание на вопросы про локализацию бага. Тут проверяется системность. Правильный ответ — не "ну, поклацаю ещё", а четкая последовательность: проверить консоль браузера (нет ли JS-ошибок), проверить вкладку Network (ушел ли запрос, какой пришел ответ), проверить логи бекенда, попробовать на другом браузере/окружении. Интервьюер хочет видеть инженерный подход, а не "метод тыка".

3.2. Теоретическая часть для Automation QA (Java)

Здесь глубина погружения в язык и инструменты должна быть гораздо выше. Вопросы делятся на несколько больших блоков: основы Java, ООП, коллекции, инструменты автоматизации, процессы.

И сразу важный дисклеймер, даже важнее, чем для manual-раздела. В автоматизации количество возможных вопросов вообще не поддается подсчету — стек слишком широкий, и каждая компания использует свой набор инструментов. Кто-то сидит на чистом Selenium, кто-то перешел на Playwright, где-то пишут на Java, а где-то на Python или JS. Поэтому список ниже — это скорее "джентльменский набор" тем, которые стоит знать. Но особое внимание нужно уделять конкретным инструментам, библиотекам и фреймворкам, которые указаны в вакансии. Если в требованиях есть Spring — готовьтесь к вопросам по Spring. Если пишут про Kafka — значит, будут спрашивать про брокеры сообщений. По ним с очень высокой вероятностью будут вопросы, потому что интервьюеры проверяют то, с чем вам предстоит работать каждый день.

ВОПРОСЫ ПО ТЕОРИИ ДЛЯ AUTOMATION QA (JAVA)

Теоретическая часть для Auto QA
Теоретическая часть для Auto QA

Блок 1: Основы автоматизации

  • Что такое автоматизированное тестирование и каковы его основные цели?

  • Какие тесты целесообразно автоматизировать, а какие — нет? Приведите примеры.

  • Каковы преимущества и недостатки автоматизации по сравнению с ручным тестированием?

  • Какие факторы влияют на выбор сценариев для автоматизации?

  • Дайте определения понятиям: идентификация, аутентификация, авторизация. Приведите пример последовательности этих процессов.

  • Какие существуют типы тестов, подходящие для автоматизации (регрессионные, smoke, критический путь)?

Блок 2: Git

  • Что такое Git и для каких целей он используется в разработке и тестировании?

  • В чем разница между централизованными (SVN) и децентрализованными (Git) системами контроля версий?

  • Опишите основные концепции Git: репозиторий, коммит, ветка.

  • Какие основные ветки существуют в модели Git Flow? Объясните их назначение (main, develop, feature, release, hotfix).

  • Назовите и объясните назначение базовых команд Git: clone, add, commit, push, pull, status, log.

  • В чем разница между командами git merge и git rebase?

  • Что делает команда git cherry-pick? В каких сценариях она может быть полезна?

  • Как временно сохранить незакоммиченные изменения, не создавая коммит? Какая команда для этого используется (git stash)?

  • Объясните разницу между git fetch и git pull.

  • Что такое git squash и как его можно выполнить?

  • Какими командами можно настроить имя пользователя и email в Git?

  • В чем отличие git revert от git reset? Какой из них безопаснее для использования в общей ветке?

  • Объясните назначение флагов: -m (для commit), -b (для checkout), --amend (для commit), -d и -D (для branch), -f (для push).

  • Что такое git blame и для чего он используется?

  • Как с помощью Git найти коммит, который внес ошибку (git bisect)?

Блок 3: CI/CD

  • Что такое CI/CD? Расшифруйте аббревиатуры и объясните концепции непрерывной интеграции, доставки и развертывания.

  • В чем разница между Continuous Delivery и Continuous Deployment?

  • Что такое пайплайн (Pipeline) в CI/CD? Опишите его типовую структуру (Source, Build, Test, Deploy).

  • Какие инструменты CI/CD вы знаете? (Jenkins, GitLab CI, GitHub Actions, TeamCity)

  • Какие преимущества дает внедрение CI/CD для команды тестирования?

  • Как выглядит типичный YAML-файл конфигурации для GitHub Actions или GitLab CI? Опишите его основные разделы (name, on, jobs, steps).

  • Что такое артефакты (artifacts) в контексте CI/CD и для чего они используются?

  • Как в пайплайне настроить запуск разных этапов (stages) и заданий (jobs)?

  • Что такое виртуализация и контейнеризация? В чем их принципиальное отличие?

  • Какие плюсы использования Docker для запуска автотестов?

  • Как Jenkins использует Jenkinsfile? В чем разница между декларативным и скриптовым синтаксисом Pipeline?

Блок 4: Тест-раннеры (JUnit / TestNG)

  • Для чего нужны тест-раннеры (JUnit, TestNG) в автоматизации?

  • Назовите основные аннотации JUnit 5 (@Test, @BeforeEach, @AfterAll, @DisplayName, @Disabled).

  • Как в JUnit 5 организовать параметризованные тесты? Какие аннотации для этого используются (@ParameterizedTest, @ValueSource, @CsvSource)?

  • Что такое assert в тестах? Какие основные assert-методы вы знаете в JUnit 5 (assertEquals, assertTrue, assertThrows)?

  • Чем Assertions отличаются от Assumptions в JUnit 5?

  • Как в JUnit 5 можно сгруппировать несколько проверок так, чтобы тест упал один раз со всеми ошибками (assertAll)?

  • Какие основные аннотации есть в TestNG (@Test, @BeforeMethod, @BeforeClass, @BeforeSuite)?

  • Как в TestNG реализовать параметризацию тестов с помощью @DataProvider?

  • Как в TestNG задать приоритет выполнения тестов (priority)?

  • Как в TestNG настроить зависимости между тестами (dependsOnMethods)?

  • Какие существуют способы повторного запуска упавших тестов (re-run failed tests) в JUnit 5 и TestNG?

  • Сравните JUnit 5 и TestNG. В каких случаях какой фреймворк предпочтительнее?

Блок 5: Системы сборки (Maven / Gradle)

  • Для чего нужны системы сборки (Maven, Gradle) в проектах автоматизации?

  • Что такое файл pom.xml в Maven? Опишите его структуру (groupId, artifactId, version, dependencies, plugins).

  • Что такое жизненный цикл Maven? Назовите основные фазы (clean, compile, test, package, install, deploy).

  • Что такое dependency и plugin в Maven?

  • В чем разница между фазами (phase) и целями (goal) в Maven?

  • Что такое build.gradle файл в Gradle? На каком языке он пишется?

  • Что такое задача (task) в Gradle?

  • Чем Gradle отличается от Maven с точки зрения производительности и гибкости конфигурации?

Блок 6: Локаторы

  • Что такое локаторы и зачем они нужны в UI-автоматизации?

  • Какие основные типы локаторов существуют в Selenium WebDriver?

  • Какой локатор считается самым быстрым и надежным? Почему?

  • Что такое CSS-селектор? Приведите примеры.

  • Что такое XPath? Какие бывают типы XPath (абсолютный и относительный)?

  • Что такое оси XPath? Для чего они используются? Приведите пример.

  • Назовите несколько полезных функций XPath (contains(), text(), starts-with(), last(), position()).

  • Сравните CSS-селекторы и XPath. Когда что лучше использовать?

  • Как написать XPath для поиска элемента по тексту, содержащему "Hello"?

  • Как найти элемент, который следует сразу за другим элементом, используя XPath?

Блок 7: Инициализация браузера и Selenium

  • Как правильно инициализировать WebDriver в автоматизированных тестах?

  • С какими нюансами можно столкнуться при работе с разными браузерами (Chrome, Firefox)?

  • Что такое WebDriverManager и зачем он нужен? Какие проблемы он решает?

  • Через какой паттерн проектирования чаще всего реализуется управление экземпляром WebDriver? В чем его суть (Singleton)?

  • Что такое JSON Wire Protocol? Какую роль он играет в Selenium?

  • Что такое Browser Capabilities (ChromeOptions, FirefoxOptions)? Для чего их используют?

  • Как запустить браузер в headless-режиме? Для чего это нужно?

  • Что такое неявные ожидания (Implicit Wait)? Как они задаются?

  • Что такое явные ожидания (Explicit Wait) и класс WebDriverWait? В чем их преимущество?

  • Какие Expected Conditions вы знаете (visibilityOfElementLocated, elementToBeClickable, alertIsPresent)?

  • Чем явные ожидания отличаются от неявных? Можно ли их смешивать?

  • Что такое Fluent Wait и чем он отличается от обычного явного ожидания?

  • Почему использование Thread.sleep() считается плохой практикой?

  • Какие исключения (exceptions) в Selenium вы знаете (NoSuchElementException, StaleElementReferenceException, TimeoutException)?

  • Когда возникает StaleElementReferenceException и как с ним бороться?

  • Для чего нужен класс Actions в Selenium? Какие действия он позволяет выполнять?

  • Как в Selenium переключиться на всплывающее окно (alert), принять или отклонить его?

  • Как работать с элементами внутри iframe?

  • Как выполнить JavaScript код через Selenium (JavascriptExecutor)?

  • Как переключаться между вкладками или окнами браузера (WindowHandle)?

  • Что такое Page Object Model? Опишите его структуру и преимущества.

  • Что такое Page Element / Component Object? Чем он отличается от Page Object?

  • Что такое Selenide? Какие задачи он упрощает по сравнению с чистым Selenium?

  • Что такое Selenoid? Какую инфраструктурную проблему он решает?

Блок 8: Playwright

  • Что такое Playwright? Кем разработан и какие браузеры поддерживает?

  • Каковы основные архитектурные отличия Playwright от Selenium (WebSocket vs HTTP, встроенные драйверы)?

  • Проведите сравнение Playwright и Selenium по ключевым параметрам: auto-waiting, изоляция тестов, скорость, работа с сетью.

  • Что такое Playwright Test Runner? В чем его преимущество перед использованием JUnit/TestNG для E2E-тестов?

  • Какие основные классы используются в Playwright Java (Playwright, Browser, BrowserContext, Page)?

  • В чем разница между Browser, BrowserContext и Page в Playwright?

  • Для чего нужен BrowserContext? Как он помогает в изоляции тестов?

  • Что такое локатор (Locator) в Playwright? Чем его поведение отличается от WebElement в Selenium (ленивость, auto-waiting)?

  • Какие встроенные методы для создания точных локаторов есть в Playwright (page.getByRole(), page.getByText(), page.getByTestId())?

  • Почему рекомендуется использовать getByRole вместо XPath/CSS?

  • Как работает auto-waiting в Playwright? Для каких действий оно применяется?

  • Какие методы для ожидания условий существуют в Playwright (waitForSelector, waitForFunction, waitForURL)?

  • Как в Playwright перехватывать и модифицировать сетевые запросы (page.route())?

  • Как в Playwright замокать ответ API?

  • Как в Playwright работать с несколькими вкладками или страницами?

  • Как включить запись видео или трассировки для отладки упавших тестов в Playwright?

  • Что такое Trace Viewer и как он помогает в анализе причин падения тестов?

  • Как в Playwright эмулировать мобильное устройство или задать геолокацию?

  • Как работать с iframe в Playwright?

  • Как обрабатывать диалоговые окна (alert, confirm) в Playwright?

  • Какие исключения специфичны для Playwright (TimeoutError, PlaywrightException)?

  • Как в Playwright отслеживать необработанные ошибки JavaScript на странице (WebError)?

Блок 9: API-тестирование

  • Для чего нужно тестировать API?

  • Что такое REST и SOAP? В чем их ключевые отличия?

  • Что такое сериализация и десериализация данных? Какие библиотеки для этого используются в Java (Jackson, Gson)?

  • Сравните Jackson и Gson. Какие аннотации из Jackson (@JsonProperty, @JsonIgnore) вы знаете?

  • Что такое Retrofit? Для чего он используется?

  • Что такое RestAssured? Какие ключевые BDD-методы он предоставляет (given(), when(), then())?

  • Как с помощью RestAssured проверить статус-код ответа?

  • Как с помощью RestAssured извлечь значение из JSON-ответа?

  • Что такое RequestSpecification и ResponseSpecification в RestAssured? Для чего они нужны?

  • Что такое AssertJ? В чем его преимущество перед стандартными asserts JUnit?

  • Какие методы AssertJ для проверки коллекций (hasSize, contains, extracting) вы знаете?

  • Что такое Awaitility и для каких целей его используют при тестировании асинхронных операций (в т.ч. API)?

  • Как с помощью Awaitility дождаться выполнения определенного условия?

Блок 10: Архитектура фреймворка

  • Что такое паттерн Page Object? Какие проблемы он решает?

  • Какие уровни (layers) можно выделить в хорошо структурированном фреймворке автоматизации (тесты, бизнес-логика, core)?

  • Что такое MVC? Из каких компонентов состоит?

  • Что такое BDD и Gherkin? Для чего нужны .feature файлы и ключевые слова (Given, When, Then)?

  • Какие инструменты используются для BDD-тестирования (Cucumber, SpecFlow)?

  • Что такое Akita? Какие основные компоненты в него входят (akitaScenario, AkitaPage, AkitaStepDefinitions)?

  • Как в Akita организована работа со страницами и элементами через аннотации (@Name, @FindBy)?

Блок 11: Логгеры, репортеры, метрики

  • Что такое логирование и зачем оно нужно в автотестах? Какие библиотеки для логов вы знаете (Log4j, SLF4J)?

  • Что такое репортер и для чего он нужен? Какие репортеры вы знаете (Allure, ExtentReports)?

  • Какие аннотации Allure используются для улучшения отчетов (@Epic, @Feature, @Story, @Step, @Severity, @Attachment)?

  • Как с помощью Allure прикрепить скриншот к отчету при падении теста?

  • Какие метрики автоматизации вы знаете (покрытие тестами, процент прохождения, flakiness, время выполнения)?

  • Что такое flaky-тесты и как с ними бороться?

Блок 12: Автоматизация мобильных приложений

  • Что такое Appium? Для каких платформ он используется?

  • Каковы основные принципы работы Appium (использование WebDriver, не требует изменения кода приложения)?

  • Что такое Appium Inspector и для чего он используется?

  • Какие существуют стратегии поиска элементов в Appium (Accessibility ID, XPath, Android UIAutomator, iOS Predicate)?

  • В чем разница между MobileElement, AndroidElement и IOSElement?

  • Какие инструменты для автоматизации Android вы знаете (Espresso, UI Automator)? А для iOS (XCUITest)?

  • Что такое Kaspresso? Какие преимущества он дает при написании тестов для Android?

  • Что такое WebdriverIO и для каких платформ он может использоваться?

  • Какие программы и инструменты входят в "скоуп" (набор) для запуска мобильных тестов (Appium Server, эмуляторы/симуляторы, реальные устройства)?

ВОПРОСЫ ПО JAVA

Вопросы по java
Вопросы по java

Блок 1: Типы данных

  • Какие типы данных существуют в Java? В чем разница между примитивными и ссылочными типами?

  • Перечислите все примитивные типы в Java, их размер в памяти и диапазоны значений.

  • Где хранятся примитивные типы, а где — ссылочные?

  • Что такое мутабельные и иммутабельные классы? Приведите примеры.

  • Почему класс String сделан иммутабельным? Какие преимущества это дает?

  • Какие классы-обертки (wrapper classes) вы знаете? Для чего они нужны?

  • Что такое автоупаковка (autoboxing) и распаковка (unboxing)? Приведите пример.

  • Какие проблемы могут возникнуть при использовании автоупаковки?

  • Чем отличается StringBuilder от String? В каких случаях какой использовать?

  • Объясните понятие "пул строк" (String Pool). Как в него попадают строки?

  • Что произойдет при сравнении строк через == и через метод equals()?

  • Для чего используется метод intern() у строк?

Блок 2: Ключевые концепции ООП

  • Что такое ООП? Назовите и объясните его основные принципы.

  • Что такое инкапсуляция? Как она реализуется в Java?

  • Что такое наследование? Какое ключевое слово используется для наследования?

  • Что такое полиморфизм? Объясните разницу между статическим и динамическим полиморфизмом.

  • Что такое абстракция? Чем она отличается от инкапсуляции?

  • Что такое переопределение (override) методов? Какие правила нужно соблюдать?

  • Что такое перегрузка (overload) методов? Чем она отличается от переопределения?

  • Можно ли перегрузить метод, изменив только тип возвращаемого значения?

  • Что такое абстрактный класс? Когда его следует использовать?

  • Что такое интерфейс? Какие изменения произошли в интерфейсах начиная с Java 8?

  • Чем абстрактный класс отличается от интерфейса? Проведите сравнительный анализ.

  • Можно ли создать объект абстрактного класса?

  • Может ли класс реализовывать несколько интерфейсов? А наследоваться от нескольких классов?

  • Что такое "методы по умолчанию" (default methods) в интерфейсах? Для чего они нужны?

  • Какие проблемы решает введение статических методов в интерфейсах?

  • Что такое множественное наследование и почему Java не поддерживает его для классов? Как интерфейсы обходят эту проблему?

Блок 3: Модификаторы и управление доступом

  • Какие модификаторы доступа существуют в Java? Опишите уровень доступа для каждого.

  • Что означает модификатор protected? Кто имеет доступ к protected членам?

  • Что такое package-private (доступ по умолчанию)?

  • Что означает ключевое слово final? Где его можно применять (класс, метод, переменная)?

  • Какие ограничения накладывает final на класс, метод и переменную?

  • Можно ли изменить значение final переменной-ссылки? А состояние объекта, на который она указывает?

  • Что означает ключевое слово static? Где его можно применять?

  • В чем разница между статическим и нестатическим методом?

  • Можно ли обратиться к нестатическому методу из статического контекста? Почему?

  • Для чего используются статические блоки инициализации?

  • Объясните разницу между final, finally и finalize().

  • Что такое super и this? Где они используются?

Блок 4: Операторы и циклы

  • Какие условные операторы вы знаете? Напишите синтаксис if-else и switch.

  • Какие типы поддерживает оператор switch? (до Java 7, Java 7+, Java 14+)

  • Какие циклы существуют в Java? В чем разница между while и do-while?

  • Опишите синтаксис цикла for и цикла for-each.

  • Когда удобнее использовать цикл for-each, а когда обычный for?

  • Что такое break и continue? Для чего они используются в циклах?

  • Можно ли использовать break с меткой? Приведите пример.

  • Какие операторы сравнения вы знаете? В чем разница между == и equals()?

Блок 5: Работа с исключениями

  • Что такое исключение в Java? Для чего нужен механизм исключений?

  • Опишите иерархию классов исключений (Throwable, Error, Exception).

  • В чем разница между проверяемыми (checked) и непроверяемыми (unchecked) исключениями?

  • Приведите примеры checked и unchecked исключений.

  • Какие ключевые слова используются для обработки исключений?

  • Опишите конструкцию try-catch-finally. В каком порядке должны следовать блоки?

  • Может ли блок catch перехватывать несколько типов исключений?

  • Для чего нужен блок finally? Всегда ли он выполняется?

  • В чем разница между throw и throws?

  • Что произойдет, если в блоке finally выбросить исключение?

  • Что такое try-with-resources? Какое условие должно выполняться для ресурса?

  • Какие преимущества дает try-with-resources?

  • Что такое "подавленные исключения" (suppressed exceptions)?

Блок 6: Современные API

  • Что такое лямбда-выражения? Какова их цель в Java?

  • Что такое функциональный интерфейс? Приведите примеры встроенных функциональных интерфейсов (Predicate, Consumer, Function, Supplier).

  • Как аннотация @FunctionalInterface помогает при создании функционального интерфейса?

  • Что такое Stream API? Для чего он используется?

  • Какие существуют типы операций в Stream API (промежуточные и терминальные)? Приведите примеры.

  • Что означает "ленивость" (laziness) Stream API?

  • В чем разница между map и flatMap?

  • Что такое метод collect? Какие встроенные коллекторы (Collectors) вы знаете (toList, groupingBy)?

  • Как создать параллельный стрим? Какие могут быть подводные камни при его использовании?

  • Что такое Optional? Для чего он нужен? Как избежать NullPointerException с его помощью?

Блок 7: Коллекции (Java Collections Framework)

  • Что такое Java Collections Framework? Какие основные интерфейсы в него входят?

  • Опишите иерархию интерфейсов Collection и Map.

  • В чем разница между List, Set и Queue?

  • Расскажите о реализации ArrayList. Как он устроен внутри? Каковы его временные сложности основных операций?

  • Расскажите о реализации LinkedList. Каковы его временные сложности? Когда его лучше использовать вместо ArrayList?

  • Проведите сравнение ArrayList и LinkedList.

  • Расскажите о реализации HashSet. Как он обеспечивает уникальность элементов?

  • Как работает HashMap внутри? Опишите его структуру (массив buckets, связный список/дерево).

  • Что такое коллизия в HashMap и как она разрешается?

  • Что произойдет, если в HashMap добавить элемент с уже существующим ключом?

  • Как работает метод put() в HashMap?

  • Как работает метод get() в HashMap?

  • Что такое capacity (емкость) и load factor (коэффициент загрузки) в HashMap? Как они влияют на производительность?

  • В чем разница между HashMap, LinkedHashMap и TreeMap?

  • Что такое ConcurrentHashMap? Чем он отличается от Hashtable?

  • Какие методы для работы с коллекциями вы знаете (sort, reverse, shuffle)?

  • Как получить синхронизированную коллекцию?

  • Что такое fail-fast и fail-safe итераторы?

Блок 8: Глубокие концепции Java

  • Что такое коллизия в контексте хэш-таблиц?

  • Что такое рефлексия (reflection)? Для чего она используется? Каковы ее недостатки?

  • Какие основные классы и пакеты используются для рефлексии (java.lang.reflect, Class)?

  • Можно ли с помощью рефлексии изменить значение private static final поля?

  • Что такое хэш-таблица? Из каких ключевых элементов она состоит?

  • Что такое стек и очередь? В чем разница между ними (LIFO vs FIFO)?

Блок 9: Структуры данных и обобщения (Generics)

  • Что такое hashCode() и equals()? Какие правила существуют для их переопределения?

  • Почему при переопределении equals() всегда нужно переопределять hashCode()?

  • Что произойдет, если переопределить equals(), но не переопределить hashCode(), и использовать объект в HashMap?

  • Какие требования к хэш-функции для эффективной работы хэш-таблицы?

  • Что такое generics (обобщения) в Java? Для чего они нужны?

  • Как работают generics под капотом? Что такое стирание типов (type erasure)?

  • Какие преимущества дает использование generics?

  • Что такое "сырые типы" (raw types)? Почему их использование не рекомендуется?

  • Что такое List<?>? Чем он отличается от List<Object>?

  • Объясните понятия ковариантности, контравариантности и инвариантности в контексте generics.

  • Что такое wildcards ( ? extends T и ? super T )? Когда какой использовать? (PECS - Producer Extends, Consumer Super).

Блок 10: Управление памятью и работа со ссылками

  • Опишите структуру памяти JVM (Heap, Stack, Method Area). Что хранится в каждой области?

  • В чем разница между памятью стека (Stack) и кучи (Heap)?

  • Что такое сборщик мусора (Garbage Collector)? Как он работает?

  • Какие существуют типы ссылок в Java (Strong, Soft, Weak, Phantom)?

  • Для чего нужны мягкие (SoftReference) и слабые (WeakReference) ссылки?

  • Что такое метод finalize()? В чем его недостатки? Почему он считается устаревшим?

  • Какие есть альтернативы finalize() для очистки ресурсов (AutoCloseable, try-with-resources, Cleaner)?

  • Что такое утечка памяти (memory leak) в Java? Приведите примеры.

  • В чем разница между передачей параметров по значению (call-by-value) и по ссылке (call-by-reference)? Какой подход используется в Java?

Блок 11: Фундаментальные концепции

  • Какие методы есть у класса Object? Назовите и кратко опишите их.

  • Что такое JVM, JRE и JDK? В чем разница между ними?

  • Что такое точка входа в программу на Java? Опишите сигнатуру метода main.

  • Что такое пакет (package) в Java? Для чего он нужен?

  • Что такое модификатор native?

  • Что такое strictfp?

  • Что такое transient и volatile?

  • Расскажите о типах классов: обычный, абстрактный, вложенный, анонимный, final.

  • Что такое метод? Из каких частей состоит объявление метода?

  • Какие существуют типы методов? (статические, экземплярные, абстрактные, default, private в интерфейсах и т.д.)

  • Что такое конструктор? Чем он отличается от метода?

  • Можно ли вызвать конструктор явно после создания объекта?

  • Что такое блоки инициализации (instance initializers) и статические блоки инициализации?

Блок 12: Архитектурные подходы и паттерны проектирования

  • На какие группы делятся паттерны проектирования? Приведите примеры из каждой группы.

  • Что такое паттерн Singleton? Какие способы его реализации в Java вы знаете?

  • Какие проблемы паттерна Singleton вы знаете?

  • Что такое паттерн Factory Method?

  • Что такое паттерн Builder? Где он применяется?

  • Назовите и кратко объясните принципы SOLID.

  • Приведите пример нарушения и соблюдения принципа единственной ответственности (Single Responsibility).

  • Что означает принцип открытости/закрытости (Open/Closed)?

  • Объясните принцип подстановки Барбары Лисков (Liskov Substitution) своими словами.

  • Для чего нужен принцип разделения интерфейсов (Interface Segregation)?

  • Что такое инверсия зависимостей (Dependency Inversion) и внедрение зависимостей (Dependency Injection)?

  • Что означают принципы DRY, KISS, YAGNI?

Комментарий для automation'щиков:
Обратите внимание на глубину вопросов по коллекциям. Интервьюеру важно понять, не заучивали ли вы поверхностно. Вопрос про константный hashCode в HashMap — это классика. Он проверяет понимание, что в этом случае все объекты попадут в одну корзину, и HashMap деградирует до списка, что убивает весь смысл её использования (скорость поиска станет O(n)).
Также важны вопросы про процессы и инструменты. Показать, что вы не просто пишете тесты, но и думаете над архитектурой, настройкой CI, выбором инструментов — это путь к сильному сеньору.

4. Лайвкодинг: чего ожидать

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

ВОПРОСЫ И ЗАДАЧИ ПО ЛАЙВКОДИНГУ JAVA

Лайвкодинг java
Лайвкодинг java

Блок 1: Stream API

  1. Дан список чисел List.of(5, 6, 10, 67, 8, 4, 3). Найти максимальное число, используя Stream API.

  2. Из того же списка чисел найти общее количество элементов.

  3. Из того же списка чисел найти сумму всех нечетных чисел.

  4. Дан список чисел List.of(1, 2, 3, 4, 5). Преобразовать его так, чтобы четные числа умножить на 100, а от нечетных отнять 100.

  5. Дан список чисел List.of(1, 2, 3, -4, 5). Преобразовать все отрицательные числа в положительные.

  6. Дан список имен List.of("Андрей", "Максим", "Антон", "Павел", "Егор"). Отфильтровать имена, начинающиеся на букву "А".

  7. Дан список чисел List.of(1, 2, 2, 3, 4, 4, 4, 5, 5, 7, 8, 8, 9, 9, 10). Удалить все дубликаты, используя Stream.

  8. Дан массив чисел int[] sortedList = {1, 2, 2, 3, 4, 4, 4, 5, 5, 7, 8, 8, 9, 9, 10};. Удалить все дубликаты, используя коллекции (HashSet).

  9. Дан список чисел List.of(45, 15, 24, 12, 95). Отсортировать его в натуральном порядке и вывести в консоль через пробел.

  10. Дан список чисел List.of(5, 7, 3, 6, 2). Найти сумму четных и сумму нечетных чисел отдельно.

  11. Дан список чисел List.of(-10, 85, -6, -3, 8). Найти максимальное число и сумму нечетных чисел.

  12. Дан список чисел List.of(45, 15, 24, 12, 95). Найти минимальное число.

  13. Дан список строк List.of("I", "am", "a", "tester"). Собрать все строки в одну, разделяя их пробелом, используя Collectors.joining().

Блок 2: Коллекции (List, Set, Map)

  1. Создать ArrayList строк, содержащий несколько дубликатов ("Portugal", "Spain", "France", "Portugal"). Вывести список без повторений, используя HashSet.

  2. Дан HashMap<Integer, Integer>. Посчитать сумму всех ключей и всех значений. (Решить циклом for и через Stream API).

  3. Дан HashMap<Integer, List<Integer>>. Посчитать сумму всех ключей и всех целых чисел, содержащихся во всех списках-значениях.

  4. Дан HashMap<Integer, String>. Поменять местами ключи и значения, чтобы получить HashMap<String, Integer> (учесть возможные коллизии ключей). Решить циклом for и через Stream API.

  5. Дан массив целых чисел. С помощью HashMap подсчитать, сколько раз встречается каждое число.

  6. Дан массив строк. С помощью HashMap подсчитать, сколько раз встречается каждое слово.

  7. Есть список чисел List.of(1, 2, 2, 3, 4, 4, 4, 5, 6, 7, 8, 8, 9, 9, 10). Удалить дубликаты, сохранив порядок элементов.

  8. Дан список строк List.of("яблоко", "банан", "киви", "апельсин", "груша"). Отсортировать список по длине строки.

Блок 3: Работа со строками (String, StringBuilder)

  1. Перевернуть строку: "раз два три четыре пять". Написать минимум 3 способа (цикл for с двумя индексами, цикл for со счетчиком, через StringBuilder).

  2. Реализовать метод, который принимает строку и символ, и возвращает количество вхождений этого символа в строку (без учета регистра). Пример: method("Aligator", 'a') -> 2.

  3. Реализовать метод, который проверяет, является ли строка палиндромом (учитывая пробелы и регистр). Пример: "Аргентина манит негра" -> true.

  4. Разделить строку "I love photo" на отдельные слова и вывести каждое слово на новой строке.

  5. Реализовать метод, который принимает строку и возвращает самую длинную подстроку, состоящую из повторяющихся символов. Если таких несколько, вернуть самую левую. Пример: "11225553377755544411" -> "555".

  6. Удалить все пробелы из строки "Мы готовимся к интервью".

  7. Напишите программу, которая выводит заданную строку n раз, разделяя каждое повторение заданным разделителем (например, \n).

  8. Заменить в строке каждое второе вхождение подстроки. Пример: Заменить "Object-oriented programming" на "OOP" в большом тексте.

Блок 4: Алгоритмы и логика

  1. Реализовать метод, проверяющий корректность скобочной последовательности для скобок (), [], {}. Пример: "([{}])" -> true, "([{)]}" -> false.

  2. Реализовать метод, вычисляющий факториал числа. Написать две версии: итеративную (циклом) и рекурсивную.

  3. Реализовать метод, который проверяет, являются ли две строки анаграммами. Пример: "канонада" и "анаконда" -> true, "стол" и "стул" -> false.

  4. Вывести в консоль первые n чисел последовательности Фибоначчи (где n задано). Подсчитать их сумму.

  5. Реализовать метод, который находит максимальное число в массиве целых чисел (не используя Collections.max или Stream API).

  6. Дан массив целых чисел. Найти среднее арифметическое всех элементов.

  7. Реализовать метод, который принимает HashMap<Integer, String> и ключ, и возвращает строку с информацией о студенте или сообщение "no such student", если ключ не найден.

  8. Написать программу, которая принимает строку и выводит ее "задом наперед", используя Scanner для ввода.

  9. Дан список чисел List.of(1, 2, 2, 3, 4, 4, 4, 5, 6, 7, 8, 8, 9, 9, 10). Создать из него список только с уникальными значениями, но без использования метода distinct() и без создания промежуточного Set. (Подсказка: можно использовать циклы и проверки, но это неэффективно. Цель - понять алгоритм).

Блок 5: Специальные задачи

  1. Проверка email. Дан массив строк с email-адресами. Проверить, какие из них соответствуют шаблону email (например, содержат @, домен и т.д.) с помощью регулярного выражения.

  2. Enum. Создать enum Season с временами года. Написать метод, который принимает Season и выводит его русскоязычное название, используя switch.

  3. Разворот строки рекурсивно. Реализовать метод public static String reverseRecursively(String str), который разворачивает строку с помощью рекурсии.

  4. Циклический сдвиг. Написать метод, который циклически сдвигает элементы массива вправо на k позиций. Пример: [1,2,3,4,5] и k=2 -> [4,5,1,2,3].

  5. Поиск элемента. Реализовать бинарный поиск элемента в отсортированном массиве целых чисел.

5. SQL на собеседовании QA

SQL нужен всем. И manual, и automation. Умение написать запрос для проверки данных или подготовки тестовых данных — must-have.

Лайвкодинг SQL
Лайвкодинг SQL

ЗАДАЧИ ПО SQL

Блок 1: Базовые запросы и фильтрация (SELECT, WHERE)

  1. Задача: Есть таблица Employees с колонками name, department, salary. Напиши запрос, который выведет имена и зарплаты всех сотрудников.

  2. Задача: Есть таблица Employees с колонками name, department, salary. Выведи всех сотрудников из отдела 'IT'.

  3. Задача: Есть таблица Employees с колонками name, salary. Найди сотрудников с зарплатой больше 5000.

  4. Задача: Есть таблица Employees с колонками name, hire_date. Выведи сотрудников, которые были наняты после 1 января 2020 года.

  5. Задача: Есть таблица Employees с колонками name, department. Найди сотрудников из отделов 'HR' или 'Sales'.

  6. Задача: Есть таблица Employees с колонками name, salary. Выведи сотрудников, у которых зарплата находится в диапазоне от 3000 до 7000.

  7. Задача: Есть таблица Employees с колонками name. Найди сотрудников, чье имя начинается на букву 'А'.

Блок 2: Сортировка, группировка и агрегатные функции (ORDER BY, GROUP BY, HAVING)

  1. Задача: Есть таблица Employees с колонками name, salary. Выведи список сотрудников, отсортированный по зарплате от самой высокой к самой низкой.

  2. Задача: Есть таблица Employees с колонками name, department. Посчитай общее количество сотрудников.

  3. Задача: Есть таблица Employees с колонками name, department. Посчитай количество сотрудников в каждом отделе.

  4. Задача: Есть таблица Employees с колонками department, salary. Найди среднюю зарплату по отделу 'Sales'.

  5. Задача: Есть таблица Employees с колонками department, salary. Посчитай максимальную и минимальную зарплату по каждому отделу.

  6. Задача: Есть таблица Employees с колонками department, salary. Найди отделы, в которых средняя зарплата превышает 6000.

  7. Задача: Есть таблица Orders с колонками customer_id, order_amount. Выведи customer_id и общую сумму его заказов только для тех клиентов, у которых общая сумма заказов больше 1000.

Блок 3: JOINs (Работа с несколькими таблицами)

  1. Задача: Есть таблица Employees (id, name) и таблица Departments (id, department_name). Напиши запрос, который выведет имя сотрудника и название его отдела, используя INNER JOIN.

  2. Задача: Есть таблица Customers (id, name) и таблица Orders (id, customer_id, amount). Выведи всех клиентов и их заказы. Клиенты без заказов также должны быть выведены (с NULL в полях заказа).

  3. Задача: Есть таблица Students (id, name) и таблица Courses (id, title), а также таблица-связка StudentCourses (student_id, course_id). Напиши запрос, который выведет имена студентов и названия курсов, на которые они записаны.

  4. Задача: Есть таблица Employees (id, name, manager_id), где manager_id ссылается на id другого сотрудника (начальника). Выведи список сотрудников с именами их непосредственных начальников. (SELF JOIN)

Блок 4: Подзапросы и обновление данных (Subqueries, UPDATE, DELETE)

  1. Задача: Есть таблица Employees (name, department, salary). Найди сотрудников, чья зарплата выше средней зарплаты по компании. (Использовать подзапрос).

  2. Задача: Есть таблица Products (product_name, price, category_id). Найди название продукта с самой высокой ценой в каждой категории. (Коррелированный подзапрос или оконная функция).

  3. Задача: Есть таблица Orders (customer_id, order_date). Найди клиентов, у которых нет ни одного заказа. (Использовать NOT EXISTS или LEFT JOIN).

  4. Задача: Есть таблица Employees (name, department, salary). Увеличь зарплату на 10% всем сотрудникам из отдела 'IT'. (UPDATE).

  5. Задача: Есть таблица Logs (created_at). Удали все записи из таблицы логов, которые старше 2023 года. (DELETE).

Блок 5: Проектирование и модификация структуры (DDL)

  1. Задача: Создай таблицу Users с колонками id (автоинкремент, первичный ключ), username (уникальный, не пустой), email и created_at (дата создания по умолчанию — текущая дата).

  2. Задача: В уже существующую таблицу Employees добавь колонку phone_number типа VARCHAR(20).

  3. Задача: Измени тип данных колонки salary в таблице Employees с INT на DECIMAL(10,2).

  4. Задача: Добавь ограничение внешнего ключа в таблицу Orders, чтобы колонка customer_id ссылалась на колонку id в таблице Customers.

  5. Задача: Удали таблицу OldLogs из базы данных.

Блок 6: Продвинутые концепции

  1. Задача: Есть таблица Employees (name, department, salary). Напиши запрос, который присвоит ранг (rank) каждому сотруднику внутри его отдела на основе размера зарплаты (самая высокая зарплата — ранг 1). (Использовать оконную функцию RANK() или DENSE_RANK()).

  2. Задача: Есть таблица Orders (id, customer_id, amount, order_date). Напиши запрос, который выведет для каждого заказа его сумму, дату и накопительную сумму заказов по данному клиенту. (Использовать оконную функцию SUM() OVER (PARTITION BY ... ORDER BY ...)).

  3. Задача: Есть таблица Products (product_name, price). Напиши запрос, который выведет название продукта и его цену, а также разницу в цене между этим продуктом и предыдущим (в порядке возрастания цены). (Использовать функцию LAG()).

  4. Задача: Напиши транзакцию (BEGIN TRANSACTION...COMMIT), которая переводит 100 единиц со счета account_id = 1 на счет account_id = 2 в таблице Accounts, гарантируя, что в случае ошибки ни одно изменение не сохранится.

  5. Задача: Есть таблица Employees (name, department, salary). Создай представление (View) HighEarners, которое показывает сотрудников с зарплатой выше 8000.

6. Вопросы на логику и мышление

Иногда интервьюеры любят задавать "задачки на подумать". Не для того, чтобы завалить, а чтобы увидеть, как вы рассуждаете. Это может быть классика вроде "почему люки круглые" или что-то около-техническое, например: "Как бы ты тестировал лифт?" или "Как проверить, что стилус работает на всей площади экрана планшета?".

Совет: Рассуждайте вслух, задавайте уточняющие вопросы, не бойтесь ошибиться. Ход мыслей важнее ответа.

7. Вопросы от кандидата интервьюерам

Отсутствие вопросов на собеседовании — это плохой сигнал. Это показывает низкую заинтересованность. Обязательно подготовьте 3-5 вопросов заранее.

Вопросы от кандидата интервьюерам
Вопросы от кандидата интервьюерам

Что можно спросить:

  • О процессе: Как у вас выстроен процесс code review для автотестов?

  • О команде: С какими трудностями сейчас сталкивается команда тестирования?

  • О задачах: Как распределяются задачи между manual и automation инженерами? Есть ли у нас pure manual?

  • О развитии: Есть ли возможность менторинга или обучения за счет компании?

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

8. Знакомство с командой

Знакомство с командой
Знакомство с командой

Финальный этап перед оффером. Здесь уже не проверяют технические скиллы (если только случайно). Оценивают soft skills: насколько вы комфортны в общении, разделяете ли ценности, как реагируете на обратную связь. Будьте собой, но старайтесь быть открытыми и позитивными. Именно после этого этапа иногда отказывают сильным технарям, которые показались высокомерными или "сложными" в общении.

9. Заключение

Offer
Offer

Собеседование — это всегда дорога с двусторонним движением. Компания выбирает вас, а вы — компанию. Не бойтесь уточнять детали, задавать вопросы и отказываться, если что-то не устраивает.

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

Готовьтесь, но не заучивайте. Систематизируйте знания, вспомните свои проекты, и всё получится. Удачи на собеседованиях и щедрых офферов!

Спасибо за внимание
Спасибо за внимание

🎁 Бонус для тех, кто дошел до конца

Если вы осилили эту статью до последней строчки — вы настоящий QA-красавчик) Для вас — заслуженный бонус.

Бонус
Бонус

Помните, я говорил, что собирал эти вопросы из десятков реальных собеседований? Так вот, все это время рядом со статьей рос еще один проект — GitHub-репозиторий, в котором есть ответы на ВСЕ вопросы из этой статьи (и даже больше).

👉 github.com/makurea/Testing-Literature

Это мой личный проект, который рос параллельно со статьей. Последний коммит был literally вчера 😉 Считайте это моим подарком тем, кто хочет копнуть глубже.