LINUX.ORG.RU
решено ФорумTalks

Я облажался на техническом собесе

 


0

1

Народ, всё было отлично. Я всё знал. В хитровыдуманном SQL запросе в родительском, где была фильтрация того, что мне не нужно, я тупо сделал ошибку с OR. На уровне средней математической школы. Позор.
И ещё убеждал, что у меня всё правильно.

PS. БОЛЬШОЕ СПАСИБО за поддержку.
Напишу несколько вариантов решений с анализом по планировщику и пошлю вдогонку.

★★★★★

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

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

Ну, по крайней мере этой задачке я не прошёл. Кмк, зависнуть можно почти на любой задачке «не твоей текущей темы». В данном конкретном случае надо сообразить что отдельная известная константа (у нас 0) - особое значение, которое не нужно сохранять. Вроде ничего сложного, но мне кажется если бы меня попросили написать алгоритм о(н), я бы начал что то городить, хотя обещать не могу.

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

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

зависнуть можно почти на любой задачке «не твоей текущей темы»

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

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

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

Поплакаться же.

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

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

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

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

Пожалуйста, не давай эту задачу на час.

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

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

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

Расслабься, это яндексоиды.

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

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

Я вот тоже не программист и не пишу алгоритмы. Я сканворды гадаю.

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

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

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

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

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

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

  • Знание предметной области или страсть погрузиться в нее.
  • Умение в системный дизайн и архитектуру.
  • Умение писать простой и понятный для человека код, в меру эффективный для машины. *
  • Технический кругозор и/или глубина знаний в теме, в которой кандидат считает себя профи.
  • Понятие о современных воркфлоу: гит, жира, канбан и пр.
  • Психологическое попадание в команду.
  • Знание какого-то конкретного ЯП или фреймворка.

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

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

Еще есть мнение, что умение придумать алгоритм отражает, насколько человек «умный». Отсюда эти задачки в Яндекс и кому он подобен. В целом я склонен согласиться с этим. Однако этот критерий девальвировался, потому что теперь существуют целая индустрии подготовки людей к найму в «Гугл», не говоря уже о книгах на тему Cracking The Coding Interview и платформ по типу leetcode. То есть тут уже давно дело не в уме, а усердии.

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

Умение писать простой и понятный для человека код, в меру эффективный для машины.

Знание какого-то конкретного ЯП или фреймворка.

Проверяется на той самой секции с написанием кода.

Умение в системный дизайн и архитектуру.

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

Понятие о современных воркфлоу: гит, жира, канбан и пр.

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

Психологическое попадание в команду.

Это что за зверь? Надеюсь не тестирование по новомодным лженаучным методикам aka соционика?

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

Я с вами по большей части согласен. Однако всё же должен быть какой-то минимальный порог. Если синьор С++ программист не может решить элементарную задачку, это скорее всего его не очень хорошо характеризует как профессионала.

А дальше идёт технический аспект проведения собеседования. Проверить способность двигать байтики проще и быстрее, чем «Знание предметной области, Умение в системный дизайн и архитектуру, etc». Соответственно, чтобы не тратить слишком много времени на чужую болтовню, имеет смысл поставить какой-то барьер на входе, для отсева заведомо негодных кандидатов.

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

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

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

К сожалению, нет. Периодически наблюдаю непробиваемых идиотов, которые работают над фичей месяц, делают единственный коммит “implemented feature-number” и двигающих тикет в любое отличное от “in-progress” положение. И, как понимаешь, давление через менеджера на таких не работает, потому что сам менеджер тоже мудак, попускающий бардак как в проекте, так и в коде. Я пытаюсь от них избавиться, но в Германии это сложно. К счастью, таких меньшинство.

Это что за зверь? Надеюсь не тестирование по новомодным лженаучным методикам aka соционика?

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

Если что, я описал реальные кейзы, произошедшие за последний месяц.

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

Проверяется на той самой секции с написанием кода.

Да, но ты не даёшь им шанса раскрыться, если они обсираются на одном алгоритме.

(Энивей, как я писал выше, я думаю это ОК для компании вроде Яндекса).

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

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

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

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

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

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

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

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

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

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

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

Самое веселое — это если 90% таких курьеров, нанятых на роль программистов, не увольняют, а к ним прислушиваются, начинают ради них вводить всякие XP, CMM, ISO 9000, «что-то вы плохо поработали. Кто виноват? Вася, который сидит в своей коморке, написал половину нашей системы, да так, что в ней же ж никто разобраться не может. Это ни в какие ворота не лезет».

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

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

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

