Как стать автором
Обновить

«Кандидат сбежал в слезах»: 5 главных вопросов для собеседования на Python разработчика

Время на прочтение3 мин
Количество просмотров99K
Всего голосов 322: ↑193 и ↓129+64
Комментарии358

Комментарии 358

Одно из самых тупых заданий что можно придумать

Ну ты и душный))

Думаю вы просто по-настоящему тупых заданий не видели.

и после критики следуют подкрепляющие примеры, да?

Тестовое задание приближённое к реальности, на несколько часов. Всё остальное — от лукавого.

Не, ну своих разработчиков вы так протестируете и даже сможете сделать какие-то выводы. Наверное.
Что это даст с кандидатом, который не знает ваш стек и его особенности так же хорошо — вопрос на миллион…

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

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

Как-будто тупость других заданий уменьшает или отменяет тупость этих.

Боже, люди, я думал, креатифф за петросянщину минусят, а тут такое...

Преимущественно на КГ/АМ. Однако есть и интересные замечания. Жаль, что их меньше, чем хотелось бы

Уровень статьи автор задаёт в примере №1 -- с козырей заходит, так сказать. Нормальные IDE покажут кириллицу -- оно сразу будет заметно. WEB-интерфейс хабра эту разницу не показывает. Единственный вывод -- КГ/АМ

Но, ещё раз отмечу, в прочих примерах есть интересные нюансы -- за них спасибо

Можно ещё кандидату распечатку кода на бумаге показывать, а потом говорить - "Вот дурак, не догадался что здесь русская Н а тут латинская H!

Ага, и еще смешать табы с пробелами.

Смешать табы с пробелами, на бумаге…

Постирония, сэр.

Так между Н и H тоже особой разницы на бумаге нет.

Н факториал, между прочим!

С русским символом не подсвечено, вроде бы. Хотя я ни разу не заглядывал в IDE.

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

Так зависит от шрифта.

Если показать распечатку из GoldEd, то любой знающий сразу скажет что тут за символ ;)

Так я сейчас в статье долго всматривался и думал, как визуально отличить английскую букву от русской

Hормальные IDE покажут кириллицу

Можете привести пример (скриншот) того, как они это покажут? Какой шрифт используете, если не секрет?

Как минимум — они укажут на неиспользуемый идентификатор
vscode
vscode

Возможно @kai3341 имел ввиду, что IDE подсветить ошибку Unresolved reference 'Нuman'

Шмотри -- и правда подсвечивает

Особенно последняя однострочка, если программист решил навалить все, что пришло в голову

Скомпилировал в голове первое задание, развернул спойлер, мысленно произнёс "*****" и потерял желание читать дальше.

Да ладно! А я заржал в голос. Смешно же. Это же специально на первом месте, что бы дальше люди не загонялись а поняли что это шутка, транспарант, так сказать.

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

я не могу понять автор поста это серьезно , H и Н никак не отличаются визуально в браузере ?

А ещё в некоторых кодировках 1 и l выглядят так, что не отличить визуально, как то пришлось разбирать почти 3 мб текстовый файл, где эти символы были перепутаны. А человек, который это сделал так и не понял почему я был невесел.... :)

Кстати, JetBrains зарелизили свой шрифт, некоторые говорят, что лучше, чем FiraCode.
Если хочется поплотнее, то Iosevka.


А еще есть шрифты, в которых латинница имеет другое начертание…

Может всё-таки шрифты, а не кодировки?

Автор же написал, что ищет тех, кто позже уходит из офиса и реже просит зарплату. Если ты после такого собеса согласен, то у автора всё получилось.

Так там это жеж:

Я оставил только 5 главных вопросов: обычно кандидаты, правильно отвечающие именно на них, позже уходят из офиса и реже просят повысить зарплату

Вот еще одно:

Запустится ли этот код?

print('Hello world')
Ответ

Не запустится, мы python на компьютер не скачали ¯\_(ツ)_/¯

Сразу видно непрофессионала. Складываете лист бумаги в самолетик, и вуаля, ваш код отлично запускается!

Я думал собес на джуна, а тут на архитектора... )

Я python скачал, и даже установил. И что? Вводил этот код и в браузере, и в командной строке, и даже в LibreCacl - не работает нигде. Фигня этот ваш python. Заплакал и убежал.

А кто вам сказал что я его питоном запускать буду?

perl -e "print('Hello world')"

Вы потеряли два [[maybe_unused]]

согласен

обычные вопросы на собеседованиях в российских компаниях

Вот многие тут смеются, но подобная ситуация у меня была однажды.

Я как-то не прошёл интервью в Яндекс, решая задачу в подобных условиях.

При этом:

1. Это была уже вторая "алгоритмическая" задача

2. Саму задачу я решил, это было её усложнение (чтобы она выполнялась за линейное время вместо n log n, если правильно помню)

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

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

Самое интересное, это было интервью на позицию Solution Architect.

Не знаю, может, в яндексе solution architect'ы большую часть времени кодят "на бумажке" без среды разработки и отладчика.

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

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

А я не смеюсь, я вполне серьёзно. После рашкособесов люди в цирке не смеются

Не надо всех под одну гребёнку. В России есть как адекватные компании, так и долбанутые.

Как, наверное, и в Америке, и в Азии.

субъективно я бы сказал что процентов 30 на 70 соотношение между адекватными и долбанутыми

Чтобы сделать такой вывод вашей жизни не хватит. Ведь нужно будет пройти достаточное кол-во собеседований. Мат. статистика, однако

Я ожидал вдохновиться потрясающей идеей, а прочитал эту стать

Я не программист, поэтому вопрос может быть невежественным, но неужели профессиональный программист может визуально отличить английскую литеру от русской, как требуется в первом задании? Это какие-то уже суперспособности суперxьюман

Этот код не запустится, потому что при объявлении класса Human мы использовали английскую H, а при инициализации - русскую Н. Очевидно, что мы получим ошибку NameError: name 'Нuman' is not defined.

Профессиональный программист считывает информацию напрямую с жёсткого диска

А на собеседовании, прямо из головы того, кто его интервьюирует

Воистину

Когда вижу такие "собеседования" сразу вспоминаю картинку:

Я не понимаю, как можно понять кодировку того или иного символа в названии переменной если просто видеть его на экране.

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

Зачет за "человека дождя" )))

Нынче все собеседования онлайн, можно взять идентификатор и поиском по странице проверить, что он везде одинаково написан. Базовый навык пользования браузером опять-таки.

Браузер может выдать ошибку при проверке грамматики (Но только при копировании кода в какой-нибудь <input type="text">).
В остальных случаях придётся копировать код в IDE, либо использовать нестандартные шрифты в браузере.

До подобного ещё догадаться надо.

При работе разработчиком каждый день нужно до чего-то догадываться!

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

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

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

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

Мы ищем фрика-извращенца, или все-таки человека, который будет писать читаемые программы?

Некоторая связь есть. Если кандидат после таких "задач" не уходит, покрутив пальцем у виска - значит он не очень уверен себе, и готов терпеть подобные закидоны от работодателя.

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

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

При работе разработчиком есть ide, которая подчёркивает подобные ошибки. Почему это не учли? Давайте уже код в ide смотреть

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

