З технічними інтерв’ю щось не так. Чи ні?

medium.com/...​n-bb8f3a48d324#.l9qd4osq1

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

З одного боку так, олімпіадні задачі на співбесідах всіх уже дістали. Народ витрачає більше часу на заучування великих О замість того, щоб почитати про технологічні чи менеджерські фішки.

Процес найму перетворився у таке собі чорне SEO, де одна сторона намагається підібрати питання, котрі покажуть їм «справжній рівень програміста», друга сторона безжально зазубрює відповіді на ці питання, а потім намагається зобразити мисленнєвий процес (в ідеалі можна зазубрити ще кілька неправильних, але очевидних варіантів розв’язку задачі, для повного реалізму).

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

Та є одна деталь.

Автор опусу — фронтендер. І алгоритм, який його попросили написати на дошці — пошук в ширину. Враховуючи тривіальність задачі, з іншого боку підтягнулися опоненти, які вказують на те, що без настільки базових знань робити в індустрії нічого.

Статтю продовжують шерити з обох боків. Одні кажуть так, ці хешмапи з хештейблами вже дістали, інші регочуть — подивіться на цих фронтендерів, хто їх взагалі програмістами назвав?

Так от, що я хотів спитати. На якому боці ви? І чому?

👍ПодобаєтьсяСподобалось0
До обраногоВ обраному0
LinkedIn

Найкращі коментарі пропустити

— surprise-surprise, компаніям, типу гугла, не потрібні джейквері-макаки («я написав подуль на реакті і запилив його на гітхаб, ололо адин-адин1!, давайте 200к і ніяких інтерв’ю!») тому, що вони не хайрять на проект, а в компанію. їм потірбні люди, які напишуть наступний реакт, технології змінюються, а основні підходи і вся база залишається, тому її і питають на інтрев’ю і пробують зрозуміти, чи людина в основному толкова, бо решту вона вивчить при потребі. кожна макака може вивчити реакт за тиждень, тому особливого сенсу концентруватись на ньому при інтерв’ю ніхто і не бачив
— більшість задач, які він перерахував, це варіації фізбазу для тих, хто зміг таки осилити сам фізбаз. якщо ти не можеш реверснути стрічку, перевірити чи стрічка паліндром чи конвертнути число в стрічку — то проси «шаг» повернути гроші назад
— «в реальному житті ніхто стрічки не реверсить». дякую, кеп, з цим ніхто і не сперечається, бо задачі питають, щоб оцінити логічне мислення, те, як кандидат розбиває проблеми на менші і як борется зі складністю. те, як він в кінці-кінців, пише код (!).
— ніхто не хоче наймати «good enough» програмістів, бо такі потім наймають ще гірших, а ті ще гірших, так і падає якість.

реалії такі, що наймати людей — дуже складно, наймати толкових програмістів — ще складніше, і ніхто не знає ідеального інтерв’ю. я згоден з тим, що з процесом є невеликі проблеми (в реалізації процесу, але не в ідеї), інколи задач на кодинг забагато (ок, часто їх забагато), але загалом обов’язково дати кандидату хоч 1 елементарну задачку, щоб побачити як він розбиває проблеми на менші і чи вміє думати і писати код (програміста ж беруть), обов’язково перевірити, що саме він робив на тих крутих проектах, які в нього в резюме (а то виявиться, що він там каву носив) і обов’язково поговорити з ним про дизайн систем, щоб він міг показати свій досвід на повну і свої знання в індустрії / CS

Я сюда деградировать пришел, а не алгоритмы эти ваши решать.

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

Лично мне не очень понятна суть проблемы. Есть две стороны, которые рассматривают возможность сотрудничества друг с другом (компания и программист). Эти стороны собирают друг о друге какую-то информацию, необходимую им для принятия решения о сотрудничестве. Критерии для принятия успешного решения, понятное дело, у каждого свои. Когда вы приходите выбирать автомобиль, и имеете в голове список пунктов, которые важны именно для вас и на которые вы смотрите в машинах, вам же продавец не говорит «чувак, да мощность двигателя — это не важно, важно, чтоб салон был кожанный»? Не говорит. У вас есть право решать самому, что для вас важно, что спросить у продавца и куда посмотреть в машине, чтоб решить покупать ее или нет.
Точно такая же ситуация и на собеседовании: вы смотрите и оцениваете компанию так, как считаете это нужным, компания смотрит на вас и оценивает насколько вы ей подходите, и делает это так, как считает нужным. Кому-то нужно знание методов фреймворка наизусть, кому-то нужно знание алгоритмов и т.п. Будете ли вы это потом использовать данные темы в работе или нет — не имеет никакого значения, если компании ответы на данные вопросы помагают решить, брать программиста на работу нет нет, то значит так тому и быть.

Автор, конечно, идеалистичен. И проявляется это в том, что он не хочет выучить наизусть несколько ходовых задач.

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

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

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

Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Коментар порушує правила спільноти і видалений модераторами.

если подытожить

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

а ее — никто не разработал еще
квалификация такая — не существует
учить ей — некому

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

Более странными кажутся вопросы:
Назвать методы класса object. Или что вернет метод класса Х из стандартного пакета У. Серьезно? Вот думаю зачем разработчикам это помнить

Назвать методы класса object.

Ну в случае Java вроде ж крайне важно знать про equals()?

это вполне, кстати, может быть тестом на самостоятельность и гибкость мышления

в смысле, правильный ответ и подразумевает, что вы скажете «я их все на память не помню, и не считаю нужным, и вот почему: [здесь объяснение]; а если мне понадобится — я мгновенно найду все в документации — показать как я это делаю?»

большинство же так не ответит, а натужится таки вспоминать — бо «сказалы ж»

розсилка із робота уа
blog.rabota.ua/...ter&utm_campaign=news_all
Беги, Форрест, беги: 6 тревожных сигналов, когда вам стоит отказать работодателю

Ну так тут с техническим интервью «все так»

Сразу угадывается Developex.

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

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

Потому как взять «выгоревшего» себе же дороже, потом с взявшего спрос.

P.S. Почти все тупо опускают лапки.
P.P.S. Не задачи на «летели два ежика, зеленый и килограммовый. Сколько времени займет их путешествие, если бы японцы выговаривали букву Эл?», а вполне себе кусок кода из проекта, не совсем корректно работающий.

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

З боку кандидата більш нормальним буде сказати: «буду гуглити незнайомий алгоритм», — а не дістати смартфон і почати гуглити його.

Лично мне не очень понятна суть проблемы. Есть две стороны, которые рассматривают возможность сотрудничества друг с другом (компания и программист). Эти стороны собирают друг о друге какую-то информацию, необходимую им для принятия решения о сотрудничестве. Критерии для принятия успешного решения, понятное дело, у каждого свои. Когда вы приходите выбирать автомобиль, и имеете в голове список пунктов, которые важны именно для вас и на которые вы смотрите в машинах, вам же продавец не говорит «чувак, да мощность двигателя — это не важно, важно, чтоб салон был кожанный»? Не говорит. У вас есть право решать самому, что для вас важно, что спросить у продавца и куда посмотреть в машине, чтоб решить покупать ее или нет.
Точно такая же ситуация и на собеседовании: вы смотрите и оцениваете компанию так, как считаете это нужным, компания смотрит на вас и оценивает насколько вы ей подходите, и делает это так, как считает нужным. Кому-то нужно знание методов фреймворка наизусть, кому-то нужно знание алгоритмов и т.п. Будете ли вы это потом использовать данные темы в работе или нет — не имеет никакого значения, если компании ответы на данные вопросы помагают решить, брать программиста на работу нет нет, то значит так тому и быть.

народ боится что не сможет в очередной раз устроится на +500, без алгоритмов, страх более чем понятен

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

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

Т.е. человек не хочет работать в той компании потому, что она ему нравится, а хочет ее изменить под себя? Мне не очень понятна мотивация. Если я хочу в Гугл, то зачем мне менять их стиль собеседования? Поменяя стиль, поменяется же и компания и не факт что в новом варианте я захочу работать.

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

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

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

кто и когда задает правила в отрасли
правільний отвєт:

1) програмізди зажралісь
2) кому не нравіцца — може уєзджать, ми нє дєржим

В ваших же аналогиях, покупатель приходит в салон за городским седаном и начинает спрашивать: «А как эта машина ведет себя в условиях пустыни, пылевых бурь, заполярья и хорошо ли переносит перепады температуры −30..+50 в течении суток?».
Консультант переспрашивает: «почему вас это интересует, вы же будете ездить с работы/на работу 10 км в день по асфальту?»
На что покупатель отвечает — «так принято в индустрии».

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

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

Верно, поэтому Киев в итоге наводнён сараями на колёсах (паркетники или ещё бОльшие гробы), которые покупают чтобы ездить дом-работа-фитнес-ТЦ, но просто легковушку нельзя, потому как «непонтово». В итоге — жрут как не в себя, паркуются чёрти-где (и мест нет), зато да, Лендкрузер, «перед пацанами не стыдно».

Вам не кажется, что этот тренд пора менять?

P.S. При этом реальные коммерческие ежедневные задачи типа доставки пиццы прекрасно решаются даже смартами.

P.P.S. Всякие параллели со сферой разработки ПО, конечно же, не случайны.

Я так понимаю что вы намекаете, что киевские Лидеры Рынка изнуряют кандидатов разворотами красно-черных деревьев?
P.S. Большинство паркетников это версии обычных седанов с увеличенным клиренсом. В реалиях украинского дорожного строительства вполне разумное решение.

Я так понимаю что вы намекаете, что киевские Лидеры Рынка изнуряют кандидатов разворотами красно-черных деревьев?

Конкретно статья была не про киевских, но да, требовать такое от фронтендера или от, не знаю, программиста под Android — странно. ИМХО.

В реалиях украинского дорожного строительства вполне разумное решение.

Удивительно, как мне удаётся ездить на гольфе по всему Киеву и между городами (недавно катался на волынь) в условиях всё того же дорожного строительства.

Конкретно человек шел на Гугл в стафф. Что предполагает долгосрочные отношения и разноообразные задачи.
Чисто поверстать, там стоит длинная очередь контракторов.
-
Не знаю, где вы ездили, но я в рамках поездок на дачу регулярно прикладываюсь днищем об «горбочки». Не смертельно конечно, но при же первой возможности пересяду на какой-нибудь РАВ4.

