Логические задачи на собеседовании тестировщика

Логические задачи на собеседовании тестировщика

Вы здесь

У нас в проекте тестировщик должен хорошо знать математику. Особо глубоких познаний, в общем-то, не требуется, но твердо знать основы необходимо. Умение не путать интеграл с логарифмом, внятно объяснить физический смысл производной и не ответить "50%" на вопрос, чему равна вероятность выпадения 11 очков на двух кубиках — это минимальное требование, при невыполнении которого дальше и разговаривать не о чем. Поразительно, но даже на этом требовании отсеиваются девять из десяти кандидатов, хотя практически все — выпускники технических вузов. Помню девочку — выпускницу СпбГУ между прочим! — отличницу, которая упорно доказывала, что интеграл не может быть меньше нуля. Ну, как "почему"? Ведь интеграл — это площадь, а как площадь может быть меньше нуля.

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

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

Имеется бассейн с водой, в котором уровень воды можно замерять. В бассейне плавает лодка, а в лодке сидит человек с чемоданом. В какой-то момент человек выбрасывает чемодан за борт.

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

И, как любит говорить мой коллега, "к задачке бесплатно прилагается закон Архимеда". А именно: "на тело, погруженное в жидкость, действует выталкивающая сила, равная весу вытесненной им жидкости".

Давая эту задачку на собеседованиях, я сделал интересное наблюдение: многие кандидаты практически сразу отмечают, что возможно два исхода: "чемодан оказался тяжелее воды и утонул", и "чемодан оказался легче воды и плавает рядом с лодкой". Многие, отметив это, сразу пытаются дать ответ. Чаще всего неправильный.

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

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

Поэтому мы с коллегами задумались: а какие еще возможны исходы эксперимента с выбрасыванием чемодана, влияющие на уровень воды в бассейне? Ваши варианты?

Среди огромного числа IT фирм в Праге есть офис компании Veeam. Последнее время заметила, что ребята как-то очень активно ищут людей на работу. Огромное количество рекламы в соцсетях, разные зазывающие статьи, например, здесь. Судя по всему, дела у них идут не плохо и они активно расширяются, поэтому постоянно ищут работников (по большей части тестировщиков). Кстати, главный офис у них находится в Питере. Поэтому думаю, что информация будет интересна не только для людей, живущих в Чехии, но и для людей из России.

Итак, сегодня наткнулась вот на эту статью. Такую же статью можно найти и в российских медиа. Здесь Veeam предлагает решить 4 задачи и получить работу своей мечты :). Предупреждаю, если вас заинтересовала фирма и вы хотите послать резюме, то сначала попробуйте сами решить эти задачки. Потому что каждую из них (кроме первой) можно решить по-разному. А прочитав мою статью, вы только усложните себе задачу. Ну а те, кому просто интересно какие задания дают на собеседованиях на позиции Quality Assurance (по-русски тестировщик) добро пожаловать.

Задача №1. Задача про Сашу, Андрея и Ольгу

Саша смотрит на Ольгу, а Ольга смотрит на Андрея. У Саши есть дети, у Андрея нет. Смотрит ли человек, у которого есть дети, на человека, у которого детей нет? Варианты ответа: «Да», «Нет», «Нельзя определить». Объясните свою точку зрения.

Ну смотрите, здесь всё просто. Единственное что мы не знаем, так это есть ли дети у Ольги. Отсюда вытекает два предположения: 1. у Ольги есть дети; 2. у Ольги нет детей. Если дети у Ольги есть, то Ольга (с детьми) смотрит на Андрея (без детей). Следовательно, ответ «Да». Если детей у Ольги нет, то Саша (с детьми) смотрит на Ольгу (без детей). Следовательно, правильный ответ снова «Да».

То есть вне зависимости есть у Ольги дети или нет, человек у которого есть дети будет смотреть на человека, у которого детей нет.

Задача №2. Три кенгуру

По австралийской пустыне строго друг за другом скачут три кенгуру.

Первый кенгуру говорит: «За мной скачут два кенгуру».
Второй говорит: «За мной скачет один кенгуру, и впереди меня скачет один кенгуру».
Третий говорит: «За мной скачет один кенгуру, и впереди меня скачет один кенгуру».

Придумайте как можно больше объяснений этой ситуации.

Читайте также:  Как опробовать перехватчик в horizon