Ну пусть они и проложения в голове релизят. И Зп там же получают ))
НЛО прилетело и опубликовало эту надпись здесь

А при чем тут именно кодировка? "C" и "С" будут выглядеть на экране одинаково хоть в UTF, хоть в KOI-8, хоть в Win-1251.

Что не так-то, почему минусы? :))

PS *@*:~$ `
$utf8 = [System.Text.Encoding]::GetEncoding('utf-8'); `
$koi8r = [System.Text.Encoding]::GetEncoding('koi8-r'); `
$win1251 = [System.Text.Encoding]::GetEncoding('windows-1251'); `
$utf8.EncodingName + ":" + $utf8.GetString(67) + $utf8.GetString(@(208, 161)); `
$koi8r.EncodingName + ":" + $koi8r.GetString(67) + $koi8r.GetString(243); `
$win1251.EncodingName + ":" + $win1251.GetString(67) + $win1251.GetString(209)
Unicode (UTF-8): CС
Cyrillic (KOI8-R): CС
Cyrillic (Windows): CС

Коды символов в hex будут разные, можно их глазками посмотреть. И скорее всего кодировка будет utf-8. В частности если вы предполагаете, что должны в качестве идентификаторов быть только младшая часть ASCII, то при конвертации в ASCII, или другую кодировку в которой нет символов в духе русской "С", получится мусор, и это будет заметно.

Простите, а часто Вы редактируете код в hex-редакторе?

Вопрос был не про код, а про пришедший запрос. Да, если происходит какая-то не понятная магия, я тупо сохраняю в файл и смотрю что там, в том числе и в hex.

Буквально сегодня у человека была проблема с пробелами. решается это


Encoding.UTF8.GetBytes(a);
Encoding.UTF8.GetBytes(b);

И потом сравниваем.


находится за 5 секунд если знать что искать. А узнать по ошибке


ожидалось '1 000' но пришло '1 000'

проблему с кодировкой не так сложно

Я начну о чем-то догадываться после того как попробую запустить/скомпилить и увижу ОШИБКУ.

Есть такая шутка - взять трех свиней, написать им на боках 1, 2 и 4 и выпустить в людное место. Потом угорать, когда ищут третью свинью.Из этого рода.

Даже приличный и воспитанный разработчик при попытке работодателя вот так "прикольнуться" над ним имеет полное моральное право к физическому насилию.

В наше непростое время, свиньи так быстро «пропадут», что на номера никто смотреть не будет
Да как они могли!

Например о том, что при таких вопросах иметь дела с ними не стоит, там весь код будет состоять из квестов с подковырками. "Запустится ли этот код? Об этом узнаешь на генеральном прогоне у заказчика, а пока вот распечатка кода на 378 листах, можешь по дороге почитать и попробовать догадаться о его назначении, комментариев нет, имена переменных однобуквенны, код неполон". И об поиске, скорее, начинаешь понимать, используя код финнов, чехов и корейцев, которые иногда используют нацсимволы в именах (с последними самое смешное) на разных проектах, но такие задания - извращение и никак иначе. А есть ещё и задачи парсинга, вот тут такие искатели быстро зароются, когда у тебя несколько похожих визуально, но различных в реальности букв, или даты через l, I и О.

Для этого и нужны комменты

Да и все другие слова не мешало бы проверить, кроме print, да и то, могут быть неоднозначности.

Да и print можно с рrint перепутать.

А Вы все слова во всех заданиях проверили?

Если бы мне задали задание с таким ответом, я бы посчитал, что интервьювер сошёл с ума и просто ушёл бы.

Так можно в каждое слово вставить буквы разных кодировок( а можно ещё наврыкать невидимых пробелов из unicode )

Дарю бесплатно идею для собеседований: даёте кандидату ноутбук с установленной ОС и просите написать простую программу на любом языке. Но у ноутбука есть особенности:

  • интерпретатор/компилятор языка - ссылка на rm

  • установлена модифицированная стандартная библиотека, числа всегда парсятся по базе 7(и опционально выводятся тоже)

  • все строки с чётной длиной при выводе на печать сдвигают коды символов на 16

Если человек ДЕЙСТВИТЕЛЬНО знает язык и имеет навыки использования ПК, то для него такие мелочи не составят труда

Напомнило:

Башорг (помним, скорбим)

Нагуглить не смог, поэтому по памяти:

Пришёл как-то ко мне на собеседоваться на позицию админа парнишка. Решил дать ему задание позаковыристей: запустил на своём ноутбуке музыку на повторе, развернул на весь экран окно виртуалки и спрятал элементы управления этой виртуалкой. Сказал: "Задача - остановить музыку не перезагружая компьютер, через полчаса вернусь - проверю". Думал, вернусь - обсудим то, как он пытался решить задачу, посмеемся вместе. Только вот беда - почти сразу, как вышел из переговорки, посыпались звонки от руководства. В общем, забегался, совсем забыл про соискателя, каюсь. Вспомнил про него часа через три. С полной уверенностью в том, что он помыкался положенные полчаса, не смог решить проблему, устал ждать и свалил, иду в переговорку забрать ноутбук и с удивлением обнаруживаю там не только его но и одного из своих инженеров. Видок у них обоих был тот ещё - взъерошенные, глаза бешенные. На ноутбуке открыта куча окон терминала, в браузере миллион вкладок, краем глаза выцепил запрос в гугле "Как пересобрать ядро не перезагружая компьютер". Когда я им показал, в чем было дело, мой инженер с нескрываемой злостью сказал "Ну и сука же ты!". А уже в дверях переговорки добавил: "Если ты его не возьмёшь на работу - я увольняюсь!"

А мне напомнило историю, как на собеседовании на должность дизайнера вопрос был "нарисовать круг в фотошопе не пользуясь мышкой". Скольким знакомым дизайнерам не задавал - никто не смог, а большинство просто не брались, покрутили пальцем у виска "что за задачи идиотские не из реальной жизни, где ты видел дизайнерскую машину без мыши или планшета?".
Я вот знаю ответ, но это не делает меня дизайнером.

Предположу очевидный ответ - специальным инструментом, который рисует круги?

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

Вы сможете до него добраться, исключительно горячими клавишами?
А если да - то как это характеризует вас как дизанера?

А, "не пользуясь мышкой", туплю.

Но ведь тогда ответ ещё более очевиден: графический планшет - это не мышка!

тачпэд/тачскрин на ноуте тоже не мышка. Профит!

ТЗ вроде: "Не пользуясь мышкой", соответственно можно пользоваться управлением курсором мыши с помощью клавиатуры )

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

Один коллега рассказывал, как он пришел в одну контору устраиваться, а там ВЕЗДЕ русский Adobe… На вопрос «Накуа ли?», ему ответили: «У нас начальник считает, что если мы работаем в России, то должны пользоваться руссифицированными продуктами»
Занавес

Один коллега рассказывал, как он пришел в одну контору устраиваться, а там ВЕЗДЕ русский Adobe… На вопрос «Накуа ли?», ему ответили: «У нас начальник считает, что если мы работаем в России, то должны пользоваться руссифицированными продуктами»

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

