Задачи для IT интервью

Berlaga
Уже с Приветом
Posts: 1008
Joined: 24 Mar 2010 21:14
Location: SFBA

Re: Задачи для IT интервью

Post by Berlaga »

Berlaga wrote:
M. Ridcully wrote:
Berlaga wrote: Смотрите. П стоит в центре, если он не видит В - то В как минимум в 10м от центра. П уходит в туннель, проходит 20м (видит на 30)...
Так вор может в один из оставшихся двух занырнуть, а программист не увидит, а какой. А так как нужно гарантированно, то вор необычайно удачлив и может так менять туннели до бесконечности.
Не увидит сразу. Но после того, как П вернется в центр - В не успеет убежать дальше, чем на 10м. И П его увидит.
Ха! Этот ответ неверный. Можно еще лучше! :)

Имхо, я нашел решение для любой конечной длины туннеля. О как! :)
helg
Уже с Приветом
Posts: 4827
Joined: 15 May 2001 09:01

Re: Задачи для IT интервью

Post by helg »

Давайте переформулируем задачу. В трёх рассматриваемых туннелях есть Плесень. И есть Дворник с ультрафиолетовой лампой, которая мгновенно убивает всю плесень в радиусе 10 в прямой видимости лампы. Плесень разрастается вдоль туннелей со скоростью 1. Дворник же ходит со скоростью 2. Какой максимальный размер туннелей можно очистить от Плесени?

В переводе на язык оригинальной постановки, Плесень - это множество мест, где может находиться вор.

Если плесень есть в торцах всех трёх туннелей, то продвижение дворника вглубь одного туннеля уничтожает плесень со скоростью 2. В то же время, в каждом их двух остальных туннелей она нарастает со скоростью не меньше 1, если они не полностью заплесневелые. То есть суммарная длина плесневых туннелей от этого не уменьшается. Это значит, что алгоритмы, не требующие полного уничтожения плесени в одном одного из туннелей без захода в него, не могут уменьшать длину плесневых туннелей. Стало быть, они неработоспособны. Итак, начинаем с полной дезинфекции третьего туннеля и возвращаемся в центр.


Чтобы не пускать плесень в третий туннель, не забегая в него, надо успевать пробежать в центр из одного туннеля так, чтобы плесень из другого в третий не проникла глубже 10. Если поочерёдно забегать в первый-второй туннели так, чтобы успевать убить плесень в третьем из центральной точки, то максимальная глубина, на которую можно забежать в каждый из туннелей - 40. Для этого достаточно почерёдно забегать в первый и второй туннели на глубину 40(1-1/2^N) (N=1,2,.. - номер "забега").

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

Мой ответ: за конечное время задача решается для туннеля короче 50.
User avatar
ALV00
Уже с Приветом
Posts: 1491
Joined: 08 Mar 2002 10:01
Location: NJ

Re: Задачи для IT интервью

Post by ALV00 »

helg wrote:...то максимальная глубина, на которую можно забежать в каждый из туннелей - 40.
20, т.к. дворнику нужно идти туда и обратно. Плюс он может не доходить до конца 10, получаем 30.
Pantigalt
Уже с Приветом
Posts: 802
Joined: 24 Jan 2007 07:32
Location: Сергели->Новосибирск->SFBA->Новосибирск->Москва->NY->SFBA

Re: Задачи для IT интервью

Post by Pantigalt »

emax wrote:Так это классика - волк, крестьянин, коза и капуста. Такие задачки на логику давали 3-5 классе (во всяком случае когда я учился в школе), почти в каждом задачники по математике и логике приводились в том или ином виде. Если голова натренирована на такие задачи, то это и решается за 2-7 минуты - принципы одни и те же.
Предлагаю свести классику (волк, крестьянин, коза и капуста) к какому-нить алгоритмическому решению и с помощью этого решения решить задачу в японском тесте.
Я полагаю что это должен быть поиск пути в двудольном графе. В качестве вершин графа брать пермутации из участников + символ отсутствия.
Например
В - волк
О - овца
К - капуста
_ - отсутствие
Л - левый берег
П - правый берег

Записывать вершины например как
ВОКЛ, или _О_П
Спи быстрее, твоя подушка нужна другому. Copyright Зощенко
helg
Уже с Приветом
Posts: 4827
Joined: 15 May 2001 09:01

Re: Задачи для IT интервью

Post by helg »

ALV00 wrote:
helg wrote:...то максимальная глубина, на которую можно забежать в каждый из туннелей - 40.
20, т.к. дворнику нужно идти туда и обратно. Плюс он может не доходить до конца 10, получаем 30.
В первый забег дворник действительно может зайти в первый туннель только на 20, потому что плесень в начале забега во втором была очищена только на глубину 10.

