Задачка для собеседования тестировщиков

Tags: 

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

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

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

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

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

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

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

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

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

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

Комментарии

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

UPD: я просто по ассоциации вспомнил, это НЕЛЬЗЯ давать на собеседовании, я потратил на решение несколько часов чистого времени. задача авторская - моя!

Изображение myx

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

Ушел думать, в общем :)

вот эта как раз для собеседования, но не на QA может быть, а на программиста C++.

Изображение myx

Да ну фиг знает, Ром... Я, конечно, помню высказывание о том, в каких случаях у плюсовика отмирает часть мозга... :) Но мне кажется, что эта задачка сильно "со звездочкой", и люди, способные сходу ее решить - это большая редкость.

В чемодане силикагель.
Хотел залогиниться через гугл, твой сайт предложил завести аккаунт с заполнением всякой фигни. Стыдно, хозяин

Изображение myx

Угу, стыдно, факт. Частично в этом виноват друпал, которому позарез нужен email пользователя, без которого аккаунт не заводится, частично сам гугл, который не отдает email. Уже второй месяц чешу голову и думаю, как сделать это прямее.

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

Задачка которая ломается в пустую, без физики, математики, и прочей ерунды:
Крюки в скале на высоте 200м и 100м. Верёвка, 150м. Ножницы. Умение вязать узлы. Сам леминг висит на крюке первом, двухсот-метровом. Требуется спуск с вершины.
Не сам придумал, конечно.

Изображение myx

Что-то ты совсем по-русски писать разучился :)

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

По-русски не бум-бум. ПЖ обьясни мои перенедописания.

Верёвка, так сказать, математическая, одномерная. Не слоёная, не резиновая, но режется.

Даёшь вторую попытку?

Изображение myx

Поленился и нагуглил правильный ответ :) Хорошая, кстати, задачка, мне понравилась.

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

Ты там по-русски вообще уже не разговариваешь? :) Я, кстати, до сих пор с легким содроганием вспоминаю, как поймал себя на фразе "взять автобус" после двух месяцев пребывания в Англии: http://myx.ostankin.net/blog-archive/250

Слабею с каждым днём. Нужна практика. Я редактором пойду, пусть меня научат.
Задачка-то подана Андреем из Новосибирского.
http://www.linkedin.com/profile/view?id=741791

такая бредовая версия (исправленная, сначала меня подвела арифметика):
чувак спускается до нижнего крюка, оборачивает вокруг нее веревку, лезет вверх до высоты +150 метров с нижним концом веревки в руках, привязывает его там к веревке, хватается изо всех сил за него, и, помолясь, отрезает веревку выше себя. Пережив несколько страшных секунд (см. http://www.youtube.com/watch?v=lgb2DbBBrrU), он оказывается висящим на закольцованной веревке длиной 100 метров на нижнем крюке. Залезает по сдвоенной веревке до нижнего крюка, разрезает кольцо, привязывает к кольцу и спускается до земли.

Изображение myx

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

Такова тяжёлая жизнь леммингов.

Изображение myx

Зато игрушка красивая была :) Недавно, кстати, под DosBox'ом запускал, игрался. Правда, с тачпадом там много не наиграешь, а мышку подцеплять было лень :)

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

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

ответная задачка:

Изображение myx

Я позволил себе немножко облагородить данную тобой ссылку :)

А ответ я знаю, я ее уже решал. Для математика эта задачка сложности не представляет :)

тоже заняло 2 минуты; спасибо Исахановой! :)

О, помню, я эту задачку у вас на собеседовании решал.

Изображение myx

Ага, я тоже помню. Вы, по-моему, все стадии тогда прошли, но оффер все так и не приняли.

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

Изображение myx

Да, вполне здравая гипотеза, за её рассмотрение в рассуждениях тоже полагается "плюсик" :)