требовать такое от фронтендера или от, не знаю, программиста под Android
Требовать такое от полупрофессионала, который кое-как кое-где осилил фронтенд и для которого шаг влево-шаг вправо равносильно запредельным интеллектуальным усилиям и почти геройскому самоубийству - да, странно. Требовать такое от человека, который претендует на и считает себя девелопером-профессионалом высокого класса ( а не просто «закодить пару строк в день под Android») — в общем-то нормально.

Студентов-отличников первых курсов всегда видно по постам. Обычно они выглядят именно так.

Як виглядають пости студентів-відмінників перших курсів, теми дискусії не стосується.

Ну они почему-то считают что дискуссия их очень касается

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

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

Я поясню як воно насправді: одні ідіоти які в повному об’ємі не осилили шкільну і ВУЗовську програму намагаються зробити так щоб їх взяли на роботу інші ідіоти. Перші такі наївні що думають що чогось варті а інші такі зарозумілі і так намагаються догодити своєму рабовласникові що хочуть людину яка ідеально підходить під певні вимоги. Якщо серйозно то найбільше мене турбує кількість часу і зусиль які затрачуються на такі церемонії. І постає питання про вартісність дипломів, сертифікатів і всього такого. В них же ж вказано що чувак такий—то стільки—то годин затратив на предмет такий—то, здобув професію програміста і печать. Які питання?

Там є посилання на статтю Hiring is Broken... And It Isn’t Worth Fixing в якій наводиться коментар якогось Еріка:

I don’t have time to read your github projects, or your blog, or your existing code, or your meticulous attention detail in your commit messages. I get a resume in, I look at it for 10 minutes, if it’s sane I set up a phone screen. ONLY to prove that you can pass the most basic coding test. You need[sic]

Once we meet in person, you need to show me that you can code and articulate a design to a problem. The format sucks, sure. But you need to be prepared. I’m not going to spend 2 hours reading your blog for every candidate that I interview. I don’t have time for that.

Так що отак от. A Players Don’t Hire A Players — They Partner with A Players

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

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

ты вообще представляешь сколько приходит резюме в топ компании? Объем работы представляешь?

і чо?
за це їм гроші платять,
так хай не постять об"яви з вакансіями, а наймають через знайомих, ділов то

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

Ну раз уже тратить минимум час на технический скрининг и 4-7 часов на онсайт, то можно и гитхаб кандидата посмотреть.

глянуть гитхаб да, но тут же речь о вдумчивом вчитывании в блог и тп

Но в теннис руме постоянно кто-то из вечно занятых

В топ компаниях похоже сначала робот фильтрует.

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

Обходится не кандидат, а работник. А если заявок много, то вероятность для конкретного кандидата стать работником составляет доли процента.

Т.е. эти десять минут уходят не на изучение «автомобиля», а на изучение «объявления о продаже автомобиля».

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

Нет, не говорю, и неясно, с чего вы это взяли.

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

Назвіть, будь ласка, клас задач, де необхідно часто реверсити бінарне дерево

:D Сферичне програмування у вакуумі не рахується

Собеседование как часть профессии.

Назвіть, будь ласка, клас задач, де необхідно часто реверсити бінарне дерево

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

И часто вы в своей работе пишете архиватор?

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

Повезло :) Кодеки — то на любителя ...

якщо я в ту сторону не пливу, то чому повезло?

Бо треба мати відповідний характер, терпіння та наполегливість щоб продовжувати заглиблюватись та далі боротися за % компрессії. Робота для тих хто любить співставляти графіки, математичні показники, чи просто бути фанатом ... По психотипу для мене персонально винахідницька робота більш цікава ніж аналітична.

Математика и подобные сложные алгоритмы нужны 2-5% программистов.
В 95-98% случаев задача программиста сводится сделать рабочий продукт для кастомера быстро и более-менее качественно на основе существующего и хорошо себя зарекомендовавшего апи.

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

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

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

Інколи це виграшна стратегія...

ну я в жизни не видел чтобы чтото путнего из этого вышло.

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

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

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

Мне однажды проект захотелось переписать полностью и сразу. Потому что там:
1) Все файлы были тупо в одном пакете.
2) Во всех моделях все поля были публичные.
3) Весь джсон парсился вручную (а там его было ну очень много, т.к. все данные при каждой сессии подгружались с сервера и ничего не кешировалось).
4) Все константы-ключи для парсинга джсона были захардкожены.
5) Все рест-запросы (а их десятка 2-3) сделаны вручную с кучей клонов.
Достаточно?
В итоге, ограничился рассовыванием всех классов в созданную мной структуру пакетов, инкапсуляцией всех полей с доступом через акксесоры, вынесением констант в отдельный класс. С проектом стало возможно работать без особых рвотных позывов.
И вот недавно стало известно, что этот проект возвращается и надо будет переписать всю логику взаимодействия с бэкендом, т.к. меняется вся архитектура этого бэкенда. Йес, звёздный час и замечательный повод снести на корню оставшееся дерьмо.

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

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

В кожного є право на «обісратися» ©

як правило таке можуть думати 23 річні сенйори,
дядьки постарше розуміють що в результаті вийде в 90% ще гірше чим було

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

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

но да, когда те кто написали первую версию, переписывают шанс на успех есть

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

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

мне пришлось (это была идея архитектора) как-то переписывать проект на котором полгода работал всего, переписал условно быстро, суммарно месяца за 3, вначале думал что переписал за 1,5 месяца, потом еще 1,5 месяца искали похереную функциональность и возвращали в новую версию.

никому не желаю такого удовольствия

если в проекте есть достаточное количество UML схем и он упорядочен, то его можно переписывать сразу!

Ок, тогда вам — нужно. Но ведь исходно речь о найме на фронтенд?

Но ведь исходно речь о найме на фронтенд?
та блин, интервьювер изголяется ! )) В библии например сказано — по плодам их узнаете их, а вовсе не по словам за 15 мин ... Недавно писал что узнать уровень разработчика можно где то после года работы с ним, и то частично. Как можно выяснять за 1-2-3 собеседований — загадка ...

Не обижайте бухгалтеров. Им тоже нужно хорошее логическое мышление.
Тут скорее надо говорить о «вильна каса».

Любые задачи связанные с синтаксическим анализом.

Это ж надо сначала вспомнить, что из себя представляет бинарное дерево)

что из себя представляет бинарное дерево
наприклад, папка із підпапками та файлами

узел дерева может иметь 3 ветки и более :)

так тут бінарне дерево, від слова «бі», тобто 2

Так :) форма запису дерева — бінарна, а само дерево може мати довільну форму та кількість гілок у вузлах. 2 біта на node або більше ... Якщо классичний запис — то тільки вправо або ліво, 1 біт

ШТА?
розуміти як ТАК чи як НІ ? :D

en.wikipedia.org/wiki/Binary_tree
In computer science, a binary tree is a tree data structure in which each node has at most two children

Классическое бинарное дерево. 0,1 — вправо, влево. Если по определению. Я имел ввиду что дерево не бинарное, а форма записи. Однако и к бинарному можно прикручивать к веткам произвольное количество объектов ( вглубь )

узел дерева может иметь 3 ветки и более :)
Бинарного?
Так :) ...
...Я имел ввиду что дерево не бинарное, а форма записи. ...
Ясно понятно...
так да или нет?:)
Блин, программеры )) ну включите абстрактное мышление чуть чуть ! В чем проблема запихнуть более 1 бита в узел, на классическом бинарном дереве ( где только 0 или 1 ) ??? рыдаю )))

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

Да, хорошо, детей — 2 ( 0 либо 1 ) договорились! Ну так в конце концов ДА или НЕТ ? :)) Ок, тема исчерпала себя, теперь прийдется приступить к работе ...

Не делайте из бинарного дерева обычное дерево.

откуда эти «0 и 1» берутся? у каждого узла не больше двух дочерних.
если больше — это не бинарное. просто по определению.

Дерево бинарное, но его можно читать и работать с ним как с объемным ... т.е. файловую систему реализовать и прочие фишки ..

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

нет.
c2.staticflickr.com/...3454709622_e2b43b90b8.jpg

нет.

1. Задача решена ? да
2. Дерево бинарное ? да
---
Profit !?

откуда эти «0 и 1» берутся? у каждого узла не больше двух дочерних.
промежуточные узлы ( через один ) с дополнительными нодами/битами.

это В-tree, но не бинарное

а може і не бути,
от коли кажеш так чи ні, тре прикидати всі можливі випадки (чорт криється в деталях),
так що при певних умовах папка із підпапками та файлами може бути бінарним деревом

можна реалізувати, не бачу проблем

тре прикидати всі можливі випадки (чорт криється в деталях),
так що при певних умовах папка із підпапками та файлами може бути бінарним деревом

Додаткові rules в реалізації алгоритма, і файлова система реалізується на классичному канонічному бінарному дереві ( добро, нехай лише 0,1 у вузлах ). Але добре було щоб спочатку спеціалісти Global Logic дали відповідт можливо чи ні )) Бо т***лі тестові завдання на паперці вони мастера давати ))

Ну и призовой фонд должен быть желательно больше чем 5К )))

а не хоч 3..4 різного плану інтерв"ю протягом 6 годин і офер із з/пл нижче ринкової?

так отож, тому краще подалі від галер ))

ще згадав приклад із життя, де тре було обійти дерево, тільки «тринарне», тобто зробити заливку на площини опуклої фігури.
підсумовую, ось за все життя де працював із деревами:
1. у файловій системі
2. при заливці
3. ще можна обходити ноди в мережі і підмережах, але цим я не займався
При чому підмножина бінарних дерев, ніяк не напрошується в реальному світі на очі, якась така абстракція із світу математиків із особливими властивостями, яких задротам було цікаво подосліджувати.

Пусть абстракция, но с важными применениями

якими, прошу приклади із реального життя/проекту

например подмножество BST — это сортировка, на которую опирается дофига всего вообще

і скільки разів ти писав сортування?
я просив реальні приклади де тре писати алгоритм.

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

так в ТС просили писати від руки,

Для продакшена сортировки не писал, ибо готовые есть, но всяческие вещи, основанные на деревьях, применял и много, и понимание стоимости применения той или иной структуры периодически помогает.
а ти тут що “чукча чітатєль”

Ну просили. Не написал, ладно. Многие и на пальцах объяснить не смогут, как, что и нафига.

Многие и на пальцах объяснить не смогут, как, что и нафига.

Да и вообще похоже сеньоры лидеров рынка не понимают как запилить файловую систему в бинарном дереве O_o IT-хунта лол ))

Разве был вопрос как?

зовсім-зовсім ні?

думаю связано с вопросом «а как ?» ...

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

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

Не все молятся на гугль