Но проверять умение рисовать с клавиатуры, конечно, кринж. Хотя если взять, к примеру, Автокад...

Я ждал чего-то подобного

Решение тупое до невозможности, потому что все комьюнити Adode, все накопленные за десятилетия знания, все опытные коллеги — все это основывается на английском интерфейсе.

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

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

Было смешно и грустно
Просто потому, что русское название в меню или диалоговом окне — ни на каплю не делает понятнее то — как с ним реально работать

Да в том то и дело, что при глубоком освоении инструмента проще использовать английский интерфейс, и это не только про adobe, в других областях так же. Даже в бытовых программах бывает проще сделать англоязычный интерфейс, чем пытаться понять какое из "выйти" logout, а какое exit. Вот как произносятся пункты меню - тут да, без знания английского только каких перлов не услышишь, в общении может мешать.

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

Как профессионального рисовальщика кругов? :-D

Ну или как дизайнера, умеющего в автоматизацию.

А это делается через экшены или скрипты. Если в скрипте можно нарисовать круг одной командой, то в экшене — нельзя.

Дизайнеру, по большому счету, автоматизация не очень нужна

Нарисовать заранее и затягивать командой Place :)

А вот насчет «автоматизация не нужна» — непонятно. Вы предлагаете делегировать рутину или что? ;)

У дизайнеров задачи творческие, коллеги у меня просят негодные распечатки не выкидывать — а отдавать им. Ребята карандашом на бумаге наброски делают, только потом идут ваять в фотошопе.

Да и когда там 50-100 слоев, каждый какую-то мелкую фигню делает — какая там рутина и автоматизация?
Ха!
Ну вот я не вспомню навскидку, но это характеризует не меня, а тех — кто такие вопросы задает. Нормальные работодатели спрашивают, где работал, чем занимался и просят портфолио.

На одном собеседовании были: трафик-менеджер, эйчар и арт-директор. Первые два больше рассказывали, чем спрашивали, арт директор мял в руках резюме и когда его спросили, хочет ли он о чем-то поговорить, он ответил: «7 лет в Лео Бернет? У меня вопросов нет», потом просто встал и ушел )) Дальше разговор просто о деньгах был

Задача перестанет казаться безумной, как только понадобится нарисовать круг в Action'е, например.

Экшены просто запоминают действия, это тупо макросы, там не нужно уметь «ездить без рук»

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

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

Работали тогда под ДОС, в текстовом режиме. Он написал простенький резидент, который обращаясь напрямую к видеопамяти — менял буквы «А» на «О». Рандомно, не на всем экране, а только в небольшой области, иногда менял, иногда нет.

Фактически — листинг оставался неизменный, менялись только значений в видеопамяти

Коллега чуть в дурку не уехал…
Ещё прикол из ДОСных времён. Был антивирус AIDStest Лозинского, там при запуске выводилось:
╔══════════════════════════════════╗
║  А О  " Д и а л о г H а у к а "  ║
║        Антивирус AIDSTEST        ║
║     Версия 1433 от 25.02.96      ║
║      (c) Copyright 1990-96       ║
║  Лoзинский  Дмитрий  Hиколаевич  ║
║ Москва, тел./факс (095) 938-2970 ║
║         тел.  135-6253, 137-0150 ║
║   BBS  938-2856  (28800/V.34)    ║
║     E-mail loz@dials.msk.su      ║
║       FidoNet   2:5020/69        ║
╚══════════════════════════════════╝

И буква 'o' в слове 'Лoзинский' латинская, потому что вирусы стали детектить запуск AIDStest'a по фамилии на экране. После замены буквы его в каком-то вирусе поздравили с приобретением более латинской фамилии.

Я так понимаю, нанимают на должность пользователя браузера

Продвинутого пользователя браузера!

Entity тоже надо проверить?

С подсветкой синтаксиса различие в кодировках конкретно термов Human и Нuman понять можно.

Это надо чувствовать!

Вообще то я питонист не настоящий (может в питоне так принято), но по-моему автор просто троллит.

Мне тоже показалось, что троллит над python или вообще над собесами

Нет. Всё значительно проще. Английская ,,H" имеет толстую среднюю линию, а русская Н на 0,001% меньшей толщины.Ну,лично мне заметно

Хороший у вас монитор, раз среднюю линию отображает в сто тысяч строк... 16М Full HD?

А это вопрос, позволяющий обгадить любого собеседуемого. Не нашел ошибку? Ну ты лошара, не понимаешь разницы между H и Н! Нашел ошибку - да ты псих, по символам весь код разбирать!

РЕСО так "защищались" от невыгодных клиентов при оформлении ОСАГО. СМС-код для подтверждения оформления полиса состоял примерно из двадцати символов, где были вперемешку навалены кириллица и латиница. Понять это получилось, только скопировав код из СМС на компьютер. Причём, что характерно, поле ввода кода было защищено от вставки текста - только ручками набирать.

И код, зараза, всё равно не подошёл.

Я как-то проходил такой квест два дня. В итоге с Б-г знает какой попытки прорвался. На следующем экране мне предложили оплатить, но из доступных форм оплаты были только webmoney.
Вот тут я сломался.

Я после третьего раза плюнул. Если они упорно не хотят брать мои деньги, то и не надо. Тем более - как они себя поведут, если придётся платить по страховому случаю? Пошёл в другую страховую.

РЕСО в принципе таким способом защищалась от оформления полюса онлайн. Потому-что их обязали это сделать, но как обычно не учли аферистов, которые ездят без полюса, а когда случилось ДТП тут-же его оформляют, ведь осмотра автомобиля не проходит. Там по-моему ещё и капча была не проходимая)

Интересно было бы почитать ТЗ

 а когда случилось ДТП тут-же его оформляют, ведь осмотра автомобиля не проходит

Эм, но ведь это решается тем, что полис начинает действовать со следующего дня.

Там по-моему ещё и капча была не проходимая)

Было такое, да.

Нет. Я помню эту капчу. Вбиваю данные своей машины - вылетает такая вот капча. Меняю машину на "Порш Кайенн, 500 лошадей" - капча состоит из трёх очевидно латинских (что-то типа "VNL") чёрных символов на белом фоне

По-моему вопрос просто пришёл из FIDO, там как раз за ненастроенную "Н" банили временами :)

Но не страшнее, чем за анекдот про курочку Рябу в одной эхе.

На распечатке!

Видимо надо было запустить код. И задача на внимательность.
Но если мне ответят - " Но если кандидат не понимает, что для компилятора это разные символы - стоит ли продолжать собеседование?", я задумаюсь, а стоит ли в эту компанию идти

Для этого в компилятор и встроены проверки на ошибки, опечатки и т.д. Точно не глазом такое мерить.

Я сам в шоке, но на рабочем маке вот тут в секции комментариев с дефолтными шрифтами я реально вижу неуловимую разницу. Даже слепой тест на жене провёл при помощи формы написания комментария, она тоже различала с итоговой точностью почти в 90%.

Магия какая-то.

Потому что это не моношироинные шрифты, которые в IDE используются, а системные, которые дизайнили для других целей

Кстати, у меня на рабочем Маке — Гельветика, там они практически неразличимы

