Не совсем понимаю, почему компании задают проблемы с LeetCode на собеседованиях по программному обеспечению?

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

Эти вопросы могут быть очень конкретными, и типичный инженер-программист не стал бы задавать их даже через 15 или 20 лет. Например, при наличии щелей 10000 x 10000 и разделителей разной высоты между ними теперь можно найти область 20 x 20, которая может задерживать наибольшее количество дождевой воды, когда идет дождь в течение длительного времени.

А разных вопросов в базе LeetCode может быть 1500.

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

И исследования такого типа проводились, иногда месяцами или годами, в качестве магистра или доктора философии. Тезис.

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

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

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

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

мои друзья сказали, что ему задали невозможный вопрос, и он сразу ушел с собеседования, но потом он работал в этой дрянной компании по тестированию Android, и ее купили, и он попал в Google, а затем с тех пор он заявил: «О, эти вопросы Leetcode такие справедливые». Расскажите о рабском типе мышления.

Ответы (7)

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

В некоторых компаниях нет опытных инженеров, анализирующих процесс собеседования. Ошибка с их стороны, если они нанимают инженеров, но достаточно распространенная. Так что HR просто ищет какую-то метрику для использования.

Вы когда-нибудь были на собеседовании, где вы можете показать во время обсуждения викторины, что код, который они использовали, либо неверен, либо является плохой практикой? Они избегают этой ситуации.
@user10186832 user10186832 Я не разработчик, но я видел инженерный вопрос, в котором ожидаемый ответ был неправильным, и объяснил, почему. И я видел вопрос о соответствии, где ожидаемый ответ был незаконным в течение нескольких лет после изменения законодательства.
"Некоторые компании" - Серьезно? Это больше похоже на «90% компаний с отделом кадров».
@TomTom, возможно, для разработчиков? Я бы не знал. Но это ненормально для машиностроения и многих других профессиональных отраслей.
@TomTom Я считаю, что люди, которые утверждают, что 90% X не полностью понимают предмет
@TomTom Я думаю, тебе просто не повезло или это проблема с программным обеспечением. Возможно, даже в зависимости от локали
Да, может быть программное думать. Типа весь вопрос ОБ ЭТОМ. Или вы думаете, что они проводят эти тесты кодирования с продавцами в розничной торговле? И это не зависит от региона — это наблюдается во многих странах, всегда в более крупных и авторитетных компаниях, где ИТ — это «побочная история» (т. е. их бизнес не заключается в создании программного обеспечения).
@TomTom, тогда это не 90% компаний, вы имеете в виду 90% компаний определенного типа с определенным взглядом на ИТ.
@TomTom В моем регионе 100% компаний не знают, что такое LeetCode, и никто не сочтет его полезным в качестве показателя. Я знаю только потому, что я нажал на ссылку.
@TomTom да, они нанимают разработчиков и заставляют других разработчиков проводить техническую оценку. Они также нанимают инженеров, и я часто занимаюсь их технической оценкой. Меня наняли специально для интервью. Я делаю это даже для компаний, которые находятся в прямой конкуренции друг с другом.
Похоже, это просто культурная вещь. У меня было ровно 0% опрошенных мной компаний, которые использовали какой-либо из этих тестов. Это большой мир, и вы, вероятно, брали интервью только в небольшой его части.
Крупные компании-разработчики программного обеспечения, такие как Amazon, во время интервью задают вопросы в стиле leetcode. Интервьюеры сами являются инженерами или инженерами-руководителями. Я сомневаюсь, что в этих компаниях не хватает инженеров, контролирующих процесс найма.

Я не совсем понимаю, как и почему это работает именно так?

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

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

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

Обратите внимание: я не утверждаю, что вопросы типа LeetCode лучше всего оценивают разработчика или что компания, которая их использует, думает, что они тоже. Я хочу сказать, что не имеет ни малейшего значения, если эти вопросы не имеют никакого отношения к работе. Неважно, что вы никогда не перевернете строку или не найдете все простые числа в списке; важно только то, что компания думает, что ее процесс работает: она находит квалифицированных кандидатов настолько эффективно, насколько это возможно.

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

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

Потому что HR и рекрутеры довольно часто полностью оторваны от реальности (т.е. заблуждаются в своих достоинствах) и ничего не знают об ИТ. Они ищут НЕКОТОРЫЕ показатели, чтобы измерить, насколько хороши люди, не беспокоя ИТ-отдел пробным рабочим днем ​​или чем-то в этом роде.

А это значит, что им нужны измеримые тесты. А затем вы добавляете их и, возможно, какой-то менеджер настолько глуп (да, это дружеская версия), что он не понимает, что КАЖДЫЙ ИТ-специалист, которого я когда-либо встречал, понимает, что эти тесты ничего не значат - что они сразу используют совершенно неточный тест.

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

Становится еще лучше, когда этих некомпетентных наемников больше не увольняют, потому что «нам так сложно найти ЛЮБОГО из нашего отдела кадров, нам лучше работать с тем, что у нас есть». Тогда это означает, что принцип Питера работает в полную силу, ИТ-группа становится патокой некомпетентных людей (по мере того, как компетентные уходят), и все потому, что HR прекрасно справляется с абсолютно неработающими тестами.

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

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

Это не означает, что все интервьюеры обучены делать это таким образом; некоторые действительно просто болтаются.

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

Найм — это трудоемкий и дорогостоящий процесс. Многие компании перекладывают это на рекрутеров и/или онлайн-техтесты.

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

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