Когда дворник возвратился в центр из первого туннеля, от плесени в первом чисты не 10 метров, а уже 20 (когда дворник возвращался с 20 метров до 0, плесень успела распространиться с 30 до 20).

Поэтому, как нетрудно посчитать, во второй туннель дворник может зайти глубже, а именно на 30 метров. Можно и дальше арифметику разводить, но проще по индукции доказать, что глубина каждого N-го забега - это те самые 40(1-1/2^N), то есть надо делать забеги на глубину 20, 30, 35, 37.5... поочерёдно в первый и второй туннели.

Так что таки до 50.
helg
Уже с Приветом
Posts: 4827
Joined: 15 May 2001 09:01

Re: Задачи для IT интервью

Post by helg »

А можно без индукции, просто предел найти.

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

Пробежка дворника при этом - X в первом туннеле, и 2X во втором (поскольку туда и назад). Максимально допустимое распространение плесени - X+10 (столько ей надо разрастись по первому туннелю до центра) плюс ещё 10, которые убьёт свет лампы из центра в третьем.

Чтобы плесень не убежала в третий туннель, путь дворника должен быть короче двойного пути плесени:

3X < 2(X+20)

Откуда X<40, и максимальная длина туннеля - до 50.

Заодно получаем общий ответ для случая, когда дворник в S раз быстрее плесени, а лампа светит на L. Имеем 3X < S(X+2L), то есть длина туннелей (X+L) не более
L*(3+S)/(3-S). Отрицательное значение при S>3 говорит о том, что если дворник в три или более раз быстрее плесени, он сможет очистить туннели любой конечной длины.
Berlaga
Уже с Приветом
Posts: 1008
Joined: 24 Mar 2010 21:14
Location: SFBA

Re: Задачи для IT интервью

Post by Berlaga »

Похоже, действительно 50 - предел. Я ошибся, посчитал ряд расходящимся.
Berlaga
Уже с Приветом
Posts: 1008
Joined: 24 Mar 2010 21:14
Location: SFBA

Re: Задачи для IT интервью

Post by Berlaga »

helg wrote:А можно без индукции, просто предел найти.

Обозначим максимальную глубину забегания в первый-второй туннели как Х. После большого количества забегов и невозможности более глубокого продвижения, эта глубина окажется одинаковой для первого и второго туннелей из-за симметрии.
...
О! Вот это отличное решение, сразу все понятно. helg - респект!

Единственно, я так и не понял, зачем тут дворник и плесень :) Все таки лучше придерживаться оригинальной терминологии.
helg
Уже с Приветом
Posts: 4827
Joined: 15 May 2001 09:01

Re: Задачи для IT интервью

Post by helg »

Berlaga wrote:Единственно, я так и не понял, зачем тут дворник и плесень
Музыкой навеяло.

А если серьёзно, понятие "область, где может находиться преступник" мне показалось менее удобным для размышлений, чем понятная концепция расползающейся плесени.
Last edited by helg on 08 Nov 2014 04:40, edited 1 time in total.
User avatar
ALV00
Уже с Приветом
Posts: 1491
Joined: 08 Mar 2002 10:01
Location: NJ

Re: Задачи для IT интервью

Post by ALV00 »

50м – согласен. Я забыл, что программист в 2 раза быстрее.

>> если дворник в три или более раз быстрее плесени, он сможет очистить туннели любой конечной длины.
Вот здесь позвольте возразить. Давайте вернемся к первоначальной формулировке. Вор, в отличие от плесени, не может возникать из воздуха. Кроме того, по условию задачи он не обязан все время перемещаться, впрочем, как и программист. Хотя программист не знает, где находится вор (в противном случае задача имела бы тривиальное решение), однако в условии для вора этого ограничения нет. Допустим, что вор обладает способностью видеть, где находится в данный момент программист и действовать сознательно. Допустим, вор использует такую стратегию. Он занимает позицию в одном из туннелей на расстоянии от центра 10м + 1мм. Допустим, программист пошел в другой туннель. Как только он удалился от центра на 40м, вор может безопасно сменить позицию на такую же в третьем туннеле (ему надо пройти для этого 20м). Осмотрев туннель, программист возвращается в центр и выбирает из двух оставшихся туннелей, далее процесс повторяется. Допустим, программист каждый раз выбирает туннель по каким-то своим, неизвестным нам, соображениям. Тогда для вора имеет смысл менять позиции случайно, процесс таким образом будет носить вероятностный характер и сможет продолжаться сколь угодно долго, при условии что программист будет удаляться от центра не менее чем на 40 метров. Данные рассуждения верны для любой конечной разницы скоростей. Для S=3 максимальное удаление для программиста будет 60м и т.д. Максимальная длина туннеля будет 20S+10.
User avatar
Kolbasoff
Уже с Приветом
Posts: 3481
Joined: 02 Jan 2005 22:10