Ну здесь конечно, придётся включать фантазию. Опишу то, что мне пришло на ум. Вы можете с моей фантазией поспорить или предложить свои варианты в комментариях.

1. Итак, первое что могу сказать — никто не сказал, что кенгуру скачут в одном направлении. Предположим, что два из них скачут в одном направлении, а третий в противоположном, удаляясь от них. Первый кенгуру очень образованный и знает, что Земля круглая. Тогда он может сказать, что второй кенгуру скачет за ним, а третий — перед ним. Второй и третий кенгуру не имеют представления о форме Земли. Тогда второй скажет, что один кенгуру скачет за ним, а другой — перед ним. Третий скажет, что два кенгуру скачут за ним.

2. Возможно, кенгуру решили устроить соревнования по прыжкам в высоту, но измерительных приборов у них нет :). Один прыгнул очень высоко. Два из них прыгнули одинаково низко, и без точных измерений кто прыгнул выше не определить. Тогда первый скажет: «За мной скачут два кенгуру», ну а второй и третий будут конечно же считать себя на втором месте и скажут, что один кенгуру скачет впереди, а один позади.

3. Ещё вариант, что два из них имеют ввиду сколько кенгуру скачет за ним и перед ним. А один делает своё утверждении на основании времени отрыва от земли (то есть один кенгуру отрывается раньше, а один позже).

4. Никто не говорил, что кенгуру скачут одновременно. То есть строго друг за другом можно интерпретовать как: прыжок делает первый кенгуру, потом прыжок делает второй кенгуру, и прыжок делает третий кенгуру. Учитывая, что кенгуру имеют небольшой рост, но прыгают достаточно высоко, можно предположить, что два задних каждый раз перепрыгивают друг друга. Тогда после своего прыжка каждый из них может сделать утверждение, что за ним скачет один кенгуру и перед ним тоже скачет один кенгуру.

5. Придумайте ещё что-нибудь, вариантов куча.

Задача №3. Задача про обувь

Оцените количество всех пар обуви в Чехии. Точного количества не знает никто, но постарайтесь дать максимально близкую оценку.

Ну это прям задача по запросу «задачи на собеседовании в Гугл». Хотя по инсайдерской инфе, таких задач там не дают :). Здесь главное не испугаться того, что вы даже количество собственных пар обуви не знаете, не то что количество всех пар обуви в Чехии. Главное — логика. Я бы начала с того, сколько пар обуви в среднем имеет мужчина и женщина. Составила бы какую-нибудь таблицу типа:

Затем оценила бы сколько людей живёт в Чехии, сколько из них мужчин, сколько женщин и сколько детей. Вроде как в Чехии около 10 миллионов жителей (не знаю, стоит ли учитывать туристов). По моим ощущениям мужчин и женщин приблизительно одинаковое количество. Возрастную группу от 1 года до 10 лет буду считать детьми. Не думаю, что в таких расчётах следует учитывать детей до года. Где-то слышала, что в год рождается более 100 тысяч младенцев. Тогда детей до 10 лет около 1 миллиона. Следовательно, мужчин и женщин по 4.5 миллиона. Ну вот и всё, теперь перемножаем, складываем и получаем:

4.5 млн (1+2+2+3+1) + 4.5 млн (2+3+4+3+1) + 1 млн (1+2+2+3+1) = 108 млн.

Таков мой прогноз. В комментариях обязательно пишите, что я еще не учла.

Задача №4. Тестирование электрогитар

Представьте, что вы работаете в компании, выпускающей электрогитары. Вам поручено проработать вопросы безопасности будущего инструмента. Какие тесты из области безопасности вы проведете?

Ну здесь уж кто во что горазд. Люди, работающие в тестировании, могут более структурировано рассказать об этом и придумать просто сотни тестов. Здесь можно проверять:

1. шнур питания (перепады в сети/подача высокого напряжения);
2. не оторвётся ли шнур от инструмента, когда гитарист будет на него прыгать;
3. не ранят струны в момент разрыва;
4. токсичность лака;
5. насколько легко сломается корпус гитары, когда человек решит разбить её себе о голову ;
6. и т.д.

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

Содержание статьи

«За что бьют сисопа? За отсутствие бэкапа!» Корни этой мудрости потерялись в веках, а само слово «сисоп» уже подзабылось, но за отсутствие бэкапа по-прежнему кого-то бьют. Слабые тела админов и простых пользователей защищает не так уж много производителей ПО, и из них, пожалуй, лидирующим можно назвать Acronis — трудно найти в нашей стране пользователя, данные которого ни разу не были бы спасены программами Acronis от грандиозного факапа. Про админов и говорить нечего — решения этой компании всегда занимали достойное место на загрузочных дисках для оказания первой помощи. А как быть программистам, которые хотели бы в нее трудоустроиться? Когда-то я сам шарил по сайтам с вакансиями и, как сейчас помню, был вдохновлен зарплатой, которую в Acronis обещали программистам на приплюснутом си.

Сегодня мы поговорим с Евгением Панищевым, руководителем QA Cloud направления международной компании Acronis. Его отдел занимается тестированием всех облачных решений Acronis: от Acronis Backup Cloud до Acronis Disaster Recovery. Задача лично Евгения — следить за тем, чтобы специалисты отдела выполняли свою работу еще лучше и эффективнее.

Евгений регулярно проводит собеседования при приеме людей в отдел сопровождения качества и считает, что хороший тестировщик должен обладать логическим мышлением, быть очень внимательным, уметь нестандартно мыслить и четко обосновывать свою точку зрения. Поскольку нет такого человека, который отрицал бы в себе наличие всех этих качеств :), для их проверки он дает на собеседовании ряд задач — как имеющих правильный ответ, так и «открытых», без единого решения.

Читайте также:  Невозможно выполнить предварительный просмотр этого файла word

Свой выбор задач Евгений объясняет так: «Первый тип задач позволяет проверить логические и аналитические способности кандидата, второй — понять, как именно он мыслит. На собеседовании важно и то и другое; иногда правильное живое мышление важнее верного ответа. Я знаю, что многие пренебрежительно относятся к задачам, предлагаемым на собеседовании, считая их пустой тратой времени, но это ошибка. Такие тесты позволяют за довольно короткое время понять, что за человек перед вами. Чем нестандартнее задачи, тем лучше понимание».

Примеры задач

Пример 1

Любимое задание Евгения — тестирование калькулятора: кандидату выдают обыкновенный настольный калькулятор и предлагают проверить его работу. Эта задача не имеет точного решения, зато позволяет выявить уровень человека как тестировщика. По тому, какие тест-кейсы он озвучивает, какие уточняющие вопросы задает, как выбирает ключевые параметры тестирования при наличии ограниченного числа тест-кейсов, можно понять, насколько человек разбирается в теме, готов ли учиться и воспринимать подсказки, умеет ли идти на компромисс и отстаивать свою точку зрения.

«Для любого айтишника важно знание алгоритмов, оценка их сложности и умение с ними работать, — говорит Евгений. — Без приличного математического аппарата невозможно стать высококлассным специалистом: чем выше вы подниметесь в иерархии программистов, тем с более высоким уровнем абстракции вам придется иметь дело. Это практически не зависит от того направления, которое вы выберете: математика нужна везде».

Пример 2

Чтобы проверить, как кандидат ориентируется в высоких алгебраических сферах, Евгений использует, например, такую задачу: «Дан массив S из n действительных чисел, а также число x. Как за время O(nlogn) определить, можно ли представить х в виде суммы двух элементов из S?»

В целом, по мнению Евгения, теория алгоритмов — это область, которой часто пренебрегают в ходе обучения программированию. «Обычно ограничиваются некоторыми общими словами и примерами. Знание сортировки „пузырьком“ или быстрой сортировки само по себе недостаточно для понимания темы. Кроме теории алгоритмов, необходима логика, а также умение ее применять — желательно всегда и везде».

Чтобы понять, умеет ли кандидат делать правильные умозаключения независимо от внешней формулировки, в Acronis используют следующую забавную задачу:

Пример 3

«Если лягушонок зеленый, то он веселый. Если лягушонок не веселый, то он сидит на берегу. Все лягушата либо зеленые, либо пестренькие. Если лягушонок пестренький, то он плавает в воде.

Из этого следует (нужно выбрать правильный ответ или ответы):

  • (A) все лягушата — пестренькие;
  • (B) все лягушата плавают в воде;
  • (C) все лягушата — веселые;
  • (D) все лягушата — не веселые;
  • (E) все веселые лягушата — зеленые».