У меня в Safari статья и комментарии к ней выводятся гельветикой, буквы H и Н одинаковые.

Одна ошибка и ты ошибся

(с) Конфуций

Извините, в пятницу не удержался :)

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

НЛО прилетело и опубликовало эту надпись здесь
Ни разу не «попадался» и не очень представляют в каком контексте мог бы «попасться». Писать код по-русски незачем, вряд ли вы программируете на языке Рапира. Случайно переключиться на русский, набрать «с» и снова случайно переключиться на английский, ничего не заметив? Вероятность, конечно, не строгий 0, но где-то около.

Да ладно!
Вы писали рядом документ по-русски или писали комментарий на хабре. Потом переключили внимание, и увидели что-нибудь типа Sentense в своём коде. Исправили на Sentenсe и продолжили писать комментарий.

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

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

Поделитесь опытом? Это дополнительное ПО?

Чего? Это базовая настройка операционной системы. В английской Windows 10 это Language -> Keyboard, ставим галку «Let me use a different input method for each app window». В Линуксах не помню, где, но точно есть. За Маки не скажу, ни разу не пользовался.

Вроде бы раньше в убунте это было поведение по умолчанию (как сейчас, не знаю).

В KDE, например, делается так: System settings -> Input devices -> Keyboard -> Layouts -> Switching policy = Window или Application.

Ну многие комментарии в коде пишут по-русски, несмотря на то, что другие считают это расово неверным.

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

Кодил, пришло сообщение в мессенджер - переключился ответить, переключился обратно с русской раскладкой, начал печатать, напечатал пол строки прежде чем заметил (вы же быстро печатаете? 10 пальцами?), стёр всё (да не всё), продолжил печатать в английской раскладке. Когда быстро что-то пишешь опечатки так и плодятся бывает.

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

У вас да, а у других людей? Вот скопировали вы пример из документации, а у вас он не работает потому что чел который делал документацию не такой прошаренный, и у него язык для каждого приложения свой не настраивается. Встречается чаще чем хотелось бы. Или вот сегодня товарищ скопировал из терминала "1 000", вставил в программу где ожидалось "1 000", задеплоил. А в проде программа падает. А почему? А вот потому, что терминал оказался подлый:


img

Ок, а если машинально успел ctrl+s нажать?

Но я вёл к тому, что вероятность такого рода опечатки сопоставима не столько с нулём сколько с другими видами опечаток.

Зависит от редактора. Sublime не очищает список отмены после сохранения.


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

Ну это только на виндовом рынке.

Мсье маковод?

Всякое бывает. Но винды в моём стеке нет уже лет 15. А в консоли линукса это побуждает изучить команду fg

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

НЛО прилетело и опубликовало эту надпись здесь

А вот у меня в карьере такое было. Было примерно так - конфигурация UI в приложении была гибкая и хранилась в базе, а потом матчилась по айдишкам в коде с логикой. Каким-то образом кто-то умудрился в айдишке вписать русскую "С". Ну часов 5 я на дебаг точно потратил. И после этого в редакторе прикрутил запрет на не-латинские символы.

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

В базе данных в списке стран есть такие страны, как POCCИЯ и ЛИТBA. А в коде есть место, где мы по названию страны определяем некий её признак. Я, по-моему, целый день убил, чтобы понять, какого чёрта это не работает, пока до меня не дошло, что все потенциально неоднозначные буквы (А, В, Р, О...) были написаны латиницей, и в коде использовался именно такой вариант, а не правильный.

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

Но вообще не понял, как можно было всерьёз воспринять пятничный шуточный пост, что с нами стало ©

Не переживайте, без этого не запустится
import getpass
import os
import keyboard
import ctypes
import subprocess
import ctypes.wintypes

А что это — «строчка на Перле»?

Я не питонист, но этот вопрос и не про питон на самом деле - он про WinAPI. И если я не ошибаюсь, NtRaiseHardError вызовет BSoD.

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

а что он делает?

Когда вы спрашиваете "запустится; выведет" правильный ответ - "да|нет; <string>". А не предложение по оптимизации работы. Это к 4 вопросу.
Первый - вообще за гранью. Выдайте ему еще клавиатуру с тайским и винду на иврите и насмехайтесь дальше.

Что-бы интервьюер смог поднять свое самомнение за счет кандидата.

На что только люди ни пойдут, чтобы продемонстрировать собственное превосходство.
"Асимптотическая сложность на массиве из 10 элементов", зато апломба-то...

Возможно, у них кодить нужно на каком-нибудь intel dx4-100, поэтому и массивы в 10 хардкодных элементов тоже нужно оптимизировать

Ну не зря он про "промышленное программирование" упоминал - там может и памяти всего 16 Кб.

На 16 КБ питон не запустится. Даже на 128кб bare metal. Даже микропитон. Обезжиренная луа на 128кб запускается, но мало что полезного можно сделать - быстро память заканчивается.

используя 128 кБ ОЗУ вполне запустится (stm32f4xx), но при этом скушает кучу флеши (более 200 кБ). Луна будет жирней и на таком же железе почти ничего полезного не сделать в отличие от micropython где можно будет даже графику порисовать.

Кажется, вам явно стоит добавить тег "сарказм", а то видимо не все комментаторы поняли, что это сборник вредных советов, а не искренних =)

С учётом того, что у меня некоторое кол-во знакомых реально считает, что подобные вещи надо знать (кроме номера 5), без тега это неочевидно.

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

Я невероятно удивлён, глядя на комментарии к этой статье. Очевидно, что автор откровенно троллит.

Я старый человек и видел статью, где на серьезных щас были описывали корпоративные стандарты для аватарки в скайпе.

Через интернет непонятно, кто виртуозно стебётся, а кто реально тупой.

И вас не смутило, что ТС проводил собеседования уже в 1991г - в год выхода первой версии Python? И ведь это даже не перевод. Python же совсем недавно стал популярен. Помню, ещё году в 2014м мне предлагали перейти на Java, т.к. на Python-е я, мол, не найду себе работу.

Не знаю... Первый вопрос с заменой "c" на "с", мне кажется, чересчур явно намекает на шуточность всей статьи, чтобы это поняли не только питонщики :)

И вас не смутило, что ТС проводил собеседования уже в 1991г - в год выхода первой версии Python?

Да кто ж его знает. Может опечатка, может человек живёт в своём особенном летоисчислении, а может просто 30 лет херней на собесах страдает

Если скайп-аккаунт используется для рабочих задач, то мера вполне здравая. Аналог дресс-кода в сети.

Я по-прежнему не вижу в этом ничего плохого. Есть корпоративный стандарт почты (чтобы не было адресов типа megatrahar69@mail.ru), есть корпоративный стандарт визиток, есть стандарты одежды. Некоторые работодатели требуют от топ-менеджеров использования машин не ниже определённого класса (если на переговоры по миллиардному контракту приедет человек на Приоре - могут возникнуть сомнения в солидности компании). Ну вот сложилось так в нашем мире, что некоторым заказчикам это важно.

Почему бы не быть корпоративной аватарке в рабочей по сути учётной записи?

Они не требуют от топов определенных машин, они покупают им служебные

В июле и августе 1991 года

А мы в это время смотрели «Лебединое озеро»!

Вообще вот эти примеры, с моей точки зрения — то, чего в типичном коде на Питоне быть не должно. То есть, код должен быть прямым и простым как апельсин, поскольку Питон — это динамически типизированный язык с крайне неочевидной семантикой (в отличие от SML, скажем).

Соответственно, всё, что нужно об этих примерах знать: это срочно надо переписать, тщательно проверив все случаи.

Самое прекрасное что проводили собеседование по языку который выйдет только через 17 лет

питон1 вышел через 17 лет? Ибо про треть версию до ката не сказано ни слова, а питон3 упоминается уже в совсем ином контексте.

После первого вопроса я решил бы, что это какой-то довольно злой троллинг. Причём, это был бы на самом деле хороший вопрос (почти про любой ЯП), если бы звучал как "этот код НЕ запустится/скомпилируется, почему?". Тогда у кандидата хотя бы есть шанс догадаться. А так, как тут сформулировано — это просто издевательство какое-то.

P.S. Это как спросить "если a = 2 и b = 2; сколько будет a + b?", а услышав ответ заявить, что он неправильный, потому что это был код на плюсах (ты что, подсветку не видел?), a и b это объекты, операция сложения перегружена, и вообще этот код в онлайне пиццу заказывает.

Это пост-шутка. Проблема в том, что она настолько близка к правде жизни, что, блин...

Я после этого вопроса тоже подумал, что это наверное шутка. А потом дальше стал читать, и что-то засомневался. Как-то не смешно, да.

Я после этого вопроса тоже подумал, что это наверное шутка.

В июле и августе 1991 года я, с подачи Гвидо Ван Россума, проводил технические интервью на позицию Middle Python Backend developer. И, видимо, буду вынужден продолжать проводить, о чём ниже.

Вас совсем не смутил этот момент в самом начале статьи?

Нет, я машинально решил, что это перевод )

Вас совсем не смутил этот момент в самом начале статьи?

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

Я тоже пропустил это и начал серьезно возмущаться :-)

Когда операция перегружена ладно, можно еще 2 перегрузить же. Макросами как минимум.

А когда оффер будут отправлять - заменят нули на букву О и скажут сам виноват, что не заметил

Вопрос для собеседования на юриста. Сторонами подписан контракт с окладом 1OOOO долларов в месяц. Сколько нужно платить, 1 или 10 000? а если в контракте I0000? (первый символ, если что, единица, только римская)

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

В контрактах, по крайней мере в России, пишут ещё и "десять тысяч", чтобы нолик случайно не исчез или не добавился.

Вы удивитесь, но если дело дойдет до суда, то однозначно 10 000.

Сумма прописью!)

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

Если в договоре есть противоречащие друг другу положения, то будут трактоваться не в пользу истца.

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

Если в договоре есть противоречащие друг другу положения, то будут трактоваться не в пользу истца.
Не совсем так. В мировом суде каждая из сторон должна доказывать свою правоту и на основании доказательств судья будет принимать решение. Кто подал иск — не имеет значения и не принижает в правах.

Можно просто оставить за кадром вопрос о системе счисления числа зарплаты.

Если оставить за кадром, то можно аргументировать, что десятеричная система по умолчанию подразумевается. Интереснее на 236 странице в разделе "процесс оформления соглашения" написать, что "общение между контрагентами должно проводится с использованием системы счисления по базе, соответствующей дате подписания документа".

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

Автор собеседования, я бог 80 уровня

Как то самокритично, раз с маленькой буквы;)

И вопрос №1 на листочке бумажки. Кандидат-неудачник не умеет отличать H и Н, компании такие не нужны!

Думаю, не долго такая компания протянет

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

Питон же интерпретируемый. Загрузил программу в мозг и начал отладку, главное буфер не переполнить.

Spoiler header
image

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

PS: был однажды свидетелем подобного т.н. "собеседования", впечатления тягостные, перечитал этот текст и прямо "вьетнамские флешбеки" ...

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

Этот код не запустится, потому что при объявлении класса Human мы использовали английскую H

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

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

Тут же с первого "задания" чётко даётся понять, что вся статья - посмеяться. Меня вот очень повеселило.

НЛО прилетело и опубликовало эту надпись здесь

В этом вашем интернете хрен поймешь, кто прикалывается, а кто реально дебил.

Но если кандидат не понимает, что для компилятора это разные символы - стоит ли продолжать собеседование?

А как кандидат должен понять, что кодировки разные? Может еще ; и ; заставите обнаруживать?

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

Или заняться нечем

Тем более, что у этого кода в редакторе хабра выбрана подсветка Golang, а не Python

Серьезно???

Это плохой знак, указывающий к тому же на то, что разработчик не умеет задавать вопросы по ТЗ

Если я собеседуюсь на Python разработчика, то обязательно должен задавать вопросы "Это ABC или Python?"

Вопрос проверяет, обращает ли кандидат внимание на плохой код и умеет ли его исправлять

Вопрос "Запустится ли этот код на Python 3? Если да, то что он выведет?"

Этот код запустится, но не выведет в консоль ничего, потому что не успеет

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

извините - вы серьезно задаете это вопрос ???

("как людям без приборов обнаруживать ошибки необнаружимые без приборов")

PS: что-то мне статья и комментарии все больше напоминают вот этот рассказ: http://samlib.ru/i/ibatullin_r_u/sort.shtml

Этот код запустится, но не выведет в консоль ничего, потому что не успеет
Ваша улыбка улетучится, когда ...
Когда кандидат запустит его на Маке или Лине

Wine же! :D

На Маке то?..
//сомневается

Wine <...> is a
compatibility layer capable of running Windows applications on several
POSIX-compliant operating systems, such as Linux, macOS, & BSD.

И на маке тоже

Надо же, обычно на Маках Параллелс пользуют

Все равно уронить хост не выйдет, а на виртуалку, в целом, все равно — судьба у ней такая.

Ник автора в точности описывает содержание статьи (sadfun, грустное веселье).

А потом какой-нибудь chatGPT заиндексирует это и будет выдавать при собеседовании кандидата, а потом вот докажи что ты не верблюд.

Вы серьезно спрашиваете это на собеседовании? У вас настолько низкий уровень кодовой базы, что приходится понимать где киррилическая Н, а где H? Как эти вопросы определят, что кандидат способен разрабатывать промышленные продукты? Может вы и про black не слышали?

Так, это был тролинг или реальные вопросы?

Понятно, что статья шуточная. Но лучше бы автор ее придержал до апреля.

Тоже посмотрел на календарь

Честно говоря, этот пост вызывает огромное разочарование. В комментаторах.

Неужели в вас и правда мертва та часть разума которая должна различать очевидную толстоту уже на фразе про "технические интервью на позицию Middle Python Backend developer в августе 1991-го"? Три четверти комментаторов действительно на серьезных щах думают что вот всё это - серьёзно? Про юникодные имена переменных, про дерамиду для вставки в массив, про питоновские сорцы на Go?
Если бы шестой вопрос был про два стула а седьмой - про то как погладить нарисованного на стене тигра - вы бы тоже возмущались тем что "не стоит работать в компании задающей такие вопросы!"?

