Посоветуйте дельные задания для собеседования
парсеровя думал, тут уж холивар начнется, а постов все нет и нет...
Поэтому просто задачка нулевого уровня (только что родил, хотя, что-то подобное слышал где-то можно как отсев использовать) :
В файле дана строчка символов (неорганиченной и не заданной длины).в ней содержатся пробелы, цифры от нуля до девяти, круглые скобки и знаки : плюс, минус, разделить, умножить.
Программа твоего соискателя просто должна вывести в консоль результат арифметического выражения, записанного символами.
хотя я смотрю на задачку с точки зрения c++, может в питоне это вообще одной строчкой делается (типа eval(str) )
Посоветуйте дельные задания на место стажера.Задания для оффлайна или для проведения собеседования?
может в питоне это вообще одной строчкой делается (типа eval(str) )Так и есть.
Кажется в условии написано что она в память не влазит
Есть робот на бесконечной лестнице. У него интерфейс с единственным методом. При вызове метода робот либо поднимается на одну ступеньку, либо опускается (рандомно 50/50%). Если поднимается - метод возвращает true.
1) написать программу, по которой робот поднимется на 10 ступенек вверх
2) то же самое, без использования переменных
3) ответить, чем опасна реализация из предыдущего пункта
Задания для оффлайна или для проведения собеседования?Да, не уточнил.
Хочется дельную задачу для отсева на дом.
Но, в любом случае, интересно услышать и задачи на 5-10 минут.
то же самое, без использования переменныхрекурсией что ли?
ЗЫ а вообще задача говно, т.к. не сказано, что метод возвращает, если робот опускается
ЗЫ а вообще задача говно, т.к. не сказано, что метод возвращает, если робот опускаетсяА я не понял условие задачи. На 10 ступенек от текущей или просто на 10 подряд? От текущей без переменных - это как-то сложновато для интерна.
Хочется дельную задачу для отсева на дом.Многое будет зависеть от того, сколько процентов людей ты хочешь отсеять. Например, можно задать задачку на алгоритм Дейкстры на разреженном графе (явно не указывая, что задачка решается именно этим алгоритмом). Из .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.
можно еще синтакс. сахаром каким-нибудь, наверное, в завимости от языкаМожно проверить то, как мыслит студент/интерн и посмотреть на его умозаключения об условии задачи, хоть она и сформулирована "криво"
ЗЫ а вообще задача говно, т.к. не сказано, что метод возвращает, если робот опускается
Можно проверить то, как мыслит студент/интерн и посмотреть на его умозаключения об условии задачи, хоть она и сформулирована "криво"Не надо этого делать. Лучше просто нормально формулировать условия. Иначе ты отсеешь сам себя.
Многое будет зависеть от того, сколько процентов людей ты хочешь отсеять.в качестве троллинга
придумал задачку:
есть исходный текст
есть несколько промежуточных измененных текстов (изменения типа удаление строк, замена подстроки, добавление строк) без указания последовательности их изменения
основная задача: высчитать хорошие качественные диффы каждого текста с каждым
бонусная задачка: предложить алгоритм сортировки версиий, который выстроил бы их исторически
На 10 ступенек от текущей или просто на 10 подряд? От текущей без переменных - это как-то сложновато для интерна.Эээ, я бы решал одинаково. Какой более простой вариант есть для 10 подряд?
Эээ, я бы решал одинаково. Какой более простой вариант есть для 10 подряд?Я же сказал, что не понимаю условия. Как решить от текущей без переменных не понимаю, на 10 подряд видимо 10 вызовов через &&
def foo(n):
if not n:
return
if make_step:
return foo(n - 1)
else:
return foo(n + 1)
foo(10)
Я думаю имелось в виду что-то типа такогоВот поэтому и говорю, что условие задачи хреновое. Параметр n - это разве не переменная, во многих языках можно присваивать новые значения, так мне и рекурсии не надо будет. Для рекурсии все просят сделать "без цикла", на не "без переменных".
void Up10
{
Up;
Up;
Up;
Up;
Up;
Up;
Up;
Up;
Up;
Up;
}
void Up
{
if (!Move
{
Up;
Up;
}
}
Но, имхо, это словоблудие, потому что стек вызовов, при общем подходе, это тоже "переменная".
int one_step(void); /* возвращает 1 если шаг был вверх, 0 если вниз */
void one_up(void) {
if (!one_step {
one_up;
one_up;
}
}
/* а теперь 10 раз вызываем one_up */
но понятно, что рекурсия - это не очень-то честный способ обходиться без переменных, так как есть целый стек
так-то и машина тьюринга работает вообще без переменных - только вот на ленту бесконечную пишет
Да, это имелось в виду. Осталось на 3ий вопрос ответить.
Осталось на 3ий вопрос ответить.Ответ тривиальный. Минус в том, что у рекурсивного алгоритма - O(n) затраты по памяти (стеку) и этой памяти при неудачном стечении обстоятельств может не хватить.
Если и тот поделит несправедливо, то и его выбросят за борт, а делить будет следующий по старшенству, и так далее.
Задание: придумать капитану алгоритм делёжки клада, в результате которого тот останется жив с наибольшей выручкой.
Дополнение1: всех пиратов на судне можно однозначно отсортировать по старшенству.
Дополнение2: все пираты действуют совершенно логично.
имхо, это больше для собеседования на должность математика, чем на должность программиста.
если пиратам не понравится как поделен кладесли не понравится всем [остальным]? или какой критерий?
Т.к. у него нет смысла быть довольным, пока он не останется один.
Условие: Пираты на корабле подняли со дна морского клад, состоящий из кучи монет одинакового достоинства. Теперь у капитана задача: поделить этот клад между всеми пиратами. С одной стороны, капитану хочется взять как можно больше себе, а с другой стороны, если пиратам не понравится как поделен клад, то те выбросят капитана за борт к акулам, и тогда клад будет делить следующий по старшенству разбойник.Т.е. бабло останется всё последнему?
Если и тот поделит несправедливо, то и его выбросят за борт, а делить будет следующий по старшенству, и так далее.
Задание: придумать капитану алгоритм делёжки клада, в результате которого тот останется жив с наибольшей выручкой.
Дополнение1: всех пиратов на судне можно однозначно отсортировать по старшенству.
Дополнение2: все пираты действуют совершенно логично.
если не понравится всем [остальным]? или какой критерий?
Если большинство пиратов проголосует против. Все голоса имеют одинаковый вес независимо от ранга пирата.
Я так понимаю, смысл задачи в том, чтобы отдать ВСЁ самому низшему пирату.Это да, но зато есть большой смысл быть довольными у старших, потому что они-то не хотят на корм акулам пойти.
Т.к. у него нет смысла быть довольным, пока он не останется один.
Дополнение1: всех пиратов на судне можно однозначно отсортировать по старшенству.Для корректности нужно еще одно условие: при прочих равных каждый пират предпочтет выбросить другого за борт.
Дополнение2: все пираты действуют совершенно логично.
если четное, то нужно строго больше половины или просто половины "против" хватит что выкинуть старшего?
Это да, но зато есть большой смысл быть довольными у старших, потому что они-то не хотят на корм акулам пойти.Хуйня, т.к. если они станут главными, их также самый младший выкинет за борт. Так что по твоему условию вариант один.
Если большинство пиратов проголосует против. Все голоса имеют одинаковый вес независимо от ранга пирата.Ну вот - пошло условие меняться и подгоняться под ответ.
Мне ещё непонятно вот что - золото капитана вместе с ним выкидывают за борт?
должность математика, чем на должность программиста.Противопоставление ты сам придумал?
Противопоставление ты сам придумал?"Противопоставление" добавил ты. Я говорил о том, что это отличающиеся направления, хотя и имеющие общую базу.
Оставить комментарий
jakal222
Посоветуйте дельные задания на место стажера.Что-нибудь типа "реализовать алгоритм" или "написать программулю"
Позиция: стажер на серверную часть, Python+Tornado, специфика: написание worker'ов / парсеров