При чем тут молятся? Если не хочешь работать в гугле, зачем тогда тратить свое время и время собеседующих?

Человек может хотеть работать вообще, но не обязательно в духе «работать в нашей компании — большая честь».

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

Дело не в том, что кто-то молится на Гугл, а в том, что независимо от компании, если ты собираешься там работать, то естественно проявить элементарный интерес к ней и иметь хоть некоторое представление, как туда попасть и чего от тебя будут ждать для прохождения интервью. В случае с Гуглом, получить такое представление не проблема: Quora, Glassdoor, etc. Даже книги пишут о том, как пройти интервью там. Но можно, конечно, жаловаться на рекрутеров, несправедливость жизни и неправильный мир.

Станислав выше объяснил

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

Збити ціну — нормальна практика

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

ЗЫ: справедливости ради на этапе скрининга и со стороны соискателей идёт сплошная масса отборного треша.

ЗЫ: справедливости ради всё вышесказанное не исключает «особенностей» уже на уровне технических собеседований но тут уже чисто человеческий фактор которые на этом уровне обратно таки также примерно одинаковые «у нас» и «оттуда» к сожалению.

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

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

Естественно неинтересно. «Ты нам нужен, но мы обмакнем тебя в говно» — кому это может быть интересно? Только гуглодрочерам, которые всегда мечтали

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

Я даже не могу представить, насколько должно быть распушхее ЧСВ
Раз в 10 меньше, чем у вас :)

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

ну якщо ти собі сидиш, і тут бац, пісьмо счастя від рекрутера,
то ти думаєш, що не я їх шукав і знайшов їх, а вони мене,
отже я їм більше потрібен,
а на інтерв"ю, внєзапно

Ты нам нужен, но мы обмакнем тебя в говно"

«Повелся, лошара»)

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

судя по тому, як легко зроблено перехід від загального до часного, роблю висновок, що байда, то є пані

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

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

«спрашивать нужно» (!) и то что есть в реальной жизни — это совсем разные вещи :)

Говорить об архитектуре. Очевидно же.

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

А що ви розумієте під сильною базою?

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

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

Та какие алгоритмы, вы шо !?! Их знать не обязательно, только так — www.gitbook.com/...om-stack-overflow/details

Представляю себе строчку в резюме: Full StackOverflow developer.

SO и интернет в целом — хороший инструмент, который каждому разработчику неплохо уметь применять.
Мне нужно было вчера нарисовать треугольники с закругленными уголками для таких индикаторов. Желательно это было сделать средствами css, ради гибкости и повторного использования кода. С помощью SO я справился за полчаса, взяв готовое решение и подогнав под нужды задачи. Если бы я сказал себе «я крутой программист и могу это написать сам» — я бы потратил намного больше времени и нервов чтобы выдать аналогичный результат.
Я очень благодарен тем крутым людям, которые придумывают подобные css-штуки и делятся ими, помогая другим экономить своё время. В свою очередь я стараюсь (при наличии времени) отвечать на SO по темам, которые мне хорошо известны.
Да, из этого можно сделать вывод что я плохой программист (или верстальщик?), не понимаю в CSS и вообще. Пусть будет так. Может кому-то на работе платят за то, чтобы они были крутыми программистами, может лично им очень важно быть крутыми программистами. Мне лично платят за то, чтобы я превращал идею/макет в веб-приложение, и это я делаю хорошо, и это для меня важно.

Да все гуглят, это ж понятно — нехер в коробке стоко инфы держать.Гугл и СО — наше все. Но не сортировку же ! Ее способа штуки три придумать можно за 5 минут....

И особенно сортировку! Всё время, когда мне нужна бала сортировка, я использовал либо ORDER BY ( если данные лежат в базе — то и сортировать их можно при запросе), либо sort, ksort. Про способы сортировки я читал в последний раз на первом курсе в толстой книге по паскалю. И с тех пор ещё ни разу не нужно было.
Кстати, один раз мне понадобилось на js генерировать последовательность цветов, которые дадут в результате градиент скажем от красного (цвет задан) к зеленому (цвет задан). Решение вообще примитивное, если его в двух словах описать. В коде сложнее. Интересно, многие ли фронтендщики дадут ответ не гугля? И если не дадут, делает ли это их плохими фронтендщиками?

И особенно сортировку!
сортировка это — шо надо сравнить 2 херни, и если чего — поменять местами. Это первое что приходит на ум убитому в хлам «менеджеру по клинингу». Да, херовастая сортировка, не рекурсивная, наивная . Ну если чел, претендующий на девелопера, не может додуматся даже до этого — сравнить числа и их менять местами, то он ок и его надо брать на синьера ?

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

А как градиент генерировать? Вот такой как тут c2n.me/3xXtH41

Вы прошли собеседование :)

Можно и HSV, тут зависит, что легче интерполировать — HSV или RGB компоненты. На картинке выше меняется насыщенность, там проще по HSV.

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

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

А если отсортирует масив нормально, где гарантия что не будет говнокодить? Чувак просто может натаскаться к собеседованию, при этом не имея скудный опыт в реальных задачах. Сейчас полно ресурсов по подготовке к собеседованию, все эти алгоритмические задачки уже разжеваны и разложены по полочкам. Даже самые опытные программисты идя куда-то в гугл, поднимают эти книги и начинают вспоминать, чтобы после собеседования благополучно забыть и продолжать использовать collection.Sort(i => i.Key). То есть разница между прошедшим собеседованием и не прошедшим будет лишь в том, что один перед собеседованием просмотрел алгоритмы, а другой забил, продолжая пилить свой pet проект или просто отдыхая.

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

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

Да ну? Попроси у синьйоров в компании qsort на листике бумаги написать, или какую-то сортировку вставкой, удивишься ). Я уже молчу о чем-то более сложном, типа хитрому обхода дерева, под давлением и за 5 минут.

та они нагуглят сразу, даже если им инет вырубить :)))

можна простіше навіть — розв"язати квадратичне рівняння, знайти корені

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

отож, і там ще пара кейсів
корені однакові дійсні
корені різні дійсні
корені відображені на уявній множині дійсних чисел
І таке завдання чим відрізняється від обходження бінарного дерева.?

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

А вот с приведенными примерами про красно-черные деревья и всякие экзотические сортировки аналогия, как раз, прямая — эти вещи на практике используются крайне редко, и выдать решение на доске на собеседовании, не подглядывая в справочник, ИМХО малореально.

От бинарного дерева-таки отличается, потому что все нюансы решения квадратных уравнений без справочника сходу и не вспомнишь, а обход бинарного дерева можно сочинить на ходу.
знаючи що таке площина уявних чисел можна вивести формулу розв"язання квадратичного рівняння на ходу в трьох системах: полярній і декартовій, при чому в трьох формах запису: алгебраїній, геометричній і експоненціальній.
а от всі н"юанси обходу дерев так без довідника і не згадаєш.
А вот с приведенными примерами про красно-черные деревья и всякие экзотические сортировки аналогия, как раз, прямая — эти вещи на практике используются крайне редко, и выдать решение на доске на собеседовании, не подглядывая в справочник, ИМХО малореально.
таки так

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

