Посоветуйте дельные задания для собеседования

jakal222

Посоветуйте дельные задания на место стажера.
Что-нибудь типа "реализовать алгоритм" или "написать программулю"
Позиция: стажер на серверную часть, Python+Tornado, специфика: написание worker'ов / парсеров

markyzz

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

PooH

задачка не сложная, но для собеседования не подходит - быстро (5-10 минут) ее не напишешь, мест с граблями полно
хотя я смотрю на задачку с точки зрения c++, может в питоне это вообще одной строчкой делается (типа eval(str) )

kokoc88

Посоветуйте дельные задания на место стажера.
Задания для оффлайна или для проведения собеседования?

stm5872449

может в питоне это вообще одной строчкой делается (типа eval(str) )
Так и есть.

val63

Кажется в условии написано что она в память не влазит

kill-still

У меня простенькая:
Есть робот на бесконечной лестнице. У него интерфейс с единственным методом. При вызове метода робот либо поднимается на одну ступеньку, либо опускается (рандомно 50/50%). Если поднимается - метод возвращает true.
1) написать программу, по которой робот поднимется на 10 ступенек вверх
2) то же самое, без использования переменных
3) ответить, чем опасна реализация из предыдущего пункта

jakal222

Задания для оффлайна или для проведения собеседования?
Да, не уточнил.
Хочется дельную задачу для отсева на дом.
Но, в любом случае, интересно услышать и задачи на 5-10 минут.

Marinavo_0507

то же самое, без использования переменных
рекурсией что ли?

zya369

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

kokoc88

ЗЫ а вообще задача говно, т.к. не сказано, что метод возвращает, если робот опускается
А я не понял условие задачи. На 10 ступенек от текущей или просто на 10 подряд? От текущей без переменных - это как-то сложновато для интерна.

kokoc88

Хочется дельную задачу для отсева на дом.
Многое будет зависеть от того, сколько процентов людей ты хочешь отсеять. Например, можно задать задачку на алгоритм Дейкстры на разреженном графе (явно не указывая, что задачка решается именно этим алгоритмом). Из .NET разработчиков без N^2 её решает 1 из 50 кандидатов.
Для интернов я бы выбирал реализацию той или иной коллекции, но без жести: double linked list, dynamic array, unbalanced binary search tree. На отсев хорошо работают вопросы, когда нужно подумать и вместо самых ходовых коллекций (динамический массив и хэш таблица) использовать, например, двоичное дерево поиска. Из .NET разработчиков такие задачи решает примерно 1 из 20 кандидатов.
Лучше всего давать 2-3 задачки, каждая из которых решается за 5-15 минут; или одну, которую можно решить за 1-2 часа. Если решение занимает 2 или более часа, то нужно выдумывать что-нибудь интересное или challenge accepted.

jakal222

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

kokoc88

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

PooH

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

stm5872449

На 10 ступенек от текущей или просто на 10 подряд? От текущей без переменных - это как-то сложновато для интерна.
Эээ, я бы решал одинаково. Какой более простой вариант есть для 10 подряд?

kokoc88

Эээ, я бы решал одинаково. Какой более простой вариант есть для 10 подряд?
Я же сказал, что не понимаю условия. Как решить от текущей без переменных не понимаю, на 10 подряд видимо 10 вызовов через &&

stm5872449

Я думаю имелось в виду что-то типа такого
  
def foo(n):
if not n:
return
if make_step:
return foo(n - 1)
else:
return foo(n + 1)

foo(10)

kokoc88

Я думаю имелось в виду что-то типа такого
Вот поэтому и говорю, что условие задачи хреновое. Параметр n - это разве не переменная, во многих языках можно присваивать новые значения, так мне и рекурсии не надо будет. Для рекурсии все просят сделать "без цикла", на не "без переменных".

Dasar

Для варианта "без переменных" подразумевается скорее всего следующий код:

