LINUX.ORG.RU
ФорумTalks

Фрустрация от собеседования в «Яндекс»

 , ,


1

8

Здравствуйте. Некоторое время назад я собеседовался в «Яндекс». Хочу поделиться здесь моими впечатлениями от собеседования и историей неуспеха.

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

Итак, был дан код класса на C++: это контейнер, как std::vector, который должен уметь возвращать случайный объект согласно весам, которые передаются как float.

Код был написан с использованием функции rand() и содержал одну очевидную ошибку, которую я нашёл, и ещё одну неочевидную, связанную с возможной проблемой при округлении с арифметикой над float, которую я тоже нашёл. Я сказал, что rand() непотокобезопасна; её реализация, как правило, низкого качества; RAND_MAX зависит от платформы; получить честный рандом при заранее неизвестном RAND_MAX сложно; и т.д. Сказал, что в C++11 есть std::random. Интервьювер сказал, что std::random слишком громоздко для собеседования, давайте уж использовать rand().

Что-то там написали, пришло время писать тесты. Написали какой-то тест, который 1000 раз генерирует случайные объекты №1 и №2 с весами 1 и 2 и проверяет, что объектов №2 получилось больше. Далее по ролям: я (Я), интервьювер (И).

И: — Да, только тест недетерминированный, как его сделать детерминированным?

Я: — Можно зафиксировать seed. Если бы мы использовали std::random, там у engine есть метод seed(), а тут…

И: — Есть специальная функция srand()!

Я: — Да, только она зависит от платформы, как и rand().

И: — Ну хорошо, а можно передавать указатель на функцию, которая будет генерировать случайные числа…

<примечание>

То есть речь идёт о том, чтобы превратить метод

    T getRandomElement() const { … }
в
    T getRandomElement(int (*custom_rand)()) const { … }
И передавать туда либо настоящий rand, либо свою детерминированнуюю реализацию. Даже без void *userdata, насколько я понял — то есть то ли состояние должно храниться в глобальной переменной, либо оно должно возвращать константу. Да, это C++, не в Си. Указатель на функцию, не лямбду.

</примечание>

Я: — Ну можно, но это какой-то мегакостыль, да и зачем уродовать интерфейс для этого…

И: — Ну хорошо, у нас осталось не так много времени, давайте не будем это писать.

---

И вот потом мне говорят, что это была фатальная ошибка, что я предложил зафиксировать seed, а не лепить указатель на функцию. Сначала снизили грейд до «мидл-минус», потом вообще сказали, что не возьмём никуда.

Я, конечно, знал, что крупные компании очень привиредливые, но это вообще что такое? Какой извращенец пройдёт это интервью?

Эту тему я создаю в том числе для того, чтобы давать на неё ссылку HR из яндекса, если таковые ко мне ещё когда-либо постучатся.



Последнее исправление: shdown (всего исправлений: 4)
Ответ на: комментарий от shdown

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

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

я вот не привык писать юнит тесты. Сложно думать в эту сторону

hibou ★★★★★
()

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

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

Раньше следующие собесы сворачивали. Что-то пошло не так. Может быть они были запланированы слишком плотно.

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

где-то пейсали, что они часто перепродают кандидатов в другие отделы и на иные позиции и раньше могло получаться гораздо больше собеседований, а теперь типа могут переиспользовать результаты. Завалив на крестах могут предложить пипон или девупс, ведь они всегда востребованы

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

Бггггг.

Простой рабочий? Бабки делают все́. Захочу и сбере и в газпробе буду работать

TheNewDragon
()
Ответ на: комментарий от no-such-file

ТСа попросили не хардкодить функцию, чтобы её можно было замокать

Нет, ТСа спросили «как сделать тест детерминированным?». У дата-сатанистов на питоне так вполне принято делать (import random; random.seed(42)).

ни даже про pimpl

pimpl это для ускорения компиляции и стабильности ABI. При чём здесь pimpl, объясни?