Эти вопросы могут быть очень конкретными, и типичный инженер-программист не стал бы задавать их даже через 15 или 20 лет.

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

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

(Скорее, те, которые ориентированы на веб-разработку, часто плохо написаны с упором на нерелевантные вопросы CS)

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

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

«Эти вопросы о стиле на 100% относятся к программной инженерии» — эти вопросы nieche. Я занимаюсь программным обеспечением в течение 30 лет, бэкэнд-системами и специалистом по БД. Это то, что программирует большинство компаний VAST — системы, которые берут данные из базы данных и обрабатывают их в пользовательском интерфейсе или процессах. А потом вас засыпают низкоуровневыми вопросами и просят запрограммировать SORT? Черт возьми, я не сортирую в коде — я говорю базе данных сортировать данные. Да, я могу поискать, но это низкоуровневый код, который почти никогда не пишется в реальном мире, а если и в ОЧЕНЬ специфических специальных контекстах.

Если у вас много кандидатов, то тратить время на каждого из них становится очень дорого. Так что все, что отфильтровывает 500 кандидатов до 10, хорошо для компании. Это также ценно, если вас не могут обвинить в дискриминации, когда вы удалили 492 кандидата. Так что вопрос с «литкодом» в этом отношении весьма хорош.

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

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

Такая схема повторяется в истории. 1000 лет или 2000 лет назад, если вы можете декламировать и запоминать какой-нибудь древний сценарий или текст, вы становитесь официальным лицом династии и в некотором роде управляете другими людьми. Людьми, которые не удосужились выучить 200 000 слов письменности, вместо этого будут править люди, готовые подчиняться Династии. Это разумно? Возможно, нет.

Однако, если это неразумно, сделаете ли вы это? Будете ли вы достаточно послушны, чтобы делать то, что неразумно повиноваться нам? Если вы подчинитесь нам, мы заставим вас править другими людьми. В противном случае нет. Ключевым здесь является «подчинение».

То же самое с образованием в Гонконге или, возможно, в Великобритании несколько лет назад. (насчет современности не знаю). Физика или продвинутая математика, которым они вас учили, были не для того, чтобы вы их понимали. Вам говорят, как что-то решить, запомнить какие-то уравнения, например, длину струны и вес свинцового шара, а теперь переместить его на 45 градусов, и какова частота его колебаний? Если вы запомните формулу на экзамене и дадите ответ, вы получите 10/10 баллов. В противном случае вы получите 0/10 очков. Те, кто может набрать 95/100 баллов, поступают в университет. (Только около 2% населения Гонконга могли поступить в университет в то время, потому что в Гонконге в то время было только два университета на население в 6 миллионов человек). А когда вы поступите в университет, вы станете руководителем или инженером в компании и будете получать 8000 гонконгских долларов в месяц. В противном случае вы идете с дипломом средней школы, и вы «техник», и получаете, возможно, 3000 гонконгских долларов в месяц. Многие люди не могли позволить себе учиться за границей, так что это не было похоже на «просто пойти в колледж», как в США. (но даже в США посмотрите, что происходит, когда вы хотите использовать Leetcode или когда вы не хотите извергать оптимальные решения).

Итак, запоминание формул — это разумно? Возможно нет. Но достаточно ли вы послушны, чтобы сделать это? В Гонконге особенно были проблемы с колониализмом. А именно: Великобритания хотела управлять Гонконгом (как колонией). Он не мог использовать британцев для прямого управления жителями Гонконга, поскольку людям это не понравилось бы. Таким образом, они платят смехотворно высокую зарплату гонконгцам, скажем, когда они становятся старшими, 15 000 гонконгских долларов каждый месяц, чтобы они подчинялись правительству. А потом, получая такую ​​высокую зарплату, они в свою очередь станут чиновниками и будут управлять народом. Они склонны следовать приказам, потому что не хотят потерять работу и попасть в частный сектор и, возможно, вместо этого зарабатывать всего 11 000 долларов в месяц. Итак, ключевой момент в том, что правительству нужны послушные люди. Послушание – это ключ. Как результат, они дают вам систему образования, которую местные жители называли «фаршированием пекинской утки», и многие люди считали это неразумным, и почти все следовали этой системе. Видишь ли, если ты послушаешься, ты будешь в обществе. Если вы не будете подчиняться, они позаботятся о том, чтобы вы остались на дне.

Я никогда не задавал вопросов по коду, но, вероятно, я задаю подобные вопросы на собеседованиях по программированию. Я сомневаюсь, что запоминание 1500 ответов на самом деле является самым простым способом добиться в этом успеха.
Я не минусовал. Но я не думаю, что разгадывание Литкода означает, что ты послушен начальнику или компании . Люди не могут запомнить решения всех 1500 задач Leetcode. Лучший способ — понять логику каждого решения. У Leetcode есть свои плюсы и минусы. Некоторые проблемы с Leetcode хороши тем, что помогают людям писать эффективный код , в то время как другие проблемы с Leetcode просто причудливые/бесполезные головоломки . Я согласен, что Leetcode — не лучший и не самый точный способ измерить навыки, талант или интеллект программиста. Надеюсь, многие компании улучшат процесс найма.
нет, ты не понял. Именно «готовность» использовать Leetcode показывает ваше послушание. Точно так же, как когда вы не понимаете физику, но готовы запоминать формулы и готовы «вычислить» то, чего на самом деле не понимаете.