Вопросы с собеседований для тестировщиков: AQA Python

Собеседование автоматизатора на Python: типы и ООП, pytest, Selenium и Playwright, Page Object, API-тесты, Git и CI. На вопросы отвечаешь своими словами, и Йова разбирает ответ, а задания на код пишешь в редакторе, их проверяют скрытые тесты.

Задач
80
Среда
Йова в роли интервьюера и live coding
Тариф
Только Pro
yqw / aqa / простой
live
Рабочая область тренажёра Собеседование AQA Python: задача простого уровня и Йова в роли интервьюера и live coding

Что тренируем

  • 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("кабан", "банка") → True
    • is_anagram("Кабан", "банка") → True
    • is_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/ в файлах задачи (только для чтения, подробности — в docstring selenium/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 дней

    Все тренажёры и Йова

Другие тренажёры

Все тренажёры · На главную