Comments 32
Оказалось, что он только-только вернулся с авиабазы Хмеймим
На этом этапе я бы закончил собеседование
Что-то ваш Коля, который не Коля, не такой уж и крутой HR, раз у него такой покемон до очного собеседования дошел. У него же всë резюме в редфлагах. Ждем от автора следующей офигительной истории, об очном собеседовании с зеком, например.
Зато эта история прекрасно описывает принцип работы HR в части подбора кандидатов: предпочтение отдаётся не опыту или техническим навыкам (которые они не в состоянии адекватно оценить), а каким-то совершенно поверхностным и не имеющим отношения к вакансии критериям.
"Ой, какой экзотичный мальчик! А что он делал в Сирии?" -- ну прямо как на сайте знакомств. (Наводит, кстати, на всякие интересные мысли про Колю и про то, что он вообще забыл в HR)
История похожа на выдумку, но меня в ней зацепил один момент:
На моей практике это был первый кандидат, который предлагал взвешивать шарики по одному
А как должен решать подобную задачу адекватный человек? Сходу выдумывать непонятный говнокод с вычислениями парами/группами?
Есть такое хорошее правило в программировании - сначала добейся нормальной работы, потом берись за оптимизации.
Так что по хорошему все восемь шаров прогоняются дважды - первый цикл находит самый тяжелый, второй самый легкий. Если есть резон как то этот процесс оптимизировать, то можно попробовать но с обязательными замерами а не приведут ли ваши манипуляции с шарами к замедлению кода, а то и вообще к ошибкам.
Смысл в том, что сначала всегда нужно подумать.
А этот хороший подход почему то часто воспринимают как 'потом подумаю'. В результате пузырьковая сортировка уезжает в прод, но там оказывается что нужно сортировать не 100 записей, а 5000, и нагрузка не 2 rps, а 200. И начинается самое интересное...
Проблема в том что когда данные становятся сильно больше чем думал думающий, тогда чем проще устроена их обработка тем быстрее и глаже это все пробегается, а если начинаются всякие прыжки и произвольный доступ к элементам массива, потому что думающий почему то думает что если делать много дел в один проход то это будет быстрей, то производительность как и дальнейшие оптимизации обламываются. Даже если бриться и пить кофе совмещая это с движением на раборту то это неизбежно повлияет на скорость передвижения. Конечно можно это делать толкаясь в пробке, но это уже будет конкурентное асинхронное исполнение.
Извините, но задачи на взвешивание (в частности и та, что упомянута выше) - это из учебника математики для пятого класса средней школы (возможно, впрочем, "со звёздочкой"). Надо как-то очень постараться, чтобы этот класс задач пропустить или забыть.
Надо как-то очень постараться, чтобы этот класс задач пропустить или забыть.
Легко. Я, например, то ли не знал, то ли забыл, то ли в учебнике за 5 класс таких задач не было ;) Эти задачи - типичные головоломки, общего принципа решения нет, если кто-то такое решает сходу - либо он очень умный, либо просто знает решение, потому что прочитал.
Про канализационные люки еще спрашивают?
Во-первых, в учебнике за 5 класс такая задача конечно же была - "Математика 5 класс: учебник для общеобразовательных организаций" / С.М. Никольский, М.К. Потапов - М.:Просвещение, 2015 - с.75, задача 328. И да, она действительно "со звёздочкой".
Во-вторых, общий принцип решения есть и он весьма прост.
Ну и, в-третьих, это всё-таки не олимпиадный уровень, это было бы слишком жестоко - если посмотреть на примеры заданий олимпиад для пятого класса (из перечня Минобрнауки), то даже "разогревочные" задачи, буде спрошенными на собеседовании, изрядно сузили бы поток претендентов (ну, кроме сообразительных пятиклассников).
Во-вторых, общий принцип решения есть и он весьма прост.
Хм. В студию, плз ;)
Ну, допустим. При локализации элемента с экстремальным значением (самого тяжелого шара) с помощью бинарной операции строгого отношения порядка (взвешивания) имеет значение не только результат применения этой операции к подмножествам исходного множества (которые взвешиваем), но и подмножество, оставшееся вне операции (которое не взвешиваем) - что позволяет однозначно отбрасывать подмножества, не содержащие искомый элемент. Таким образом, операция "превращается" фактически в тернарную, что позволяет получить оценку сложности алгоритма как.
Что тут сложного-то?
Среди 2000 внешне неразличимых шариков половина - алюминиевые, весом 10 г каждый, а вторая половина - дюралевые, весом 9.9 г каждый. Требуется выделить две кучки шариков так, чтобы количество шариков в кучках было одинаковым, а массы - разными. Каким наименьшим числом взвешиваний на чашечных весах без гирь это можно сделать?
Во-первых, за одно взвешивание.
А, во-вторых, что же вы так-то - сразу повышаете планку с пятого класса до девятого, и со школьного учебника до областного этапа Всероссийской олимпиады школьников. Немного перебор, не находите?
В-третьих, теперь моя очередь, не так ли?
Верно ли, что вероятность того, что 30 декабря (отвлечёмся от возни с весами и привнесём в разговор толику новогоднего настроения) в случайно выбранном году придётся на понедельник (мы хотим длинные выходные!) равна 1/7?
Напомню, что в григорианском календаре:
год, номер которого кратен 400, — високосный;
другие годы, номера которых кратны 100, — невисокосные;
другие годы, номер которых кратен 4, — високосные;
остальные годы — невисокосные.
Я в задачах на взвешивание не разбираюсь, какое от олимпиады, какое от 5 класса не знаю (правда) ;) Так значит общего принципа нет, и умение решать задачу с делением на 3 с 2000 шариками не работает? ;)
Верно ли
Думаю что да.
.
это детские олимпиадные задачи по математике (на взвешивания предметов, на переливание банок, на доставание карандашей, на комбинации монеток и тп) - кто не ходил на олимпиады тот, скорее всего, их и не видел
мне интересно, кто решил, что хорошая идея спрашивать их на собеседованиях )
мне интересно, кто решил, что хорошая идея спрашивать их на собеседованиях )
Правильный вопрос - кто сделал из этого каргокульт. На собеседовании не так важно, что спрашивать, важно понимать ответ. Как кандидат будет решать незнакомую задачу: брутфорсом, выкатит быстрое, но возможно неправильное решение, будет искать идеальное решение, скажет что в 5 классе этого он не проходил.. ;)
Есть такое правило - читай тз, а там нет легких шаров, все, кроме одного - одинаковые.
Надеюсь эта история не приукрашенная про меня. Я недавно жестко тупил на собесе с этими шариками.
Я имел в виду что если допустим работодатель собеседует продавщицу в советский гастроном то такие вопросы имеют смысл дабы банально оценить уровень ее скилов в обслуживании запросов покупателей. Но зачем программисту для оценки знаний предлагается решить задачу способом приемлемым для конфетно-колбасного отдела, но никак не для вычислительной техники? Я не понимаю.
Уважаемые опытные it-шники, я только планирую начать свой путь в айти, пожалуйста, подскажите что стоит научиться делать, чтобы быть сильным и полезным спецом?
Стоит пройти обучение на секретной кафедре МИФИ, пройти стажировку в Моссаде, прослушать пару лекций в г. Лэнгли, штат Вирджиния, также стоит научиться взламывать сервера ИГИЛ, отражать атаки серверокорейских хакеров и вообще красочно... кхм... "звездеть".
Этот навык очень пригодится вам для прохождения интервью с HR'ами (которые вообще никакой экспертизы в области технологий не имеют и поэтому чаще всего отсеивают действительно квалифицированных кандидатов, предпочитая вместо этого осуществлять отбор по тому же принципу, по которому функционируют сайты знакомств, т.е. понравился/не понравился).
Я прочитал историю с интересом, потому что я сам интервьирую людей. Но я не понимаю, зачем вы вообще все это выслушивали так долго. 10 минут "расскажите кратко о предыдущих работах - чисто технически в чем заключался проект", а потом задачки на код, да хоть вашу вариацию сортирки (про шарики слишком заезженно). А вот насчёт авиабазы- я бы про это вообще не думал, потому что бывают дикие истории. Например у меня есть знакомый, который работал контрактором по верификации электроники в Локхид-Мартин (еоторая делает ракеты), будучи при этом 1) русским и 2) бывшим членом КПСС.
Спасибо за интерес!
Я всегда уделяю большое внимание опыту кандидата. Во-первых, так я узнаю о жизни других компаний и, возможно, даже сам чему-то учусь. Во-вторых, люди, которые идеально решают модельные задачи (которые я предлагаю им на собеседовании), но не умеют решать практические задачи, для меня не выглядят подходящими кандидатами.
Хочу даже написать статью (видимо, уже не для Хабра) про выявление практического опыта кандидата. Дело в том, что про него часто врут. Иногда даже старшие разработчики
Можно придумывать квази-практические задачи. Мне приходится придумывать много задач и для собеседований и для учебных материалов, и вот последняя задумка - выдираем из реального процессора на гитхабе (написанного на языке описания аппаратуры SystemVerilog) арифметические блоки FPU и даем кандидату задание, используя эти выдранные блоки как черные ящики, построить два варианта вычисления с ними простой формулы - один вариант с минимизацией площади синтезированной схемы, второй вариант с максимизиацией пропускной способности - вот я эту мысль в посте описал - https://habr.com/en/articles/862734/
И уже опробовал на студентах - вполне работает - и не слишком просто, и не слишком сложно, и куски реального процессора.
А насчет 17-летних студентов МИФИ делающих военные проекты. Вот когда я учился в МФТИ в 1988 году и мне было 17 лет, у нас был студенческий клуб Олега Бацукова и мы там делали например проект для Института Проблем Кибернетики Си-компилятора для Электроники-СС-БИС (советский клон векторного суперкомпьютера Cray-1, цель которого была моделировать ядерные взрывы). На основе компилятора PCC от AT&T (Stephen Johnson). А потом на основе этого опыта я уже в 20 лет сделал симулятор, линкер и порт компилятора для бортового компьютера Орбита 20/700 и продал его Рижскому военному авиационному училищу через малое предприятие. После чего купил на эти деньги билет Москва-Нью-Йорк и улетел в Америку (в 1991 году). То есть каким-то боком студент в военный проект попасть может.
Кстати в МИФИ у них тоже были странные явления. Вот там был преподаватель по фамилии Шагурин, который рассказал что он в начале 1970-х (то есть в молодом возрасте) летал в Сан-Франциско на конференции по электронике. Замечу что в то время Область Сан-Франциского Залива была закрыта для советских граждан не только советcкими препонами, но и с американской стороны.
Но я это все к чему - все эти странные истории лучше оставлять на беседы в кафетерии уже после того как человек нанят. А вначале их просто игнорировать и судить его чисто по писанию кода, причем лучше не давать домашнее задание, а делать как делали например в AMD - заводят человека в комнату, вот компьютер без подключения к интернету, садись и пиши на верилоге какой-то простой конвейер - и собеседующий смотрит.
Код и правильная задачка все про человека скажет! Вот он рассказал научпоп про Эльбрус - это вы правильно определили - но в таких случаях его можно было попросить написать на ассемблере Эльбруса вычисление чисел Фибоначчи, хе-хе. Сразу на интервью было бы видно, словил ли он баг который он вам описал или нет. Потому что если он видел привилегированную инструкцию, то должен был увидеть и простое сложение и ветвление, не так ли?
Про задачки, приближенные к практике, я согласен. Сам постоянно даю такие. Собственно, задача, которую кандидат отказался брать на дом, была такой. Я специально придумал её таким образом, чтобы она была творческой и приближенной к реальным потребностям конторы.
Но на мой вкус, модельные задачи важны, однако не заменяют реального "боевого" опыта. К тому же более-менее крупные задачи легко давать младшим и средним специалистам, а старшие специалисты часто от них отказываются. Понятно, что если вакансия очень лакомая, и на неё прямо ломятся лучшие специалисты, то можно любые условия выставлять. Но далеко не все вакансии такие. Так что приходится подстраиваться под реалии и учитывать, что от творческой задачи кандидат может отказаться (но при этом это все равно может быть подходящий кандидат)
Спасибо за подробный рассказ о вашем подходе! Очень интересно!
— Пусть шаров будет только три. Один тяжелый. Как будете решать?
— Взвешу два, а потом еще два.
— Проговорите, пожалуйста, полностью. Вот вы положили два шара на весы. Что дальше?
— Один из них будет тяжелее. Я его возьму и взвешу с оставшимся.
— Но если мы при первом взвешивании видим, что один тяжелее, зачем делать второе взвешивание?
Не понимаю, всего три шара, но взвесили два, почему второе взвешивание то не нужно? Мы ж третий шар вообще не взвесили
Ааа, надо не самый тяжёлый найти, а просто вес одного отличается от веса других, сорян, подумал там все разные :)
Жаль, что кандидат спасовал на тестовом и обесценил всё собеседование. Мог бы накидать дичь и доказывать, что такое задание и было - все таки редко приходят полностью нулёвые психи.
А мне интересно, как сам кандидат не подумал, что его можно пробить по соцсетям. Это его первая работа? Первое собеседование (прежде работал в дядиной фирме)? За какие-то деньги летал же в Сибирию.
Может, он вообще материал для новой книги собирал, про кровавые разборки в ИТ?
А я решил с шарами. Двумя способами. Если на собеседование будут такие вопросы то круто, но ведь на собеседования требуют знания, а не умение соображать или усваивать новую информацию. Про эйчары. Там по объявлению видно некоторых не опытных. В вакансии требования высоких хард скиллов и софт скиллов. Такого не бывает. У человека высокие проф скилы потому что он может делать нудную работу, читать документацию, а у кого высокие балабольные скилы он не нудный. Это как быть марафонцем и спринтером.
Как я суперагента собеседовал