void Up10
{
Up;
Up;
Up;
Up;
Up;

Up;
Up;
Up;
Up;
Up;
}
void Up
{
if (!Move
{
Up;
Up;
}
}

Но, имхо, это словоблудие, потому что стек вызовов, при общем подходе, это тоже "переменная".

Marinavo_0507


int one_step(void); /* возвращает 1 если шаг был вверх, 0 если вниз */

void one_up(void) {
if (!one_step {
one_up;
one_up;
}
}

/* а теперь 10 раз вызываем one_up */

но понятно, что рекурсия - это не очень-то честный способ обходиться без переменных, так как есть целый стек

Marinavo_0507

опередил сцуко
так-то и машина тьюринга работает вообще без переменных - только вот на ленту бесконечную пишет

kill-still

Да, это имелось в виду. Осталось на 3ий вопрос ответить. :dance: :grin:

Dasar

Осталось на 3ий вопрос ответить.
Ответ тривиальный. Минус в том, что у рекурсивного алгоритма - O(n) затраты по памяти (стеку) и этой памяти при неудачном стечении обстоятельств может не хватить.

Jackill

Условие: Пираты на корабле подняли со дна морского клад, состоящий из кучи монет одинакового достоинства. Теперь у капитана задача: поделить этот клад между всеми пиратами. С одной стороны, капитану хочется взять как можно больше себе, а с другой стороны, если пиратам не понравится как поделен клад, то те выбросят капитана за борт к акулам, и тогда клад будет делить следующий по старшенству разбойник.
Если и тот поделит несправедливо, то и его выбросят за борт, а делить будет следующий по старшенству, и так далее.
Задание: придумать капитану алгоритм делёжки клада, в результате которого тот останется жив с наибольшей выручкой.
Дополнение1: всех пиратов на судне можно однозначно отсортировать по старшенству.
Дополнение2: все пираты действуют совершенно логично.

Dasar

имхо, это больше для собеседования на должность математика, чем на должность программиста.

zya369

если пиратам не понравится как поделен клад
если не понравится всем [остальным]? или какой критерий?

kill-still

Я так понимаю, смысл задачи в том, чтобы отдать ВСЁ самому низшему пирату.
Т.к. у него нет смысла быть довольным, пока он не останется один. :grin: :grin:

korsika

Условие: Пираты на корабле подняли со дна морского клад, состоящий из кучи монет одинакового достоинства. Теперь у капитана задача: поделить этот клад между всеми пиратами. С одной стороны, капитану хочется взять как можно больше себе, а с другой стороны, если пиратам не понравится как поделен клад, то те выбросят капитана за борт к акулам, и тогда клад будет делить следующий по старшенству разбойник.
Если и тот поделит несправедливо, то и его выбросят за борт, а делить будет следующий по старшенству, и так далее.
Задание: придумать капитану алгоритм делёжки клада, в результате которого тот останется жив с наибольшей выручкой.
Дополнение1: всех пиратов на судне можно однозначно отсортировать по старшенству.
Дополнение2: все пираты действуют совершенно логично.
Т.е. бабло останется всё последнему?

Jackill

если не понравится всем [остальным]? или какой критерий?

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

Jackill

Я так понимаю, смысл задачи в том, чтобы отдать ВСЁ самому низшему пирату.
Т.к. у него нет смысла быть довольным, пока он не останется один.
Это да, но зато есть большой смысл быть довольными у старших, потому что они-то не хотят на корм акулам пойти. ;)

andra1980

Дополнение1: всех пиратов на судне можно однозначно отсортировать по старшенству.
Дополнение2: все пираты действуют совершенно логично.
Для корректности нужно еще одно условие: при прочих равных каждый пират предпочтет выбросить другого за борт.

zya369

если четное, то нужно строго больше половины или просто половины "против" хватит что выкинуть старшего?

kill-still

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

kill-still

Если большинство пиратов проголосует против. Все голоса имеют одинаковый вес независимо от ранга пирата.
Ну вот - пошло условие меняться и подгоняться под ответ. :smirk:

kill-still

Мне ещё непонятно вот что - золото капитана вместе с ним выкидывают за борт?

apl13

должность математика, чем на должность программиста.
Противопоставление ты сам придумал?

Dasar

Противопоставление ты сам придумал?
"Противопоставление" добавил ты. :) Я говорил о том, что это отличающиеся направления, хотя и имеющие общую базу.
Оставить комментарий
Имя или ник:
Комментарий: