Ну почему же не всегда? Главное чтобы у чела изначально был правильный подход и исполнительность, а остальное уже дело техники (как этого чела правильно нагнуть). И потом если говнокод производит ожидаемый результат и сделан в срок, не без разницы ли? Платят же за новые фичи а не красоту кода. Особенно в стартапах.Сабина wrote: 23 Oct 2017 21:17Да ладно, главное чтобы те кто за час выдавал работающий puzzle потом в том же темпе и продолжали с project deliverables. А то в реальной жизни не всегдаМальчик-Одуванчик wrote: 23 Oct 2017 21:10Я вот наверняка не смогу (даже сильно тужась) выродить две страницы кода за час, просто потому что такой обьем за короткое время явно будет говном.Dweller wrote: 23 Oct 2017 18:01Когда нанимал в свою группу и сам нёс полную ответственность, мой тест был бинарный - давал сравнительно простую задачку на час на компе и ждал работающего кода (на 1-2 странички) с правильным результатом. Нет результата - гуляй. Отшивались и архитекторы и программеры с 20 годами опыта и юнцы, да все подряд. Но те кто проходили всегда сдавали работу в срок - это единственное что ценят менеджеры.
Опрос по поиску работы.
-
- Уже с Приветом
- Posts: 12262
- Joined: 20 Dec 2000 10:01
- Location: Bellevue, WA
Re: Опрос по поиску работы.
-
- Уже с Приветом
- Posts: 12262
- Joined: 20 Dec 2000 10:01
- Location: Bellevue, WA
Re: Опрос по поиску работы.
В стартапах копают все, от СЕО и СТО до уборщицы. Архитектор - это скорее уровень "могу копать" но "могу и не копать"Kolbasoff wrote: 23 Oct 2017 19:36Дык архитекторы ведь не копают? Я в этот сезон узнал новое слово: hands-on data architect. Это тот который копает. По-русски, поддатый архитект. Это яDweller wrote: 23 Oct 2017 18:01Когда нанимал в свою группу и сам нёс полную ответственность, мой тест был бинарный - давал сравнительно простую задачку на час на компе и ждал работающего кода (на 1-2 странички) с правильным результатом. Нет результата - гуляй. Отшивались и архитекторы и программеры с 20 годами опыта и юнцы, да все подряд. Но те кто проходили всегда сдавали работу в срок - это единственное что ценят менеджеры.