«Задача выглядит детской и несерьезной, что зачастую сбивает многих кандидатов с толку: они не могут абстрагироваться от формулировки и работать с утверждениями так, будто это обычные логические последовательности. По сути, это действительно довольно простая задачка, которая дается на математических олимпиадах школьникам пятых-шестых классов. Но об этом я кандидатам не говорю; особенно тем, кто не смог ее решить» (задачка очень популярная, и, кстати, она была в одном из выпусков нашей рубрики. — Прим. ред.).

Развитое логическое мышление иногда ценится даже выше, чем умение писать код. «На мой взгляд, логика нужна любому человеку, а IT-специалисту — тем более. Поэтому мы, к сожалению, периодически вынуждены отказывать кандидатам, которые пишут неплохой код, имеют немалый опыт, но при этом очень слабо владеют математической логикой. Программист, который ею не владеет, — это потенциальная угроза будущему продукту».

Еще одна классическая задача на логику от Acronis:

Пример 4

Предположим, что фраза «Завтра будет лучше, чем вчера» верна каждый день. Какое из утверждений может тогда быть неверным?

  • (A) Послезавтра будет лучше, чем сегодня.
  • (B) Сегодня будет лучше, чем позавчера.
  • (C) Послезавтра будет лучше, чем позавчера.
  • (D) Завтра будет лучше, чем позавчера.
  • (E) В 2006 году 1 апреля будет лучше, чем позавчера.

Ну и конечно, для IT-специалиста важно умение писать код и разбираться в том, что написали другие. По мнению Евгения, то и другое одинаково необходимо. «Если человек умеет писать код, но совершенно не способен понять код коллеги, то он бесполезен, — точно так же, как тот, кто прекрасно читает чужой код, но не может написать ни строчки своего».

Чтобы понять, насколько свободно человек владеет кодом, в Acronis используют задачи наподобие этих:

Пример 5

Объясните, что делает этот код:

Пример 6

Найдите ошибку в следующем коде:

Пример 7

Дан текстовый файл размером 32 Гбайт. На тестовой машине установлены Windows и питон. Нужно найти последнее вхождение слова ERROR и вывести десять строчек до и десять после. Как изменится решение, если исходный файл разбит на куски размером 2 Гбайт?

Наконец, есть еще один неочевидный параметр, по которому обычно оценивают кандидата. «Его называют по-разному, но мне больше нравится термин „толковость“. Это некая смесь „соображалки“, умения находить нестандартный подход и вообще работать с новыми и необычными задачами. Задачи для проверки этого качества вызывают самые большие споры. Практически все уже знают вопросы о том, почему крышка у канализационного люка круглая и сколько шариков может поместиться в автобусе. Такие вопросы можно считать дурацкими, но их нужно задавать, чтобы понять, как человек способен справиться с нестандартной ситуацией. Решения может не быть: это в данном случае не главное».

Читайте также:  Как сохранить видео в программе видеомонтаж

Пример 8

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

Никто не ждет, что кандидат с ходу назовет точное число или хотя бы сможет приблизительно его подсчитать. Главное — посмотреть, как человек мыслит, как подходит к задаче, как пытается найти ответ.

Но разумеется, есть и задачи с конкретным решением. Две из них Евгений предлагает вниманию читателей «Хакера». Те, кто первыми пришлют правильные ответы (обязательно с обоснованием), получат в качестве приза от компании Acronis ключи от кварти. нет, стоп, не то письмо. Победитель получит ключ для Acronis True Image 2015 — уникального ПО для резервного копирования в безлимитное облако на один год.

Задачи от Acronis

Куда слать правильные ответы?

Правильные ответы принимает Диана Круглова, Diana.Kruglova@acronis.com.
Спеши выиграть ключ Acronis True Image 2015 — уникальный софт для резервного копирования своего PC или Mac в безлимитное облако на один год!

Задача 1

Представьте, что у вас есть обыкновенные часы. Они идут точно, без сбоев. В этих часах меняют местами минутную и часовую стрелки. Сколько раз в сутки такие часы будут показывать правильное время?

Задача 2

Нужно написать на листе бумаги число 10 000 и обвести его в круг, не отрывая ручку от этого листа бумаги; при этом цифры не должны соединяться друг с другом.

Решение задач от компании Custis

Задача для разработчиков Oracle