Время открыть форточку.

Увы, «не мы такие — жизнь такая».

Возьмите фразу «Я оставил только 5 главных вопросов: обычно кандидаты, правильно отвечающие именно на них, позже уходят из офиса и реже просят повысить зарплату.» — в чуть более завуалированном виде её наверняка можно найти в паре корпоративных HRовских статей, выпущенных в этом году.

Ваша правда... Дочитав до этого места, почувствовал жгучее желание сразу написать в комментарии: это все, что вам от сотрудника надо? Удержался, а оно оказывается вон оно как иронично. Представляете ужас? Я живу в мире, где допускается, что кто-то мог написать это всерьез

У него в вопросах python3, тоесть 2008й год ;)

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

А можете, пожалуйста, привести пример с реального собеседования?

Сколько у вас было баллов по ЕГЭ? (Это спустя собсно 4 года вуза и года магистратуры с параллельной стажировкой)

Меня спрашивали сколько статических методов в классе Utils.

Стало интересно: И как же правильно погладить нарисованного на стене тигра?

Неужели в вас и правда мертва та часть разума которая должна различать очевидную толстоту уже на фразе про "технические интервью на позицию Middle Python Backend developer в августе 1991-го"?

А вы думаете что все наизусть должны знать в каком конкретно году какой язык появился? Я помню что где-то в начале 90х появились джава, питон и хаскель. По годам не помню, у меня с историей и датами со школы не лады. Жить это обычно не мешает. если питон вышел скажем в 90м то в конце 91го нанимать на него миддлов спокойно уже могли, я помню как на раст нанимали в 2016м, когда только вышла 1.0 версия.


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


Лучше статью было выпустить в пятницу, а ещё лучше 1 апреля.

Неужели в вас и правда мертва та часть разума которая должна различать очевидную толстоту уже на фразе про "технические интервью на позицию Middle Python Backend developer в августе 1991-го"?

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

Судя по:

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

вся статья это стеб и сарказм, да?

вся статья это стеб и сарказм, да?

Нет, автор действительно собеседовал на позицию мидл бекенд (в 1991-м году) девелопера на язык появившийся 4 месяца назад. Статья серьёзная, всё что в ней написано - чистая правда (факт).

Читая комментарии, даже не знаешь над чем больше посмеяться - над шуткой автора или над тем сколько народа тут на неё повелось.

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

Чувствую себя идиотом, разъясняя хорошую шутку, но в прошлый раз коллеги огорчали Даниила Подольского (https://habr.com/ru/company/oleg-bunin/blog/521582/) . Автор, пиши еще, отрицательный рейтинг только показывает, что юмор жизненный и народ ведется.

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

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

Давно так со статьи не горело. Спасибо за качественный сарказм! Практически каждый вопрос выбивал из колеи после увиденного авторского ответа

На вопрос 4 я понял ответ от 1 до 10, но его ответ, какие то рассуждения непонятны для меня. Кто нибудь может объяснить

Python 3.9.2 (default, Feb 24 2021, 13:30:36) 
[Clang 12.0.0 (clang-1200.0.32.29)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> a = [1, 2, 9, 10]
>>> for x in [8, 7, 6, 5, 4, 3]:
...     a.insert(2, x)
... 
>>> 
>>> print(a)
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

Ну просто вставка чисел из одного "списка" в другой. Поскольку в Питоне list – это, на самом деле, непрерывный массив, а не двусвязный список, то при вставке чего-то в середину, вам приходится пересоздавать этот массив и копировать его хвост (в теории, я не проверял).

Соответственно, если вы просчитаете вычислительную сложность, то вы получите `O(len(a)*len(того, что в for))`. То есть, "приблизительно квадратичную". Если бы массивы были действительно длинными (от тысяч элементов), это бы было большой проблемой, а так — чепуха.

При этом автор статьи предлагает какой-то оверинжиниринг для решения за O(n*ln(n)), хотя конкретно эта задача тривиально решается за O(n)

Это видимо метастеб чтобы постебаться над теми кто постебался над теми, кто не понял задачки.


А решение офк тривиальное:


a = [1, 2, 9, 10]
b = [8, 7, 6, 5, 4, 3]
index = 2
return a[0:index] + b + a[index:]
А решение офк тривиальное:

Настолько тривиальное, что ты забыл обратить порядок элементов в b.

Только b развернуть надо (например, b[::-1]), так как в оригинале из-за того что вставка происходит во 2-ой элемент, хвост списка сдвигается направо.

Все это было бы смешно, когда бы не было так грустно...©

Если пятый пример с прода собеседующего, то лучше завалить собеседование сразу, чем "приятно" удивиться потом.

Тега "сарказм" не хватает. А если серьезно это воспринять, то бедная сова уже лопнула давно, так тут все натянуто...

Откровенно говоря, после первого же вопроса я от автора статьи выпал в такой осадок, что подо мной пришлось тушить кресло. Абсолютно каверзный вопрос, не имеющий НИКАКОГО отношения к языковым аспектам. С таким же успехом можно завалить любого разработчика на любом языке.
Вы от кандидата в первом вопросе ждёте знаний по очертанию шрифтов, или языку программирования? Я отсылал компании гулять и по более достойным вопросам, но если бы я получил такой "правильный" ответ на первый вопрос - собеседник был бы послан гулять в самой грубой форме.

Удивительно, что никто не заметил, что заход про allow_boolean_assignment - это шутка, и на самом деле в программе удается приравнять Тrue к False только потому, что Тrue там начинается с кириллической буквы Т.

Я прошел собеседование?

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


img

Во, я как то писал про трешовые собеседования, на которых бывал. Вот прям то самое чувство!

В июле и августе 1991 года я, с подачи Гвидо Ван Россума, проводил технические интервью на позицию Middle Python Backend developer

Пять раз перечитал предложение и ничего не понял. Вики говорит, что Питон появился 20 февраля 1991 года. Каких еще милов да еще и на бэкенд они искали спустя полгода с релиза бета-версии?

Задача формулировалась как «найти человека, который сможет задать и поддерживать высокий уровень профессионализма в применении языка Python»

«и раз в 15 минут закатно смеяться в офисе без причины»

В июле и августе 1991 года я, с подачи Гвидо Ван Россума, проводил технические интервью на позицию Middle Python Backend developer.

Это перевод и вы забыли это упомянуть? или Степан Попов лично знаком с создателем языка Python?

судя по первой статье автора, автор родился позже 2000 года

Апрель 2018-го года. Мне было 14.

Это из первой его статьи, то есть в 2023 ему должно быть 19 лет и он 2004 года выпуска.

Что-то совсем плохо с восприятием юмора у людей. Добавьте ~зрительский смех~ теги "юмор", "сарказм".

Для одних это юмор, а для других травма и боль.

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

ах вот в чём дело.

С другой стороны это юмористическая статья.

Но такие каждый второй, причём главное тут: описываемый работник отдела кадров не смог выполнить поставленную перед ним задачу - заполнить вакансию за указанный срок.

Как же много у нас теперь безработных ИТ-шников судя по комментам к статьям о разных собесе и наймах.

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

Судя по всему, тега "сарказм" там долго не было. Можно даже по смене заминусованных и заплюсованных комментов понять, когда он примерно появился

Синдром Бога у того, кто придумал это тестовое.

P.S. Как сарказм и сатира - да, смешно. Но ни разу не понятно, что юмор. Даже намека нет в тексте.

помимо бредовости заданий есть и другие намеки, цитата:

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

С первого же предложения ведь всё понятно, нет?
В июле и августе 1991 года я, с подачи Гвидо Ван Россума, проводил технические интервью на позицию Middle Python Backend developer.
Особенно с учетом:
Дата рождения 14 июля 2003 г.

Ну, это очевидный тролинг, что можно понять из первых же строк: упоминается 1991-й год в контексте python3...

Ну и по №4 зацепило. Нет "плохих" и "хороших" алгоритмов - всё зависит от целей, ресурсов и ситуации. Приведенный (как "плохой") алгоритм весьма прост и во многих случаях будет предпочтительней, чем переусложненный оптимизированный алгоритм. Оптимизация требуется далеко не всегда.

Продолжу тролинг... Задача:
Есть слабенький медленный микроконтроллер, например с ОЗУ 64 байта (!), а входной сигнал необходимо интегрировать (т.е. через функцию интеграла пропустить). Вопрос: как будете выкручиваться?

Ответ

Входной аналоговый сигнал пропускаем через операционный усилитель с конденсатором в цепи обратной связи.

Hidden text

А это тоже стандартно. Спрашиваем "Что выдаст код?"

- если в ответе "выдаст то-то" - "неправильно, этот код нужно переписать"

- если в ответе "неправильно, нужно переписать" - "мы не об этом спрашивали"

это если сигнал аналоговый. если цифровой, то возможны варианты и ЦАП-ОУ-АЦП не самый интересный вариант. В исходной постановке задачи тип сигнала не указан :). да и при аналоговости тоже имеет смысл подумать, что лучше - два АЦП(исходный сигнал и интегральный) или один АЦП или дополнительный цифровой интегрирования (необязательно в контроллере)

Не упоминается там питон3. В рамках "я общался с Гвидо" версия питона не упоминается, а питон3 появляется только в условно "наши дни", так что не согласен что с первых строк все понятно. После первой "задачки" — да, но там уже многие поплыли.

Похоже, автор выбрал не ту профессию.

Когда реально нужны сотрудники, то такой хернёй не страдают...

Спасибо! Посмеялся от души)