-
- Уже с Приветом
- Posts: 15526
- Joined: 27 Sep 2007 22:53
Re: Опрос по поиску работы.
Потом поддерживать и главное расширять этот код становится все более непосильной задачей. Если добавление новой фичи приводит к правке старого кода в куче мест, то стоимость внедрения каждой новой фичи растет линейно или даже экспоненциально их количеству.Dweller wrote: 23 Oct 2017 22:51 И потом если говнокод производит ожидаемый результат и сделан в срок, не без разницы ли? Платят же за новые фичи а не красоту кода. Особенно в стартапах.
Собственно поэтому народ и шарахается как черт от ладана когда речь заходит о поддержке и расширении старого говнокода.
-
- Уже с Приветом
- Posts: 15526
- Joined: 27 Sep 2007 22:53
Re: Опрос по поиску работы.
В таких стартапах основная задача сделать не продукт, а залипуху с целью успеть продаться пока все это добро не успело рассыпаться.Dweller wrote: 23 Oct 2017 22:53В стартапах копают все, от СЕО и СТО до уборщицы. Архитектор - это скорее уровень "могу копать" но "могу и не копать"Kolbasoff wrote: 23 Oct 2017 19:36Дык архитекторы ведь не копают? Я в этот сезон узнал новое слово: hands-on data architect. Это тот который копает. По-русски, поддатый архитект. Это яDweller wrote: 23 Oct 2017 18:01Когда нанимал в свою группу и сам нёс полную ответственность, мой тест был бинарный - давал сравнительно простую задачку на час на компе и ждал работающего кода (на 1-2 странички) с правильным результатом. Нет результата - гуляй. Отшивались и архитекторы и программеры с 20 годами опыта и юнцы, да все подряд. Но те кто проходили всегда сдавали работу в срок - это единственное что ценят менеджеры.Как минимум должен уметь эти 2 вещи.
-
- Уже с Приветом
- Posts: 315
- Joined: 24 May 2013 22:04
Re: Опрос по поиску работы.
Что не так с рекурсивным?
Code: Select all
Prelude> :{
Prelude| fib n = fibs !! n
Prelude| where fibs = 0 : 1 : zipWith (+) fibs (tail fibs)
Prelude| :}
Prelude> fib 0
0
Prelude> fib 1
1
Prelude> fib 2
1
Prelude> fib 3
2
Prelude> fib 4
3
Prelude> fib 5
5
Prelude> fib 6
8
Prelude> fib 7
13
Prelude> fib 10000
33644764876431783266621612005107543310302148460680063906564769974680081442166662368155595513633734025582065332680836159373734790483865268263040892463056431887354544369559827491606602099884183933864652731300088830269235673613135117579297437854413752130520504347701602264758318906527890855154366159582987279682987510631200575428783453215515103870818298969791613127856265033195487140214287532698187962046936097879900350962302291026368131493195275630227837628441540360584402572114334961180023091208287046088923962328835461505776583271252546093591128203925285393434620904245248929403901706233888991085841065183173360437470737908552631764325733993712871937587746897479926305837065742830161637408969178426378624212835258112820516370298089332099905707920064367426202389783111470054074998459250360633560933883831923386783056136435351892133279732908133732642652633989763922723407882928177953580570993691049175470808931841056146322338217465637321248226383092103297701648054726243842374862411453093812206564914032751086643394517512161526545361333111314042436854805106765843493523836959653428071768775328348234345557366719731392746273629108210679280784718035329131176778924659089938635459327894523777674406192240337638674004021330343297496902028328145933418826817683893072003634795623117103101291953169794607632737589253530772552375943788434504067715555779056450443016640119462580972216729758615026968443146952034614932291105970676243268515992834709891284706740862008587135016260312071903172086094081298321581077282076353186624611278245537208532365305775956430072517744315051539600905168603220349163222640885248852433158051534849622434848299380905070483482449327453732624567755879089187190803662058009594743150052402532709746995318770724376825907419939632265984147498193609285223945039707165443156421328157688908058783183404917434556270520223564846495196112460268313970975069382648706613264507665074611512677522748621598642530711298441182622661057163515069260029861704945425047491378115154139941550671256271197133252763631939606902895650288268608362241082050562430701794976171121233066073310059947366875
-
- Уже с Приветом
- Posts: 15276
- Joined: 01 Mar 2007 05:18
- Location: VVO->ORD->DFW->SFO->DFW->PDX
Re: Опрос по поиску работы.
Если выразиться точнее, решение ок, имплементации неэлегантны. Везде переприсвоения типаM. Ridcully wrote: 23 Oct 2017 22:45Ааа, понеслась!АццкоМото wrote: 23 Oct 2017 22:32Даже не начинай. В качестве оффтопа:
1. Рекурсивный с кэшированием не так плох
2. Элегантного не рекурсивного решения я ни разу не видел. Даже в CTCI буэээ![]()
Но если серьёзно - то что "неэлегантного" в нерекурсивном решении?![]()
Fminus2=fminus1
Fminus1=current
Буду
Почему не
F[i%2]=F[0]+F[1]
Те же яйца, но несколько элегантнее
Мат на форуме запрещен, блдж!
-
- Уже с Приветом
- Posts: 4195
- Joined: 27 Apr 2011 03:43
- Location: Сергели ->Chicago
Re: Опрос по поиску работы.
Не так элегантно, но зато O(1)АццкоМото wrote: 24 Oct 2017 01:30Если выразиться точнее, решение ок, имплементации неэлегантны. Везде переприсвоения типаM. Ridcully wrote: 23 Oct 2017 22:45Ааа, понеслась!АццкоМото wrote: 23 Oct 2017 22:32Даже не начинай. В качестве оффтопа:
1. Рекурсивный с кэшированием не так плох
2. Элегантного не рекурсивного решения я ни разу не видел. Даже в CTCI буэээ![]()
Но если серьёзно - то что "неэлегантного" в нерекурсивном решении?![]()
Fminus2=fminus1
Fminus1=current
Буду
Почему не
F[i%2]=F[0]+F[1]
Те же яйца, но несколько элегантнее
Code: Select all
double rootOf5 = Math.sqrt(5)
long fibNth = Math.round( ( Math.pow((1+rootOf5)/2, n) - Math.pow((1-rootOf5)/2, n) ) / rootOf5 )
-
- Уже с Приветом
- Posts: 15276
- Joined: 01 Mar 2007 05:18
- Location: VVO->ORD->DFW->SFO->DFW->PDX
Re: Опрос по поиску работы.
Это известная формула, вот только хрен его знает, что будет с ошибками округления. Есть версия, что для большого N можно и не угадать. Тот же double не всесилен.valchkou wrote: 24 Oct 2017 02:16 Не так элегантно, но зато O(1)Code: Select all
double rootOf5 = Math.sqrt(5) long fibNth = Math.round( ( Math.pow((1+rootOf5)/2, n) - Math.pow((1-rootOf5)/2, n) ) / rootOf5 )
Мат на форуме запрещен, блдж!
-
- Уже с Приветом
- Posts: 4195
- Joined: 27 Apr 2011 03:43
- Location: Сергели ->Chicago
Re: Опрос по поиску работы.
в случае рекурсии для большого N ответа можно не дождаться.АццкоМото wrote: 24 Oct 2017 02:37Это известная формула, вот только хрен его знает, что будет с ошибками округления. Есть версия, что для большого N можно и не угадать. Тот же double не всесилен.valchkou wrote: 24 Oct 2017 02:16 Не так элегантно, но зато O(1)Code: Select all
double rootOf5 = Math.sqrt(5) long fibNth = Math.round( ( Math.pow((1+rootOf5)/2, n) - Math.pow((1-rootOf5)/2, n) ) / rootOf5 )
-
- Уже с Приветом
- Posts: 15276
- Joined: 01 Mar 2007 05:18
- Location: VVO->ORD->DFW->SFO->DFW->PDX
Re: Опрос по поиску работы.
Рекурсия с кэшированием — линейное время. А BigInteger — гарантия точного ответа, даже если в ответе стопицот тыщ знаков.valchkou wrote: 24 Oct 2017 02:42в случае рекурсии для большого N ответа можно не дождаться.АццкоМото wrote: 24 Oct 2017 02:37Это известная формула, вот только хрен его знает, что будет с ошибками округления. Есть версия, что для большого N можно и не угадать. Тот же double не всесилен.valchkou wrote: 24 Oct 2017 02:16 Не так элегантно, но зато O(1)Code: Select all
double rootOf5 = Math.sqrt(5) long fibNth = Math.round( ( Math.pow((1+rootOf5)/2, n) - Math.pow((1-rootOf5)/2, n) ) / rootOf5 )
Опять же, рекурсия в пуп не упёрлась, простейший цикл делает всё то же.
Мат на форуме запрещен, блдж!
-
- Уже с Приветом
- Posts: 4195
- Joined: 27 Apr 2011 03:43
- Location: Сергели ->Chicago
Re: Опрос по поиску работы.
вместо double можно и BigDecimal раз на то пошло.
А есть пример рекурсии с кэшированием?
-
- Уже с Приветом
- Posts: 15276
- Joined: 01 Mar 2007 05:18
- Location: VVO->ORD->DFW->SFO->DFW->PDX
Re: Опрос по поиску работы.
С телефона код пейсать трудно, но суть такова. Считаем факториал Н — заводим массив размерности Н. Как только посчитали для промежуточной величины К, записываем результат по индексу К. В рекурсивной функции, вызванной с параметром Ж смотрим есть ли что-то по индексу Ж. Если есть, сразу это и возвращаем, а не идём в рекурсию.
Сложность магически меняется с экспоненциальной на линейную
В любом случае, рекурсия тут от лукавого. Годится только чтобы проверить, что кандидат понимает, что это. Т.е. отсеять совсем мертвых
ЗЫ. Часто это кэширование называют memoization
Мат на форуме запрещен, блдж!
-
- Уже с Приветом
- Posts: 1558
- Joined: 13 Dec 2011 11:24
Re: Опрос по поиску работы.
Как раз, рекурсивный - совсем простой. Итеративный - чуть сложнее. Что, вобщем-то и понятно, учитывая рекурсивное определение последовательности.
Last edited by rtogan on 24 Oct 2017 06:14, edited 1 time in total.
-
- Уже с Приветом
- Posts: 752
- Joined: 09 Sep 2005 21:43
Re: Опрос по поиску работы.
Сабина, спасибо за предыдущий ответ, хотел, по этому уточнит у вас, вы думаете что начальство недовольно этими индусами, ищет Им замену И привлекает их же чтобы они выбрали того кем начальство будет довольно ?Сабина wrote: 23 Oct 2017 03:52 А ЛРУ цаче и потом шортест патх бетшеен тшо вертехес в графе ? За 45 минутное интервью ? И после него тут же прискакивает другой с задачкой "покруче" ? Я сразу поставила диазгноз что позицию при таком раскладе скорее всего открыли потому что кого то из начальников имеющиеся девелоперы не сильно устраивают. При этом последние изо всех сил сопротивляются. И кому надо в такое место идти ?
Более того сама не раз видела "звездатых беркелеы градуатес" которые рутинную работу в гробу видели, а покодировать бинары сеарч хлебом не корми.
-
- Уже с Приветом
- Posts: 775
- Joined: 10 May 2003 17:55
- Location: Minsk->NJ->PA->CA
Re: Опрос по поиску работы.
Я вполне серьёзно. Что там у вас тестировали я сказать не могу. Hackerrank это платформа, что заложишь то и получишь. Garbage in - garbage out, как говорят аборигены.Сабина wrote: 23 Oct 2017 04:01Это вы серьезно ? Вот это говно со "Scanner in = new Scanner(System.in);" и с секундомером?
Все что тестируется - скорость кодирования, неплохое качество для делеловпера, но далеко не необходимое
Я спрашиваю достаточно простые задачи из повседневной жизни которые надо уметь правильно решать. Я ожидаю простого и читаемого решения минут за 10-15. Точное время не засекаю. Если кандидат не может Фибоначчи или обход дерева за 15 минут написать дальше можно и не говорить.
Иногда спрашиваю сложную проблему на поговорить больше чем на кодировать но все равно выливается хотя бы в псевдокод.
Кстати на простой и всем известной проблеме бинарного поиска сыпется около 50% и только 10% делают действительно хорошо. Причём 90% считают что все было зашибись. Такая вот интересная статистика.