Разработчик баз данных в свой первый рабочий день в компании Custis обнаружил, что в его проекте используется всего одна табличка с данными по отгруженным товарам (Т). В ней собираются данные по дате отгрузки (d), идентификационному номеру клиента (c) и количеству отгруженного товара (s). Разработчик проверил и убедился, что никаких ключей в таблице нет и по одному клиенту может быть сколько угодно фактов отгрузки в один день.

Почувствовав облегчение от того, что не придется возиться со страшными запросами, разработчик пошел на кухню выпить кофе и перекусить фруктами. После возвращения он с легким сердцем схватил первый же инцидент со Scrum-доски и прочитал следующее: «Нужен отчет по ежедневным отгрузкам товара по выбранному клиенту». Посоветовавшись с товарищами, он выяснил, что отчеты принято оформлять в виде view (представления), то есть для решения проблемы нужно сделать такой view, чтобы запрос

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

Как вы думаете, какой view в результате получился у нашего разработчика?

Ответ (приведенное решение нестандартное и требует владения особой уличной магией Oracle, но есть и другие варианты)

Задача для разработчиков C#

За день до релиза отдел тестирования обнаружил, что отчет об остатках товара формируется около часа. Вам была поручена задача оптимизировать процесс создания отчета. Профилировщик показал, что в коде

метод atlasClient.GetRests занимает около 98% общего времени построения отчета.

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

Ответ (один из вариантов)

  • Используя ToArray() или аналоги, вычислить последовательность allProducts до ее использования при получении fewProducts, someProducts, manyProducts.
  • AllProducts является отложенным Linq-запросом, и его использование в трех выражениях приводит к многократному вычислению элементов последовательности. Вычислив последовательность один раз, мы сэкономим два «дорогих» вызова atlasClient.GetRests на каждый элемент последовательности, но нам потребуется дополнительный объем памяти для хранения результата. Из-за этого при больших объемах данных такое решение «в лоб» не всегда может быть применимо.
  • Такой вариант построения отчета будет занимать около двадцати минут.

Задача для разработчиков Java

Разработчик C# решил попробовать себя на поприще Java и перешел в Java-проект. Одно из первых заданий, которое он получил, — сделать таблицу с информацией о проданных товарах. В постановке задачи было написано, что нужны следующие столбцы: имя клиента, код клиента, название товара и стоимость товара. Посмотрев на реализацию такого рода таблиц в проекте, он понял, что при настройке таблицы придется написать что-то вроде

Прямо скажем, по сравнению с тем, как он делал это на родном dotNet, это выглядело совсем ненадежно — никаких проверок уровня компиляции, очень легко допустить ошибку. Хочется написать

А тут такое. Код получается небезопасный, IDE никак не подсказывает, что писать, и вообще. Решив не сдаваться и привнести свет истины в захолустное царство Java, он объяснил проблемы такой настройки таблиц другим Java-разработчикам. Ему отвечали, что проект ведется на Java 7, лямбд нет, а с анонимными классами для каждого поля настройка будет выглядеть жутко, поэтому «пишем, как можем». Однако, найдя единомышленников в стане Java, он смог реализовать движок, который позволял настраивать столбцы вот так:

Причем интерфейс настройки таблиц менять не пришлось, то есть на вход table.add приходит все та же строка customer.name. Не пришлось менять и модельные сущности («покупатель», «товар», «покупка» и другие), и даже не понадобилось никаких автогенерированных классов. Этот инструмент начали использовать везде, где нужно было сослаться на цепочку свойств.

Как бы вы реализовали такой фреймворк? Важен только принцип, код писать не нужно.

Ссылка на основную публикацию
Куда устанавливается visio viewer
Файлы с расширением .vsd и .vsdx предназначены для программы Microsoft Visio Viewer (vviewer.exe) и содержат визуальные объекты, текст, диаграммы и...
Комплименты фотографу за красивые снимки
Агрегатор советов и знаний в сети Социальные сети в наше время весьма популярны. Его пользователи активно делятся своими путешествиями, времяпровождением,...
Конвертер двунаправленный dexp ide sata как подключить
Переходник позволяет к порту SATA компьютера подключать IDE устройство или к порту IDE компьютера подключать SATA устройство. Данный переходник имеет...
Кью ар код программа
Что такое QR-код: QR код «QR - Quick Response - Быстрый Отклик» — это двухмерный штрихкод (бар-код), предоставляющий информацию для...
Adblock detector