Re: Задачи для IT интервью

Post by Kolbasoff »

ALV00 wrote:50м – согласен. Я забыл, что программист в 2 раза быстрее.
Ответ неверен. Правильный ответ 40:

Code: Select all

Xmax=P+L       P-L                                           Xmax
   [(-----P-----)================O(-----P'----)================]
   v->    q->  
За время "t", которое полицейский "q" пройдет от точки своего максимального удаления "P" от центра "О" в одном тоннеле до точки маскимального удаления в другом тоннеле и вернется в точку P' во втором тоннеле, когда центр ему буден виден, вор "v", который стоит в точке Xmax, должен успеть дойти до центра и шмыгнуть в третий тоннель (или в любой другой, количество тоннелей не важно). Максимальное длина тоннеля при которой полицейский имеет шанс словить вора Xmax = P + L:

t = (P+L)/v = 2P/q + (P-L)/q,

где v, q - скорость ворa и полицейского соответственно.

решая это урвнение при условии q=2v, получаем P=3L, a Xmax = P+L = 40.

Ответ: 40.
helg
Уже с Приветом
Posts: 4827
Joined: 15 May 2001 09:01

Re: Задачи для IT интервью

Post by helg »

Kolbasoff wrote: [..]и вернется в точку P' во втором тоннеле, когда центр ему буден виден
Вместо возвращения в P', программисту лучше дойти до центра O, откуда видны все три туннеля. В ситуации, когда вор достигает O, а программист находится на пути к ней на расстоянии 20, вор в точке O не ловится. Но он ловится, когда программист достигает O.
User avatar
Kolbasoff
Уже с Приветом
Posts: 3481
Joined: 02 Jan 2005 22:10

Re: Задачи для IT интервью

Post by Kolbasoff »

helg wrote:
Kolbasoff wrote: [..]и вернется в точку P' во втором тоннеле, когда центр ему буден виден
Вместо возвращения в P', программисту лучше дойти до центра O, откуда видны все три туннеля. В ситуации, когда вор достигает O, а программист находится на пути к ней на расстоянии 20, вор в точке O не ловится. Но он ловится, когда программист достигает O.
Вор не ловится пока еще, но полицейский его уже увидел и знает, в какой туннель вор побежал. Он зайдет в тот туннель, заблокирует его, перекусит, проверит пистолет, вызовет подмогу и не спеша поймает вора в конце тоннеля.

кстати, вы правы: вору надо успеть не только шмыгнуть в другой туннель, но и пройти по нему расстояние L, что бы возвратившийся в O полицейский его не увидел. Тогда уравнение такое:

(P+L)/v + L/v = 3P/q

И Xmax действительно равно 50. Упс, съедаю шляпу.
Физик-Лирик
Уже с Приветом
Posts: 5104
Joined: 19 Oct 2004 01:46

Re: Задачи для IT интервью

Post by Физик-Лирик »

Интересно, но я почему то решал задачу вот в такой формулировке. Вор первым приходит в комнату и из нее вбегает в один из тоннелей. Через некоторое время (формально произвольное) заходит в комнату программист и начинает своий алгоритм поиска вора в 3-х тоннелях. Задача вора, оказатся назад в комнате, чтобы потом из нее навсегда упорхнуть наружу (не в тоннелли). Соответственно задача программиста этого не допустить.
Здесь похоже обсуждается другая формулировка, когда вор и программист все время "бегают" по тоннелям, т.е. не та, что выше. На мой взгляд, задача с плесенью, введенная Хельгом, все-таки не совсем то (хотя естественно имеет место быть). Допустим, вор находитя в тоннеле #2 на расстоянии более 10 м. Программист заходит в тоннель #1 и проходит произвольное расстояние Х. Далее он возвращается назад в комнату. За это время вор мог поменять комнату # 2 на комнату # 3 (а мог и не менять). Далее, когда программер, снова в комнате после тоннеля # 1 и него выбор с вероятностью 0.5 пойти в тоннель #2 или тоннель # 3, т.к. он с вероятностью 100% знает, что вора нет в тоннеле # 1 вплоть до расстояния Х+10. Далее программист проделывает маршрут Х в тоннеле # 2. Есlи он не нашел вора (т.е. его нет вплоть до рассtояния Х+10), программист снова возвращется в комнату и у него снова выбор с вероятностью 0.5. И так далее. Ясно, что т.к. после возвращения в комнату у программиста всегда выбор с конечной вероятностью, то после какой-то попытки он выберет тот тоннель, где находится вор. Значит, за конечное время он найдет вора при длинне тоннелей X+10. Очевидно, что такой алгоритм работает при любой конечной длине X. Данная формулирока отлична от той, что предлoжена Хельгом, т.е. это две разные задачи. Формулиривка в начале - это как бы третья возможная формулировка.
helg
Уже с Приветом
Posts: 4827
Joined: 15 May 2001 09:01

Re: Задачи для IT интервью

Post by helg »

Физик-Лирик wrote: [..]после какой-то попытки он выберет тот тоннель, где находится вор. Значит, за конечное время он найдет вора[..]
Правильнее вместо выделенного сказать: "за конечное время найдёт с любой заданной вероятностью меньше 1". Даже простой последовательный обход всех туннелей со случайным выбором туннеля всякий раз при попадании в центр уже находит вора за конечное время с любой вероятностью меньше 1, тут и задачи нет.

С точки зрения математики, любое конечное число подбрасываний монеты не гарантирует выпадания хотя бы одной решки, хотя здравый смысл такое принимает с трудом. Смена же вора на плесень как раз помогает тому, чтобы здравый смысл не мешал решению.
Физик-Лирик
Уже с Приветом
Posts: 5104
Joined: 19 Oct 2004 01:46

Re: Задачи для IT интервью

Post by Физик-Лирик »

helg wrote:
Физик-Лирик wrote: [..]после какой-то попытки он выберет тот тоннель, где находится вор. Значит, за конечное время он найдет вора[..]
Правильнее вместо выделенного сказать: "за конечное время найдёт с любой заданной вероятностью меньше 1". Даже простой последовательный обход всех туннелей со случайным выбором туннеля всякий раз при попадании в центр уже находит вора за конечное время с любой вероятностью меньше 1, тут и задачи нет.

С точки зрения математики, любое конечное число подбрасываний монеты не гарантирует выпадания хотя бы одной решки, хотя здравый смысл такое принимает с трудом. Смена же вора на плесень как раз помогает тому, чтобы здравый смысл не мешал решению.
Задача зависит от формулировки. Я совсем не против Вашей формулировки, у меня как видите своих две. Просто начальные условия самой задачи были сформулированы несколько размыто, что и допускает различные "модели".
Физик-Лирик
Уже с Приветом
Posts: 5104
Joined: 19 Oct 2004 01:46

Re: Задачи для IT интервью

Post by Физик-Лирик »

Еще небольшой коммент.
Формально мы можем рассматривать данный процесс как цепочку Бернули, т.е. p(k) = C^n_k p^k (1-p)^(n-k), p=0.5. Тогда имеем
p(0,n) = 0.5 ^n, т.е. формално да, стремится к нулю, но не нуль. На приктике это означает, что программист все время заходит в "неправильный" тоннель, т.е. у него некий инсайд. В этом случае, максимальная длина тоннеля - 10 м, т.е. то что может увидеть из общей комнаты. Но этот инсайд как бы нарушет "произвольность" (randomness) процесса.
adda_
Уже с Приветом
Posts: 10708
Joined: 22 Jul 2006 20:19

Re: Задачи для IT интервью

Post by adda_ »

Завидую я вам ребяты. Умные вы все просто до офигения.
Я тридцать пять лет работаю в этой отрасли. Ни разу за все время подобные задачи в работе не встречались. Все как то тупо и просто.
Поговорить с заказчиком, понять что он хочет (самое сложное на самом деле), понять что ему на самом деле нужно (разные вещи между прочим), написать спецификацию (или какой либо документ где записано что будем делать), утвердить этот документ, написать код, задеплоить все на продакшен. И никаких воров в туннелях..
User avatar
Medium-rare
Уже с Приветом
Posts: 9194
Joined: 04 Mar 2011 03:04
Location: SFBA

Re: Задачи для IT интервью

Post by Medium-rare »

adda_ wrote:Я тридцать пять лет работаю в этой отрасли. Ни разу за все время подобные задачи в работе не встречались. Все как то тупо и просто.
Поговорить с заказчиком, понять что он хочет (самое сложное на самом деле),
Ну да, большая часть нас примерно так, не часто вникает в подобное. Но кто-то же пишет Google Search, двигуны баз данных, и ещё много чего интересного. А большей части программистов да, "вникать в требования заказчика", и использовать технологии, над которыми корпели, решали нетривиальные задачи.

Я лично, пока с работой (хорошей), так на ней много всего, и без того нарешаешься, что в алгоритмические задачи неохота вникать. Лень. Вот если что более "физическое"... Потому и работы у меня похожие...
... and even then it's rare that you'll be going there...
Физик-Лирик
Уже с Приветом
Posts: 5104
Joined: 19 Oct 2004 01:46

Re: Задачи для IT интервью

Post by Физик-Лирик »

adda_ wrote:Завидую я вам ребяты. Умные вы все просто до офигения.
Я тридцать пять лет работаю в этой отрасли. Ни разу за все время подобные задачи в работе не встречались. Все как то тупо и просто.
Поговорить с заказчиком, понять что он хочет (самое сложное на самом деле), понять что ему на самом деле нужно (разные вещи между прочим), написать спецификацию (или какой либо документ где записано что будем делать), утвердить этот документ, написать код, задеплоить все на продакшен. И никаких воров в туннелях..
На самоме деле Вам с таким огромным опытом работы никто уже не решится давать каких-либо задачек. Думаю Вас на интервью рассматривают как "чтобы сделать, чтобы этот кандидат согласился на нас работать", а не как "ну-ка докажи, что ты достоин нашей конторы". Я на себе это уже замечаю. Если когда-то решал на интервью задачи (реальные задачи с диффурами, по физике, по тер. веру; всю доску исписывали), то сейчас как-то общим трепом все ограничевается. Я правда всегда стараюсь схитрить и где-то в начале интервью стараюсь как бы внезначай вставить что-то "умное", термин какой-либо, "формулу". Далее если народ был в этой области начинаются ностальгические воспоминания, как они были "физиками". Если народ не в теме, то все как-то упрощается и идет просто треп. А задачки - это конечно баловство для начинающих кандидатов.
helg
Уже с Приветом
Posts: 4827
Joined: 15 May 2001 09:01

Re: Задачи для IT интервью

Post by helg »

adda_ wrote:Я тридцать пять лет работаю в этой отрасли. Ни разу за все время подобные задачи в работе не встречались. Все как то тупо и просто.
https://www.youtube.com/watch?feature=p ... Oyg#t=3360
User avatar
Medium-rare
Уже с Приветом
Posts: 9194
Joined: 04 Mar 2011 03:04
Location: SFBA

Re: Задачи для IT интервью

Post by Medium-rare »

Физик-Лирик wrote:На самоме деле Вам с таким огромным опытом работы никто уже не решится давать каких-либо задачек.
На самом деле решатся, ещё как. Не только в гуглах, даже в большинстве контор Bay Area. И не только.
... and even then it's rare that you'll be going there...
Физик-Лирик
Уже с Приветом
Posts: 5104
Joined: 19 Oct 2004 01:46

Re: Задачи для IT интервью

Post by Физик-Лирик »

Medium-rare wrote:
Физик-Лирик wrote:На самоме деле Вам с таким огромным опытом работы никто уже не решится давать каких-либо задачек.
На самом деле решатся, ещё как. Не только в гуглах, даже в большинстве контор Bay Area. И не только.
Правда? Как интересно. Если идти в "ресэрч", тогда как бы понятно. Но если не в ресэрч, тогда не совсем ясно зачем. Если человек 35 лет в теме, то задачки как то странно выглядят.
User avatar
Medium-rare
Уже с Приветом
Posts: 9194
Joined: 04 Mar 2011 03:04
Location: SFBA

Re: Задачи для IT интервью

Post by Medium-rare »

Физик-Лирик wrote:Правда? Как интересно. Если идти в "ресэрч", тогда как бы понятно. Но если не в ресэрч, тогда не совсем ясно зачем. Если человек 35 лет в теме, то задачки как то странно выглядят.
Правда. Интервью для всех. Не так давно вдвоём на интервью в старт-ап общались с очень опытным человеком. Какая разница, 20 или 35 лет он в бизнесе? Особенно, если бизнесу больше 15-ти лет быть не может пока. Вопросы задавали, поскольку процедура. Писали в табличку, что спрашивали, и оценивали ответ. :-p
... and even then it's rare that you'll be going there...
mynameiszb
Уже с Приветом
Posts: 1663
Joined: 16 Jul 2009 14:18
Location: Uganda

Re: Задачи для IT интервью

Post by mynameiszb »

Medium-rare wrote:Писали в табличку, что спрашивали, и оценивали ответ. :-p
Я на одном собеседовании тоже - начали отвечать по табличке, потом через пять минут забросили и пошли обсуждать реальные проблемы и как их решать. Два часа просидели, разные интересные варианты разбирали. Табличку куда-то засунули

:)

Return to “Работа и Карьера в IT”