Фабрики какие-то… мда. Это в Java тут была бы фабрика, а в крестах просто дополнительным шаблонным параметром в класс передаём ГПСЧ, как Compare в std::set.

Поэтому он буквально понял предложение про указатель на функцию

А как можно было понять не буквально? Я же в топике специально написал: собеседующий предложил указатель на функцию, не лямбду.

что не мешает ему однако рассуждать про идиоматичный код

В твоём посте, самом по себе, без контекста, уже есть противоречие: ты (1) утверждаешь, что я не знаю, что в C++ есть лямбды и что их можно передавать куда-то; (2) утверждаешь, что я неправильно рассуждаю, что лямбды идиоматичнее указателей на функции в C++.

Причём ТС не знает даже как сделать такую функцию со стейтом и думает, что нужно передавать userData для стейта

Расскажи, как сделать указатель на функцию со стейтом без void *userdata. А то дураки какие-то в glibc и FreeBSD вводят зачем-то qsort_r вместо qsort.

(Что, трамплины и исполняемый стек?)

Я понимаю, что ответа не будет, потому что да, это по принципу насрал-улетел.

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

дата-сатанистов на питоне так вполне принято делать

Питон и дата-сатанисы, это просто бинго. Эталонный говнокод из палаты мер и весов в квадрате.

При чём здесь pimpl, объясни

Объясняю, pimpl отвязывает реализацию от интерфейса. Ничего общего с твоей задачей, нет?

как можно было понять не буквально

Тебе предложили нехардкодить вызов функции. А ты продолжаешь упарываться: лямба-не лямбда. Да насрать вообще, вопрос был не об этом. Кстати такое внимание к неважным деталям признак шизофрении.

Расскажи, как сделать указатель на функцию со стейтом без void *userdata

Для целей теста можно банально использовать дидовские static переменные. А так вообще функтор. Со стороны принимающего кода различий с функцией нет (там и там указатель, вызов делается одинаково)

no-such-file ★★★★★
()
Последнее исправление: no-such-file (всего исправлений: 1)
Ответ на: комментарий от no-such-file

Объясняю, pimpl отвязывает реализацию от интерфейса. Ничего общего с твоей задачей, нет?

Отвязывает оно только знание компилятора про внутреннее устройство impl. Что полезно для сокрытия этих деталей из ABI (не API!) — размера и выравнивания. И для уменьшения времени компиляции. Отвязать реализацию от интерфейса можно, просто используя private поля и методы.

Зачем тут pimpl? Зачем создавать ещё один объект динамически, если можно хранить std::function (хотя лучше шаблонным параметром передавать, как я предлагал)?

Тебе предложили нехардкодить вызов функции

Ты, конечно, лучше меня знаешь, что мне предложили.

Кстати такое внимание к неважным деталям признак шизофрении.

Лол, ты ещё и диванный психиатр.

А так вообще функтор

А ну-ка покажи, что за функтор. Мне реально интересно. Неужели я угадал с трамплинами и исполняемым стеком? И это расширение GNU вообще-то.

Или ты думаешь, что указатель на функцию и указатель на объект — это одно и то же на уровне системы типов?

Ну вот вообще не могу придумать вменяемую интерпретацию твоих слов.

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

шаблонным параметром передавать

Шаблонный параметр генерирует ДРУГОЙ код. Оригинальный код таким образом не тестируется.

Ты, конечно, лучше меня знаешь, что мне предложили

Разумеется.

А ну-ка покажи, что за функтор. Мне реально интересно

Чёт ору. Я ж говорю, ты неуч и элементарных вещей не знаешь. Даже язык толком не выучил, но мнение имеешь.

no-such-file ★★★★★
()
Ответ на: комментарий от no-such-file

Чёт ору. Я ж говорю, ты неуч и элементарных вещей не знаешь. Даже язык толком не выучил, но мнение имеешь.

