LINUX.ORG.RU
ФорумTalks

что творят девелоперы

 


6

5

Решаю задачку на talentbuddy.co, а там...

Задача: смёрджить два отсортированных масива. Больше двух третей ответов в духе return sorted(a+b).

В задании посчитать корень числа без использования библиотечных функций один чувак как-то пропихнул ответ def sqrt(x): return 4 . Не знаю как у него это получилось. Видимо, поймал момент когда не было дополнительных тестов.

У меня есть смутное подозрение что люди неправильно понимают зачем это всё нужно. Вспомнился анекдот:

Недалёкое будущее. Программист:
-- Компьютер, сделай базу данных.
Исправленная версия:
-- Компьютер, сделай базу данных. Чтобы работала.
★★★★★

Ответ на: комментарий от true_admin

просили перемножить матрицы, заодно поговорили о памяти в C итп

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

как бы я написал tcp/ip с точки зрения буферов на уровне ядра

Тут смотря вообще на то, понимаешь ли ты как это работает или нет.

как бы я написал балансировщик нагрузки

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

alozovskoy ★★★★★
()
Ответ на: комментарий от ansky

Стало быть, нужно это, чтобы наняться на работу в большую контору

Вот именно по этому, я полностью согласен. Сюда же припишем дипломы и прочие сертификаты.

alozovskoy ★★★★★
()
Ответ на: комментарий от alozovskoy

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

Это просто меня жалели, я до следующих вопросов не добрался :). Но это отдельная история. И всё же, разве это плохо попросить написать перемножение матриц? Я ведь мог ответить «возьмите готовую библиотечную функцию».

true_admin ★★★★★
() автор топика
Ответ на: комментарий от true_admin

У вас модно вырывать фразы из контекста, я смотрю... При чем не просто вырывать фразы, а вырывать куски. Хинт - можно вообще нужные буквы скопипастить, ага.

alozovskoy ★★★★★
()
Ответ на: комментарий от true_admin

При мердже как бы параллельный обход получается. Меньший от двух следующих.

В отличии от низкоуровневых продуктов, конечный продукт такого рода обычно не является основой всего, а лишь инструментом. Поэтому бизнес-процесс предполагает множество контрольных точек, которые так или иначе будут пройдены. Если программа вернет 4 вместо 5, то оператор об этом скоро узнает и запостит это в саппорт. У тебя и так некоробочное по, в нем 100500 ошибок (ты же не надеялся, правда?), и то, что ты вручную добавил еще 10, большой роли не играет. Зато система запущена и работает. По опыту могу сказать, что система до запуска и через неделю — совершенно разные понятия :)

arturpub ★★
()
Ответ на: комментарий от alozovskoy

Все, я прошел?

Представим у нас сайт, в секунду 1000 посещений. Нужно сделать без цикла и без рекурсии, это слишком ресурсоемко, когда много итераций. Вариант с циклом - это такой программистский фейл.

Тебе не нужно знать как работает выключатель чтобы провести проводку.

Но все-таки нужно знать, почему лампочка тухнет при разрыве цепи, и вообще что такое разрыв цепи, зачем выключатель. И я вообще не могу представить электрика, который не знает, как работает выключатель. Вдруг он вкрутит вместо выключателя еще одну лампочку? Или его убьет током. А если его попросят сделать, чтобы лампочка включалась из двух мест он скажет: «ой нет, мы такого не проходили».

goingUp ★★★★★
()
Ответ на: комментарий от true_admin

Если бы ты на собеседовании так сказал тебя надо было бы гнать взашей, потому что «Подчиненный перед лицом начальствующим...»(с).

alozovskoy ★★★★★
()
Ответ на: комментарий от alozovskoy

Ну извините, я так распарсил твой текст.

true_admin ★★★★★
() автор топика
Ответ на: комментарий от alozovskoy

Все, я прошел?

Правильно обе даты перевести в юлианские и применить простую арифметику. Но ты и так прошел. Не прошел тот, кто начал выкатывать движок для работы с григорианскими датами — кстати таких куда больше среди «рил программирс».

arturpub ★★
()
Ответ на: комментарий от ansky

Ага. Алгоритмы нужно знать. Я вот писал на днях длинную арифметику и там надо было делать modPow. Я написал по Барретту, а потом сравнил с готовой реализацией по Монтгомери, и вышло, что у меня, при прочих равных, на числах порядка килобита выходит тормознее на порядки. При том, что байто€#@тво и там, и там. Поэтому, если ты не знаешь, как работает библиотечная функция, хотя бы и в общих чертах, то, когда у тебя на арифметических операциях будет разгоняться кулер на Xeon, тебе захочется что-то менять, а ты не будешь даже знать, за что хвататься)

cdshines ★★★★★
()
Ответ на: комментарий от goingUp

Ты опять путаешь. Знать на уровне физики электрик не обязан. Электрик он вообще пту окончил и уже принял с утра, его дело - кабель тянуть. ТО что ты сказал называется «проходным выключателем». Погугли схемы и прикинь, нужно ли знать что там внутри или, как я уже говорил, нужно знать что на входе и что на выходе?!

Вдруг он вкрутит вместо выключателя еще одну лампочку?

Он знает, что выключатель суть один провод, а лампочке нужно два. И опять мы пришли к тому, что нужно просто знать что на входе и что на выходе.

Нужно сделать без цикла и без рекурсии, это слишком ресурсоемко, когда много итераций.

ОК, берем начало отчета, берем сегодняшнее число, смотрим сколько дней между ними и делим на отчетный период. Целую часть результата отбрасываем, дробную умножаем на отчетный период. Полученное значение дней вычитаем из «сегодня». Циклов нет. Проще только таблицей сгененрить данные и выбирать.

alozovskoy ★★★★★
()
Последнее исправление: alozovskoy (всего исправлений: 3)
Ответ на: комментарий от cdshines

Да я то не возражаю. Сам на курсере 2 сертификата получил. Но не потому, что мне это нужно, а потому, что в кайф.

ansky ★★★★★
()
Ответ на: комментарий от alozovskoy

Полученное значение дней

Остаток от деления. Ну ок, будем считать, ты нашел правильное решение. [А вот таблицей будет дольше и не проще.] Но тебе подсказали, что можно проще :) Это как аналог ознакомления с библиотечной функцией :) Про электрика даже спорить не хочу. Ну знает хороший электрик устройство выключателя, и даже плохой знает, и от этого ему только лучше.

goingUp ★★★★★
()
Ответ на: комментарий от arturpub

Ну конечно можно. Но это не о программировании, а о том, как покупать зачеты у преподавателей.

goingUp ★★★★★
()
Ответ на: комментарий от true_admin

Жаль что тут не филиал говнокода, а то я бы повеселил вас.

Ага, и оригинальный govnokod.ru на днях слёг по непонятным причинам :(

KennyMinigun ★★★★★
()
Ответ на: комментарий от goingUp

В общем я согласен с вами (с тобой, с true_admin) - чем больше ты знаешь, тем лучше. И тот, кто знает «как это работает внутри» гораздо круче специалист в любой области, чем тот, кто этого не знает. Специалист всегда сделает качественней, надежнее и так далее. Просто я хочу... ну не знаю, попросить, что ли.... вы, Программисты, если видите что человек не знает как это работает изнутри, вы не думайте что в обычных условиях он инструмент хуже вас применяет. И хоть ОП-пост совсем не про это, просто я все время вижу как говорят «да он и сортировку пузырьком не напишет, лол», и я также знаю людей, которые знают что-то фундаментально, но у них настолько отсутствует умение строить логические связи и следствия, они умеют пользоваться этим знанием просто НИКАК, так что они свои знания могут только на контрольных работах по пройденному материалу в своем учебном заведении применить.

Всем приятного вечера, пойду я.

alozovskoy ★★★★★
()
Ответ на: комментарий от true_admin

А если нету желания всирать 3(5) лет, но есть желание учиться на программиста(и им стать, т.е учить всякий рокет science в виде графов, поисков и сортировок), где стоит учить это?

Т.е какой либо унифицированный курс в интернете, что бы не гуглить все по отдельности.

shuck ★★★
()
Ответ на: комментарий от alozovskoy

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

arturpub ★★
()
Ответ на: комментарий от shuck

За всяким рокет сайнсом стоит раздел математики. Графы — одно, отношения — другое. Кто-то вон вечером фигуры в 3d пересекал — это еще другое. Сортировка и поиск обсосаны Кнутом. Скорее всего нет прямо такого места, где «рокетчиков широкого профиля» готовят, только если сам.

arturpub ★★
()
Ответ на: комментарий от arturpub

ретурн 4 чтобы сдать работу сейчас, а не через неделю — нахрен он такой нужен

золотые слова.

туАЛЛ: вся тут битва вообще вокруг является вычислительная сложность реализации честью интерфейса или внутренее дело реализации.

если второе то «sorted(a+b)» - достаточное решение

если первое но двухпутевое слияние - необходимое и достаточное.

qulinxao ★★☆
()
Ответ на: комментарий от true_admin

Короче, я бы не стал связываться с человеком который не может написать сортировку пузырьком потому что «я не обязан это уметь, есть же библиотечная функция которая решает эту проблему».

Я бы не стал связываться с человеком, который не знает, что хочет. Учись ставить задачи ясно, тогда все твои трудности с подбором людей пропадут. Это не проблема людей, которые следуют заветам Стива Макконнелла: не писать велосипеды. Это слишком очевидно. Вобщем, ты ССЗБ.

gh0stwizard ★★★★★
()
Ответ на: комментарий от alozovskoy

Пять баллов!

- Вы не умеете писать сортировку пузырьком!
- А напишите пожалуйста вычисление квадратного уравнения на асме.
- Извините, вы слишком умны для нас, до свидания.
gh0stwizard ★★★★★
()
Ответ на: комментарий от true_admin

Короче, я бы не стал связываться с человеком который не может написать сортировку пузырьком потому что «я не обязан это уметь, есть же библиотечная функция которая решает эту проблему»

Сортировка пузырьком в контексте оригинального поста с

смёрджить два отсортированных масива

как-то не к месту :)

yoghurt ★★★★★
()
Ответ на: комментарий от true_admin

Питоновский sorted использует timsort который оптимизирован для данного случая.

А вот это уже makes sense, и sorted, оказывается, тут к месту.

yoghurt ★★★★★
()
Ответ на: комментарий от alozovskoy

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

alex-w ★★★★★
()
Ответ на: комментарий от true_admin

я не обязан это уметь, есть же ...

С такими людьми действительно связываться не стоит. Но это справедливо для любых областей

Вопрос: «Как реализована функция sorted на питоне?». Если она написана на C или на сущностях «ниже уровня абстракции», то любой код, написанный вручную, будет заведомо медленнее. Более того, данный код рискует превратиться в мину замедленного действия.

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

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

Короче говоря, все вышеперечисленное в очередной раз доказывает унылость всяких «тестирований»: без жестко заданных условий любой код — говнокод

И да. Дроч на сферический O в вакууме намного фатальнее для проекта, чем говнокод.

Macil ★★★★★
()
Ответ на: комментарий от buddhist

Искусственные задачи не нужны

диванные теоретики в треде, первая задача прекрасно себе решается в тех же СУБД, например SQLite

wota ★★
()
Ответ на: комментарий от wota

вторая задача тоже всем прекрасно известна по практическому применению в популярных играх

wota ★★
()
Последнее исправление: wota (всего исправлений: 1)
Ответ на: комментарий от alozovskoy

Я тоже не понял (ну я то и не такой уж и программист)

Если быть точнее - то ты вообще не программист =)

Siado ★★★★★
()
Ответ на: комментарий от alozovskoy

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

да, всё верно

Harald ★★★★★
()

посчитать корень числа без использования библиотечных функций

x**.5

Не?;-)

У меня есть смутное подозрение что люди неправильно понимают зачем это всё нужно.

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

AIv ★★★★★
()
Ответ на: комментарий от PolarFox

Вот он, камень, так сказать. С одной стороны - какие еще велосипеды, когда проект сдавать? С другой - что может написать плохо понимающий, если задача внезапно будет сложной?

coderage
()
Ответ на: комментарий от alozovskoy

Он знает, что выключатель суть один провод, а лампочке нужно два. И опять мы пришли к тому, что нужно просто знать что на входе и что на выходе.

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

quickquest ★★★★★
()
Ответ на: комментарий от alozovskoy

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

vertexua ★★★★★
()

По теме, сайту talentbuddy.com большой минус в карму, потому что они дают тестовые наборы в которых sorted(a+b) и def sqrt(x):return 4 успешно проходят. И участники тут не виноваты, так как предоставили решение оптимальное с точки зрения времени разработки и решения поставленой задачи.

Нормальный сайт бы дал такие тестовые наборы, что неэффективные решения бы просто загнулись

vertexua ★★★★★
()
Ответ на: комментарий от alozovskoy

Ну ты пойми, тут сидят программисты, учились лет по 10-20, а ты выскакиваешь с такими речами. Сходи в больницу и скажи «да ну нафиг учиться медицине, можно купить в аптеке лекарство и прочитать инструкцию». Сходи в симфонический оркестр и скажи «да ну нафиг ходить в консерваторию, вон петь как Джастин Бибер и без этого можно, а он столько бабла зашибает». И ты действительно в чем-то будешь прав, но если твоим собеседникам не будет лень тратить время на подробное объяснение твоих заблуждений, то они по крайней мере посоветуют куда тебе пойти и не лезть не в свою компетенцию.

vertexua ★★★★★
()
Последнее исправление: vertexua (всего исправлений: 2)

Вообще ведь можно учить алгоритмы, а можно учить Python. И на одних и тех же задачах понятие «правильного» решения будет различаться в зависимости от цели.

Там неплохо сайт сделан с этой точки зрения - есть code review и обсуждение разных вариантов. А оценки - дело десятое.

alpha ★★★★★
()
Ответ на: комментарий от AIv

А ты то зачем О_О?

Скилы прокачиваю. Есть шанс что я скоро уйду в разработку.

true_admin ★★★★★
() автор топика
Ответ на: комментарий от vertexua

участники тут не виноваты

На некоторых заданиях явно написано «вы заколебали спользовать библиотечные функции» :). Кстати, этим отличился один из основателей в одном из тестов. Я ему написал об этом :).

Нормальный сайт бы дал такие тестовые наборы, что неэффективные решения бы просто загнулись

И такое там есть :(. Вот, например: http://www.talentbuddy.co/challenge/52277a4976b3205747000018524b44fb4af0110af... Даёт на вход массив из 100тыщ элементов. Мои элегантные решения пока не в состоянии уложиться в лимиты :(((

true_admin ★★★★★
() автор топика
Ответ на: комментарий от vertexua

Я вот пока не понял как тут dynamic programming применить. Похоже, я что-то упускаю из виду.

Пока пробовал «просканировать» небоскрёбы по вертикали, это плохая идея. Щас пытаюсь как-то слева-направо обойти одним проходом. Ты это имешь в виду? Пока не понимаю как. Но пока не подсказывай, я до вечера ещё поломаю голову.

true_admin ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.