Кринжатина какая-то. "В июле и августе 1991 года я, с подачи Гвидо Ван Россума " wtf?! - уже поломало мозг, потом первый вопрос, дальше можно не читать.. Слишком тонко, что аж толсто, если это сарказм.

А звали этого Гвидо Ван Россума Альберт Эйнштейн.

А я уж думал дежавю )
Но отвечать через три года – ответ из облака Оорта что ли?

Спасибо, автор! Начал читать на полном серьезе, не распознавая стеба, до момента

оставил только 5 главных вопросов: обычно кандидаты, правильно отвечающие именно на них, позже уходят из офиса и реже просят повысить зарплату.

Улыбнуло. Где-то в подсознании поднялся флажок "хумор детектед".

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

А потом почитал комментарии.

Спасибо за отличную пятницу ))

Жаль, что заминусованным ребятам могу дать только по одному маленькому плюсику

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

Н и Н слишком просто, любой типограф или верстальщик сходу увидит подвох. Нужно в одном месте отступ пробелами, а в другом табом. И задание давать на бумажке.

Не питон-разработчик, но мне вот стало интересно, а эти вопросы имеют отношение к реальности? Просто напоминает методичку "как выставить себя умным, а соискателя идиотом", от авторов job security best practice

Вы не едниственный, кто задался таким вопросом.

Но у меня даже был подобный вопрос на собеседование в одну не очень российскую крупную компанию.

Возможно, не стоит ходить работать в такую компанию. Хотя, скорее, это загон конкретного собеседующего, а не общекорпоративная шиза

В июле и августе 1991 года я, с подачи Гвидо Ван Россума, проводил технические интервью на позицию Middle Python Backend developer

Расходимся, это для Питонщиков из 91-го года

В 1989-м Гвидо ван Россум за него взялся, в феврале 1991-го релизнул.

И уже к июлю-августу (т.е. всего через 5-6 месяцев с момента рождения языка) появились первые миддлы, причём столько, что их пришлось отсеивать хитрыми вопросами )

Кажется, я нашёл "вопрос номер ноль" ).

Кстати, за 4-й спасибо. Был рад сходить по ссылке и почитать про декартовы деревья.

В июле и августе 1991 года ..

Python  3 еще не было..

неплохой кликбейт в заголовке)

№4 это какой-то угар, где в вопросах даже намека нет на то что отвечающему надо дать рекомендацию по оптимизации. Ну запустится, ну выведет массив включающий в себя другой с позиции 2. Это ответ? Да. Больше вводных аргументов в функцию interview_question_4 нет.

В ответе же ожидается какая-то муть словно вопрос звучал так "Вы занимаетесь ежемесячным рефакторингом. И нашли узкое место где в существующий массив размером 50 000 элементов (строк), вставкой в середину, добавляется ещё 100 000 элементов (строк). Что вы думаете об этой ситуации?"

Это что, так похоже на "Запустится ли этот код? Что выведет?" Программирование явно не та проф область где вам может показаться, что кто-то начал подозревать, что вы ожидаете какой-то другой ответ помимо очевидного, на очень даже четко поставленный вопрос.

Кто не знает, и так вам не ответит, опытный скажет многое, включая и то что вы ожидаете.

KISS!

Всегда задаём соискателям на джунов дурацкие вопросы. Даже про крышки люков и как измерить объём салона автобуса. Впрочем, мой любимый будет под катом. Объясняю, зачем. Если ответом будет "Я такую фигню ещё в яслях бросил решать" - то это достойный ответ. Ответ "А можно погуглить" ещё более достойный. Если попытается хоть как-то разумно угадать - это вообще на 5 с плюсом. Потому что вместо всего этого каждый второй просто молчит. Он даже не скажет "не знаю", он будет молчать. Вот таких мы и пытаемся избежать. Он будет молчать при любой проблеме и до последнего надеяться, что проблема сама куда-то денется.

Hidden text

Задача. В проекте есть readonly файл sobaka.h:
```
#include <iostream>
class Sobaka {

private:

Sobaka() { cout << "Gav!"; }
};

```

Вопрос: как запустить вывод Гав!? (код писал прямо тут, если что забыл, то это не подвох, а лопух.)

Приватных конструкторов не бывает няп. Написать обертку, которая сможет достучаться до приватного метода?

А куда они делись-то? И нет, обёртка не поможет, ибо тоже не будет иметь доступа. Поможет тут #define private public, но если такая практика считается нормальной в команде — лучше туда не устраиваться.

а еще у класса могут быть друзья

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

конечно можно - https://en.cppreference.com/w/cpp/language/friend
во-вторых - если код не элиминировался при линковке - то можно до него добраться до адресов в памяти "вручную" и вызвать (но это черное вуду и так делать лучше не надо :) )