Да не, чувак, ты покажи.

https://godbolt.org/z/19sq8P9nn — это трамплины и исполняемый стек. Надеюсь, знаешь, почему это плохо.

Для «функтора»-в-смысле-объекта-с-operator() придётся менять сигнатуру функции, потому что Functor (или Functor *) не совместим с типом int(*custom_rand)(). А ты утверждаешь, что «там и там указатель, вызов делается одинаково».

Что ты несёшь вообще, ты можешь объяснить?

shdown
() автор топика
Ответ на: комментарий от no-such-file

Расскажи, как сделать указатель на функцию со стейтом без void *userdata

Для целей теста можно банально использовать дидовские static переменные. А так вообще функтор.

Т.е. выясняется, что «функтор», в представлении пациента, — это не указатель на функцию, а нечто другое. А вопрос был, как сделать указатель на функцию со стейтом без void *userdata. Якобы я этого не знаю, а он обладает этим тайным знанием.

Как сделать указатель на функцию со стейтом без void *userdata, пациент не объяснил.

Фиксируем слив.

shdown
() автор топика
Последнее исправление: shdown (всего исправлений: 4)
Ответ на: комментарий от Manhunt

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

watchcat382
()
Ответ на: комментарий от Manhunt

частенько сидят на работе до 12 ночи.

Я работал и программистом и сисадмином с начала 90х и до конца нулевых. Сидел до последнего поезда метро довольно регулярно. Правда и появлялся на работе часов в 10-11 ибо я жуткая сова. И вовсе не из-за денег сидел. Просто работа совпадала с хобби. А то что за это еще и платили неплохо по тем временам и главное стабильно - не более чем удачное совпадение.

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

Я работал и программистом и сисадмином с начала 90х и до конца нулевых. Сидел до последнего поезда метро довольно регулярно. Правда и появлялся на работе часов в 10-11 ибо я жуткая сова. И вовсе не из-за денег сидел. Просто работа совпадала с хобби.

Вот прям описали и мой вариант, люто плюсую!

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

Собственно я и сейчас тем же хобби занимаюсь, только тут где я живу - платить за него просто некому. Когда в 2010 году подвернулась возможность свалить из квартиры в городе в частный дом - пришлось выбирать. Я выбрал дом. В этом есть как плюсы так и минусы,но лично для меня - плюсов намного больше.

watchcat382
()
Ответ на: комментарий от anc

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

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

Мне кажется, тут таких поллора.

Имхо «и программистом и сисадмином» на поллора не потянет, ну если не считать погромистов за программистов. :)

Правда сейчас уже не засиживаюсь, ибо тренировки. Я еще и спортсмен.

Завидую лютой белой завистью. Что бы было понятно, я сейчас не спортсмен от слова совсем, в надежде что только до конца следующего лета.

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

«и программистом и сисадмином»

Когда я начинал работать с компами - даже слова «сисадмин» еще в широком употреблении небыло. Да и сети очень не везде были. Тогда всех кто хоть какое-то отношение к компам имел называли «программистами»,даже если они вообще кода не писали. Я хотябы писал (под DOS еще).

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

Тогда всех кто хоть какое-то отношение к компам имел называли «программистами»,даже если они вообще кода не писали. Я хотябы писал (под DOS еще).

Не, по времена под дос называли все больше инженерами.

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

под дос называли все больше инженерами.

Да, я и числился как «инженер-программист», на вычислительном центре «карьеру» свою начинал.

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

Да, я и числился как «инженер-программист»

Было такое, у меня тоже в трудовой таких много по категориям, но чаще все-таки были инженеры.

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

Я и щас инженер-программист. И даже с отверткой иногда хожу, клемы прикручивать пригождается.

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

мда - сменилась эпоха

такие студни прям как индусы - не откажут но и не сделают ибо компетентны не во всём что могут им поручить

