Какие задачи обычно встречаются на LeetCode для тестировщиков?
Что проверяют
Готовы ли вы к кодовой секции, которую сейчас дают не только разработчикам, но и тестировщикам, особенно в автоматизации. Важно не знание номеров задач, а базовые структуры данных и умение проверить собственный код. Следом обычно просят: «а какие тесты вы бы написали к своему решению?».
Как отвечать
Отдельного раздела для QA на LeetCode нет. Тестировщикам дают задачи уровня Easy, реже Medium, на языке автотестов: чаще всего Python, Java или JavaScript. Типичный набор:
- строки: палиндром, анаграмма, разворот строки, подсчёт символов, первый неповторяющийся символ;
- массивы и хэш-таблицы: дубликаты, Two Sum, пересечение двух массивов, слияние отсортированных массивов;
- стек: проверка правильности скобок;
- простая логика: FizzBuzz, поиск максимума без встроенных функций, реже двоичный поиск;
- SQL: в разделе Database есть задачи на
JOIN,GROUP BYиHAVING, классика вроде второй по величине зарплаты. Тестировщикам это дают чаще, чем деревья; - задачи ближе к работе: разобрать лог и посчитать ошибки по кодам, сравнить два JSON-ответа API, провалидировать email или телефон.
Деревья и графы тестировщикам достаются редко, в основном на позициях SDET.
Решив задачу, сами пройдитесь по проверкам: пустой ввод, один элемент, дубликаты, отрицательные числа, очень длинная строка, регистр и пробелы. Для QA это главный плюс: вы показываете тест-дизайн на собственном коде. Если с алгоритмами пока слабо, начните с простого решения, честно оцените его сложность и предложите, что улучшить.
Где спотыкаются
Решают и молчат о тестах. От тестировщика ждут граничных значений, и их отсутствие заметнее, чем неоптимальный алгоритм.
Зубрят сложные задачи, а плавают в базе своего языка: не помнят, как работает dict или HashMap, чем список отличается от множества.
Не уточняют условие: что считать палиндромом, учитывать ли регистр и пробелы. Интервьюер оценивает рассуждение не меньше результата.