JS-гуру возмущен неоплаченным тестовым
Пишет Анонимус: «Здравствуй, ебаная редакция и не менее ебаные читатели!
Наткнулся сегодня в ленте LinkedIn на публичную жалобу к украинской галерку по причине отсутствия ответа на присланное тестовое.

Выглядит как солидная предъява возмущенного и очень занятого разработчика, мол паразитируют на его тестовом, он целых 15 часов потратил.
Заходим на GitHub (https://github.com/hirdbluebird/Intetics), видим задание, уже становится интереснее:
Напишите программу, которая возвращает наибольшее число палиндром, которое является произведением двух простых пятизначных чисел, а также возвращает сами сомножители. Простое число — это натуральное число, которое делится нацело только на 1 и на себя само (2, 3, 5, 7, 11, …) Палиндром – строка, которая читается одинаково в обоих направлениях (например ABBA)
Кульминация настанет если открыть код. Мало того, что он тупо перебирает все возможные варианты самым тупым циклом и забивает память непойми зачем, задание вообще выполнено неправильно. И выполняется целых 4 минуты на промежутке от 10000 до 100000. (15 часов затраченного времени, карл!)
Да, компания явно не права, что сразу не ответила «вы долбоеб и нам не подходите», но аутизму парня можно позавидовать: заявляться с таким тестовым на серьезных щщах — это ебаная суперспособность».
Прислал Анонимус
Комментарий ебаной редакции
Странно, что Евгений вообще взялся за высосанное из пальца задание и не послал контору прямиком по адресу. Когда дают тестовые на полдня-день — это тошно. Но если дают задание хоть примерно по теме того, чем будешь заниматься — в этом смысла в 100 крат больше. Во-первых, тимлид-кнутовед сразу может отдаленно прикинуть, как товарищ будет справляться с задачами, необходимыми для проекта. Во-вторых, сам гребец примерно поймет чем ему предстоит заниматься на галере. Выдумывать всякую абстрактную поебень вроде FizzBuzz — тратить драгоценную возможность увидеть потенциального кандидата в реальных, а не песочных условиях. Что же касается соискателей, то их такая мелочность лишь раздражает, так как не несет в себе никакого смысла. Но наплыв вайтишников делает свое дело — в итоге всё больше разрабов соглашаются на унизительные тестовые, которые не только занимают много времени, но и опускают на грешную землю — даже если ты опытная веб-макака, тебя всё равно можно унизить еще даже перед собеседованием.
Коментарі (115)
Кому первый защекоин?
Привет ты че охуел
Я вам не скажу за всю Одессу,
Но понадусэшная пиздота обожает Надю Савченко!
Так, я хэрой — я воюваф, а ты дэ буфф? На пэрэдку буфф, сука москальська?
Привет ты че охуел
Я надеюсь он там хоть с конца перебирает? От 99999 до 10000?
Вообще это очень простая задача. Во первых, надо во вложенном цикле перемножить все числа в диапазоне от 10000 до 99999 и сохранить в массив. Затем следует выбрать из этого массива все палиандромы, для чего во в двух вложенных циклах перебрать весь массив чисел и выбрать те, в которых есть совпадения первой половины со второй. Затем полученные числа в двух вложенных циклах делить на числа в диапазоне от 10000 до 99999. Полученные сохранять в массив. Затем выбрать из массива те, что поделились без остатка, то есть не имеют дробной части. Затем перебрать полученные числа, деля их при этом последовательно от 1 и до самого числа. Те, что поделились только на себя и на единицу, считать простыми. После чего найти максимальные числа. И готов ответ!…)))
Мы не берём тебя на работу, и знаешь почему? Да потому что ты сожрал всю память. Не умеешь писать не пиши. И забудь про IT.
Еще один говнокодер
>> Затем полученные числа в двух вложенных циклах делить на числа в диапазоне от 10000 до 99999.
Во-первых, сначала умножать, а потом делить снова перебором идея так себе. Во-вторых, ты так рискуешь отобрать палиндромы которые являются произведением простого и не простого, к тому же тебе нужны оба множителя, а ты во второй массив (на этом моменте тебе уже нужно разбить ебало) записываешь только частное
А по сути — перебирать нужно в диапазоне от 99999 до 10001 только по нечетным, и делить на все числа в диапазоне от 3 до округленного квадратного корня числа с шагом 2 (тоже по нечетным). А уже найденные таким способом записывать в ма… в список, и при нахождении нового, поочередно умножать его на каждый элемент (начиная с большего) списка и проверять на палиндром. Первый найденный палиндром и будет искомым. И не нужно, сука, двух массивов и две пары вложенных циклов. А такую хуйню:
>> Затем перебрать полученные числа, деля их при этом последовательно от 1 и до самого числа.
Простить можно только фронтенд-макаке, если ее не придется подпускать к D3.js
> перебирать нужно в диапазоне от 99999 до 10001 только по нечетным
Я думаю ты получишь O((N/2) ^ 2). Все равно 2 цикла вложенных.
Не проще ли построить сегментированным способом решето Эратосфена, у которого O(n log (log n)).
А уже потом спускаться для a и b линейно уменьшая индекс массива на 1.
Притом случаи когда a == b проверяются только один раз.
Увожаемый, вы можете помериться с героем статьи количеством извилин.
Ответ 99899 вам за щеку.
какого хуя ты мне это пишешь, долбоёб?
Не, у них уже методички поменялись.
Савченко уже не герой, не фигура, равная Кобзарю, а предатель.
Хотя, к чему это Вы? 🙂
Ахаха, формошлёп возмущён тем, что не оценили его «программистские» способности (которые отсутствуют)
Веб-дев? Задачи на алгоритмику? Порадуйтесь, что он на пол не насрал хотя бы.
Мы срем только на женский пол, а вот мальчиков обожаем!
А хорошо это или плохо?
А если уравновесить? Мол, сделаешь как надо — заплатим. Не сделаешь — оштрафуем, сука, потому что дали тебе не примерчик из методички, а часть настоящей работы. И раз ею занялся ты — больше её не делал никто. Ты обосрался — ты запорол график работ целой толпе народа. И неустоечку самую настоящую будь добр.
Будет ли готов этот злой Бэтмен не только красиво попиздеть, но и достойно ответить за пиздёж?
Дайте мне, пожалуйста. методичку с примерами.
Не доёбывайся к мелочам, старайся понять сам смысл.
«Методичка» ? Да хотя бы вот такие типовые задания из серии «красно-чёрных деревьев», которые все почему-то очень любят, даже если тебе с этим не работать.
Достаточно «примеров»? Или лучшие умы человечества никак не могут без того, чтобы им всё по буквам разжевали, положили за щеку и обязательно не забыли уточнить, что они всё-таки элита мозгового запаса мира?
> Мол, сделаешь как надо — заплатим. Не сделаешь — оштрафуем, сука, потому что дали тебе не примерчик из методички, а часть настоящей работы.
Ну тут уже тогда надо и в проект входить, а то сделает как надо, но не там.
Как бы это оформили — это уже частности. Сама ситуация дикая. Либо на равных как корыстолюбие, так и ответственность — либо нечего морщить попу и будет как у всех.
А «у всех», то есть в реальном мире реальных предметов, на тестовом задании потенциальный работодатель ЗАРАНЕЕ тратит на тебя ресурсы и деньги. Неважно, кем ты пришёл работать : резчиком по дереву, металлообработчиком или поваром. Тебя приводят в оборудованное помещение, выдают материалы, инструменты, а в случае станка/плиты/мясорубки и т д — ещё и оборудование, жрущее прорву энергии. И если ты зафейлил — тебе просто укажут на дверь, хотя просрали только что на твою «попытку показать» дохуя немало. Правда, логично, что и об оплате независимо от результата речи быть не может?
А тут ещё веселее. Придёт #яжевремятратил, который это же самое время гарантированно с нулевой отдачей может потратить на очередной сеанс дрочки. Слава яйцам, что на этот раз он никакого физического ущерба не наносит. Ему даётся выбор : хочешь начать зарабатывать здесь — покажи, что ты это можешь. Всё.
Задание не «по делу»? А давно была статья от дизайнера, где он хуями крыл хитрых работодателей, дающих как «тестовое» визитки или флаеры, разработка которых иначе стоила бы денег? Тогда уже определитесь, что хорошо, а что плохо
Ты че заболел на мозг? Ты рли думаешь, кастомер просил захуярить ему палиндром? Обычное тестовое, после которого прийдется говнокодить за болгарами/румынами/индусами/вставить свое
Я ж не о том, как «по факту». Я касательно хотелок героя статьи
Договор подпишут, ага.
Всё решил комментарий ебаной редакции ))
Тестовое странное, конечно, но чувак — долбоёб. В следующий раз этот гуру будет перебирать все элементы выборкой из БД.
Реджект сразу, желательно с припиской, что он долбоёб.
Базука опять шалишь? Шучу, шучу 🙂
А по теме даже если Евгений обложался и допустил кучу июнь ошибок это неприлично со стороны галеры тупо молчать и не написать ему хотябы пару строк типа вот малыш у тебя сожрано 128 гигов памяти и кор и7 херячил пол часа, надо 128 мб и 3 сек на и7. Так что интетикс получает за щеку.
Где в требованиях быстродействие и ресурсы?
Глупыша, в задании про производительность ничего не напишут. Но при разборе решения будет повод ткнуть тебя мордой в говно.
Если дев, «который будет сталкиваться только с РИАЛЬНЫМИ задачами», не может написать fizzbuzz, или палиндром, то пусть идет нахуй, серьезно. Я такого бы не взял, пусть он хоть в 100 раз круче всех умеет сверстать говностраницу, или круду наговнокодить. Я бы и не брал бы, если профильного, или околопрофильного образования нет. Ебаные полукровки
Ждем ваш алгоритм на любом си-подобном языке… C, C++, C#, Java.
Да хоть паскаль.. вообще на любом, разберемся.
Но очень хочется взглянуть! You are welcome!
public static bool IsPalindrome(this string input)
{
if (string.IsNullOrWhiteSpace(input))
throw new ArgumentNullException(nameof(input));
if (input.Length == 1)
return true;
return input.SequenceEqual(input.Reverse());
}
Ну и че ты хотел увидеть ?
Нет, конкретно решение это задачки, а не ебучий палиндром. P.S. Ты еще и гавнокодер.
И где тут говнокод, алень ?)
Я имел ввиду решение задачи для джуна!
Но конкретно по-твоему примеру нет смысла проверять на white space, потому что есть куча символов (особенно unicode-specific), которые не будут white space, но будут не видны на экране.
Да и по задаче джуна там только цифры должны быть, т.е. если УЖ И ПРОВЕРЯТЬ, то чем-то типа:
Char.IsDigit Method (String, Int32)
Лови два защекойна:
1. Пустая строка — палиндром.
2. Производительность: можно брать первую половину символов и сравнивать с реверсом второй половины.
Я бы хотел увидеть что-нибудь такое:
public static bool IsPalindrome(this string input)
{
int halfLength = input.Length / 2;
return input.Take(halfLength).SequenceEqual(input.Reverse().Take(halfLength));
}
Где про производительность в условии? У тебя за щекой?
Не попал.
Про производительность никогда не оговаривают в условиях.
Но пинают, если к эффективности решения есть вопросы.
А ежели палиандром вида ABCBA ?
Пардон, увидел уже после того как написал свой коммент
Все ок: если количество букв нечетное, то центральную проверять не надо.
Для любой строки из 5 символов надо сделать две проверки: сравнить 1 символ с последним и второй с предпоследним.
Количество проверок: 5/2 = 2(для целых чисел в при делении округление идет вниз).
Для строки «ABCBA» обе проверки будут успешны, функция вернет true.
Синьор Олег, на минуточку… Нет-нет, подальше, коллеги услышат — ещё чего подумают…
А теперь смотри мне в глаза и расскажи о производительности, если в палиндроме (внезапно) НЕЧЁТНОЕ количество символов.
Баг, да? «Непредсказуемый», блин, «жучок залез и повредил работу отлаженной системы»? Force Major, божественное вмешательство, да?
Ты — молодец, я верю. Твой продукт будет «обновляться» до тех пор, пока не сдохнет заказчик или его терпение.
И в чем проблема?
«».IsPalindrome() -> true
«a».IsPalindrome() -> true
«bab».IsPalindrome() -> true
Да-да-да. И это в примитивном простом случае. Ткнули носом — «лааадно, испрааавлю…» И ещё повезло, что действительно исправимо, а не писать всё заново.
Ты же хотел блеснуть и посрамить. А чуток подумать перед этим — не?..
Хреновый ты работник. Ты, ясен пень, не согласен, но это факт. Я бы тебе даже собачью будку сколотить не доверил. Гвоздь будет торчать, щели в палец или вообще рухнет через день — на кой МНЕ за тобой угадывать, в чём именно ты забьёшь и накосячишь
Ммм.. Куда там носом ткнули? Ты путаешь что-то: тебе просто защекойн прилетел.
Прямым же текстом сказано, что на строках нечетной длины код корректно работает. Менять его не надо.
Если не согласен, приведи контр-пример: палиндром, на котором эта функция выдаст false.
Так что лучше последуй своему совету: прежде чем блеснуть, подумай.
сейчас бы в C#/Java делить строки ради производительности…
https://pastebin.com/6mNqNPL9 я там накидал ему в каментах, 3.5 сек на жієс. При том, что жієс я, тащемта, не знаю) Алгоритм очевидный, практически в лоб, без изъебов. Я просто чуть оптимизировал узкие места. Ну епта, надо ж такое делать, не?
В рот ебал тебя и таких как ты, которые дают такие днищенские оторванные от реальности задачки. Для таких как ты в аду уготовлен 30 см. страпон. Эти задачки не показывают нихуя, кроме умения решать этим самые задачки.
Боюсь, оно за 30-сантиметровый еще и поблагодарит )
сделай задание на выходных и получи защеку защекоин и за шиворот зашивроин!
Це рівень розробки на js. Просте завдання з котрим б сі або ➕ ➕ розробник б за пів години впорався б у нього зайняло 15 годин.
У Js Девов и ++ разные задачи и разные ниши, поэтому сравнивать их это зашквар, это все равно что сравнивать ебучий БТР и гоночную машину на формуле 1.
Моя 30-мм автоматическая пушка позволит мне победить в любой формуле.
Да оно гуглится. И всё и по частям, как угодно. Чувак его просто не сделал, у него ответ неверный. Он гуглом не умеет пользоваться даже.
90% вайти соискателей бы не справились с этим заданием.
А как вообще это решить без перебора?
И кто-нибудь понял, зачем он:
// if value is less than start point remove it
сначала делает расчеты для чисел до 10000, а потом удаляет их из массива? Он не сразу понял, что можно начинать расчеты сразу с 10000 или че?
И алгоритм перебора у него дебильный. Он начинает с наименьших чисел, хотя нужно начинать с наибольших и делать декремент в каждом множителе и так до первого попадания.
«сначала делает расчеты для чисел до 10000, а потом удаляет их из массива? Он не сразу понял, что можно начинать расчеты сразу с 10000 или че?»
Найти простые числа для деления нужно все, а не только после 10000. Потому и ищется с двойки.
Тоха, нельзя с 10к начинать. ты не вникаешь
С двойки он начал чтоб перебор не такой дебильный был, это у него такое решето Эратосфена. Гифку он посмотрел, а вот алгоритм переписать не смог. Собственно в текущих условиях, когда начинать нужно «сверху», толковый перебор
[range(2, sqrt(n), 2)] справится быстрее, и затраты памяти меньше будут.