Техническое тестовое задание для тестировщиков: задачи по программированию

Уровень входа

С каждым годом уровень входа в тестирование растет. Сейчас даже мануальному тестировщику ( я не говорю о пен тестировании) - нужно уметь базовые скилы программирования, работы с Postman и т.д. А для проверки знания на позицию автоматизатора все чаще встречаются задачи по программированию с использованием алгоритмом.

Техническое интервью

За последних несколько технических интервью было пару интересных (сложных и не очень задач) которыми я хотел бы поделиться. Решение этих задач обычно проходит с ограничением по времени. На одной платформе нужно было даже разрешить доступ к захвату видео с экрана и записи видео с веб-ки. (GLIDER.ai - Hire best candidates using online assessments and video interviews). Интересное решение - потому что в своей работы все мы пользуемся интернетом)

Задача #1 Найти подстроку

Find the Substring
We define the following:

  • String s consists of lowercase letters in the range ascii[a-z].
  • String x consists of lowercase letters and may also contain a single wild-card character * , that represents any one character.

Given s and x , we want to know the zero-based index of the first occurrence of x in s . For example, if s = xabcdey and x = ab*de , the index is 1 .

Function Description: Complete the function firstOccurence in the editor below.
The function must return an integer denoting the zero-based index of the first occurrence of string x in s.
If x is not in s return -1 instead.
firstOccurence has the following parameter(s):
s : a string of lowercase letters. x : a string of lowercase letter which may contain 1 instance of wild-card character *

Constraints:

  • 1 <= |s| <= 500000
  • 1 <= |x| <= 1000

Input Format for Custom Testing: Input from stdin will be processed as follows and passed to the function.

The first line contains the string s . The second line contains the string x .

Sample Input 0:
juliasamanthantjulia
ant

Sample Output 0:
8

Explanation 0:   

Sample Input 1:
juliasamanthhasamanthajulia
has

Sample Output 1:
11

Explanation 1:    

Sample Input 2:
juliasamanthhasamanthajulia
ant*as

Sample Output 2:
8

Explanation 2:   

Решение

Задача #2 про круг

1

2

Задача #3 повернуть квадратную матрицу на 90 градусов.

Создать метод который будет принимать int - размер квадратной матрицы.
Внутри этого метода - создать матрицу (от 1 до …) и развернуть ее на 90 градусов.

Выводы

Я добавил только 3 задачи - которые вспомнил, постараюсь в дальнейшем дополнять этот топик.
Не всегда решающим фактором решения задачи является сложность, иногда время, волнение - не дает возможности быстро и правильно решить задачу.
А какие интересные задачи вам попадались на техническом интервью?. Было бы круто если бы вы также добавляли в комментариях примеры задач которые вам попадались на кодинг интервью.

2 лайка

Честно, за 13 лет не вижу никаких изменений. Просто названия утилит немного поменялись. Считаю что раз уж кто-то идет в тестирование ПО, то он должен уметь и делать это самое ПО. А иначе это просто манекен в тестовой машине.
С другой стороны за 13 лет ниразу не встречал тестов построенных с учетом математической оптимизации. Всегда было по барабану, пробежат тесты за log(n) или за n^2. Как бы, мы всегда знали ограничения языка, технологий, на них и давили простым бревном. Хотя один раз индус в Калифорнии меня спрашивал про алгоритмы сортировки. Хотя сам понятия не имел про GIL в питоне.
У пентеста другая задача, они не ищут ошибки, им нужно только пробраться в систему, если для этого достаточно одной ошибки, то больше они искать не будут, если достаточно одной человеческой ошибки, то и программные уже не понадобятся. Поиск ошибок безопасности - это секьюрити ассесмент инженер, а не пен тестер.
Вобщем, позиционируем себя как разработчики, ставим себе аналогичные цели и считаем что от нас ожидаются аналогичные знания и умения. Вот и вся моя философия на протяжении этих лет.

4 лайка

я поделился тем какие 3 последних задачи получал на кодинг. Опускаю момент сложности и тд. Вопрос в том что позиция подразумевает тестирование API (например)- написание фреймворка, тестов, интеграция с CI но для того что бы тебя допустили к второму интервью - тебе нужно решить задачи.
Для меня в 2020 тема пенетрейшин тестирования - очень далекая. А можно узнать - вот что обычно спрашивают на интервью на эту позицию?

Прежде всего, я думаю в Украине искать работу пентеста пока бесполезно.
Вам понадобятся превосходные знание линукса (кофигурации линукса), мониторинга сетевых протоколов, сетевой иерархии, питон, руби (метасплоит), баш скрипты (на адвансед). Линукс - это пол беды. Вам понадобится знать Виндовс. Вот эта система реально сложная. Easy to learn hard to master. Масса систем защиты данных, при чем независимых. Готовьтесь к тому, что книга Windows Internals в двух томах будет вашим кратким справочником (ну если хотите быть хорошим пен тестером). Умение в ИоТ (для хорошего пен тестера), так как понадобится делать NFC (да и вобще все RFC) сканнеры, копировать карточки, паять отмычки для электро замков, делать USB примочки для копирования, взлома. Метасплоит - умение быстро использовать, хотя в реальном пен тесте он не используется, слишком громкий. Вам обязательно понадобится сертификат. Что-то бесполезное типа CEH сойдет, но за OSCP вас уважать будут больше. Вы должны разбираться в шифровании (обязательно), тоесть как работают шифровки, дешифровки протоколов и какие у них слабые места. Кроме того хорошо было бы пройтись по CVE ошибкам связанным с SSL/TLS, так как там были вещи которые все-ещё работают, типа POODLE атаки (вроде правильно написал).
Вобщем, проблемма в том, что в пентесте не расслабишься, либо ты знаешь всё что творится в мире взлома сегодня с утра, либо ты безнадежно устарел. Кому-то нравится. Но с сеьмей уже тяжело. Так же нужно уметь в актерское мастерство. Ред тимминг и все такое, вам понадобится с каменным лицом доказывать что вы сотрудник компании в которую пытаетесь внедриться, если вас тормознут.
Умение реверсить код в Ида Про очень приветствуется, особенно если вы умеете находить уязвимые места и варить для них нужные нагрузки с использованием техник обхода ASLR и DEP.
Вобщем, мне долго было интересно, но сейчас мне кажется я уже не потяну. Возможно справился бы лет в 25. Сейчас проще наверное в Security Assesment, но там как-то скучнее, большая часть работы построена на статическом анализе и использовании готовых сканнеров.

кстати, стоит еще добавить ссылки на темы

почему? Вакансії за запитом «penetration» | DOU

а про все остальное - требования нехилые. спасибо что описал. будет что почитать в свободное время) P.S. в пен тестеры не думаю даже пробовать)

Из 5 пен тестер будет только в Hacken OU и то не гарантия, только они ориентируются на направленные взлом и защиту корпорации. OU это вроде значит что Эстонская компания. Остальные - это самсунг и банки как раз Security Assessment ищут, им пенетрейшин вобще не нужен просто потому что ред тиминга у них нету.

1 лайк

ну возможно) я посмотрел на одном сайте. могут быть еще вакансии ( а может и не быть вообще)
то что в Украине таких вакансий мало - факт, но они есть.

Привет!
А по ссылке к первой задаче - ваше решение?
Оно не до конца правильное:

def first_occurrence(s, x):
    # Write your code here
    xi = 0
    for idx, char in enumerate(s):
        if x[xi] == "*" or char == x[xi]:
            xi += 1
            if xi == len(x):
                return idx-len(x)+1
        else:
            xi = 0
    return -1


def test_first_occurrence():
    assert first_occurrence(s='aaac', x='aac') == 1  # current result: -1
    assert first_occurrence(s='aaac', x='a*c') == 1  # current result: -1

Забавнее всего то, что ни одно из подобных заданий не встретится в реальности автоматизации. Даже в работе программистов, математика и алгоритмы - редкость. И уж тем более те самописные велосипеды-решения заменят на вызовы стандартных и проверенных(!) библиотек. Так что это так, ЧСВ почесать :slight_smile:

нет, решение не мое) я тоже видел что этот вариант не до конца правильный.

Самое интересное - на сайте где дается это задание, после решения - запускаются тесты. И вот я проверял это решение и все тесты прошли. Такое вот тестовое)

Думаю есть сложность для проверки автоматизатора. Дают какое то универсальное тестовое.

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

1 лайк

Забавно )