где гарантия что не будет говнокодить?
Читайте пожалуйста внимательно: я говорю о вероятностях, а не о гарантиях. Никогда нет гарантии, что Васенька сделает порученную ему задачу хорошо или плохо; но его предыдущий опыт дает или не дает достаточные основания полагать, что Васенька справится.
Сейчас полно ресурсов по подготовке к собеседованию...
К моему собеседованию :) ? к Вашему? любого техлида в принципе? Не забывайте, что с той стороны барьера — тоже личность.
разница между прошедшим собеседованием и не прошедшим будет лишь в том, что один перед собеседованием просмотрел алгоритмы, а другой забил,
Вот и прекрасно. Тот кто имеет привычку забивать, отсеян. Чем плохо?
Лучше какие-то реальные задачи обсудить, из своей практики или из его практики
А кто говорит, что этого не надо делать? Надо, но опять-таки пункт два из предыдущего поста: логично и удобно сравнивать кандидатов и делать выбор на одинаковых, стандартных, всем известных задачах.

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


  • Кодинг стайл, именование переменных;
    Подход к декомпозиции;
    Не забыть проверить граничные условия;
    Не забыть перехватить ошибки;
    Не забыть о константности некоторых переменных;
    Понимать пре/пост — ин/декремент;
    (С/С++) понимание работы с указателями и адресной арифметики;
    (С/С++) корректность выделения/освобждения памяти;
  • Все это, плюс умение держать в голове кучу мелких подробностей и говорит о качестве программиста.

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

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

    Потому что квиксорт уже есть и все оценки на реальные работы для заказчика учитывают этот факт (т.е. то, что квиксорт писать не надо).

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

    Для «разделяй и властвуй» достаточно попросить написать механизм поиска в отсортированном массиве, а не квиксорт.

    Это если допускать, что вакансия в принципе требует разработки сложных алгоритмов. Серьёзно, при написании фронт-енда, iOS- или Android- клиента этим будут заморачиваться?

    Бинарным поиском можно проверить, но если конкурс большой, то квиксорт тоже норм.

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

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

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

    И ваши предложения по заданию ?

    Для веба и мобилок все эти стандартные todo lists, календари или что-то подобное — вполне ок. Если более другая сфера — ну вам должно быть виднее. Идея в том чтобы с одной стороны не отнимать много времени, с другой чтобы хоть как-то был похоже на то что придется реально делать. Если есть существующий публичный код — то можно говорить про него, тогда вообще ничего не надо )

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

    Угу, ок. Одним из первых, если не первым, кто начал описывать свою профессию как «программист» был Дейкстра. Вы создали хоть один алгоритм? Хоть алгоритм назван в вашу честь? Вы написали хоть одну статью по CS? Может книги издавали? Лекции? Как вы можете себя ставить в один ряд с Дейкстрой?

    А вот это уже натуральное «А ты добейся». С которым я вас оставлю наедине.

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

    А не —

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

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

    Просто по таким задачкам с готовым эталонным решением очень легко посмотреть на общий подход к работе: Кодинг стайл, именование переменных; Подход к декомпозиции;

    На quicksort’е??!

    Ок, на квиксорте не проверишь работу с памятью :)

    Как предполагается оценивать стиль, имена и декомпозицию вот в такой реализации:

    en.wikipedia.org/...rt#Hoare_partition_scheme

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

    И вот еще так.
    ru.wikibooks.org/...Сортировка/Быстрая#Python
    Боюсь, что мастерам Джанго это необратимо порвет шаблон.

    Это лучше или хуже? Если человек пишет quicksort через list comprehension, что это говорит о его подходе к работе? А если наоборот, обычный процедурный псевдокод?

    Боюсь, что мастерам Джанго это необратимо порвет шаблон.

    Чем порвёт? Декомпозицией, количеством лишних копирований массива или хорошо подобранными названиями переменных?

    А вот это уже отправная точка для дискуссии о профессионализме.
    ЧТИТД

    Даже если дискуссия не свалится в срач, она будет не о пунктах из
    dou.ua/...orums/topic/17317/#918544

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

    Судя по топику, известно далеко не всем :)
    И кстати почему не подходит?
    Любой сортировочный алгоритм просит выдленные функции сравнения и обмена, (qsort еще и разделения) активно использует итераторы и указатели, можно поговорить о константных указателях и указателях на константу, о выходе за пределы массива, о достоинствах и недостатках рекурсии.
    Можно также попросить решить задачу для шаблонного типа или многопоточно.
    И все в пределах 100 строчек кода.
    Лично мне подсовывали «задачу коня» и обмен между двумя кольцевыми буферами. Не вижу, чем они лучше.

    И кстати почему не подходит?

    Декомпозиция заранее известна, однобуквенные имена переменных являются хорошим выбором (а длинные, наоборот, не очень хорошим), оптимальный код обычно не очень красивый, комментировать что-либо бесполезно, обработки ошибок нет. Говорить про итераторы и константность для in-place сортировки массива сложно.

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

    Написать многопоточную реализацию — ok, но это немного другого уровня задача.

    Лично мне подсовывали «задачу коня» и обмен между двумя кольцевыми буферами.

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

    отчего падучий код должен рвать шаблон?

    >>> a = [i for i in xrange(1000)]
    >>> def qsort(L):
    ...     if L: return qsort([x for x in L if x<L[0]]) + [x for x in L if x==L[0]] + qsort([x for x in L if x>L[0]])
    ...     return []
    ... 
    >>> qsort(a)
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "<stdin>", line 2, in qsort
    ...
    RuntimeError: maximum recursion depth exceeded
    

    А кто говорил, что рецепты из интернета рабочие? :lol:

    это, кстати, даже забавно выглядит.
    уклон в функциональщину, списки, вот это всё.
    а tail recursion optimization нет и не будет

    Я изучал TRO не так много, но меня в принципе напрягает то, что эта штука «может быть, а может и не быть», в зависимости от того, как напишешь код, а если её не будет, то тебе об этом никто предупреждения не выдаст, пока программа на реальных данных не начнёт падать. Лучше уж честные итерации — это хотя бы прогнозируемо.

    в JS и этих соображений вообще предложили обратно несовместимую конструкцию(return continue <recursive call=«">;) для явного определения.
    замечание понятно. но
    а) мы говорим про серверное/локальное приложение, где очевидно и однозначно можно определить еще при запуске версию и всякие флаги. то есть, ругаться в духе «эй, мой код рассчитывает на TRO! отказываюсь работать!» может и сам код
    б) насчет требований к коду — это вопрос привычки, чтоб рекурсия была всегда в конце; можно статическими анализаторами проверять, при код-ревью явно видно, опять же

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

    А кто где здесь видит tail recursion? Её там нет.

    увидев сообщение насчет превышения лимита вложенности, возник вопрос: а почему не написали с поддержкой TRO. погуглил, оказалось — нет такого вообще, и не планируется.
    о чем и сказал.
    [UPD] даже не подумал, что собственное любопытство надо как-то аргументировать

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

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

    для каких целей изучалось? :)

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

    т.е. правильно ли я понимаю Вашу точку зрения — что перед «походом» на собеседование кандидату необходимо знать «большую часть» алгоритмов?
    если это так — тогда у меня вопросов больше нет :)

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

    А ви використовуєте хеши в своєму коді? А скільки алгоритмів хешування з ходу ви можете написати на дошці?

    з ходу ви можете написати на дошці
    под знать не имею ввиду уметь писать на вайтбоард

    Я про вас особисто питав. Скільки алгоритмів хешування ви знаєте без гугління?

    эм. вы ща про конкретные хеш-функции спрашиваете? не про «хорошие», а «просто хеш-функция»?

    из того что приходит в голову — SHA-1/2/3/MD*/CRC-*/RIPEMD

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

    Вы меня не правильно понимаете.
    Надо их знать всегда
    :)

    а может читать до конца?

    под знать не имею ввиду уметь писать на вайтбоард

    Ви ж декларуєте, що алгоритми треба знати завжди. :) А самі не проходите свій жеж кастінг...

    Это вы просто искажаете то что я явно написал

    так что же Вы тогда имели ввиду?
    что-то я уже запутался в показаниях :)

    Я уже отвечал выше, могу повторить в перефразированой форме.

    Знать, это уметь применять знания на практике

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

    надо таки немного больше, но этого достаточно для начала

    Вайтбоард. Який чудовий новояз. Що в дипломі написано? І як можна знати, але не могти на папірці написати?

    Судя по ветке комментариев, подразумевается знание названий, а не алгоритмов.

    І як можна знати, але не могти на папірці написати?
    Легко.

    Значить не програміст. Видали весь написаний тобою код тому що він може становити небезпеку (наприклад супутники почнуть падати на Землю) і звільняйся з роботи.

    Людина старається звернути увагу на більш глобальні речі в наймі в ІТ, але дискусія так чи інакше зкочується до питання чи треба/не треба знати/питати про алгоритми чи ні.
    Пацан окрім того наголошує, що ніде йому не було повідомлено про причини відмови, навіть якщо він — за результатами — очікував на оффер, загальноприйнятим є просто ігнор. Майже ніде, не зважаючи на великі видатки контор на хантинг, не було ніякої реальної підготовки до інтерв’ю саме з ним (інтерв’юери не знали нічого про його попередній досвід роботи ні про опенсорсні проекти). Майже всюди практикувалося введення кандидата в стресовий стан на очних інтерв’ю (як то довготривалі інтерв’ю зі зміною інтервю’верів, інші речі). Загально він хоче сказати, що такий підхід до найму десь погано корелює з його почуттям власної гідності і не менш погано корелює з якістю найму (це ми вже додумуємо але й так знаємо самі).

    Хоча, звичайно, якщо взяти конкретно випадок цього хлопця, то хто зна чому його не взяли. Причин, які не озвучують, може бути маса. Від, наприклад, зависоких зарплатних очікувань, чи неприємного зовнішнього вигляду, до таких речей, як зарозумілість (ЧСВ) кандидата, чи просто посередній менеджер шукає посереднього виконавця — хто зна.
    Як на мене, то він просто занадто інтровертивний і просто зашвидко здався.

    Приколы с наймом вне ИТ бывают еще жирнее и чудесатее.

    в западных странах с озвучиваниями причин проблемно. Попадется еще такой, что заорет «вы фсе врети!!!» и в суд подаст... Оно им надо?

    отвічають:- мєлко плавал там то і там, ми найшли лучшего кандідата...
    так що не надо ляля, з чем судіться, шо найнятий Рашман лучше Васі?

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

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

    реальний фібдек
    Unfortunately we have found other candidates, and their qualifications and experience match better to our job description criteria.

    I have received feedback from engineer that had a telephone screen with you. Please have a look below:

    — more detailed than helicopter view answers on some questions
    — some gaps in C++
    — lack of wider experience in Scrum/Agile

    medium.com/...n-bb8f3a48d324#.l9qd4osq1
    Депрессняковейшая статья просто

    ну я все ж сказала б, що надія є :)
    бо ми ж не юристи чи там лікарі, яким без системи — ніяк. Ми собі роботу завжди можемо знайти і самі. :)

    Если речь идёт о трудоустройстве в пределах Украины — то да. А если удалённо пытаться устроиться за границу — там система защиты рынка труда вместе с тараканами работодателей в полный рост встаёт.

    Особисто моя позиція така, що теорію і базові алгоритми треба знати. Навіть краще буде, якщо людина напам’ять не знає, але може за короткий час зорієнтуватись і на листку накидати. Як, наприклад, в фізиці / теоретичній механіці можна половину формул вивести, просто знаючи закони Ньютона.
    Тому, навіть при наборі студентів на наші курси по Java, ми обов’язково даємо кілька задач на логіку (нормальні, не про піаністів в Чікаго) і дивимось, чи здатна людина мислити.
    По собі скажу — після того, як я почав робити алгоритмічні задачі у вільний час, стало набагато (в рази) легше реалізовувати реальні задачі на проектах. Тому очевидно, що щось таки в цьому є. Навіть якщо доведеться просто кнопочки малювати, знання алгоритмів / алгоритмічне мислення лишніми не будуть:)

    Запас карман не тягне? З таким підходом можна у вільний від роботи час і, наприклад, освоювати фехтування, будівництво, біологію, астрономію і т.д. Раптом згодиться? На jQuery писати це ніяк не заважає.

    у вільний час я пишу музику — раптом згодиться?

    Пишеш бо подобається, а не шоб було.

    О зубрить не надо, там один раз врубиться.

    А задачки, ну было обидно, когда из 45 минут интервью 15 заняло решение проблем со связью, и решение задачи довёл до ума через 10 минут после окончания звонка. Но такие правила игры.

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

    ЗЫ: Если что самого когда-то давно зафейлили на биг О, до сих пор стыдно

    Big O чтобы программисты не лепили линкед лист везде или понимали, когда использовать тримап, а когда хеш. Опять же, если человек не знает как рабоатет хеш таблица, то начинают появлятся дичаишие реализации хешкода и equals, которыми заполнены 90% процентов проектов использующих ОРМ.

    Ну хз. Какой то бесполезный фильтр если лбди учат то что не будут использовать. Где то фильтр а где то глупость и зависит в первую очередь от задач над которыми придется работать

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

    Я подозреваю, что задача ставится не столько реализовать алгоритм по памяти, сколько проверить, способен ли кандидат вообще реализовать более-менее продвинутый алгоритм или он тупо макака со скиллами кодинга. Я бы на его месте ответил так: «Чуваки, я это учил давно, поэтому наизусть алгоритм не помню. Если вы разрешите загуглить теорию — я его реализую». Это ИМХО валидный ответ. Что он покажет:
    1). Я не пытаюсь пройти интервью, заучив пару алгоритмов по памяти.
    2). Я могу реализовать произвольный алгоритм, понимая математические выкладки.
    3). Я умею искать решение задачи, а не тупо юзать 2-3 заученных решения.

    Пока автор статьи писал о том, что не так с интервью мог бы уже 3 раза развернуть это бедное дерево и еще десяток задач сверху решить.
    Систематичная подготовка на каком-нибудь leetcode.com для такого уверенного типа дала бы результат месяца за 4.

    Кстати, автор Homebrew, на которого ссылается автор статьи и который юзают 90% инженеров гугла, работает в apple над Swift Package Manager.
    Интересно то, что есть мнение о Homebrew как о продукте в котором code smells bad.

    Прикольно получается, 90 процентов пользуются, а для 10 процентов code smells.

    пользуются через боль!

    Систематичная подготовка на каком-нибудь leetcode.com для такого уверенного типа дала бы результат месяца за 4.
    А зачем? Ну то есть кроме как быть в хорошей форме для прохождения интервью.

    Тем более что, например, написать BFS на доске — это выворачивание реальной задачи наизнанку. Ну то есть на пальцах: ок — достаем вершину из очереди, експандим, ложим результаты вконец очереди, берем следующую вершину, итп, до тех пока не нашли то шо искали. Но для того чтобы написать этот код: логики мало: нужно определится с real-world штуками: что такое вершина, как ее раскрывать, как определять достижение результата, тем более что если это граф(вернее эмуляция графа) — это один интерфейс, если это поиск выхода пути из лабиринта — то это другой интерфейс. Есть о чем подумать.

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

    Тем более это JS: какие нафиг графы? какой нафиг лабиринт? какой нафиг BFS/DFS/A*? Сильно помогает в написании «статических» React-компонент? их связывания?

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

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

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

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

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

    ну код може і не ідеальний, але кожний інженер на маку 100% юзає homebrew. бо нічого іншого такого ж рівня нема.

    Типичная проблема: «нафиг мне ХХХ за n лет в IT ни разу не приходилось с этим сталкиваться» versus «ХХХ — это базовая вещь, с которой должен быть знаком каждый», при этом нельзя сказать что какая-то из этих точек зрения абсолютно неправильная.

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

    С другой стороны: если мы ищем человека в команду нужно посидеть и подумать что ему придется делать, какие дополнительные роли в команде он должен исполнять(развлекать кастомера, быть справочником по языку/фреймворку, или же фигачить оптимизированный во все дыры код с утра до ночи), и соответственно тогда уже думать о том как бы нужные фичи протестировать, чтобы отобрать того кто максимально подходит под заданные критерии. Это долго и сложно. Поэтому так делают редко, а просто занимаются поиском абстрактного программиста в вакууме. А от абстрактного программиста мы хотим всего и сразу: структур данных, алгоритмов с их сложностями, супер знаний в языке и фреймворках, супер знаний в смежных областях типа ОС, сетях, и последнем слове в СУБД строении. А как же без этого? Кроме того шо список вопросов легко подобрать, включая «пиши код на бумажке», так еще не напряжно с точки зрения интервьюера: выпутываться придется исключительно тому у кого это спрашивают :) А дальше все просто: если вы условный Гугл и к вам стоит очередь из желающих: поднимаем планку, если вы «Рога и Копыта» в Жмеринке — планку чуть опускаем.

    Все по чесному. Interviewee визубрює задачі і зображує процес мислення, а компанії таким чином створюють ілюзію цікавих і епічних задач, а не розгрібання гуанокоду, в якому максимум доведеться використовувати готові структури даних і алгоритми.
    звісно, виключення бувають, доволі часто якщо гарно пошукати.

    Автор, конечно, идеалистичен. И проявляется это в том, что он не хочет выучить наизусть несколько ходовых задач.

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

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

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

    Кстати чувак пишет про немецкие компании судя по LinkedIn

    Если он пишет такую статью в стиле «все ***, один я дартаньян» то, найми такого разработчика в команду — потом он будет рассказывать другим, как писать правильно (ведь он же крутой опенсорс разработчик), при этом не обладая фундаментальными знаниями, и зачастую толкая откровенно фиговые решения (откуда им взяться, если базы нет?).
    Скорее из-за этого и не взяли никуда.

    Ну, вообще он пишет
    Some people have also expressed an issue with my rant about algorithms. For the record, I do have a degree in Computer Science
    Так что база есть.

    он так же пишет
    implement a breadth-first search (BFS) algorithm. What the fuck?!
    так что не уверен
    иметь degree и иметь знания — 2 разные вещи

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

    чуть дальше
    I haven’t implemented BFS in years, there is no way I can come up with a solution right here and now; yep

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

    нужно ли фронтендщику (или любому другому разработчику) знание алгоритмов
    в украинском аутсорсе — не нужно ))) )

    А в польском/индийском/американском? А не в аутсорсе?:)

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

    настоящий сінйор приходить на унилий проект і тупіє, от тут і починаються «ігри ума», що не стати овочем

    BFS, особенно для дерева имплементировать легче легкого и можно даже не зная додуматься, а вот алгоритмы на графы типа дийсктры или A-star только если запомнил.

    речь не идет про изобрести vs изучить, я имел ввиду, что врубившись в суть того же дейкстры, потом выдать его можно и не по памяти — понятно, что если ни разу не видел его в глаза, и ни разу не реализовав, то название алгоритма — это лишь набор символов
    вообще, спрашивать имплементацию конкретного алгоритма, действительно, не очень правильно, проще давать задачу связанную с некоторой областью, дабы оставить возможность выбора имплементации кандидату, а заодно и дальнейшее пространство для обсуждений. (и ожидать хотя бы реализацию полного перебора в худшем случае) Но в случае с bfs/dfs это почти как спросить таблицу умножения имхо, потому и degree в cs у этого товарища как то под сомнением.

    В 2012-м (вроде) я проходил курс по алгоритмам и там нужно было реализовать DFS и BFS. В данный момент я с трудом вспоминаю что это такое. Думаю не нужно говорить что в работе я эти знания ни разу не использовал. Конечно, совсем базовые вещи знать полезно и нужно, но зачем человеку, который отвечает за то чтоб картинка в браузере выглядела хороша, значить все эти вещи? Если где-то это и используется, то это скрыто под толстым слоем фреймворков и библиотек.

    хороша
    хорошо
    значить
    знать

    Чуваки, ну сделайте таймер на изменение комментариев хотя бы на пару часов, а то мне стыдно((

    а то мне стыдно((
    - а ось у це ніхто не повірить. :D

    P.S.: Я теж за збільшення таймауту.

    Фундаментальні знання та гарні рішення знаходяться в різних всесвітах. Можна досконало знати всі алгорітми, а писати потім відвертий треш. А можна взагалі не знати жодного алгоритму, але будувати рішення, які будуть вражати своєю елементарністю так якістю.

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

    Ще одне запитання, а скільки відомих та вкрай необхідних алгоритмів було використано в тому самому jQuery?

    верю что человек, с хорошим знанием алгоритмов, может писать полный треш (как правило это поправимо), но не верю, что человек, который выдает хорошие решения, не сможет решить относительно простые задачи из cs, потому как для обоих областей нужно иметь системное мышление. Что такое «креативность» без «эрудиции»? Генерация случайных решений?

    Відносно прості це які? Скільки алгоритмів сортування ви знаєте? Без гугління тільки. А скільки з них ви можете одразу з ходу написати на дошці? Дайте тільки чесну відповідь. Я пам’ятаю тільки парочку (хоча їх мінімум десяток), написати на дошці зможу тільки бульбашковий. За останні 20 років мені не знадобився жодного разу жоден з розширених алгоритмів сортування. А вам?

    Відносно прості це які?
    ну например поиск решения лабиринта или определения полиндрома, как в случае с автором статьи
    Скільки алгоритмів сортування ви знаєте?
    не вижу смысла мериться размерами, моя мысль была не в том чтобы просить кандидата озвучивать на память алгоритмы, а напротив просить решить задачу

    Пошук рішення лабіринту нічим не відрізняється від алгоритма сортування. Тільки от останній приміняється набагато частіше. :) Ви не пройшли співбесіду, ви нам не підходите.

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

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

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

    а?
    В рамках даного обговорення різниця між цими задачами особисто для мене мінімальна.
    короче, это все равно бессмысленный холивар
    Я на власному досвіді переконався, що ситуації, які описує Сахат, мають місце бути. Це відверте не неприкрите знущання тих, хто проводить інтерв’ю, над тими, хто його проходить. Коли я це зрозумів, я почав задавати зустрічні запитання та перевіряти знання того, хто мене інтерв’юірує, щоб зрозуміти, вони дійсно розбираються в computer science, чи просто хочуть помірятися пісюнами та доказати, що вони альфа-програмісти. ;)

    1. Вы правильные вещи пишите, но если ваша программа работает одну секунду, а программа конкурента 10 секунд, но при этом демонстрируем ему котиков и сиськи, то не факт что будут покупать именно вашу программу. Это я к тому что фиговость решения иногда определяется нетехническими факторами.
    2. ИМХО, лучше нанимать человека у которого есть опыт создания успешных продуктов, чем человека, у которого есть опыт прохождения собеседований. Ну или большая теоретическая база.

    вспоминается история о двух мостах

    Раньше, т.е. лет 20 и более назад, было понятие системного и прикладного программиста. Они занимались совершенно разными вещами и мало пересекались друг с другом по навыкам и знаниям. Сейчас всё перемешалось: введена классификация junior/middle/senior и всё.

    А вообще складывается впечатление, что индустрия разработки ПО гниёт. С одной стороны, количество софта и облачных сервисов/стартапов расплодилось столько, что это уже превратилось в неприкрытый наглый распил денег инвесторов. А с другой — в индустрии процветает офисное рабство и технологии управления проектами, которые выглядят как пришельцы из 80-х: митинги команды в офисе, где все обсуждают, что и так есть в Жире и передвигают цветные листочки бумаги на белой доске.

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

    А с другой — в индустрии процветает офисное рабство и технологии управления проектами, которые выглядят как пришельцы из 80-х: митинги команды в офисе, где все обсуждают, что и так есть в Жире и передвигают цветные листочки бумаги на белой доске.
    Что вы можете предложить взамен?

    Отмечать статусы в веб-приложениях (онлайн-сервисах) по управлению проектами. Корректно отображать состояние задач в Jira или её аналогах. Использовать групповой чат. Разогнать весь штат программистов по домам, чтобы работали удалённо и сэкономить на аренде большого офиса.

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

    Разогнать весь штат программистов по домам

    Даже видеоконференция не является полноценной заменой живому общению лицом к лицу. Не зря же в agile методологиях немало внимания уделяют так называемым co-located teams.

    передвигают цветные листочки бумаги на белой доске.

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

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

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

    Не зря же в agile методологиях немало внимания уделяют так называемым co-located teams.

    Техническое замечание: это не аргумент. Может и зря. Может вообще пофиг.

    Я сюда деградировать пришел, а не алгоритмы эти ваши решать.

    — surprise-surprise, компаніям, типу гугла, не потрібні джейквері-макаки («я написав подуль на реакті і запилив його на гітхаб, ололо адин-адин1!, давайте 200к і ніяких інтерв’ю!») тому, що вони не хайрять на проект, а в компанію. їм потірбні люди, які напишуть наступний реакт, технології змінюються, а основні підходи і вся база залишається, тому її і питають на інтрев’ю і пробують зрозуміти, чи людина в основному толкова, бо решту вона вивчить при потребі. кожна макака може вивчити реакт за тиждень, тому особливого сенсу концентруватись на ньому при інтерв’ю ніхто і не бачив
    — більшість задач, які він перерахував, це варіації фізбазу для тих, хто зміг таки осилити сам фізбаз. якщо ти не можеш реверснути стрічку, перевірити чи стрічка паліндром чи конвертнути число в стрічку — то проси «шаг» повернути гроші назад
    — «в реальному житті ніхто стрічки не реверсить». дякую, кеп, з цим ніхто і не сперечається, бо задачі питають, щоб оцінити логічне мислення, те, як кандидат розбиває проблеми на менші і як борется зі складністю. те, як він в кінці-кінців, пише код (!).
    — ніхто не хоче наймати «good enough» програмістів, бо такі потім наймають ще гірших, а ті ще гірших, так і падає якість.

    реалії такі, що наймати людей — дуже складно, наймати толкових програмістів — ще складніше, і ніхто не знає ідеального інтерв’ю. я згоден з тим, що з процесом є невеликі проблеми (в реалізації процесу, але не в ідеї), інколи задач на кодинг забагато (ок, часто їх забагато), але загалом обов’язково дати кандидату хоч 1 елементарну задачку, щоб побачити як він розбиває проблеми на менші і чи вміє думати і писати код (програміста ж беруть), обов’язково перевірити, що саме він робив на тих крутих проектах, які в нього в резюме (а то виявиться, що він там каву носив) і обов’язково поговорити з ним про дизайн систем, щоб він міг показати свій досвід на повну і свої знання в індустрії / CS

    їм потірбні люди, які напишуть наступний реакт, технології змінюються, а основні підходи і вся база залишається

    люто-бешено плюсую.

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

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

    ну да!
    тут прокачується ЧСВ до овер 100рівня, шо папал в Омазон,
    а виявляється що робота УГ, яке не корелює із прокачаним ЧСВ
    далі — срач кірпічами

    вот останки его поста, самовыпилился он после наезда юристов компании мечты: dou.ua/forums/topic/8406
    а вот что к стенкам интернета поприсыхало web.archive.org/.../dou.ua/forums/topic/8406

    хоч 1 елементарну задачку, щоб побачити як він розбиває проблеми на менші і чи вміє думати і писати код
    да, называется “тестовым заданием”. и на интервью ему не место.
    при этом полностью согласен, что навыки декомпозиции намного важнее знания конкретного фреймворка.
    равно как и зазубренного определения синглтонов или реализации некоего алгоритма.
    да, называется «тестовым заданием». и на интервью ему не место

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

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

    если кто не может обсудить код, чтоб определить глубину понимания(и даже не важно, кто автор, если кандидат аргументированно отстаивает именно этот вариант реализизации, называет ограничения и сильные стороны — какая разница, кто именно написал код?!) — что даст написание кода во время собеседования? с таким подходом начнутся придирки уровня “у вас имя переменной не информативное”.
    плавали, знаем.

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

    а на собеседовании за это что, заплатят?

    не зовсім розумію, ти не бачиш різниці між годинкою співбесіди і тестовим на пару днів чи пропонуєш платити кандидату за час його співбесіди?

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

    це ти щось придумав, для цього проводять телефонні інтерв’ю, 1-2, щоб оцінити загальну адекватність і вирішити запрошувати чи ні. це швидко, непогано фільтрує і дешевше для компанії, ніж перевіряти мільйон тестових в місяць

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

    так, стрес при інтерв’ю — це велика проблема. хороші інтерв’ювери знають, які make candidate comfortable і допоможуть кандадату проявити себе, навіть якщо він дуже переживає. переважно, людям достатньо трохи поінтерв’юватись і з’явиться впевненість і ця проблема відпаде. якщо є якісь кращі ідеї — цікаво послухати

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

    таке буває тільки в неадекватних інтерв’юверів, це виключення швидше, загалом увагу не звертають на дрібниці.

    Только слушать и надо.

    так ти ризикуєш найняти офігенного теоретика, який потім на ділі код не вміє писати, від слова взагалі. і тут компанія втратила тонну грошей на хайрінг і релокейшн, сайн ін бонус і тд, а тепер треба звільняти (а в Європі ще попробуй звільни)

    ти не бачиш найбільш очевидної причини з тестовими — цей підхід не скейлиться. нема кому сидіти і перевіряти тонни гамнокоду цілими днями, коли компанія перевалює за якийсь розмір, це стає неможливо. а просто «поговорити» по душах переважно недостатньо, тому і додають кодинг і систем дизайн

    ще раз, мені цікаво почути як би ти фундаментально вирішив проблему хайрінгу на прикладі гугла, суттєво покращивши false negative / false positive. це дуже складна проблема і якщо б було просте рішення, всі б його вже юзали.

    на даному етапі компанії пробують банити поганих інтерв’юверів і погані задачки, додають систем дизайн інтерв’ю, переважно є ціле інтерв’ю «по душам» з хайрінг менеджером, де тебе спитають все те, що ти перелічив. тобто це все вже робиться. деяким людям не подобаєься кодити на інтерв’ю, але реалії такі, що це важко чимось замінити

    переважно є ціле інтерв’ю “по душам” з хайрінг менеджером, де тебе спитають все те, що ти перелічив
    собственно, и говорю по своему опыту. этот подход работает. бывал по обе стороны баррикад.
    ти не бачиш найбільш очевидної причини з тестовими — цей підхід не скейлиться
    написание кода на собесе — тоже не скейлится.
    в сравнении с этим, тестовое задание отсеит часть как раз за счет “не все его делают”.
    не зовсім розумію, ти не бачиш різниці між годинкою співбесіди і тестовим на пару днів чи пропонуєш платити кандидату за час його співбесіди?
    а я не понял пассажа насчет “тестовое надо ж делать в свободное время”. можно подумать, собес — не в свободное время.
    и, кстати, я и не предлагал тестовое “на пару дней”. его гарантировано никто не будет. разве что совсем срочно нужно работу найти и наша компания — последний шанс. но в этом случае наоборот, надо убедиться, что “любой ценой” не пытается какой-то нетопырь устроиться :-/
    ще раз, мені цікаво почути як би ти фундаментально вирішив проблему хайрінгу на прикладі гугла, суттєво покращивши false negative / false positive. це дуже складна проблема і якщо б було просте рішення, всі б його вже юзали.
    есть куча оговорок.
    у меня нет четкой формально описанной методики, чтоб сравнивать с гугловскими “почему люки круглые?”
    есть только опыт, что мой подход позволил мне несколько раз набирать такую команду, в котороый мы работали кофмортно и продуктивно.
    при этом, написание кода отсутствовало. понимания концепции для меня было достаточно.
    и да, я ж “фронтендщик”, то можно заявить, что на самом деле, это “формошлепство”. но в бекенде тоже был опыт подбора. и даже О() на самом деле можно обсудить на пальцах. и потребление памяти. и комбинаторный взрыв.

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

    и вот, сначала человек полчаса пишет код. а потом я еще минут 10 пытаюсь понять, к какому типу относится.

    PS фак. я не нарочно так много написал :(

    собственно, и говорю по своему опыту. этот подход работает. бывал по обе стороны баррикад.

    ну так я і кажу — компанії це вже роблять, це теж частина процесу

    написание кода на собесе — тоже не скейлится.в сравнении с этим, тестовое задание отсеит часть как раз за счет «не все его делают».

    інколи, коли стає важко скейлити (забагато телефонних), дають тестове ідентичне телефонному на годинку, щоб відсіяти зовсім нулячих. тобто це оптимізується вже зараз

    можно подумать, собес — не в свободное время

    ідея в тому, що співбесіда економить час компанії порівняно з тестовим (+ можна оптимізувати навантаження попередніми відборами)

    чтоб сравнивать с гугловскими «почему люки круглые?»

    до речі, це була дебільна ідея і від неї відмовились давно, зараз задають тільки нормальні питання

    и вот, сначала человек полчаса пишет код. а потом я еще минут 10 пытаюсь понять, к какому типу относится.

    а потім ти можеш поговорити і взнати решту питань, які ти задаєш переважно. одне одному не перешкоджає

    загалом я так розумію, багатьом не подобається код на інтерв’ю, чи правильно це чи ні — сказати важко без даних, але я припускаю, що гуглам вдається нормально хайрити з теперішнім підходом, і не факт, що без коду буде краще, а не гірше. зараз є багато false positives, яких доводиться звільняти, а що буде, якщо відмінити код важко і уявити

    зараз є багато false positives, яких доводиться звільняти, а що буде, якщо відмінити код важко і уявити

    тю, якась лажа. там мала бути цитата з коментом

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

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

    в гуглі тонни цікавих проектів і кожному є з чого вибрати і нікуди тебе не «садять», а якщо і попав в команду, де не подобається, то іди в іншу, в чому проблема?

    чи ти пропонуєш наймати аби-кого, бо, о боже, бувають «нецікаві» проекти? а що буде, якщо ці найняті шланги з цих «нецікавих» проектів захочуть полізти на «цікаві»? не попливе там якість? якщо би ти уважно читав, то побачив би, що гугл наймає в компанію, а не на проект, тому і відбір іде в компанію, бо кожен може змінити проект і від того, що є гімняні проекти, планка не повинна падати

    Странно, а вот мой одногруппник был посажен против своего желания на позицию типа devops, сменить ее не мог, от дискомфорта уволился через несколько месяцев. У вас личный опыт с Гуглом?

    я так розумію SRE? якщо він поїхав в країну, де не було нормальних позицій, тільки SRE, то міг почекати рік часу, і поїхати в штати на цікавішу позицію, це реально і так роблять

    У вас личный опыт с Гуглом?

    так, правда не з гуглом, але зі схожою по розмірах і процесах компанією, але знаю людей в гуглі, які спокійно змінювали проекти, тому це 100% реально і відносно просто, ніхто нікого в рабстві не тримає, їм вигідніше, щоб людина змінила проект, а не компанію

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

    Деталей сейчас не помню, но это были не Штаты.

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

    так, спочатку можуть кинути на гумно, але можна звалити, в чому наівність? і що ти пропонуєш їм понизити планку, бо є гамно-проекти? в чому поінт? чи хайрити на проекти і не дозволяти змінювати їх — тоді можна буде мати різні планки, але нафіга?

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

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

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

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

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

    ядро серч енджайна улучшают
    энджин!

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

    Ага, саме тому у гугла тонни проектів створених інженерами для інженерів, а не для людей. Створених, тому що можуть а не тому що це комусь треба. Чувак знає як розвернути строку, як написати qsort, вміє порахувати кількість м’ячиків для гольфа в автобусі, а вот створити продукт для людей який вирішує реальні проблеми — це вже вище його сил, він краще qsort оптимізує.

    Звісно треба наймати людей, які вміють декомпозувати задачі і вирішувати проблеми. Но вот вміння на ходу розв’язувати алгоритмічні задачки — це ніфіга не фільтр таких людей.

    Ага, саме тому у гугла тонни проектів створених інженерами для інженерів, а не для людей.

    а також тонни проектів, створених для людей. і? взагалі, це питання до продакт менеджерів, а не інженерів, інженери не дизайнять вигляд і фічі продукту, до яких я так розумію претензії.

    Но вот вміння на ходу розв’язувати алгоритмічні задачки — це ніфіга не фільтр таких людей.

    звідки такий висновок? в тебе є якась статистика, яка це підтверджує? що саме ти пропонуєш як заміну?

    а також тонни проектів, створених для людей. і?

    Назви хоча б 5. Тільки врахуй, що те, що люди користуються, зовсім не значить що воно створено для людей. Вінда також колись була вирвиглазною, но тим не менше її доля на ринку була > 90%.

    звідки такий висновок? в тебе є якась статистика, яка це підтверджує? що саме ти пропонуєш як заміну?

    Да що завгодно, поставити реальну, ПРАКТИЧНУ задачу і слухати як би він її вирішував, які питання задавав би, якими принципами керувався б при розробці high level design, як би він ділив задачу на підзадачі, модулі, і т.д.

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

    1) це не проблема інжинірінгу, а продакт менеджементу
    2) оголоси весь список критеріїв «програм для людей» з декількома прикладами

    Да що завгодно, поставити реальну, ПРАКТИЧНУ задачу і слухати як би він її вирішував, які питання задавав би, якими принципами керувався б при розробці high level design, як би він ділив задачу на підзадачі, модулі, і т.д.

    це вже робиться, називається system design interview, одне з інтерв’ю на онсайті.

    але я так і не зрозумів, чому ти вирішив, що від інших інтерв’ю треба відмовитись а ось це єдине буде краще ніж теперішній формат (кодінг + сис дизайн). тобто ти нічого нового не запропонував, тільки сказав що з теперішніх декількох інтерв’ю треба викинути весь кодінг і це магічним чином покращить якість інженерів, яких компанія наймає. м’яко кажучи, це дуже неочевидне твердження

    1) це не проблема інжинірінгу, а продакт менеджементу
    2) оголоси весь список критеріїв «програм для людей» з декількома прикладами

    1. Вот якраз у гугла це проблема інжінірінга, точніше у відсутності нормального продакт менеджмента і юзабіліті спеціалістів. Вони ж постійно це пропагандують, що інженери на колінах пилять продукти і якщо начальству подобаються якісь, то їх продвигають. Якби інженери були б більш креативніші, а не академісти, можливо це б спрацювало набагато краще.

    2. Да взяти ті ж самі продукти эпла навскидку.

    але я так і не зрозумів, чому ти вирішив, що від інших інтерв’ю треба відмовитись а ось це єдине буде краще ніж теперішній формат (кодінг + сис дизайн). тобто ти нічого нового не запропонував, тільки сказав що з теперішніх декількох інтерв’ю треба викинути весь кодінг і це магічним чином покращить якість інженерів, яких компанія наймає. м’яко кажучи, це дуже неочевидне твердження

    Не так зрозумів. Я про те, що вміння розв’язувати алгоритмічні задачі на дошці або папері не повинно бути єдиним критерієм відбору. А у гугла саме так — яким би крутим спецом ти не був, не розв’язав задачку на дошці — на вихід. І пофіг що на інших інтерв’ю ти показав себе добре.

    1. Вот якраз у гугла це проблема інжінірінга, точніше у відсутності нормального продакт менеджмента і юзабіліті спеціалістів. Вони ж постійно це пропагандують, що інженери на колінах пилять продукти і якщо начальству подобаються якісь, то їх продвигають. Якби інженери були б більш креативніші, а не академісти, можливо це б спрацювало набагато краще.

    не знаю звідки це, але це не правда, в гугла є продакт менеджери, і це їх робота, дизайнити продукти для людей, тому це якраз не проблема інжинірінгу і ніяк не відноситься до інтерв’ю. от якість виконання цих продуктів — так, відноситься, але з якістю в них все ніби ок ±

    2. Да взяти ті ж самі продукти эпла навскидку.

    повірив би, якби сам ними не користувався

    Не так зрозумів. Я про те, що вміння розв’язувати алгоритмічні задачі на дошці або папері не повинно бути єдиним критерієм відбору. А у гугла саме так — яким би крутим спецом ти не був, не розв’язав задачку на дошці — на вихід. І пофіг що на інших інтерв’ю ти показав себе добре.

    та з чого ти взяв, що це єдиний критерій? я ж написав, що в них вже є те, що ти пропонуєш, називається system design interview. і одне інтерв’ю ти можеш завалити (якраз одне з coding), тому друге твоє тверження теж false

    повірив би, якби сам ними не користувався

    Говорить той, хто не може назвати 5 продуктів гугла «для людей»

    та з чого ти взяв, що це єдиний критерій?

    Тому що це вже мем, створений на основі безлічі історій коли людей зарізали тупо із-за того що з алгоритмічними задачками тупили, будучи при цьому гідними спецами

    Тому що це вже мем, створений на основі безлічі історій коли людей зарізали тупо із-за того що з алгоритмічними задачками тупили, будучи при цьому гідними спецами

    <картинка про екстраполяцію>

    твої «безлічі» історій нічого не доводять, ніхто і не казав, що теперішній процес ідеальний і немає false negatives. так, вони є. але ти поліз сперечатися, то може доведи спочатку, що в твоєму офігенному методі найму буде менше false negatives і false positives, ніж в теперішньому гугловому? а то вони не знають, що існує ідеальний процес і мучаться і мучать інших теперішнім.

    поки що ти описав своє бачення інтерв’ю, але виявилося, що в гуглі це вже роблять, і це просто частина процесу. все решта, що ти написав — або нерелевантні дурниці (притягнув результат роботи пм-ів до інтерв’ю інженерів і придумав якусь кореляцію), або просто неправда (реджект через невміння щось накодити — кодінг інтерв’ю декілька і 1не можна зафейлити)

    Говорить той, хто не може назвати 5 продуктів гугла «для людей»

    так ти критеріїв і не назвав, звідки я знаю, що це таке? я зараз назву щось, а ти скажеш «ні», прикриваючи якоюсь своєю суб’єктивщиною

    до речі, в мене кожна наступна версія iOS так тупить, що після 7ї айпед став неюзабельним і я його віддав, а телефон боюсь тепер оновлювати. про глюки я дефолтного софту взагалі мовчу

    мак ос має стіьльки юзабіліті проблем, що можна годинами розписувати, і це не враховуючи проблем з якістю і перфомансом (запусти її з hdd). дебільний неюзабельний файндер, дебільний preview в якому навіть фотки не подивишся з папки, анімації, більшість з яких не відключити ніяким способом і ще купа фіч «для людей»

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

    при том, что мы имеем практически противоположные точки зрения, с аргументацией у вас всё отлично.

    Да взяти ті ж самі продукти эпла навскидку.
    не подскажешь как в маке, вставив флешку с фотографиями, просто просмотреть их одна за другой в режиме презентации (на весь экран), переключая кнопкой (пробелом например)? (представь что фоток на флешке овер 2к)
    или как в маке закрасить номер на фото машины? Ну так чтоб быстренько.

    Омг,
    1. Cmd+A по файлам, Space (или даблклик по файлам), <- / -> (в фулскрин без сторонних приложений — кликнуть по контролу в шапке окна)
    2. Открыть обычным Preview, нажать Cmd+Shift+A (или меню View-Show markup toolbar), выбрать кисточку, веселиться

    Cmd+A по файлам, Space (или даблклик по файлам)
    И увидеть падение превью по ошибке. Я не зря сказал про 2к файлов.
    Открыть обычным Preview, нажать Cmd+Shift+A (или меню View-Show markup toolbar), выбрать кисточку, веселиться
    во первых это нифига нетривиально, а мы ж тут про «супер-пупер удобство эпла», а во вторых поигравшись, эта штука возьмет и сохранит файл даже не спрашивая тебя, а надо ли перетереть файл, не важно что эта фота у тебя может быть в одном экземпляре и быть очень важной. Эпл знает лучше тебя, что тебе копия не нужна и нужно сохранять нифига не спрашивая.

    Ну да, очень удобные продукты, не поспоришь

    сколько боли в этом сообщении :(

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

    И увидеть падение превью по ошибке. Я не зря сказал про 2к файлов.
    Сам-то пробовал? Свалилось?
    Подскажу как инженер инженеру: не обязательно содержимое всех файлов загружать в хип. Разве любимая тобою винда так делает?
    во первых это нифига нетривиально
    Это реально тривиально и удобно, один хоткий знать надо. Даже в отдельном пэинте открывать не нужно.
    сохранит файл даже не спрашивая тебя, а надо ли перетереть файл, не важно что эта фота у тебя может быть в одном экземпляре и быть очень важной.
    Да уж, похоже ты всего лишь попробовал один раз и закрыл. Ещё одна подсказка: File ➡ Revert to ➡ Previous State. Ну а при наличии Time Machine и подавно.
    сохранит файл даже не спрашивая тебя
    Вообще это отличный пример того, что пользователи отожествляют «удобно» и «привычно». Ты привык, что винда тебя спрашивает и ожидаешь того же. Но если я отредактировал файл и жму закрыть (а не revert!), не означает ли это, что меня всё устраивает и я не хочу ещё одного диалога? Тебя Intellij спрашивает каждый раз при переходе на новый таб, а не сохранить ли тебе изменения? Intellij сохраняет не спрашивая тебя, это ок? Точно так же ты и ищёшь отдельный пеинт, чтобы отредактировать фотографию. Привычки они такие.
    На самом деле, это было описано ещё до того, как ты поступил в вуз, вот, например: www.joelonsoftware.com/...apters/fog0000000057.html
    Там как раз о про твой случай, почитай.

    A user interface is well-designed when the program behaves exactly how the user thought it would.

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

    Сам-то пробовал? Свалилось?
    да, пробовал, свалилось. И не раз пробовал. Вот тебе рецепт к воспроизведению: флешка, 2к+ фото в большом разрешении.
    Подскажу как инженер инженеру: не обязательно содержимое всех файлов загружать в хип.
    Жаль что разработчикам превью на маке не подсказали что можно не загружать ;) .
    не означает ли это, что меня всё устраивает и я не хочу ещё одного диалога?

    нет, не означает. Это означает только то, что я хочу закрыть файл. Хочу я сохранить или не хочу никак не вытекает из моего желания его закрыть. Это логично.

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

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

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

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

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

    Конечно есть минусы. Но большинство задач, о которых ты говоришь, просты и удобны на маке. Это как со списком окон, который ты просто не знал как посмотреть.
    Мне не удалось завалить привью с ООМ даже с 3-мя тысячами фоток, что я делаю не так?

    При этом это не значит что эти же фишки будут удобны обычному юзеру.
    Эм, так юзер же один и тот же. На самом деле значит. Это называется consistency. Если в одном инструменте работает так, то я ожидаю и в другом на той же платформе так же.
    Я 4 месяца пользуюсь маком каждый день и до сих пор не чувствую себя комфортно с некоторыми простейшими действиями.
    Потому что ты привык к венде и пытаешься сделать точно так же. Вспомни сколько времени ты осваивал венду
    Мне не удалось завалить привью с ООМ даже с 3-мя тысячами фоток, что я делаю не так?
    Как-нить лично покажу. Может у меня мак особенный? Надо захватить его в вс, чтоб ты поверил.

    Вообще все превратилось уже в холивар.

    Договорились, вместе попробуем.

    А у гугла саме так — яким би крутим спецом ти не був, не розв’язав задачку на дошці — на вихід. І пофіг що на інших інтерв’ю ти показав себе добре.
    Не тільку у гугла, майже у всіх відомих паблік-компаніях це є необхідною умовою.

    1. Гугл 2. Почта 3. Андроид 4. Хром 5. Дев тулс 6. Гугл мапс. Гугл также вливает бабки в искусственный интеллект(в частности автомбили без водителя), рисечи в медицине и т.д.

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

    наймати людей — дуже складно, наймати толкових програмістів — ще складніше, і ніхто не знає ідеального інтерв’ю.
    е тут батя ситуація така, що проекти із кожним роком пухнуть і ти в один момент бачиш, що перестаєш розуміти, що відбувається, і ніяке знання структур даних не допоможе, якщо об"єм коду і кількість зв"язків між його частинами перевалює через бар"єр, на якому ти його можеш осягнути.

    Google: 90% of our engineers use the software you wrote (Homebrew), but you can’t invert a binary tree on a whiteboard so fuck off.
    twitter.com/...08682016205344768?lang=ru

    їм потірбні люди, які напишуть наступний реакт

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

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

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

    Автор с одной стороны прав, что эти все алгоритмы в работе могут и не пригодиться, но если спрашивают на собеседовании — надо отвечать :) Лично я так и сделал, еще заучил заранее ответы на стандартные вопросы HR и проблем не знаю :) Считаю такой подход более правильным, чем рассказывать какие идиотские вопросы на собеседовании задают и сидеть без работы :)

    Тобто, це в стилі «диплом показує, що ти можеш 5 років через силу займатися нудятиною», а знання алгоритмів означають: «він вивчить все, що ми йому скажемо, тільки щоб отримати цю роботу»? :)

    Якраз бачив думку, що різні логічні і складні алгоритмічні задачі у тому числі перевіряють вмотивованість людини до роботи в компанії. Тобто це не баг, а фіча:).

    если чувак, при наличии нормальных документов с разрешением на работу, не может найти работу в Штатах, при сегодняшнем то рынке, то да, что-то с ним не так. Что-то мне показалось что не берут его не из-за больших О, а из-за ЧСВ (по тексту проскакивают нотки). Ну а вообще, есть вполне понятные правила игры. И ты их либо принимаешь либо нет. А основной же посыл статьи того чувака — я такой крутой оупенсорсер, вертел я на оси ваши методы собеседований через обходы деревьев (что, на самом деле, простейшая задача, которую можно разобрать минут за 10, решив подготовиться к интервью)

    С другой стороны показывает реальную «крутизну» опенсорса. Кто что-то пишет, считает что он супер-пупер, а как доходит до дела — пшик

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

    Питання в самих правилах гри. Співбесіда ж має показувати, чи хороший це спеціаліст. Чи корелює цей показник зі знанням алгоритмів?

    Якщо підняти середнього сіньйора і без підготовки почати ганяти по алгоритмічних питаннях, скільки балів він набере? :)

    а насколько «средний синьор» коррелирует с «хороший специалист»?

    ну я мав на увазі людину, яку рік тому взяли на такій співбесіді, і в якого з голови ті всі дерева давно вже вивітрилися :)

    Все равно часто смотрят не на конечное решение, а на ход мыслей. Если есть понимание сути алгоритма, то ± выдать его получится. Собеседование — это же вообще почти всегда субьективная процедура, где решения принимаются на интуитивном уровне. Прохождение собеседование != написанные на доске без ошибки алгоритмы, так же как и ненаписанные алгоритмы / ошибки != фейл. Если человек банально заучил алгоритм — это распознается очень быстро.
    На таких вопросах вообще больше можно узнать о человеке, чем спрашивать про то, как реализовать X на фреймворке Y.

    Более того, иногда даже оценивает озвученные проблемы, которые у Вас возникают при решении той или иной задачи! Именно озвученные!

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

    Ні, ну це вже більше логіка працює. Якби було все так погано, напевне їх би не юзали так широко :)

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

    С одной стороны, да, странно, что его никто не взял.

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

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

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

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

    а что не так? За свои деньги работодатель может придумать какое угодно собеседование. Найдет ли он желающих его проходить — это другой вопрос. Но право придумать все что угодно у него есть. Как и право у кандидата отказаться от собеседования.

    За свои деньги работодатель может придумать какое угодно собеседование.
    а що вже платять за співбесіди, які рейти?

    не хочешь — не проходи собеседование. В чем проблема то? Блин, какое ж у кнопкодавов все-таки ЧСВ... я в шоке

    не хочешь — не проходи собеседование.
    когда в последний раз встречал приглашение «приходи, будет тупо!!!»?
    а що вже платять за співбесіди
    Наниматель довольно много времени инвестирует в интервью. Кандидат, пришедший на онсайт — это часов 8 работы инженеров (2 скрина и онсайт + “круглый стол”). Рейт можно посчитать.

    ну я теж інвестую в інтерв"ю свій час, і гроші на проїзд,
    скажімо так одна доба життя на онсайт інтерв"ю + $50 на дорогу
    і якщо лідер ринку пропонує 6 годинний марафон співбесід, то не факт, що погоджуся, особливо якщо є інша робота. І це його рішення витрати час 8 інженерів, а не моє.
    І ситуація на ІТ ринку така, що не тобі тре робота, а робота шукає тебе.

    І ситуація на ІТ ринку така, що не тобі тре робота, а робота шукає тебе.
    Точно у кодеров крышу посносило и чсв улетело в космос. Посмотрим, будет ли так всегда и что потом, если (точнее когда) ситуация измениться, будут кодеры говорить

    я вже разів 5 міняв кваліфікацію,
    наразі 8-й рік в отсорсі, політ нормальний, ситація стабільна

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

    Забавная на ДОУ, все-таки, публика. С одной стороны, с трудом верят в компенсации $250k+, а с другой заявляют, что нет, на 6-тичасовое интервью не согласны. Да, в Киеве можно было получить $5k / мес после получасового интервью по телефону, но в Долине процесс дольше и серьезней.

    панель на 4+ часа придется проходить
    В случае прохождения кандидата ждет хороший денежный приз в виде сайн-он бонуса
    нет ли здесь какой-то связи?

    нема, то щось пан про своє, я про звичайний Самсунг в Польщі

    бсолютна більшість коду — унилий ентерпрайз, в якому важливо знати зовсім інші речі.
    так, наприклад, софтскілс і «не вигоріти»
    хешмапи з хештейблами
    пля,
    а я думав «реверс строки» вінець дибілізму на інтерв"ю

    а как вам повороты красно черных деревьев на время?

    да ніяк, для мене це звучить як набір слів, тобто кожне слово окремо я розумію, а разом — виходить якась нісенітниця.
    слава Богу, що я не фронендер -)

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

    если человек написал в резюме angular.js то его и спрашивать будут по angular.js не могу утверждать точно но мое мнение что в большинстве случаев фронтэндера не будут долбить олимпиадными задачками. Олимпиадные задачки больше дают прикладникам ито начинающим(C#, C++, Delphi).

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

    Можливо кандидат їм настільки сподобався, що вони приміряли його не на фронтенд. Або ж він згадав про свою освіту (не як фронтендер) і вони вирішили перевірити наскільки він знає елементарне (як для профільної освіти)

    Спершу сподобався а потім ні і саме тому вони вирішили його не наймати? Десь видають дипломи розробника сайтів?

    Десь видають дипломи розробника сайтів?
    Ми ж тут холівар розвели, бо обурені, що йому задають питання якраз не як «фронтендеру»

    мені цікаво, а що вам така статистика дасть?

    Якщо харять чувака на $qualification, то і питать треба по $qualification. Всі інші знання просто йдуть в плюс. Типу от яка няша, не тільки вміє формочки верстать, а й дерева балансувать.

    Тут є інша крайність, коли принципово хочуть знання (комерційний досвід N років) по $someshit, при цьому $someshit є нічим не видатною лібою для якоїсь дуже вузької задачі. Або одним з декількох подібних рішень, і досвід в інших подібних ігнорується.

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

    Яка саме база має бути то окреме питання. RBT це мабуть занадто, просто тому що це не базові знання. BFS мабуть ні.

    Підписатись на коментарі