ваще ситуации с индустрией вполне типичная - нужна предсказуемость всего лишь

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

Я и щас инженер-программист. И даже с отверткой иногда хожу, клемы прикручивать пригождается.

Почти такая же фигня была, хоть и инженер-программист, но если на объект приехал то и «гайки покрутить» не западло, хоть и не входит в твои должностные обязанности. Любимый крест у меня перманентно в сумке обитал, а всякие плоские и на объекте раздобыть можно было.

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

Почему я должен на работе созерцать уродство, если я люблю красоту?

Причин может быть много разных:

  • Локин к корпоративной какахе обычно в симбиозе с различными попилами
  • Блат тех, кто плодит уродство и уродов
  • Отсутствие айтишного образования у руководства
sanyo1234
()
Ответ на: комментарий от dmitry237

Как и заниженная. Вообще, очень мало людей со справедливой самооценкой.

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

...становится очевидным, что с тобой что-то не так...

Ой, не факт.

...к психотерапевту...

У нас щас все терапевты, даже самозванцы без профильного образования. 😁

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

А я его прекрасно понимаю. Почему я должен на работе созерцать уродство, если я люблю красоту?

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

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

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

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

В жизни настоящих личностей эстетика играет очень важную роль, всегда и везде.

Два примера из жизни:
1. Был зам. потом нач. юр. управления, генеральный его по всяким мэриям и т.п. с собой возил постоянно, а вот лицо у человека крайне рябое.
2. Мой фэйс после операции. Думал на работе народ будет офигивать от такой эстетики... не, всем ехать нужно, а не шашечки.

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

Эстетика очень субъективна, наверное ваше положение в ванной не всем покажется эстетичным.

Нет. Я Аполлон Бельведерский.

По высоте статуи?

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

У нас щас все терапевты, даже самозванцы без профильного образования. 😁

Не путай с психологами. Психотерапевт это врач, как и психиатр, только немного другого профиля. А «психолухов» развелось как тараканов, ибо это нелицензируемая деятельность. Ну примерно как «астрология», «тарология» и прочая чушь.

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

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

И это абсолютно правильно! Все что в эфире оно в /dev/null улететь может в любой момент.

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

У нас тоже есть дама, молодая и некрасивая, баба Яга в молодости. Хотя я с ней не пересекаюсь. Зато язык подвешен, речь беглая.

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

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

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

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

Не путай с психологами...

О них, о психолухах я и подумал. Сразу. Но намекнул о других видах «терапий». Случаев же масса.

sparkie ★★★★★
()
Ответ на: комментарий от no-dashi-v2

А для яндекса это в общем-то примерно то же самое что возраст >40

Нахрена они тогда меня, в мои 44, спамят приглашениями каждый месяц? Я конечно не хожу, но всё же.

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

Вырпупырка - это технологический стек, направленный на обеспечение безопасной работы с памятью, он превосходит механизмы владения разработанные в рамках развития специализированных языков. Многие специалисты отмечают что вырпупырка превзошла их ожидания, сейчас строятся активно дата центры, где вырпупырка будет выполнять задачи бизнеса. Её использование активно скрывается, так как это передовая технология, но всё же в сети проскакивают похожие названия, которые тонко намекают на активный спрос в этой области.

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

Вырпупырка это то что вам надо!

LINUX-ORG-RU ★★★★★
()
Ответ на: комментарий от Loki13

HR KPI по количеству организованных процессов вышедших не собес, очевидно же

no-dashi-v2 ★★★★
()
Ответ на: комментарий от sparkie

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

Я с ними относительно много общаюсь и даже чай иногда с ними пью за одним столом. Они прекрасно понимают, что их используют и им это не нравится, но говорить «нет» они еще не готовы. Через год-два они этому научатся, к тому моменту как раз придут новые на их замену.

Leupold_cat ★★★★★
()
Последнее исправление: Leupold_cat (всего исправлений: 2)
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)