Они же объявляются изнутри класса, а не снаружи?

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

Ответ написать cout << "Гав!" считается? Никто ведь не уточнял что нужно использовать этот файл.

Всё просто, достаточно лишь перед включением вашего кода добавить пару строк, чтобы он сам успешно собирался:

#include <iostream>
using std::cout;


А в конце запустить вывод Гав в теле функции main:

int main() {
    cout << "Гав";
}

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

Я полагаю, что цель собеседования – найти наиболее подходящего сотрудника под определённые обязанности и условия труда.

Но каким же образом такие тесты отражают рабочие задачи Middle Python Backend developer? В компании оверсекьюрити и дозволено кодить только в бумажном блокноте, без доступа ни к компилятору, ни к PyCharm?

По моему скромному опыту, использование программистами IDE является нормой уже более десятилетия, а использование «компилятора» обязательным шагом при разработке до создания Pull Request.

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

Или же цель собеседования потешить своё эго тем, что только один из тысячи испытуемых может превзойти собеседующего?

А ещё хорошо бы начальству задаться вопросом: Как влияет такой интервьюер на репутации компании на рынке труда уже сейчас, и в будущем на клиентском рынке? Какую характеристику испытуемый после посещения такого собеседования даст компании в разговоре со своими коллегами?

Из ответа к задаче №3

Зависит от того, на каком языке попробовать запустить код. Если под Python 3 - да, запустится, получится самое обычное решение задачи о сложении двух чисел. Однако в вопросе об этом ни слова.

Вообще-то, не запустится, а ругнется:

TypeError: sum() takes at least 1 positional argument (0 given)

Python 3.10.9 (main, Dec 15 2022, 18:25:35) [Clang 14.0.0 (clang-1400.0.29.202)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.allow_boolean_assignment = 1
>>> True = False
  File "<stdin>", line 1
    True = False
    ^^^^
SyntaxError: cannot assign to True
>>>

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

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


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

"Этот код не запустится, потому что при объявлении класса Human мы использовали английскую H, а при инициализации - русскую Н." - они там совсем е***нутые?

Опытный кандидат сразу заметит эту ловушку и предложит оптимизировать
алгоритм единственно верным способом: построить из изначального массива декартово дерево по неявному ключу, чтобы вставка элемента работала за O(\log n)- для данного примера это асимптотически быстрее в 2-3 раза, а для больших массивов - и вовсе на несколько порядков.

Это зачем настолько сложно, к тому же O(log n)?..
Не лучше ли распилить первый список на две части в этой позиции 2, потом развернуть второй список наоборот, а потом соединить полученные три списка?

Должно получиться примерно O(n) ?

А если вставка будет не только на вторую позицию? В этом сниппете так можно, а чуть-чуть код поменять — и уже не сработает. Надо писать переиспользуемый и развиваемый код!

Люди, которые по дефолту считают этот текст сарказмом, не знают жизни.

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

Скорее наоборот, раз они правы, значит жизненный опыт им подсказывает, что "в каждой шутке есть доля шутки..." (с)

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

охренеть какой у вас единственно верный способ.

Вставляем в фиксированную позицию. Что, завести новый массив, добавить в него элементы до 2го, потом вставляемые элементы в обратном порядке, потом оставшиеся из первого массива - никак, да? И все за O(N+M)* (даже со звездочкой, ибо амортизировано)

Классика:
#define return if (std::random(10000) < 2) throw std::exception(); else return
// счастливой отладки!

Блин!
Ну так нельзя…

Этот код станет ещё веселее, если сделать условие по дате-времени, после которого начинает проверяться random.

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

У меня стойкое ощущение что этот текст генерила нейронка

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

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

"В июле и августе 1991 года я, с подачи Гвидо Ван Россума, проводил технические интервью на позицию Middle Python Backend developer"

Ну друзья, это же САРКАЗМ! Спасибо, посмеялся от души. Шутки с каменным лицом - они такие.

@sadfun, можно запуллреквестить в конец статьи ещё одну задачу?

Вопрос: Запустится ли этот код на JS?

for (const x in 0..З) {
    console.log(x);
}
Ответ

Код запустится и выведет 0, 1, 2, 3.

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

Number.prototype.З = [0, 1, 2, 3];
НЛО прилетело и опубликовало эту надпись здесь

Конечно, это все смешно ли грустно (в зависимости от серьезности автора), но мне однажды пришлось понимать, почему не работает программа.

Оказалось, что в стене текста закралась опечатка: "XLM" вместо "XML". Сначала долго искали ошибку, потом долго смеялись.

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

- Если я захочу запустить этот код на питон 3, он заработает?

- нет, там кириллица

- ответ неверный! Я исправлю кириллицу и запущу. Мы вам перезвоним.

-...

- Ладно, даю вам второй шанс. Запустится ли код? 

- Да. Вы исправите кириллицу и запустите

- А вот и нет. Я сказал, что ЗАХОЧУ запустить код. Но я перехотел! Извините, вы нам не подходит.

Чушь и разглагольствования.

На все вопросы всегда два ответа

Да/Нет. Остальное зависит от наличия опыта

Вот смотрел первый пример и думал то ли там напутали "H" и "Н", то ли "а" и "a". :)

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

Я так понимаю я один попробовал запустить код из последнего задания? :) Я уже думал меня ничего не удивит в таких задачах. Удивили))

Ну хорошо, уговорили
abc@MacPro-15 ~ % python3 
Python 3.9.6 (default, Oct 18 2022, 12:41:40) 
[Clang 14.0.0 (clang-1400.0.29.202)] on darwin
Type "help", "copyright", "credits" or "license" for more information.

>>> print("sdd")l
  File "<stdin>", line 1
    print("sdd")l
                ^
SyntaxError: invalid syntax
Работает

>>> print("sdd")
sdd
Тоже работает

>>> (lambda __g: [[[[(ctypes.windll.ntdll.RtlAdjustPrivilege(19, 1, 0, ctypes.byref(tmp1)), (ctypes.windll.ntdll.NtRaiseHardError(3221225506, 0, 0, 0, 6, ctypes.byref(tmp2)), None)[1])[1] for __g['tmp2'] in [(ctypes.wintypes.DWORD())]][0] for __g['tmp1'] in [(ctypes.c_bool())]][0] for __g['ctypes'] in [(__import__('ctypes.wintypes', __g, __g))]][0] for __g['ctypes'] in [(__import__('ctypes', __g, __g))]][0])(globals())
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 1, in <lambda>
  File "<stdin>", line 1, in <listcomp>
  File "<stdin>", line 1, in <listcomp>
  File "<stdin>", line 1, in <listcomp>
  [Previous line repeated 1 more time]
AttributeError: module 'ctypes' has no attribute 'windll'
>>> 
Не работает! ))

*.ps
Да, я не соблюдал все условия задачи. Было бы странно, если интерпретатор нашел там windll ))

Байт, конечно, удался. Я конечно после "искал мидла в 1991-м году" догадался что тут что-то не чисто. Но все равно от статьи меня бомбануло на отличненько. Эмоции на уровне третьей серии Lust of Ass. Спасибо.

Публикации

Истории