По этой же причине (недополучение доходов от нехватки людей) стали работать над улучшение имиджа. Типа, Амазон больше не потогонка, ФБ уважает частную жизнь, МС не режет конкурентов и прочий понос в уши простаков.

mv ★★★★★
()

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

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

Зачем его так решать? Я заиспользовал qsort и получил «Your runtime beats 94.37 % of c submissions.». А вообще в паре задач я писал руками аналог хэшмапы :) Но почти везде можно обойтись обычным массивом, так как есть ограничение на диапазон.

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

Извините, вы нам не подходите (ц) :)

Решение за O(n) / O(1) существует. Не вижу смысла решать задачи на литкоде неоптимально, лишь бы прошло.

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

Извините, вы нам не подходите (ц) :)

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

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

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

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

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

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

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

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

Я щас разорву тебе шаблон, но подавляющее число алгоритмических задачек решается именно шаблонно. Ты читаешь описание и пытаешься найти наиболее подходящий шаблон ее решения, реже комбинируешь пару шаблонов. Этих шаблонов по пальцам пересчитать. Ты бы хоть Cracking the Coding Interview почитал, позорище.

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

Тебя бы и не спросили.

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

Я щас разорву тебе шаблон, но подавляющее число алгоритмических задачек решается именно шаблонно. Ты читаешь описание и пытаешься найти наиболее подходящий шаблон ее решения, реже комбинируешь пару шаблонов. Этих шаблонов по пальцам пересчитать. Ты бы хоть Cracking the Coding Interview почитал, позорище

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

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

Решение за O(n) / O(1) существует. Не вижу смысла решать задачи на литкоде неоптимально, лишь бы прошло

Мне не нравится оптимальное решение тем, что достаточно кинуть в массив число за пределами 0..N-1 и весь алгоритм окажется в дерьме.

Вообще вся проблема сортировки и балансировки деревьев заключается в том, что ты изначально не знаешь диапазона значений. Классический Quicksort выбирает опорное значение наугад, получая потенциально O(N^2) в худшем случае, но если ты будешь брать опорное значение проходом по массиву, то внезапно получишь то же O(N^2). У хэш-таблиц та же проблема с недетерминированностью сложности на произвольных значениях.

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

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

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

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

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

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

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

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

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

Да вроде прошёл.
Там ещё много питона и понимание бизнес-процессов и коммерции нужно.

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

Вообще вся проблема сортировки и балансировки деревьев

В моей специализации нужно просто использовать батарейки питона.

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

Этих шаблонов по пальцам пересчитать.

Допустим и что дальше? Кодерки не смогли осилить шаблоны, которых по пальцам пересчитать, ой вей.

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

Да вроде прошёл.

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

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

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

Тогда у меня другой вопрос: если вы вообще не «нагружаете» собеседуемого задачами по бинарным деревьям и хэш-таблицам прикладного уровня.

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

Плохими инженерами их это не делает. Хорошими — тоже не делает. Литкод имеет мало общего с реальными прикладными задачами. Гугл собрал литкодовцев до того, как литкод вообще возник, результатом чего стали тонны технически красивых и совершенно нежизнеспособных (порой даже на техническом уровне) проектов гугла. Они даже свой ЯП не могут создать, потому что здесь нужны способности к общеаналитике и психологии, а таких спецов на весь огромный гугл либо совсем нет, либо почти нет, либо они есть, но все сидят на ничего не значащих должностях, потому что на всех минимально шефствующих должностях сидят литкодовцы.

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

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

В моей специализации нужно просто использовать батарейки питона

Вот и я об этом — большинство прикладных задач эффективнее всего решать общими приемами, а литкод фокусирует внимание на очень частном случае. Нахождение повторов за O(N), например, менее эффективно на отсортированных или почти отсортированных наборах данных по сравнению с quicksort, и при этом совершенно не способно адаптировать к новым условиям, в отличие от quicksort, который прожует даже строки.

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

Тогда у меня другой вопрос: если вы вообще не «нагружаете» собеседуемого задачами по бинарным деревьям и хэш-таблицам прикладного уровня

Блин, не до писал вопрос: то что вы вообще спрашиваете? Компьютер смог включить — вы нам подходите?

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

непробиваемых идиотов, которые работают над фичей месяц, делают единственный коммит “implemented feature-number” и двигающих тикет в любое отличное от “in-progress” положение

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

no-such-file ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.