Вопросы с собеседований для тестировщиков: AQA Python
Собеседование автоматизатора на Python: типы и ООП, pytest, Selenium и Playwright, Page Object, API-тесты, Git и CI. На вопросы отвечаешь своими словами, и Йова разбирает ответ, а задания на код пишешь в редакторе, их проверяют скрытые тесты.
- Задач
- 80
- Среда
- Йова в роли интервьюера и live coding
- Тариф
- Только Pro

Что тренируем
- Python: типы и память, функции, декораторы и генераторы, ООП
- pytest, стабильность автотестов и тест-данные
- UI-автотесты на Selenium и Playwright, Page Object и архитектура
- API-автотесты, Git, CI/CD, Docker и отчёты, ревью кода
Как устроена проверка
На вопросы отвечаете своими словами, и Йова разбирает ответ; задания на код пишете в редакторе, их проверяют скрытые тесты и они работают всегда. После зачёта — ответ сеньора или эталонное решение. Когда Йова выключена или дневной бюджет исчерпан, ответы на вопросы не проверяются до полуночи по МСК; черновик сохраняется.
Среда: Йова в роли интервьюера и live coding. Всё работает в браузере, устанавливать ничего не нужно.
Уровни и число задач
Четыре уровня. Следующий открывается, когда решена треть задач предыдущего (30 %).
| Уровень | Задач | Открывается |
|---|---|---|
| Простой | 20 | сразу |
| Средний | 20 | после 6 из 20 задач уровня «Простой» |
| Сложный | 20 | после 6 из 20 задач уровня «Средний» |
| Продвинутый | 20 | после 6 из 20 задач уровня «Сложный» |
Примеры задач
По задаче с простого и продвинутого уровней и две со среднего, с условием как в тренажёре. Проверка, подсказки и справочник открываются после регистрации.
- Простой
Операторы == и is
Собеседование на AQA Python в «ЙоваБанк». Интервьюер открывает на общем экране тест из вашего тестового задания: в одной проверке стоит
==, в соседней —is. - Средний
Анаграммы
Live coding на собеседовании: «Реализуйте функцию, которая определяет, являются ли два слова анаграммой. Пример: кабан — банка».
Напишите функцию
is_anagram(a: str, b: str) -> bool. Два слова — анаграммы, если одно получается из другого перестановкой букв: каждая буква встречается в обоих словах одинаковое число раз. Регистр не важен; кроме букв, других символов в словах нет.Примеры из условия:
is_anagram("кабан", "банка")→Trueis_anagram("Кабан", "банка")→Trueis_anagram("кабан", "банкет")→False
Две пустые строки считаются анаграммами. Проверяются примеры из условия, слова разной длины, одни и те же буквы в разном количестве, пустые строки и латиница.
- Средний
Дубликаты в списке
Задача из тестового задания на AQA Python: «Найти дубликаты чисел. Входные данные: [1, 2, 3, 2, 4, 1, 5, 2]. Результат: [1, 2]».
Напишите функцию
find_duplicates(numbers: list[int]) -> list[int]: она возвращает числа, которые встречаются в списке больше одного раза. Каждое такое число попадает в результат один раз, сколько бы раз оно ни повторялось, а сам результат отсортирован по возрастанию — как в примере из условия. Исходный список функция не меняет.Примеры:
find_duplicates([1, 2, 3, 2, 4, 1, 5, 2])→[1, 2]find_duplicates([1, 2, 3])→[]find_duplicates([3, 1, 3, 1])→[1, 3]
Проверяются примеры, пустой список, один элемент, число, повторённое трижды, отрицательные числа, порядок результата и то, что входной список после вызова остался прежним.
- Продвинутый
Повтор при StaleElementReferenceException
Live coding на собеседовании в «ЙоваБанк»: «Страница операции перерисовывается сама — статус платежа обновляется по таймеру, и тест время от времени падает с
StaleElementReferenceException. Напишите декоратор, который повторяет метод Page Object при протухшей ссылке, и примените его к чтению статуса».Браузера здесь нет: работает учебная заглушка Selenium — пакет
selenium/в файлах задачи (только для чтения, подробности — в docstringselenium/webdriver/__init__.py).find_element(by, value)ищет элемент по таблице локаторов страницы, каждое действие пишется в журналdriver.log, а протухшая ссылка на элемент при любом обращении бросаетStaleElementReferenceExceptionизselenium.common.exceptions.status = driver.find_element(By.CSS_SELECTOR, ".status") # ...страница перерисовалась... status.text # StaleElementReferenceException: stale element reference: css selector=.status print(driver.log) # [('find', 'css selector', '.status')]Допишите заготовку:
retry_on_stale(attempts=3)— декоратор с параметром. Обёрнутая функция вызывается заново, если бросилаStaleElementReferenceException, но всего — не большеattemptsвызовов; если протухли все попытки, наружу летит последнееStaleElementReferenceException. Любое другое исключение, в том числеNoSuchElementException, не повторяется и сразу летит наружу. Аргументы и результат проходят насквозь, имя и docstring функции сохраняются.attemptsменьше 1 —ValueErrorсразу, при вызовеretry_on_stale(...);OperationPage.status_text()— возвращает текст статуса по локаторуSTATUSиз заготовки и обёрнут декоратором с тремя попытками. Элемент ищется заново на каждой попытке.
time.sleepиспользовать нельзя. Скрытые тесты проверяют декоратор на своих функциях (сколько раз вызвана, что вернула, что бросила,__name__и__doc__) иstatus_text()на странице, которая перерисовывается сразу после поиска статуса: по журналуdriver.logвидно, сколько раз элемент искали.
В каком тарифе
Собеседование AQA Python: ответы разбирает Йова, поэтому тренажёр есть только в тарифе Pro. Демо открывает его вместе с остальными.
Демо0 ₽
3 дня бесплатно после регистрации, без карты: все тренажёры и справочник
Базовый399 ₽ за 30 дней
Не входит: три тренажёра на выбор на 30 дней
Pro999 ₽ за 30 дней
Все тренажёры и Йова