Pull to refresh

Comments 588

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

Вот что меня смущает что в этой истории, а что имеется в виду под инвертировать бинарное дерево?

Типа буквально из дерева "слева меньше - справа больше" получить дерево "слева больше - справа меньше"?

Это разве не решается буквально в духе?

void f(node* p) {

if (p == nullptr) return;

swap(p->left_ptr, p->right_ptr);

f(p->left_ptr);

f(p->right_ptr);

}

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

Подробности не известны. Не факт что знаний не хватило. Когда разумным людям, не привыкшим к корпоративным процессам, и ожидающим разумные задачи, дают такую фигню, то многие удивляются и в конце концов отваливаются по culture fit (а кто-то хлопает дверью и уходит с интервью). Он потом из Эппл ушел после пары месяцев, возможно не привык к такому булшиту.

Возможно, стоит примкнуть к радикалам? У Столлмана и FSF работёнку попросить.

Пойду ему напишу.

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

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

Задачка обратить связный список, это не задачка на знание алгоритмов. Это простенькая проверка на то, умеешь ли ты программировать. Практически никто не помнит наизусть, как обратить связный список. Но этот алгоритм очень простой, и его нужно придумать самому, просто чуть пошевелив мозгами. Для того подобные вещи и спрашиваются, проверить, насколько умеет соискатель, собственно, программировать. Да, кто-то хлопает дверью, но опять же таки, утверждение "ну и хорошо, что вы не попали в эту компанию", оно двухстороннее. Для компании тоже хорошо, что к ним не попал человек, эго которого бунтует от простой программисткой задачки. Сегодня он психанул за связный список, завтра будет рассказывать, что не его царское дело делать вот этот REST-сервис, потому что ему не интересно.

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

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

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

Но это "так принято" и есть буллшит.

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

И вспоминаем что на 4pda вполне себе есть темы по обсуждению как из операторов выбить (обычно через fake mnp) интересный непубличный тариф с опциями.

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

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

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

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

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

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

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

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

Да, мне не нужны специалисты по прохождению собесов. Просто возмутительно!

мне не нужны специалисты по прохождению собесов

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

Лично я не вижу ничего плохого в подготовке к собеседованиям.

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

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

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

Берите первого, кто придёт.

Когда-то давно так и делали. Но сейчас очень много залётных.

нам тут работу работать надо

Ну так и вопросы на собеседовании задавать надо по работе. Что за неподобающее выражение «истинную картину о кандидате» вы придумали? А какая бывает «неистинная картина о кандидате»? Что вы думали, что кандидат мужчина, а выяснилось, что он женщина на основе технических вопросов? (Сарказм, ничего против женщин не имею)

Благо … типа разворачивания списков не требуем, всё по делу

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

«Прапорщик останавливает солдата и говорит:

- товарищ солдат, поднимите танк

Солдат заходит спереди танка, пыжится…

- ы-ы-ы… Никак, товарищ прапорщик!

- попробуй сзади?

-ы-ы-ы… Никак, товарищ прапорщик!

-Ну, а ... ты думал - 20 тонн!»

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

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

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

Нет конечно. Я и говорю, достаточно поговорить по-душам с таким кандидатом, чисто чтобы убедиться что не наврал, и ВСЁ. Никакие деревья инвертировать не надо!

Сказал человек с ником LeetCodeMonkey

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

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

Ну, если чо, я вопросов вообще не задаю. Я не школьный экзаменатор. И нам нужны люди котороые дело делают, а не [подготовившиеся] теоретики и прочие разворачиватели строк, списков и деревьев. Собес прямо и по делу: как будешь решать наши проблемы. Пообщаемся, поймём наш ли это человечек. Кандидат тоже не в обиде когда понимает что связываться с какой-то для него хренью нафиг ему не впёрлось.

как будешь решать наши проблемы

Тогда это собеседование наоборот: кандидат спрашивает "расскажите о ваших проблемах", а вы пытаетесь рассказать понятно, но быстро. Если нанимаете рок-звезду - это разумно. А если джуна? ;)

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

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

Людей если не с идеальным, то близким опытом на рынке сейчас предостаточно.

Если у вас за забором очередь - есть и другие способы отсеивания неудачников , кроме нудного собеседования ;)

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

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

Если кандидат после такого вопроса убежал в слезах и панике - это же прекрасно.

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

, либо обьяснит почему ее не нужно решать ;)

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

К сожалению, убегают самые лучшие.

Откуда вы знаете, что это были лучшие?

К сожалению, убегают самые лучшие.

Нет, убегают самые нервные. Да, иногда они и программировать умеют, но то такое.

те очень хорошо подготовятся

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

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

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

Это явление называется жоп-хоппинг. Да, работать и не собираются.

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

Я читал про такое ;) Умный индус проходит собеседование вместо посредственного индуса, тот получает зарплату пару месяцев, пока не выгонят, но как умый ;)

А другие варианты Вы не рассматриваете?

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

2. Кандидат регулярно заходит на форум. На прошлой неделе помог кому-то как раз такую задачу решить.

3. У кандидата хорошая память. В институте решал такую задачу и до сих пор помнит.

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

И так далее...

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

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

Это подлые люди по жизни и лучше сразу уходить. Компания тест не прошла.

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

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

>Могут "позволить" конечно, хотя и потеряют лучших кандидатов

С чего вы взяли что потеряют?

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

>не просто потеряют а отфильтруют.

С чего вы взялито? Если человек не знает что такое бинарное дерево - он профнепригоден. Так что фильтруется тот, кто и должен фильтроваться.

а отфильтруют

Кого? Тут по сути три варианта:

  • Человек не может инвертировать бинарное древо. Т.е. написать вот эти три строки:

[node.left, node.right] = [node.right, node.left];
if (node.left) invert(node.left);
if (node.right) invert(node.right);

В таком случае я бы не стал его брать на позицию middle+. Ибо то что выше это элементарный код.

  • Человек может инвертировать бинарное древо. Просто не знает, что такое древо, что такое бинарное, и что такое инвертировать. Но вместо того чтобы уточнить, устраивает цирк. В таком случае я бы его брать не стал. В реальных задачах такой кудесник такого учудит, постеснявшись задать пару вопросов... Сталкивался с такими. Полпроекта перепишут в худшем виде, там где нужно было задать пару вопросов и исправить три строчки. Это адъ.

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

умственную изворотливость

В чём заключается умственная изворотливость вышеуказанных трёх строк кода?

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

Если нет - то зачем вы тратите время свое и человека, вместо спросить применяемое, которое едва успеваешь прошерстить.
Оно конечно от области и позиции зависит,- но если просто корпоративная и бизнес разработка, а это 99.9% - зачем?.

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

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

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

Помнить а даже и знать многое ненужное - незачем. Нужно знать нужное. об остальном иметь общее представление. Голова не резиновая время личное - не бесконечное.

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

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

  • Рекурсии - 1+ за год (обработка любой иерархической структуры)

  • Swap переменных - 1+ за год (например dnd)

но если просто корпоративная и бизнес разработка, а это 99.9% - зачем?.

Зачем нужны рекурсии? Зачем нужны переменные? Зачем нужны деревья? WAT? Вы прямо сейчас наблюдаете перед глазами древо комментариев.

и позиции зависит, разумеется, в ресёрче

В "ресёрче" вас не будут спрашивать инвертирование бинарного древа. Вам дадут куда более серьёзную задачу, на какой-нибудь disjoint set, sqrt декомпозицию или какой-нибудь quick select. А на 2+2 (инверт. бин. древа) отвлекаться не будут.

у нас одна схема на всех и знать надо еще и квантовую механику с переподвывертом

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

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

Ну и если вы не применяете по сути именно это - нафига требуете от других? когда 9999999% он будет занят не этим, а сортировка - делается не вручную.
А если надо - садимся и изучаем лучшие практики, да и просто копипастим если одноразовая фигня, и едем дальше..

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

Это - структура и теория обработки с этим связанная.

Нет. Вы вероятно путаете binary search tree и просто binary tree. К первому полагаются множество хитрых алгоритмов, которые гарантируют правильное bigO на разных видах операций. Второе это просто напросто любое древо где у ноды может быть 0, 1 или 2 ребёнка. И на этом всё. Это просто абстракция.

Собственно основываться только на трех строках -выглядит бесполезным

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

  • Знает ли человек терминологию. Не криминально, просто звоночек "не вайтишник ли он?"

  • Умеет в примитивную логику

  • Умеет в рекурсию

  • Умеет свапать переменные

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

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

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

зачем?

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

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

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

пример нерелевантен

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

Вы реагируете на эту тривиальную задачу, словно вас просят "напишите реализацию поиска оптимального маршрута на взвешенном направленном графе с 8 миллиардами звеньев". А на самом деле вас спрашивают "как надеть носок?".

пример нерелевантен.

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

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

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

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

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

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

а вы оговариваете те навыки?

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

Вы точно помните что учили хотя бы в школе

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

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

Конечно. Программист должен уметь программировать и решать поставленные задачи.

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

Вы собеседования проводите или так, теоретизируете? 

Нанимал в уйме компаний (штаты). И поначалу занимался тоталитарной диагностикой скиллов. После чего мог рассказать все о человеке - что знают и чего не знают и насколько. Как после жесткой медкомиссии в космос.
Russians are the scariest white peoples as interviewee - нет сострадания.
Я почему то думал что после интервью и рекомендовав, отвечаю за рекомендацию этого человека - как командир за принятого солдата в спецназе в 42 году. Что было неверно.
Сменил русский подход на американский, и целью стал найм на позицию, а не диагностика непонятно для чего. Полезней для бизнеса и для людей..Справляться с работой это уже его задача..

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

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

Мне всё равно, знает ли программист конкретные фреймворки и библиотеки, с которыми мы работаем.

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

Сколько вы лично готовы платить мидлу+?

В наше время это уже навыки уровня Junior-. Судя по требованиям на стажировку в крупные компании, куда я пытался пройти.

А все таки зачем? Пришел вот человек на должность, не знаю... Sre/dba, он умеет тюнить систему, базы. Зачем ему ещё и графы знать?

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

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

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

Именно поэтому человечество придумало тесты и экзамены - вместо того, чтобы пытаться напрямую оценить Х (что невозможно в силу заданных ограничений), мы пытаемся оценить Y такое, что X => Y, таким образом, !Y => !X, что позволяет отвергнуть нулевую гипотезу.

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

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

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

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

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

Давайте я такую аналогию приведу - вот есть Емеля, который из говна и палок построил мост через деревенскую речку. У Емели нет образования, нет инженерных знаний, нет вообще понимания, как работают инженеры. Но он построил мост, мост стоит. Емеля приезжает устраиваться в КБ, инженером. Ему задают пару вопросов - понимают, что он не способен работать инженером в силу отсутствия базовых знаний. Да, он может построить небольшой мост через небольшую речушку - но не может работать в КБ, он просто не понимает рабочих процессов. Ему могут предложить какую-нибудь вакансию уровня джуна (парень способный, а там мби чему-то и научится, поработав с годик в режиме "принеси, пойди, подай, пошел нахер не мешай") - но в рассматриваемом случае Емеля явно не на джуна подавался, и людям нужен был специалист, а не деревенский самоучка (пусть и перспективный).

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

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

Скорей сам подход к интервью устарел супротив что раньше было "программист" как нечто универсальное и высоколобое. И другие высоколобые оценят собрата в поединке, принимая в мушкетеры.
Полезней аккуратное дифференцирование и тестирование и анализ после, а не за 40 минут принять решение о найме человека на большие деньги. Правда рисков немного, как правило .
С другой стороны эвон в армию берут уже не только качков со 100% зрением но и толстых и женщин и близоруких. Армия поменялась и требования стали иные - рембо быть не обязательно. Да и рембов на всех не хватает.
А тут в джедаев играют - диплом обязательно то се, математики разные. Когда язык программирования и навык современный человек может сесть выучить и делать - больше не сможет но часто и не требуется. Захочет дальше ширше -еще выучит. Куда денется, если альтернатива невыгодней.
Раньше в водители тоже отбирали тестами- а сейчас водить умеют все, сдал круг по парковке и 10 минут с инструктором и все, никаких ширин протекторов и заездов на горки задом.
И никто не знает что такое сцепление, зачем на панели индикатор оборотов и температуры масла и как водить не коробку автомат. Потому что суть цивилизации инкапсулировать сложности и давать людям делать лишь полезности, избавив от лишнего. Так вижу.

Я кстати никак не пойму - тут все время говорят -мидл джун -что это значит? как дух и черпак? А синьор типо пахан и бугор, умеет разруливать по понятиям? Звучит как то оскорбительно и унизительно. Инженер недоросль второго сорта.
Или прям название позиции публикуют "инженер-джун"?. И на интервью говорят - ты будешь "джуном"? Чем то восточным тянет, джин и ифрит. Мальчик подносить щербет.
Непонятно нифига зачем иерархическое, если нет юридически. Берут же на должность под определенные обязанности. Старый молодой опытный или нет, это максимум ожидания и рейт, да и то не везде Работа одинаковы для всех на позиции - либо делает либо нет. Сеньор просто технический начальник(супротив административного), как в советское время был ведущий и главный инженер. А не мера превосходства.

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

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

Берут же на должность под определенные обязанности.

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

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

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

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

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

У нас нет позиций "джунов " есть софтверный инженер и грейд, есть софтверный девелопер и левел. Грейд и левел предполагают ожидания и возможную сложность поручаемых задач в рамках обязанностей, - но не обязательно, это не оговаривается. Характер работы - позицией.
И я не знаю что такое "специалист" и чего он хочет - подходит по требованиям к скиллам, может делать работу, и ладно. Моя задача отфильтровать тех кто заведомо не сможет, не справится, или будет проблемен ну и проверить указанные скиллы на всяк случай. Указанные. Причем это и необязательно - могу просто поговорить о жизни. Его зарплата вообще не моя забота.
Собственно даже если будет говорящая собака - я вежливо побеседую, не отвергая, главное чтоб HR одобрил.

Эээ, у вас романтическое представление о пилотах. Не командир получает как тракер, даже меньше. что то от 40 50 штук - у нас уборщицы зарабатывают столько.

Мы разве обсуждали зарплаты пилотов?

Как именно нанимают пилотов точно не знаю - но налет часов, лицензия и и сертификация.

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

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

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

И я не знаю что такое "специалист"

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

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

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

Чего тут обсуждать-то?

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

Ну и что тут хорошего? Зачем давать права всем - это какой-то признак демократии? Офтоп, конечно, но задело.

это не просто хорошо - это к чему привел прогресс и развитие цивилизации. А значит правильно. И 300M+ человек вполне себе ездят уже 100 лет.
Я больше скажу - тоже не знаю зачем на панели обороты..Температуру о я еще как то условно могу представить, хотя тоже - она никогда не меняется..
.

Я больше скажу - тоже не знаю зачем на панели обороты.

Чтобы ездить на механике.

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

За температурой следит термостат, с чего бы ей меняться.

За температурой следит термостат, с чего бы ей меняться.

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

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

Пару минут достаточно же?

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

Для этого есть красная лампочка ;)

Если какое-то действие автоматизировано - нет особого смысла за ним следить постоянно.

Для этого есть красная лампочка ;)

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

Если какое-то действие автоматизировано - нет особого смысла за ним следить постоянно.

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

если у вас такая проблема произошла, и вы хотите всё-таки куда-то доехать

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

То будете стоять и ждать эвакуатор.

Не всегда. Как, например, я два года назад в Крыму ночью с женой и ребёнком (спасибо козлу, который мне печку до этого чистил какой-то агрессивной дрянью, которая её проела). Так вот, я не буду ждать эвакуатор холодной ночью на перевале над Алуштой. Я поехал. Аккуратно, остановился, открыл капот, остыл. Снова завёл, поехал, проехал пару километров, остановился, открыл капот, остыл. И доехал, медленно, но тем не менее, привёз семью домой. Пусть этот случай один на десять тысяч, но тем не менее, он с лихвой оправдывает наличие этого индикатора. Огнетушитель тоже в большинстве случаев висит/лежит/стоит без дела, но те весьма редкие случаи, когда он нужен, оправдывают всё его бездействие.

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

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

Если машина сломалась- вызвал тех помощи и сидишь куришь. Приедут -сделают/эвакуируют.

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

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

этого просто не существует и такой задачи тоже. Двигатель - вечен. уже десятки лет. так. Не ломается и срок его службы больше жизни машины.Гарантия на powertrain 10 лет и 100k намекает.
Даже фильтры топлива менять уже не надо - ну максимум за десяток-два лет раз, 50k-100k. Масляный, несмотря на рассказы механиков раз в 5 тыщ, а согласно мануалу - не помню, но кажется тыщ 15-20.

срок его службы больше жизни машины

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

>срок его службы больше жизни машины

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

логично. :-)

Двигатель - вечен. уже десятки лет. так. Не ломается и срок его службы больше жизни машины

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

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

Чтобы ездить на механике.

Все машины кругом почти 100%, - автоматы, уже много много лет. И на стике большинство просто не умеет. А индикатор стоит. И уже никто не знает зачем..

За температурой следит термостат, с чего бы ей меняться.

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

Все машины кругом почти 100%, - автоматы, уже много много лет. 

В Европе наоборот. Какой-то культ механики. Особенно в случае б\у машин.

Все машины кругом почти 100%, - автоматы, уже много много лет.

Я в Европе живу. Здесь крайне мало покупают автоматы, любят контролировать езду (для меня это тоже загадка, зачем, но вот так). Причём это не особенность какой-то одной страны, а везде, не суть важно, Испания там, Франция или Дания.

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

Средний ирландец в полтора раза богаче среднего американца, и вода у них практически бесплатная, при этом они все равно ездят на механике :Р

Приглашаю повторить это на АКПП

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

несколько раз

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

в полсотне километров от цивилизации ночью в мороз.

Да. Но зачем??

Но зачем??

Какая разница? За продуктами ехать или за лекарствами. В райцентр съездить или к друзьям. Наша планета несколько больше, чем Вы себе представляете.

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

на электросамокате

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

нужны только полноприводные джипы

Я где-то употребил слово "только" или "все"? А вот отвечал я на утверждение, где фигурировало и "все" и "100%". И продолжаю утверждать, что лично знаю сотни людей, которым МКПП необходима. Некоторым из них - на уровне выживания.

сотни людей, которым МКПП необходима

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

А я разве утверждал обратное? В отличии от утверждения, что "всем" "100%" достаточно АКПП, которое я оспорил на личном опыте, доказав, что уже не "100%" и не "всем".

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

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

Не понял Вашу мысль. Предлагаете сменить мне L200 на гусеничный вездеход? Но там тоже АКПП ну будет.

Какая разница? За продуктами ехать или за лекарствами. В райцентр съездить или к друзьям.

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

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

В отличии от утверждения, что "всем" "100%" достаточно АКПП, которое я оспорил на личном опыте, доказав, что уже не "100%" и не "всем".

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

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

https://habr.com/ru/news/771822/comments/#comment_26129570

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

Вы в Африке что-ли живете? При хорошем ветре со снегопадом Вас за ночь "так заровняет, что не надо хронить" (с)

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

Раскачаться на автомате можно, хоть и сложнее.

Вопрос не в сложности, а в том, что редко какая АКПП вынесет полчаса езды на таких раскачках, как у меня на видео. Просто сдохнет прямо там, на месте. Тогда как на МКПП я такое проделывал уже сотни раз без видимого ущерба для неё.

Вы в Африке что-ли живете? При хорошем ветре со снегопадом Вас за ночь "так заровняет, что не надо хронить"

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

Вопрос не в сложности, а в том, что редко какая АКПП вынесет полчаса езды на таких раскачках, как у меня на видео.

А ей-то какая разница? В ней задняя передача включается такими же валами и шестернями, как и на МКПП, из того же материала.

Это и в московских широтах нечто из ряда вон выходящее.

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

Во-вторых, даже в Московской области подобные бураны наблюдаются регулярно. Достаточно всего ~15-20 мм осадков с ветром, чтобы в поле занесло машину полностью. При этом у себя на даче в Тульской области я помню, когда за ночь(!) намело сугробы выше двухметрового забора. Он просто скрылся под снегом.

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

Тем более что это за снег такой, что засыпает полностью и со всех сторон?

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

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

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

Вы предлагаете

Я не предлагаю, а утверждаю, что для целого ряда водителей МКПП - необходимость. Но при этом ни в коем случае не употреблял слова для "всех" и "100%", в отличии от того, кому я отвечал.

полноприводный пикап

Это и есть L200 )

самостоятельно чистить дорогу

Не реально. Такие снега трактор несколько часов чистит. На моей памяти - было почти 8 часов.

возьму лопату и расчищу место для разгона

Хотелось бы на это посмотреть. Там почти километр до трассы. На видео был конец. А вот начало: https://youtu.be/DLgOQfB3NsA?si=cwhsZC5qvmh-QKte

если вы живёте

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

Там почти километр до трассы.

Чем круче жып, тем дальше идти за трактором ;)

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

Но при этом ни в коем случае не употреблял слова для "всех" и "100%", в отличии от того, кому я отвечал

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

Простите, я не знал, что русский для Вас мало знаком. В фразе "все машины кругом почти 100%, - автоматы", слово "почти" после "все машины кругом" семантику не меняет. Вот если бы было хотя бы "почти все машины - автоматы" или "почти 100% машин - автоматы" - другое дело, хотя и ложное. Хотя бы потому, в мире сейчас почти треть новых автомобилей продаются именно с МКПП. В США намного меньше, 1-2%. В Южной Америке, Африке, Индии, Пакистане и т.п. - намного больше. В РФ, Китае и Европе - как раз треть.

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

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

А по поводу зимы - в моём регионе температура ниже +5 бывает пару недель в году. Снег не каждый год выпадает в принципе.

МКПП дешевле

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

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

Основные причины выбора МКПП (по крайней мере в Польше, где имею честь проживать):

  • дешевле автомобиль

  • можно выбрать более дешёвую комплектацию

  • дешевле сервис

  • меньше жрёт топлива

Поэтому основные покупатели - флоты компаний, всякие там торговые агенты и т. п.

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

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

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

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

где больше автомобилей, особенно новых, в деревнях или в больших городах?

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

Потому, что там где живу, нет зимы как таковой и дороги чистят всегда.

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

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

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

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

Не отрицаю преимуществ МКПП в определённых условиях, но готов спорить, что в Европе автомобили с МКПП в основном из-за этих преимуществ покупают. Нет, в основном покупают из-за дешевизны и простоты обслуживания. А реально по бездорожью - дай бог 1-2% ездит.

Почему софистика? Наверняка же есть статистика о том, в каких населённых пунктах больше автомобилей ставят на учёт.

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

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

У меня дети в свое время требовали остановиться в туалет чуть ли не каждые два-три часа. За одну поездку из Москвы в Крым и обратно останавливался на обочине раз двадцать. За год - больше сотни раз. Я таких застрявших вижу каждый месяц, если не чаще. Если Вы действительно выезжаете за город, находясь в пути свыше двух-трех часов, раз в несколько лет, то легко поверю, что Вам АКПП сподручней. Но, как я указал выше, такое ощущение, что половина Москвы стоит по два-три часа в пробках по пятницам в дачный сезон.

Я не пытаюсь спорить, что для обывателя, использующего автомобиль 99% в городе и на асфальте, МКПП не нужна. К тому же далеко не все умеют ей пользоваться. Вот Вы явно не умеете, если для Вас "дёргать ручку коробки" сложно. Я вообще этого не замечаю, так как это происходит полностью рефлекторно. Ну как движения рук во время пешей прогулки )))

Вот Вы явно не умеете, если для Вас "дёргать ручку коробки" сложно

Диагноз по аватарке? Я на механике 12 лет откатал если что, на разных машинах. С прошлого года перешёл на АКПП и назад не хочу, потому что не понимаю - зачем?

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

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

За одну поездку из Москвы в Крым и обратно останавливался на обочине раз двадцать

Хм, у вас нет туалетов на автомагистралях? О_о
Я езжу регулярно (пару раз в год) на расстояния свыше 1ткм за один присест. Если это автомагистраль - то там обычно каждые 20-30 километров туалеты, и на обочину съезжать приходится крайне редко.

Диагноз по аватарке?

По фразе "дёргать ручку коробки нужно каждый день". Когда это доведено до автоматизма, то это уже не замечаешь.

Кстати, сейчас хоть появились АКПП, на которых не рискуешь перегреть тормоза в горах?

12 лет откатал

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

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

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

Хм, у вас нет туалетов на автомагистралях? О_о

Я бы не сказал, что их совсем нет. Например, если на М2 их нет вообще, то на М4 понастроили. Но вот заходить туда я точно не советую. Тем более, заводить туда детей. Достаточно остановиться рядом, чтобы сразу же захотелось уехать подальше. Туалеты так же есть на крупных АЗС, но там в курортный сезон можно больше получаса в очереди простоять. Особенно в женский.

каждые 20-30 километров

Возьмем, для примера, только М4. Спасибо, что объезд Лосево и Павловска построили. А до этого там можно было полдня простоять, передвигаясь со скоростью черепахи. Неминуемая пробка еще осталась перед Каменск-Шахтинским и новый мост через Северский Донец пока даже не планируется.

На М2 сейчас взялись мост через Оку реконструировать. Дело, конечно, хорошее, но туда я даже сейчас в ноябре рискую соваться только после 23:00 до 6:00.

У Вас что-ли пробок не бывает на трассах?

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

А, ну я понял, "сперва добейся". У меня не миллион, конечно, а около 250к, куда ж мне до умения пользоваться...

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

У Вас что-ли пробок не бывает на трассах?

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

Хотя вот вспомнил, в Австрии туалет на трассе - там хотели 2 евро, кажется. В итоге у них за углом всё обосрано, извините ?

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

Вот у меня сейчас на парковке возле дома стоят Renault Clio, Skoda Citigo и Fiat 500s. Что-то берут меня сомнения, что их покупали, чтобы по бездорожью и сугробам гонять. И думаю, что будь у владельцев больше денег на саму покупку и на последующее обслуживание - они бы купили автомобили с комплектацией получше и вероятнее с АКПП.

За температурой следит термостат, с чего бы ей меняться.

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

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

Впрочем, на дизеле я проблему с излишним охлаждением двигателя поймал и при -30, но на скорости 120 км/ч (отлично почищенная автомагистраль). Пришлось ехать 70-80 км/ч до ближайшей АЗС, где на помойке нашел картонку, решившую проблему )

это не просто хорошо - это к чему привел прогресс и развитие цивилизации

Блага цивилизации не должны раздаваться всем подряд, просто по праву рождения. Им нужно соответствовать. Не соответствуешь - живи как неандерталец.

Блага цивилизации не должны раздаваться всем подряд, просто по праву рождения. Им нужно соответствовать. Не соответствуешь - живи как неандерталец.

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

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

Не я, а мои родители. И за это им мое уважение, да.

Предлагаете вернуть сословия? Сын дворника может стать только дворником.

Сын дворника может стать только дворником.

Потому что у генерала есть свой сын (ц)

Предлагаете вернуть сословия? Сын дворника может стать только дворником

Связь ваших слов с моими не уловил. Любой, кто соответствует - достоин, кто не соответствует - нет.

Не я, а мои родители. И за это им мое уважение, да.

Вы уже забыли что писали час назад?

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

Вы предложили смотреть на его родителей. Это типичные сословия

Логическая ошибка.

повторюсь

Что за ерунду я сейчас читаю? Я что, сказал, что мои родители "купили" мне беззаботную жизнь? Нет, они почти всю жизнь прожили бедно, отец инженер, мать медсестра (поэтому не рассказывайте мне сказок про СССР). Но они научили меня жить цивилизованно, не быть преступником, не красть, не обманывать и т.д. Поэтому я, когда сдавал на водительские права, на взятку не скидывался (поэтому пришлось пересдавать вождение, но это уже совсем другая история).

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

Я ваши сообщения процитировал. Перечитайте ветку еще раз.

Блага цивилизации не должны раздаваться всем подряд, просто по праву рождения. Им нужно соответствовать. Не соответствуешь - живи как неандерталец.

Не я, а мои родители. И за это им мое уважение, да.

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

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

Отлично. Хотя бы с детьми вы признали ошибку.

Теперь стоит разобраться что такое соответствовать?

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

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

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

Ошибки не было, так как про них речь и не шла.

Вот есть почти преступник

Что значит почти? Если нарушил - преступник, не нарушил - нет.

Не соответствует же?

Если преступник - не соответствует. Не преступник - соответствует.

Запретить ему лечение, образование и что вы там кстати еще хотите запретить?

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

Вы точно писали что вам положено благодаря родителям. Ладно проехали. Все детям положено.

С более строгими наказаниями за нарушение ПДД есть проблемы. Человек чтобы избежать чего-то пожизненного пойдет на все или почти на все. Терять то нечего. Хотите коррупцию с гонками и перестрелками на улицах? В общем ваше дело. Я такого не хочу, например.

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

Критерии «хорошего» человека и механизм ограничений все еще интересен. Если там есть что посерьезнее наказаний за переход улицы на красный.

С более строгими наказаниями за нарушение ПДД есть проблемы... Терять то нечего ...

Нет проблем, если это будет не одна ступенька, а постепенный (но крутой рост).

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

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

Да, каюсь, пропустил...

Критерии «хорошего» человека и механизм ограничений все еще интересен. Если там есть что посерьезнее наказаний за переход улицы на красный.

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

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

Всю семью до седьмого колена казнить или как?

Нет проблем, если это будет не одна ступенька, а постепенный (но крутой рост).

Ровно та же проблема.

Допустим всего 1% нарушителей решит что расстрелять вот этот патруль выгоднее чем пожизненное лишение прав. Окей, они с некоторым шансом отсидят лет 7, вероятнее всего выйдя досрочно через 5. Но права то останутся. И 5 лет посидеть это не пешком до конца жизни ходить. 5 лет это хотя бы можно представить и пережить.

Да, каюсь, пропустил...

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

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

Вы так и не принесли списочек. Вместе с наказаниями и способа их применения.

ПДД это давно изученная и скучная тема. Текущих российских наказаний на самом деле более чем достаточно. Посмотрите как ездят в Москве. Почти идеальные водители же.

Всю семью до седьмого колена казнить или как?

Ну типа...

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

Простите, но у вас расстрел патрульных наказывается немного строже чем нарушение ПДД? Странно...

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

Простите, но для меня это очередная повесточка. Серьезно относиться к таким "исследованиям" просто невозможно.

Вы так и не принесли списочек

Так и цели такой не было.

Вместе с наказаниями и способа их применения

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

ПДД это давно изученная и скучная тема

Мое обсуждение началось с этого:

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

Если это и есть итог вашего "изучения" то я против и требую пересмотра (с).

Ну типа...

Далеко пойдете с таким подходом. Массовые казни непричастных это прямо путь к успеху.

Простите, но у вас расстрел патрульных наказывается немного строже чем нарушение ПДД? Странно...

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

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

Простите, но для меня это очередная повесточка. Серьезно относиться к таким "исследованиям" просто невозможно.

Первые работы по теме неотвратимости наказаний и их силы появились задолго до появления понятия повесточка. 70тые это 50+ лет назад.

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

Вы начали с лишения людей каких-то (я так и не понял каких) прав за нарушение каких-то (я так и не понял каких) правил. А пришли к массовым казням за нарушение ПДД. Я не знаю что спросить.

Если это и есть итог вашего "изучения" то я против и требую пересмотра (с).

Как показывает статистика смертей на дорогах текущие методы аттестации водителей достаточно хороши. Если каждого учить 100+ часов качественно водить в экстремальных ситуациях думаете статистика смертности на дорогах изменится? Я думаю что нет.

Далеко пойдете с таким подходом. Массовые казни непричастных это прямо путь к успеху.

Ну вы сами то хоть свою демагогию отслеживаете? Когда это речь шла про наказание невиновных?

Чем страшнее преступление - тем сильнее наказание

Я об этом же уже говорил - я согласен с этим утверждением.

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

В сухих математических выкладках - никак. А на практике наказание должно быть еще более страшным, чтобы отбить желание совершить это правонарушение у 99% людей. 1% это неисправимые, по любому получат свою премию Дарвина.

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

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

Первые работы по теме неотвратимости наказаний и их силы появились задолго до появления понятия повесточка. 70тые это 50+ лет назад.

Слова нет, а понятие есть - это было понятно уже тогда. Ну и мы видим во что превращаются Штаты (например) с таким подходом. Видео с улиц Филадельфии, Сан-Франциско и Нью-Йорка я надеюсь вам скидывать не надо?

Я не знаю что спросить

Но я знаю, что ответить)

Если каждого учить 100+ часов качественно водить в экстремальных ситуациях думаете статистика смертности на дорогах изменится?

Если к этому ужесточить наказания (с), то 100% да!

Ну вы сами то хоть свою демагогию отслеживаете? Когда это речь шла про наказание невиновных?

Я прямо вас цитирую. Давайте еще раз протицирую. Буквально день назад.

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

- Всю семью до седьмого колена казнить или как?

- Ну типа...

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

В сухих математических выкладках - никак. А на практике наказание должно быть еще более страшным, чтобы отбить желание совершить это правонарушение у 99% людей. 1% это неисправимые, по любому получат свою премию Дарвина.

Вы снова забыли то что писали день назад.

Ввели вы пожизненное лишение прав за нарушение ПДД, Любому нарушителю терять нечего. Хуже уже ничего не будет. Устроить гонки с полицией прям милое дело. При наличии оружия (его и так дофига на руках, это не проблема) расстрелять патруль. А чего? Терять все равно нечего. А так может и прокатит.

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

Много вам и не надо. 1% или 0.1% от текущих нарушителей которые решать погоняться и пострелять на улицах ухудшат общую обстановку на дорогах. А вам их даже наказать нечем. Или все таки массовые казни непричастных как вы предлагали день назад?

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

Много и не надо. Раз в день гонка с перестрелкой в Москве нормально?

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

Слова нет, а понятие есть - это было понятно уже тогда. Ну и мы видим во что превращаются Штаты (например) с таким подходом. Видео с улиц Филадельфии, Сан-Франциско и Нью-Йорка я надеюсь вам скидывать не надо?

Вы прям как первый канал. Города и города. Есть плохие районы, есть нормальные, есть другие хорошие города. Все как везде.

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

Ладно, спишем на недопонимание)

Ввели вы пожизненное лишение прав за нарушение ПДД

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

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

Конечно! Но это только для легких нарушений.

1% или 0.1% от текущих нарушителей которые решать погоняться и пострелять на улицах ухудшат общую обстановку на дорогах

Если учесть, что у меня все таки есть Scala шкала наказаний, то этих (пусть даже 10%!) быстро утилизируют навсегда.

А вам их даже наказать нечем. Или все таки массовые казни непричастных как вы предлагали день назад?

Непричастных не надо! Надо только причастных. Как именно? А вы не догадываетесь?

Раз в день гонка с перестрелкой в Москве нормально?

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

Да-да это обычный человек который зазевался и проехал на красный

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

Вы прям как первый канал. Города и города. Есть плохие районы, есть нормальные, есть другие хорошие города. Все как везде

Не как везде, раньше такого не было. А потом наступила эра декриминализации правонарушений. Вам нравится? Мне категорически нет. И да, я против совка (на всякий случай).

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

О, у вас уже шкала появилась. Так и до текущей схемы дойдете. Она совсем не на пустом месте появилась.

Нарушения ПДД бывают разные. Прямо совсем разные. Начнем с нарушения разметки. Ну или невключения поворотника. Или даже непропуск автобуса от остановки. 500 рублей нормально же? Общественно неопасно, встречается сверх массово.

Продолжим небольшим превышением. На 1кмч выше того что можно или не наказывается, не важно. Задумался, заболтался, со всеми бывает. Стаститика говорит что каждый много ездящщий водитель в Москве пару таких превышений в год совершает. 1000 рублей вроде нормально? Превышение совсем небольшое.

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

И так далее.... Вы даже не поверите сколько всего нарушают. И оно разное, совсем разное.

+3 дня бегать по инстанциям

Какая красота. Вас прям хорошо видно вот пот такому. Мол не только оштрафовать, но и унизить обязательно надо. Прям сразу видно. Хорошо что вас никогда не допустят ни до чего кроме текстов в интернете.

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

Сейчас их абсолютный ноль. Меньше невозможно в принципе.

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

Непричастных не надо! Надо только причастных. Как именно? А вы не догадываетесь?

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

Не как везде, раньше такого не было. А потом наступила эра декриминализации правонарушений. Вам нравится? Мне категорически нет. И да, я против совка (на всякий случай).

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

О, у вас уже шкала появилась

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

Общественно неопасно, встречается сверх массово

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

Мол не только оштрафовать, но и унизить обязательно надо

В чем проблема "унизить" правонарушителя? Да и в чем тут унижение? Все в очередях стоят - пусть и нарушители постоят.

Хорошо что вас никогда не допустят ни до чего кроме текстов в интернете

В бога начали играть? А он не обидится?

Сейчас их абсолютный ноль. Меньше невозможно в принципе

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

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

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

Рынок отрегулирует

С чего вы взяли? Человеческие жизни вообще-то подороже денег будут.

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

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

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

Это не так работает.

Люди постоянно чего-то нарушают. Сюрприз! И вся система заточена чтобы это проходило без особых последствий.

В чем проблема "унизить" правонарушителя? Да и в чем тут унижение? Все в очередях стоят - пусть и нарушители постоят.

Во всем. Наказание прописано в законе. Ничего сверх не должно быть. И даже строго запрещено. Это еще одна аксиома любой работающей системы.

А вот эта мелкая подлость мол пусть еще просто так пострадают ведет туда же куда и массовые казни. И как правило эти идеи продвигают одни и те же люди.

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

Я ничего никому не приписываю. Только практика. Причем этой практике много веков уже.

Люди в обществе давно живут. Правила как все работает выработаны давно. И только вы почему-то их игнорируете.

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

Казни вы предлагаете. Обесценить человеческую жизнь тоже вы предлагаете. Казнь за проезд на красный или встречку. Это вроде ваша идея? Или опять не то?

Это не так работает

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

Люди постоянно чего-то нарушают. Сюрприз! И вся система заточена чтобы это проходило без особых последствий

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

Во всем. Наказание прописано в законе. Ничего сверх не должно быть. И даже строго запрещено. Это еще одна аксиома любой работающей системы

Так а почему тогда все в очередях стоят, если в законодательстве этого нет? В чем виновны невинные люди? Что за систему вы построили????!!!!

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

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

Люди в обществе давно живут. Правила как все работает выработаны давно. И только вы почему-то их игнорируете

Их игнорируете вы, пытаясь повесточкой опровергнуть тысячелетний опыт человечества.

Казни вы предлагаете. Обесценить человеческую жизнь тоже вы предлагаете. Казнь за проезд на красный или встречку. Это вроде ваша идея? Или опять не то?

Я предлагаю за нарушения ПДД, которые могут привести к летальному исходу, наказывать соответственно. Например за выезд на встречку от 6 месяцев тюрьмы и от 3 лет лишения прав (после отсидки).

Что думаете, будут стрелять? Или просто нарушать перестанут?

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

Расскажите, пожалуйста, как они сумели заработать на асфальтированную улицу перед домом

Что за ерунду я сейчас читаю? Я что, сказал, что мои родители "купили" мне беззаботную жизнь? Нет, они почти всю жизнь прожили бедно, отец инженер, мать медсестра (поэтому не рассказывайте мне сказок про СССР). Но они научили меня жить цивилизованно, не быть преступником, не красть, не обманывать и т.д. Поэтому я, когда сдавал на водительские права, на взятку не скидывался (поэтому пришлось пересдавать вождение, но это уже совсем другая история).

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

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

Ну так а ваши родители это откуда взяли? Их же тоже кто-то учил :)

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

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

Ну так а ваши родители это откуда взяли? Их же тоже кто-то учил :)

Ну да, я же не говорил, что с них все началось)

А я скидывался

Да я ж не против.

А я скидывался.

Выпускник автошколы такой же водитель, как и выпускник института - инженер.

Я так понял, что все экзамены, курсовые и диплом Вы тоже купили? Ведь:

это всего лишь ритуал, на который вы можете тратить время, можете не тратить

Я так понял, что все экзамены, курсовые и диплом Вы тоже купили?

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

абстрактная имитация

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

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

А что изменится? Вы никогда не заказывали строительство дома или хотя бы ремонт в квартире, не лечились в больнице, что ли? И своими глазами не видели, сколько рукожопов и непрофессионалов там работает?

И у всех у них, между прочим, есть сертификаты, дипломы, причём не купленные, а именно полученные самостоятельно... а выбирать специалиста все равно приходится по его опыту и работе.

выбирать специалиста все равно приходится по его опыту и работе

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

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

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

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

Но так как я мог доказать, что ими были нарушены конкретные требования СНиП

Ну вот. А СНиП в техникуме изучают весьма поверхностно. Их изучают уже на работе.

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

Что тогда, по Вашему, подтверждает наличие образование и профессиональную квалификацию?

Вы доверите свою жизнь пилоту самолета не сдавшего экзамен на КВС? Доверите оперировать себя медику, без диплома ординатуры? Рискнете жить под бетонными перекрытиями, которые проектировал не инженер-строитель?

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

У меня нет на это ответа. Я только вижу проблему, что система поломана, но решение в настоящее время отсутствует.

Вы доверите свою жизнь пилоту самолета не сдавшего экзамен на КВС? Доверите оперировать себя медику, без диплома ординатуры? Рискнете жить под бетонными перекрытиями, которые проектировал не инженер-строитель?

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

Экзамен на КВС, это не корочка.

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

Оперирующий хирург, это не корочка

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

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

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

У меня нет на это ответа.

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

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

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

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

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

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

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

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

Всего лишь здравый смысл.

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

Какой "здравый смысл" в этом? Я наблюдаю наоборот, полное его отсутствие.

Зачем я буду тратить время на прохождение экзамена по вождению

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

А вот покупая водительские права Вы не только сам становитесь преступником, но еще и стимулируете коррупцию. Более того, еще и пропагандируете здесь взяточничество и покупку "корочек". Доказываете, что надо покупать права, дипломы, диссертации.

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

Вы тут не поняли тему

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

Что тогда, по Вашему, подтверждает наличие образование и профессиональную квалификацию?

Опыт + возможно, корочка. Сама корочка в сложных областях является необходимым условием допуска к работе, но ни разу не достаточным.

Возможно? Если Вы, как руководитель, допустите электрика без "корочки" к работам, то можете сесть лет на семь. А если этот электрик у Вас в штате, то в течении некоторого времени сядете точно. Говорю уверенно, потому что сам не раз наблюдал грубые нарушения ПУЭ сотрудниками с опытом в десятки лет. Явно "корочку" (допуск) им продлевали просто так, не глядя, так как на прямые вопросы по ПУЭ ответить не могли. Например, последний раз протянули воздушку на расстоянии сантиметров 20 над крышей и даже не могли сказать, что минимальное расстояние по ПУЭ - полметра. Вспомнили вдруг о 2.5 метрах, как для неизолированных проводов )

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

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

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

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

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

Поэтому для меня неприемлем тот факт, что права покупают 

О чем вы, и причем здесь это.
В штатах права стоят 30 баксов, за DL карточку. Тест вопросник бесплатен.Тестдрайв с инструктором не помню бесплатно или немного. Но и в России ни мне ни жене никто не предлагал "скидываться" и "покупать". отбыли какие то курсы, пошли сдали и все.
Могу лишь сказать, что в России подготовка глупая, как и сами правила движения, а в америке правильнее и много лучше. Ибо продуманы для людей и результата..

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

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

Я пожалуй откажусь от обсуждения

Опередили.

не знаю зачем на панели обороты

Предполагаю, что или Вы всегда владели автомобилями с большим запасом мощности (хотя бы от 160 л.с.), или у Вас мало опыта езды по двухполосным трассам. Если двигаться только в автоматическом режиме АКПП, то обгонять очень сложно. Мало того, что АКПП начинает переключать передачи уже в процессе обгона. Она порой делает это в самый неподходящий момент. В ручном режиме, когда на пониженную передачу переключаешься заранее, обгоны получаются намного более предсказуемые и безопасные. Но и за тахометром при этом необходимо следить.

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

Вы сейчас говорите про АКПП 90-х годов. Даже машины нулевых уже имеют режим кикдауна, когда АКПП так не делает, а распознаёт "вдавленную тапку", и жмёт на пониженной, пока вы не отпустите газ.

режим кикдауна

Кикдаун - это переключение на пониженную передачу уже ПОСЛЕ начала маневра обгона. Резкое нажатие на газ уже будет сопровождаться ускорением. А на механике на пониженную переключаются ДО начала обгона и ускоряться при этом совершенно не обязательно. Ускорение тут не связано с переключением на пониженную передачу и производится педалью газа независимо.

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

Кикдаун - это переключение на пониженную передачу уже ПОСЛЕ начала маневра обгона

Не совсем понимаю. Точнее, совсем не понимаю. Зачем вам принудительно переключаться на пониженную передачу специально за какое-то время до начала обгона? Это все равно делается одновременно - переключились, пошли на обгон. В случае автомата - вдавили газ, пошли на обгон. Ну т.е. не после начала манёвра, как вы написали, а сразу перед началом манёвра.

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

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

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

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

В случае автомата - вдавили газ, пошли на обгон.

И, в зависимости от качества АКПП, мощности двигателя и погоды на Марсе, потеряете 200-500 мс на переключение передач.

Она работает детерминированно.

Она работает совершенно не детерминированно от дорожной обстановки и качества покрытия.

Пример из моего опыта. Причем неоднократный, так как сразу даже не понял, что происходит. Обычная двухполоска зимой. Накатаны колеи. Между колеями и полосами, естественно, наледь. Резко ускоряемся по своей колее и начинаем нежно работая рулем и газом смещаться на встречку. На механике все контролируемо и никаких проблем не возникает. На автомате, если забыл переключиться в ручной режим, с удивительной регулярностью происходит переключение на повышенную именно во время пересечения наледи, что сразу же придает вращательное движение автомобилю. Ловишь машину (если умеешь) и, получив знатную долю адреналина, возвращаешься в свою полосу так и не завершив обгон.

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

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

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

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

Все равно не понимаю. Переключение передач, это полсекунды.

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

Если у вас выигрыш 15 метров играет какую-то роль при обгоне

При длине обгоняемого ТС в 7 метров, его скорости в 60 км/ч, длине собственного ТС 5 метров и минимальной дистанции до и после обгона 2 метра, весь обгон занимает 1 секунду на расстоянии 32 метров. 50% - это не играет роли?

Вы же перескакиваете на другую полосу практически мгновенно

Откуда Вы это взяли? Я же писал "начинаем нежно работая рулем и газом смещаться на встречку". Резкое перестроение через наледи - почти гарантированный улет в кювет.

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

А про инерцию вращательного движения забыли? Вот ее погасить можно только при доведенных до автоматизма навыках контраварийного вождения. Что удовольствия доставляет мало. Можете на ютубе найти множество роликов, как люди улетали в кювет, после такого заноса. Например, первые три: https://youtu.be/B-Aq-M_LdFc?si=BsIuzRABAf8HJ8F1
Второй - как раз потеря сцепления с дорогой на тех наледях, о которых я писал.

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

Я на корпоративных автоматах (считалось, что с МКПП не все умеют ездить) мотался лет 20 с конца 90-х. Причем не по городу, а Москва-Воронеж, Воронеж-Белгород, Белгород-Днепропетровск (Днепр), Днепропетровск-Киев, Киев-Львов и т.п. За эти 20 лет полмиллиона точно намотал. И зимой в плохую погоду, бывало, фиктивно оформлял путевой лист, чтобы получить компенсацию за бензин, и отправлялся на своем автомобиле с МКПП. Именно из-за таких приколов с обгонами на АКПП.

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

Вот практика и показывает, что это утверждение в некоторых случаях не верно.

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

По сути это аналог игры "Кто хочет стать миллионером?" Ни кто же не воспринимает игру как проверку знаний. Хотя знания и там играют определенную роль.

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

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

Вот практика и показывает, что это утверждение в некоторых случаях не верно.

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

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

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

AI и chatGPT вообще не "знает" что такое дерево и более того - программирование. А код пишет и рабочий.

Пока что не пишет. И нет причин полагать что в обозримом будущем начнет.

Пишет. Но по моему запросу пока админ скрипты для MSSQL (на SQL соответственно). Деревья я ему инвертировать не предлагал.

Вот практика и показывает, что это утверждение в некоторых случаях не верно.

Практика показывает, что это верно практически всегда.

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

Конечно, нет. В случае с бинарным деревом - мы отсеиваем людей, которые не обладают базовыми знаниями в CS.

Я не отрицаю сам метод. Но не считаю, что он даёт 100% точность.

С практической точки зрения она 100%. Даже если попытаться придумать фантастический контрпример - это сделать очень сложно.

UFO just landed and posted this here

В чём суть вопроса? Поскриплю мозгами и напишу. Но смысла большого не вижу. Хочу ли я чтобы кандидат умел писать рекурсии? Конечно. Хочу ли я чтобы кандидат умел работать с переменными? Хочу. Хочу ли я, чтобы кандидат имел опыт в распрямлении рекурсий? Не особо, очень редко это нужно. Экзотика.

Но напишу. Проитерирую в ширину через очередь. Просто подумаю, что интервьювер дурачок.

Т.е. кандидат 5-10 лет писал коммерческий код за хорошие деньги, и тут бац, не знает что такое рекурсия и не умеет работать с переменными?

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

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

Экзотика.

А деревья инвертировать это не экзотика, ну.

Т.е. кандидат 5-10 лет писал коммерческий код за хорошие деньги, и тут бац, не знает что такое рекурсия и не умеет работать с переменными?

Я уже ответил на этот вопрос. Несколько раз. Например тут.

Плюс стек переполниться может

Какая жаль. Дерево глубиной больше стека. Комментарии вложенностью в 65 тысяч+. Какой-кошмар.jpg. Самому не смешно?

У рекурсии очень большой оверхед

В одной теме мы ноем про то, что производительность не важна. А тут у нас у рекурсии оверхед. У рекурсии. Оверхед. Да ещё и в JavaScript мире. Прекращай клоунаду. Не смешно.

Надо бы тебе лычку тролля выдать.

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

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

Да, вот так, в результате небольшой дискуссии и понимаешь кто огонь и воду прошёл

Да клоунов сразу видно. JavaScript имеет настолько высокие издержки на каждом шагу, что рассуждать о накладных расходах в рекурсиях смехотворно. А учитывая, что речь идёт о деревьях, где глубина редко больше 4 так тем более.

Когда же тебя забанят то? :)

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

Я тут перечитал , Маркса :), вернее Кнута, нет такой операции как инверсия бинарного дерева. И самое главное смысла, кроме как погреть процессор она не имеет.

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

Если дерево из 10 элементов, то его из любви в искусству можно инвертировать , а если там функция Аккермана от гугла, то сколько времени у вас инверсия займёт?

инвестирование бинарного дерева

Инвестировать надо в ETF-ы, а не в деревья. Хотя если в деревья, то вами будет очень довольна Грета.

функция Аккермана от гугла, то сколько времени у вас инверсия займёт

Инверсия чего, простите? Функции? Предлагаю такое решение:

const inverse = fn => 
  [...akkermanFunc.toString()].reverse().join('')

:-)

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

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

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

Сервис, и даже масло - часто без сервис мануала просто невозможно.
Моделей уйма за все года, разные спецификации. Поэтому и в интернете, но больше в специальной софтине где показано для разных детально как и куда что и exploded view. Такая практически в каждом автосервисе стоит. Постоянно и зырят, там же заказываются запчасти, и прочее. Номера запчастей вы тоже помнить будете все шайбочки?
Собственно не факт что вы и аккумулятор без бумажки поменяете вот прям везде. В феррари его и не найдете. И я молчу - про замену в тесле. :-)

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

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

Номера запчастей вы тоже помнить будете все шайбочки?

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

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

Не скажу за все феррари - но там аккумулятор в салоне. под передней панелью, в глубине - и надо много чего разобрать в районе ног водителя, изогнувшись как акробат, чтоб туда подлезть и вынуть. Причем и сиденья надо снимать.
Я лично не смог - лез китаец.
В Хонде воздушный фильтр салона стоит за бардачком, и надо вынуть все - а затем он перекрыт металлической балкой. И ее надо срезать болгаркой. иначе никак. что как бы неочевидно.
А про все эти сливные дырки, масляные фильтры и как к ним подлезть - вообще молчу. А есть и старые модели машин всех стран, зоопарк в штатах, люди пользуются вообще всем с начала времен от первого форда1 и до последних европейских свистков и все модели еще мутируют в процессе производства. Мерсы кстати ничуть не лучше. На каких то ВMW на аккуме стоит чуть ли не пороховой заряд для экстренного сброса провода при аварии.
А уж менять что то сложней в ходовой....
Так что знать,автомеханик, даже с сертификацией ASA ,будет общие принципы и сколько то ходовых моделей которые часто.
Самые крутые из виденных были вьетнамцы, которые брались за все без мануалов и делали замену из овна и палок, а выточить деталь им раз плюнуть, в соточку на глаз. Хорошо, что они до IT не добрались ибо поработили бы весь мир..Собственно их в космосе пока нет лишь потому что ракета целиком в захламленный двор у гаража не влезает.

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

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

В Хонде воздушный фильтр салона стоит за бардачком

Это вполне обычное место расположения фильтра салона. Он там же и на Хюндаях и Киа, например.

И ее надо срезать болгаркой. иначе никак. что как бы неочевидно.

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

Ни феррари, ни жигули в ваш автосервис не приедут (первые ввиду уникальности и обслуживания в "особых" местах,

Это Америка,чувак. Машина не пафос ими владеют обычные люди..Коллекционные у пожилых - рутина. Только на моей улице бог знает что вперемешку. У соседа напротив Хаммер из Бури в пустыне. В начале улицы что то гоночное итальянское. Ранний мустанг бывает-кажется Fastback.. Несколько тесл и смешные fiat500 и миникуперы. Так же удолбанное нечто повсеместно чему нет названия, вероятно владельцы китайцы. Двумя улицами выше припаркованный форд похож на карету, клевый. Ободранный, но на нем ездят. причем явно тетка, судя по рюшкам и вышитому коврику. У приятеля Мазерати. Обслуживает как привык - в соседнем сервисе у Джима, где мы оба знаем владельца.
Думаю в дельта окрестности есть все. И вы таки думаете, что все ездят на спецэкзотсервисы?.С чего бы..
На паркинге у работы вычурного хватает. Владельцы не миллионеры отнюдь.Часто индусы и молодые, которые приподнялись - для них это символ сбычи мечт..Нафига им полштуки на масло. Не все же берут новье с гарантией обслуживания.
Автосервисы к такому привыкли и берут все, им марсоход привезут, они не удивятся - НАСА то рядом. Поменяют гидравлику и тормоза. :-)

Эээ... не верю. Вот вообще ни капли не верю.

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

Это Америка,чувак. Машина не пафос ими владеют обычные люди..Коллекционные у пожилых - рутина.

Без проблем. Полагаю, в автосервисе в Америке и обычный механик в курсе, где там у феррари аккумулятор. Тем более вы же вот не механик, а тоже в курсе? :)

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

Вы меня удивили. Я ради интереса пытался погуглить, могу сказать, что у HR-V, у CR-V, у цивика, у инсайта, у аккорда, у фита - у всех отстёгивается бардачок, отщёлкивается крышка фильтра, и собственно вытаскивается фильтр. Причём конструкция крышки у всех одинаковая. Что у вас там за зверь невиданный? Скажите модель/год хотя бы.

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

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

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

https://www.youtube.com/watch?v=U1KDdDEcPuc

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

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

это моя машина и менял сам, я инженер. и вопрос изучил и запросил и дилера и хонду.

Вы что, пилили болгаркой новую гарантийную машину, вместо того, чтобы делегировать этот момент официалам? О_о

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

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

вместо того, чтобы делегировать этот момент официалам? О_о

Жадность, знаете ли. Фильтр стоит десятку, даже меньше.
В сервисе Хонды будет долларов 40, с налогом до полтинника. Ну и замена где то стольник. И надо туда машину отогнать, причем не счас а по аппойнтменту когда у них окно через неделю, а потом ехать забирать, и это возня на день без машины.
Волшебной болгарки у них нет. Как и особой магии у чувака который будет менять. Я планировал поменять за пять минут - заняло побольше,, но люблю практический опыт.
У американских теток нет выбора, у русского инженера есть варианты. Ну и сто баксов, это сто баксов..

Бинарное дерево - сие эвфемизм, а не прям точно.

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

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

но если смотреть с ТЗ программиста - это некорректный вопрос, потому что:

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

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

  3. а Сеньор просто тупо не вспомнит - как это делалось тк последние лет 10 занимался настолько высокоуровневыми вопросами с погружением в глубокие конкретики, что давно не помнит - не просто что такое бинарное дерево, но и то как быстро свапнуть переменные.... И просто тупо Залезает в гул и берет готовое решение оттуда спуская его потом как задачу для реализации до Джунов, и оптимизацию для Мидла.

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

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

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

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

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

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

Он успевает вычистить из двух только полторы и получает отказ - потому, что не умеет говорить. На вопрос:

- У вас повора чистят морковку вручную? - те дают честный ответ.

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

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

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

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

- Потому, что нам это стоит всего лишь две морковки.

Тут скорее как если повар, автор нескольких кулинарных бестселлеров

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

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

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

Отличный пример!

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

Это плохое использование такого человека.

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

Примерно как Икея нанимает дорогих художников рисовать картины. И потом продает их репродукции по 19 долларов. Всем выгодно.

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

Рестораный бизнес и поварское искусство это разные вещи. Классные специалисты не обязательно хорошие предприниматели.

Как уже отметили - надо использовать людей там где годны и умеют - то что они умеют, и не завышать требования без необходимости... И будет эффективно. А не ожидать раз ты xxxxx то должен все что под это слово подпадает.
Конвейер не зря придумали. Он может скучен и нет мест творчеству - зато дико эффективен. А избранным инженерам надо платить 10x кратную зарплату чтоб отбирались и в самом деле лучшие из лучших. А у остальных - культура производства. Гримасы капитализма.

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

Ну то есть один в один как повар, не умеющий морковку чистить? [как выше поднимался пример] Базовая же вещь.

потому что легально дети работать полную ставку не могут.
и HR и юридический отдел не пропустят.
Но!
А вообще 21 век, люди умнеют и набор skills повышается.
И то, что раньше считалось бы инженерной и профессиональной работой, современный человек способен обучится, и вообще сделать дома в гараже прям изделия из немыслимых раньше технологий.
А их надо все же как то знать - и объем пониманий растет.
Школьник или студент делает полноценного робота и дрона,, а обычный человек в гараже самолет и автомобиль Рабочий.
Эрудиция и системное образование хуже конечно.
Надо определиться а что нам надо и для чего.
AI кстати тоже не в курсе про бинарные деревья но код писать может.
Сейчас прогресс еще быстрей.Эвон какие-то лопушки лихо заместили обученных тележурналистов..

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

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

Про самоучек:

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

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

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

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

Да, алгоритмы почти не используются в повседневной практике, но это не потому, что их там нет, а потому, что программист не привык видеть их. Классический пример: hibernate и n+1, когда линейная сложность внезапно превращается в степенную

В армии у начальника штаба был прикол: остановить молодого солдата и спросить "сколько будет две вторых плюс две трети?". Ну и пока тот соображает, о чем вообще речь, пытаясь вспомнить какие-то формулы из школьной программы третьего класса, - вставить "солдат, ты &#9 тупой?" Ну и показав тем самым, кто здесь умнее, перейти к сути вопроса.

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

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

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

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

Очень много собеседований проводятся с заранее поставленной целью найти повод отказать.

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

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

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

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

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

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

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

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

Зачем это компании, чтобы что?

Компании - ни за чем. Собеседующему - чтобы протолкнуть кандидата, которого он заранее выбрал; либо чтобы чтобы отчитаться что-то вроде "вот, опросили 50 кандидатов - все неадекватные. Не будь меня - вам самим бы пришлось с ними иметь дело!"

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

Компании - ни за чем. Собеседующему - чтобы протолкнуть кандидата, которого он заранее выбрал; либо чтобы чтобы отчитаться что-то вроде "вот, опросили 50 кандидатов - все неадекватные. Не будь меня - вам самим бы пришлось с ними иметь дело!"

50 кандидатов - это 50 рабочих часов собеседующего разработчика/лида (на самом деле больше - потому что всё-таки требуется переключать контекст).

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

  1. Программные фильтры, просто отфутболивают остальных 140+, по каким-нибудь весам слов в резюме.

  2. HR и задания отфутболивают ещё 7 человек.

  3. С остальными тремя беседуете и выбираете одного.

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

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

Я считаю, что это в корне неправильный подход.

Задача же стоит не отфильировать 149 из 150 человек, а нанять первого подходящего, даже если за ним останется ещё 75, 105 , 145 человек на более ранних этапах.

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

Я за честный FIFO.

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

Удачи таким компаниям, но я даже подаваться не буду.

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

На всякий случай, алгоритм тут: https://en.wikipedia.org/wiki/Secretary_problem

Потому что в задаче (и её решении) не сказано, каким должно быть идеальное n.
А потому можно придумывать какие угодно префильтры и фильтры: здоровье как у космонавта, наличие ученой степени, знак зодиака, прохождение ATS скоринга с результатом не менее 60%.

Secretary_problem

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

Эту задачку математики жуют со второй половины прошлого века. Разумеется, практически по всем возможным вариантам уже оттоптались вдосталь. Вот, например, ещё в 1983 году: https://changyaochen.github.io/assets/pdfs/secprob2.pdf

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

Это отличный пример, почему даже фронтэндщику с перекладыванием структурок в JS стоит хотя бы в общих чертах представлять себе всякие заумные алгоритмы: они всплывают в совершенно непредсказуемых местах. Даже книжки про это есть: https://www.amazon.com/Algorithms-Live-Computer-Science-Decisions/dp/1627790365/

почему мы вообще делаем такое предположение об интервьювере?

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

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

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

Ощущение такое, что интервью превращаются в писькомерство между программистами.

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

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

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

Я так понимаю для Вас не составит также труда решить задачу по физике за 11 класс (без книжек и прочего, сходу) https://www.yaklass.ru/p/fizika/11-klass/elektrodinamika-geometricheskaia-optika-6928996/zakony-geometricheskoi-optiki-6927514/re-f6f0792f-8022-4001-8a30-ac94ed222025 ведь школу Вы закончили.

Знания имеют свойство выветриваться и не всегда нужно помнить наизусть многие вещи. На практике всегда можно подсмотреть алгоритм (формулу) и потом уже реализовать. Когда сдавал теорию по ПДД (правила дорожного движения) без ошибок отвечал на полностью на все вопросы, за 7 минут из 20 решал все задачи на экзамене. Через год когда решил освежить знания уже допустил несколько ошибок.

Я так понимаю для Вас не составит также труда решить задачу по физике за 11 класс

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

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

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

Задачи с массивам конечно решает любой программист, вот только учили их решать с помощью циклов for, while итд. А в реальной жизни сейчас js разработчик больше использует функциональное программирование и будет использовать map, reduce, filter итд.

И например человек не работающий с 3д графикой не будет знать как работать с кватернионами в отличие от программиста на unity.

Несколько лет назад мне стало интересно разобраться с 3д графикой и unity. Взяв за основу туториалы https://catlikecoding.com/unity/tutorials/procedural-grid/ написал процедурный кубик рубика, добавил вращение. В какой-то момент потребовались матрицы, чтобы информацию о ходах пользователя хранить. И действительно было приятно когда 8 строчек кода ушли использованием формулы умножения матриц. Для саморазвития это все было очень приятно, вот только с тех пор в реальной жизни так и не пригодилось. Как пишу и бек и фронт так и пишу. А в свободное время сейчас лучше поучусь играть на гитаре, очень неплохо развивает моторику пальцев да и память, аккорды нужно помнить итд.

А такой вопрос - какая предметная специальность должна быть у программиста, чтобы он не смог инвертирование списка или бинарный поиск? Там буквально надо знать один цикл. Дерево/граф это очевидные структуры (ноды - магазин на карти, ребра - дороги), что за программист который не может обойти граф, даже не зная bds или dfs? Мы говорим об алгоритмах и вопросах где вообще фактически знать ничего не надо кроме цикла и ифа, всякую жесть в глубину спрашивают обычно только у вчерашних студентов, у которых больше и спросить нечего, да и даже банальную дейкстру по факту никто не спрашивает, так как к ней самому уже не придешь и по хорошему надо уже столкнуться и разобрать один раз, то есть требует какой-никакой, но подготовки.

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

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

Для меня будет важно как человек решает поставленную задачу и какие возможности языка для этого использует. Если вместо  функциональных (мы в треде по js всё-таки) .map или спред (...) он будет писать цикл for на несколько строчек то такой человек мне не нужен. На мой взгляд использование возможностей языка натаскивает мышление не хуже алгоритмов, когда в одну строчку пишешь функционально то что императивно в циклах идёт на несколько строк. Вот пример задачи на собесе https://youtu.be/hkrmyIecHR0?si=SwLmw30fDbSdtF2P&t=1703 где человек показал и знание алгоритма и возможностей языка, и никаких бинарных деревьев и поисков от него не требовали. Алгоритмы можно заучить, в бинарном поиске нет ничего сложного если помнить что это такое (было это давно), но если человек не использует современные возможности языка то для меня он профнепригоден.

А есть ли условия, при которых map или спред невозможно использовать?

то такой человек мне не нужен

А чего так? Почему для вас .foreach и for-of фундаментально разные? Разница в интерфейсе для вас столь критична? Вы где-то свернули не туда.

Куда критичнее, если человек предпочитает .foreach, чтобы он понимал как этот .foreach устроен. Что внутре у него неонка внутри там тот самый .for-of и что это O(n).

С ФП мы уже дожили до того, что за такой код не бьют ногами:

collection.reduce(
 (acc, item) => ({ ...acc, [item.id]: item }), 
 {}
)

Вот это важно. А разница между for-of и foreach это условная настройка линтера или code style команды.

P.S. Кстати, если код выше вас ничем не смущает, то боюсь профнепригодны как раз вы. Надеюсь это не так :)

Речь была про то что ФП в мире js надо знать. Foreach тоже можно и нужно использовать. А спреды использую когда нужны изменения иммутабельного стейта, например когда в одну строчку значение ключа объекта добавляешь или меняешь, это очень удобно в редаксе. Или удаляешь в том случае когда (...) это уже рест.
Например данный кусок кода должен быть понятен любому js
const key = 'item2';
const { [key]: _, ...newData } = data;

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

p.s. пример кода взял здесь https://stackoverflow.com/a/45898081

Речь была про то что ФП в мире js надо знать.

Когда вы в последний раз использовали функторы и монады? Когда в JS завезли иммутабельные структуры данных? Когда в TS появились High order kinds? ФП в мире JS довольно игрушечное.

это очень удобно в редаксе

Когда-нибудь это убожество умрёт. Я верю в это. *перекрестился. А вообще, вот вам подарок. Спасение от ...-матрёшок.

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

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

...newData

По моему опыту - 80+% разработчиков думают, что spread копирует "в глубину". Да, те самые, которые "7+ лет опыта" синьоры-помидоры.

Когда-нибудь это убожество умрёт. Я верю в это. *перекрестился. А вообще, вот вам подарок. Спасение от ...-матрёшок.

В RTK уже завезли из коробки.

Что Вы используете для хранения глобального стейта в реакте?

для хранения глобального стейта

То немногое, что у нас глобально - useState + context. По сути у нас вместо глобального стейта используется локальный стейт, а для бизнес-сущностей есть кеш от Apollo (graphQL).

В RTK уже завезли из коробки

Good.

а для бизнес-сущностей есть кеш от Apollo (graphQL).

By default, Apollo Client creates its own internal Redux store to manage queries and their results.

Вот такая вот ирония судьбы :)

никаких бинарных деревьев и поисков от него не требовали

Да, дерево там не было бинарным, согласен.

И кстати там как раз пример, когда вместо спреда нужно было пушить "циклом for на несколько строчек": во первых, в обратном порядке, во вторых, дабы избежать переполнения стека, если у ноды чуть более чем 100500 чилдов (вообще для кейса, когда children большие, более эффективным может быть не копирование их в стек, а добавление в него итератора по чилдрену. Хотя код потеряет изящество)

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

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

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

да и даже банальную дейкстру

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

не может написать бинарный поиск циклом

Лично я бы избегал любых задач такого рода на собеседованиях. Имею ввиду задач, где критична разница между >= | >, +1, -1... Т.е. когда "примерно" помнить алгоритм мало. Надо довести до ума. Почему избегал бы? У многих кандидатов IQ падает в два-три раза на собеседовании, от нервов. И многие тривиальные вещи становятся невозможными. Т.е. кандидат вспомнит, что бинарный поиск это:

  • берём центральный элемент

  • он? ура

  • не он? искомый больше? берём вправо

  • меньше? ок, тогда влево

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

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

Недавно я решил реализовать руками quick select. По сути тот же quick sort, только для "сортировки" одного элемента, а не всего массива. Итог? Решить решил, но времени убил неадекватно много. Алгоритм не склеивался как нужно. Почему? Потому что в памяти засела дурацкая мысль, что:

  • элементы слева должны быть <= pivot

  • элементы справа должны быть > pivot

Логично? Может и да. Но правда в том что там должно быть <= & >= в обоих случаях. Например [3 2 1 5 5 5][5][5 5 5 9 7]. И это у меня над головой никто не висел.

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

Да по сути критерий - кандидат может подумать и банальный цикл/иф написать, ну хорошо - идем дальше. Если развернутее:

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

люди которые приходят в принципе в 99% случаев готовятся по алгоритмике специально в фирму где я работаю/собеседую, как как знают что ее будут спрашивать. Мне не особо интересно насколько далеко человек прочитал Cracking the Coding Interview или сколько задач на литкоде нафармил.

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

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

Так я про то и говорю, что и сам не считаю алгоритмы уровня Дейкстры спрашивать хорошим тоном, да и по факту их и не спрашивают практически. Условно, если я перед вами нарисую граф на доске и скажу "обойдите все ноды", вы даже ничего не зная о графах, не зная о BFS, DFS, сможете сами догадаться как это сделать давольно быстро и написать, либо хотябы объяснить как это сделать, по этому это в принципе вменяемый вопрос. Если я попрошу найти кратчайший путь, вы скорее всего не сможете, если не сталкивались с алгоритмами поиска пути, то есть это плохой вопрос, потому что упирается в то, что если не знаете алгоритм, то и не сделаете, а знание Дейкстры наизусть не проверит ничего. Опять таки не считаю нужным спрашивать алгоритмику как таковую у уровня мидл+, просто рассуждения на тему адекватности вопросов.

Т.е. когда "примерно" помнить алгоритм мало

Опять таки, из личного опыта (да, такой себе аргумент, но что есть) люди не докапываются до граничных условий, часто хватает общего алгоритма на псевдо языке (ну не важно что вы не помните что условно размер этого контейнера size vs lenght, и так понятно что хотели сказать), часто можно словами договорить что дальше бы делал и этого хватает - если вы написали бинари серч и видно что сам ход мысли правильный, какая разница что вы где-то не дописали = - это уже вопрос запуска пары раз. У меня из последнего интервью было что в функцию двухмерный массив передавали через ** и я на нервах запутался с разименованием где-то, собеседующий посмотрел что алгоритм верный, сказал ок, когда закрыл митинг оставил сессию кодинга открытой, я выдохнул, за минуту починил всё, человек потом посмотрел и я сессию прошел (так как я принял офер тогда, я знаю что потом собеседующий посмотрел). Часто с той стороны тоже люди адекватные сидят (или это мне просто так везло?) и не будут докапываться до точки, вместо стрелочки, length вместо size, что вы не обработали какое-то прям граничное условие и так далее. Хотя это часто не так когда именно джунов или прямо вчерашних студентов нанимают, так как с ними особо опыт не обсудишь (его просто нет), так что мучают людей алгоритмикой, но я предпочитаю в этом не учавствовать.

У меня вопрос о собеседованиях на вакансию программиста графики – каким образом там оцениваются знания по математике? И если нет профильного математического или CS образования, то вход закрыт? Математика и лоу-левел не пугает – наоборот интересно, хоть у меня высшее художественное (компьютерная графика).


И еще такой вопрос. Сейчас после C приступаю к изучению C++, и хочу параллельно к своей программе (написана на Си с GUI на WinAPI, использую почти каждый день в работе – рассчитывает загиб и другие параметры конструкций из металлических труб) добавить вьюпорт с 3D изображением изделия. Планирую DirectX использовать и параллельно его осваивать вместе с математикой и плюсами, но не знаю какую версию взять - 11 или 12? Знание 11 версии обязательно для работы, или это неактуально уже?

У меня вопрос о собеседованиях на вакансию программиста графики – каким образом там оцениваются знания по математике? 

Зависит от позиции. Обычно пару простеньких задачек на кросс/дот, уровня - постройте нормаль по трем точкам или найдите площадь треугольника по трем точкам, далее разговор более предметный по теху что делали - если делали какой GTAO или темпоралку и можете внятно объяснить, то и с математикой врятли большие проблемы значит. Обычно углубление идет либо в рендер техники - какие виды анти-алиасинга нужны, что это такое и зачем? Что использовали и почему? Расскажите про PBR, forward vs deferred vs clustered и т.д. и т.п. Если вам повезет (или не повезет :)) собеседоваться со мной например, то там будет из разряда какие ботлнеки вы встречали там то и в зависимости от того что скажете будет уходить в вещи типа оккюпанси на гпу, контест флаши, скедулинг, асинк пайпы и тому подобное. Вообще часто просто смесь хай левела и лоу левела, но без особой глубины. Это все на мидл/сеньора. На джунов будет больший упор в задачки математические, более общие вопросы типа "зачем нужны кватернионы" и т.д., но я сам джунов уже много-много лет не собесил, по этому не знаю, может поменялось что.

Знание 11 версии обязательно для работы, или это неактуально уже?

Смотря как смотреть :) До сих пор есть игры/программы где надо лезть в dx11/OpenGL. Но в общем и целом - DX12 более распространен, для AAA геймдева открывает XBox, по концепциям близко к современным всем API и разобрать DX11 с DX12 гораздо проще, чем наоборот. Если с прицелом в работу и показать знания актуальных API, то конечно DX12 (да и он интереснее имхо). Но он гораздо сложнее и многословнее DX11|OpenGL и если цель поразбирать всякие классические алгоритмы и не сильно заморачиваться над борьбой с API, то может и 11 не такой плохой выбор, но я бы все равно не стал.

Само собой take it with a grain of salt, всё мое лично имхо и прочие дисклеймеры.

И если нет профильного математического или CS образования, то вход закрыт?

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

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

Спасибо за развернутый ответ.

Выберу DX12, так и так работы непочатый край будет :) Заодно и английский прокачаю, т.к. на русском максимум учебники по 10 версии видел. Даже MSDN на русском читать сложно местами – кругом окна окон, процедуры процедур и потоки потоков :)

Разрешите еще вопрос по C++. От чего можно поначалу отказаться, в том плане, что в работе не особо и требуется. Например, какие-нибудь части стандартной библиотеки?

И как я понял, в крупных студиях огромные кодовые базы с двухтысячных/десятых годов + разработчики компиляторов годами могут не добавлять возможности языка из новых стандартов, отчего какой стандарт маст-хэв (C++11 или должен быть сильнее позже), а с какими можно только по верхам ознакомиться?

Проблема больше плана "я хочу в студию A, она в стране B, но мне не дают визу, так как образование не профильное".

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

Разрешите еще вопрос по C++. От чего можно поначалу отказаться, в том плане, что в работе не особо и требуется

От особо глубоких глубин. Когда они понадобятся, тогда и можно наверстать :) Что такое глубокие глубины каждый решает для себя. Но в общем надо владеть на уровне, я фактически все из плюсов встречал (кроме буста). Так то как минимум стоит пройтись по https://isocpp.org/faq , Effective Modern C++ и K&R (си вот понимать надо)

C++11 или должен быть сильнее позже

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

Большое спасибо за пояснения и ссылку на C++ FAQ.

Физику не должно составить труда.

Я физик, но часть школьных формул не помню. Физика все же очень большая для того, чтобы помнить случайные результаты из всех отраслей. Я думаю, что смогу вывести примерно что угодно в оптике, но это сильно будет очень сильно дольше, чем ответить по известной формуле. Формулу переноса изображения тонкой линзой могу только угадать из соображений, что в такой формуле обязано быть сложение инвертированных расстояний. Если добавить определение фокуса линзы (что изображение из F переносится на бесконечность) то можно восстановить формулу 1/a+1/b = 1/F целиком. Но даже это размышление займет лишних 5 минут, которых в контексте ЕГЭ на время нет.

Ну вы сможете вывести и объяснить, это важно. У вас же не ЕГЭ, у вас собеседование, в 99% случаях просто хода мысли достаточно, даже если формально задача не решена. Тем более обычно не задачки для которых надо формулу знать, а именно уровень "разверните список", там вообще формул знать не надо ни одной и помнить ничего не надо, всё что нужно знать для решения это как написать цикл, всякую реально специфику типа AVL деревьев и вещей где надо знать прям сложные алгоритмы это спрашивает ток всякий ФААНГ у вчерашних студентов, у которых просто опыта нет. Про список или бинарный поиск это уровень вопроса для вас "что такое линза знаете? двояковыпуклую/двояковогнутую линзу нарисовать грубо сможете?". Тот же бинарный поиск это вообще интуитивный алгоритм, если вы возьмете словарь, вы примерно его и будете использовать, даже ничего не зная о программировании вообще.

Операции в AVL дереве называется rotate, а не invert, вряд ли имели в виду именно её (в оригинальном сообщении автора brew используется слово invert).

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

Вы уверены что это развернёт хвостовую рекурсию?

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

(ну или развернёт один из двух рекурсивных вызовов - а вам-то какой от этого прок, глубина рекурсии от этого не изменится)

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

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

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

Но не сделает же.

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

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

что интервьюируемый плохо понимает опасность рекурсии

Вот скажите:

int = 1

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

Слишком абсурдный пример? Такой же как и ваша логика. В отрыве от конкретных деталей задачи вы пришли к "уронил прод".

сложнее написать чтобы это работало в параллельных потоках

или же не выпадало из кеша процессора

В статье вообще однопоточный JavaScript. Большая часть кода в мире пишется без расчёта на кеши процессора. Они бесконечно далеки от большинства позиций.

---

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

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

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

  • Насколько важна, как это по русски, maintainability? Чаще всего это топ1 фактор. Код должен писаться и поддерживаться дёшево. И быстро. Ибо результат нужен за копейки и вчера. Для этого желательно чтобы код был простым и очевидным. Рекурсивные алгоритмы обычно куда проще, их когнитивная нагрузка сильно ниже. Поэтому их и предпочитают в большинстве случаев. Это применимо не только к рекурсии, а к разработке вообще.

  • Прочие факторы опустим.

Поставим на этом точку или вы не согласны с чем-то из вышеизложенного?

Конкретно в int = 1 нету ошибки. Про x10 - это чисто ваши догадки. Если опыт только к тем кто корзину в маленьком интернет деревом делает - то это мнение с его "колокольни". И это не значит что "х10 достаточно" применимо ко всему.

Поддерживаемость уже не важна если вы уронили прод

Про x10 - это чисто ваши догадки

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

Предположим что архитектор ожидал что у него будет Х пользователей. А пришло Х * 10000. Упадёт рекурсия? Нет. Почему? Да потому что до неё не дойдёт. DDOS положит ваши сервера. А если вы не настроили лимиты в облаке, то вам молиться на эту рекурсию нужно, чтобы она уронила прод до того, как AWS разденет вас до трусов.

школьное знание это псевдокода не только не помогает, а скорее мешает в реальной работе

Я всё ещё не понимаю, о каком школьном знании мы говорим?

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

Зависит от глубины на которую хочется нырнуть.

Конечно зависит)

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

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

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

Покажите мне как можно рекурсией по древу уронить прод? Я серьёзно. Возьмём JavaScript из статьи. Лимит стека от 65 тысяч. Где вы найдёте дерево глубиною больше 65 тысяч? Даже не так. Где вы найдёте дерево глубиною больше 30 (тридцать, не тысяч)?

Или бог с ними с деревьями. Насколько часто вы вообще сталкиваетесь с рекурсивными алгоритмами + данными, которые бы вывалились за стек?

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

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

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

Не бывает где? Это бинарное дерево - часто некий индекс (и тоже не совсем так) для поиска. Т.е. вы уронили прод в самый нужный момент - как только поток пользователей начал увеличиваться, но зато показали что еще помните школьную Информатику. - уровень Джун. Мидл - сказал бы что решить не так просто, и то что он не решил бы в сомнениях - показатель того что он выше джуна. Сеньор - взял бы день и больше на решение

Это бинарное дерево - часто некий индекс

Ну ок. Пусть это будет BST. Посчитайте сколько вам нужно элементов, чтобы глубина вышла за 65к. ~2^65. Каждый атом планеты Земля будем там хранить?

Объективно вывалиться за стек вы можете если у вас будет вырожденное древо вида linked-list. Можно реальную задачу в студию?

как только поток пользователей начал увеличиваться

Опишите реальную задачу. Да да. Задачу где кто-то случайно уронил прод, т.к. рекурсия столкнулась с древом глубже 65к, а автор кода таких объёмов не ожидал. Можно для примера взять high load вроде того же фейсбука.

Джун Мидл Сеньор

Что отличает сеньора от остальных? Ну как минимум он знает YAGNI.

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

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

Конечно он не лежит, с чего ему лежать? просто медленно отвечает.

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

Даже если стека много - хорошо ли его забивать рекурсией?

Даже если стека много - хорошо ли его забивать рекурсией?

Да. Он для этого и создан таким большим. Никто не ожидает от вас что вы забьёте 65к фреймов не рекурсией.

Конечно он не лежит, с чего ему лежать? просто медленно отвечает.

Погодите, т.е. при n порядка ста тысяч, что бы у вас там ни было, деграднуло по производительности с O(log n) до O(n) (индекс из примерно сбалансированного дерева превратился в линейную сосиску).

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

И при этом оно "медленно отвечает" вместо того, чтобы упасть по таймауту / deadline'у?

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

Сеньор - взял бы день и больше на решение

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

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

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

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

а подумает о возможных проблемах

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

Вот так хорошо (И - интервьювер, К - кандидат):

  • И: Задача...

  • К: Можно решить в три строки рекурсивно. Но у такого решения, несмотря на его простоту есть проблемы

  • И: Какие?

  • К: Такие...

  • И: Отлично. А если вышеописанные факторы не относятся к нашему случаю?

  • К: Тогда я предлагаю взять рекурсию. У рекурсии такие-то преимущества

  • И: Ок, давайте на ней и остановимся. Как бы вы решили эту задачу рекурсивно?

    • альтернатива: И: Рекурсивно в нашем случае нельзя, давайте решим её плоско.

  • К решает

Вот так плохо:

  • Рекурсия зло. Там stack overflow. Там накладные расходы. Прод снег башка упадёт совсем плохо будет.

  • Эээ, вы уверены что всё так плохо? Прод точно упадёт?

  • Дааа. Вот у меня был случай...

  • Спасибо. Было интересно. Мы вам не перезвоним

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

Приму во внимание. Но в целом с вами не согласен. У меня за 15 лет не было НИ ЕДИНОГО РАЗРЫВА случая когда нужно было развернуть рекурсию. Да я отчётливо понимаю когда это нужно делать. Но ни разу не сталкивался. Даже на литкоде. 100% моих stack overflow были ошибками в коде. Это и правда экзотика. В случае деревьев это экстремально редкая экзотика. И уж тем более я не ронял прод рекурсиями. И мои коллеги тоже. Это нужен большой талант.

является звонком для меня

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

  • И: А есть ли у вашего решения проблемы?

  • К: Да, в теории, если у нас...

отсутствие готового решения

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

Не могу не согласиться с @kogemrka, у вас похоже просто ПТСР.

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

Потому что, скорее всего, это и есть ерундовая задача из школьной информатики.

Мы не знаем точного условия задачи, но знаем что что эта задача является задачей на разворот бинарного дерева и она была задана на собеседовании.

Известно, что на собеседовании попадаются три типа задач:

  1. FizzBuzz;

  2. LeetCode;

  3. "угадай что на уме у собеседующего".

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

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

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

А вот в обсуждении на Хабре только додумывать и остаётся.

но знаем что что эта задача является задачей на разворот бинарного дерева и она была задана на собеседовании.

Я, кстати, слышал про ту историю только краем уха, и до этого обсуждения думал, что brew-чувака попросили сделать поворот, который обычно бывает в "дереве АВЛ" (их там 2 вида и 2 направления). Такая задача вполне может поставить в ступор на лайвкодинге, потому что в с++ это всё из коробки и чел никогда подобного не делал.

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

Быстрый гуглёж показывает, что там использовался термин invert, а не rotate (о чём уже написали где-то в комментариях выше). Поворот же в АВЛ-дереве - это именно rotate.

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

Не выдумает, а подумает о возможных проблемах

Вот вы же выше по треду упомянули про "тут можно углубиться в многопоточность".

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

Хорошо, допустим, сениор углубился в многопоточность. И написал многопоточный код для kernel space'а.

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

Теперь вы получили травму и злитесь при виде рекурсии,

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

Кстати, про observability на собеседовании тоже стоит поговорить.

 А не "о, дерево, хорошо что я по школе это помню - тут же и применю"

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

функция реконнекта была рекурсивной

 пару дней поработала

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

А коли так, то проблема видимо была в том, что рекурсия запетлилась. Т.е. ошибка в логике. Отсюда сразу предположение, что если бы рекурсию развернули, то исход мог быть точно таким же. Условные for и while циклы легко уходят в вечность.

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

Но это так, мысли вслух. Может быть я что-то упускаю.

минимум два случая

Их ещё и два было. Точно стоило подложить соломинку или переосмыслить сам подход.

Почему и нет - ведь реконнект с тайм-аутом.

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

если человек с ходу в рекурсию бежит

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

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

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

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

Проход по дереву никак не относится к рекурсии. Рекурсия тут только потому что это первое что пришло вам в голову.

Вы меня кажется, не поняли.

Представьте, что я вас собеседую.

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

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

Все x второго дерева строго больше любого x первого дерева.

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

—-

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

Я это к чему веду.

Никто не кладёт данные в дерево просто так по приколу.

Если есть дерево - значит, как правило, есть какой-то инвариант / набор инвариантов.

Рассуждение над инвариантами почти всегда естественно ведутся в терминах рекурсии и "раздеяй и влавствуй" - сформулировал что-то на одном уровне деревьев, свёл к какой-то подзадаче на детях / комбинации детей.

В этой задаче рекурсивное решение выводится просто и легко и просто и легко доказывается.

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

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

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

Развернуть рекурсивное решение в стек / стек+автомат - уже технические детали.

Ну, типа, в самом крайнем случае можно прямо в лоб не включая голову переписать написанный рекурсивный код в большой такой while со стеком из std::vector'а. Знание о том, что так можно сделать - не какое-то сакральное знание, на проверку которого стоит тратить время.

Скорее всего, там была асинхронная рекурсия, улетевшая в итоге по OOM.

Нет, там не было асинхронной рекурсии

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

Зачем кому-то сейчас решать такие базовые, но сложные задачи? Чтобы решать их потом в реальных задачах в ПО компании? Чтобы потратить кучу времени на неподдерживаемый костыль? Который еще и будет работать медленнее, чем библиотечное решение?

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

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

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

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

Тут упускается из виду один очень важный момент - перед интервью в Google вам буквально говорят о том, что будут задавать такие вопросы, и дают набор материалов, что бы подготовиться. Если вы не знакомы с простейшими алгоритмами и структурами данных, то можно ровно один вечер потратить на то что бы полистать "Cracking the coding interview".

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

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

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

и уже не будет помнить про дерево.

Как можно забыть что такое дерево? Чем нужно заниматься, чтобы годами не сталкиваться с деревьями? Да даже в JS мире люди регулярно работают с DOM. Везде есть деревья.

Диалектикэ!

Предположим я плохо выспался и всё забыл. Итак, стоит задача "инвертировать бинарное древо".

  • Древо. Дрее... Аааа, ну да, когда из вершины ветки торчат. Как в DOM

  • Бинарное. Би... Два. 0-1. Хм. Дре-во би-нар-ное. Дерево, ветки, два. Наверное возможны всего два звена. Можно уточнить у интервьювера.

  • Инвертировать. Как можно такое инвертировать? Либо сверху-вниз, либо слева-направо. Сверху вниз - нельзя, это будет не дерево. Ок, а что там с лево-направо? Тупо поменять лево и право? Хм, ну да. И для подветок. Уточняем у интервьювера правильно ли понята задача.

  • Пишем пару строк тривиального решения.

Альтернативный вариант:

  • Эти ваши академические знания никому не нужны. Я уже 30 лет не пишу никаких графов и деревьев. Эти ваши графья остались в феодализме. За пределами вузов я этого добра никогда не видел! А я, между прочим, реальные бизнес-задачи решаю. Без деревьев и алгоритмов! У меня такие большииие проекты (показать руками).

Как там "диалектикэ" поживает?

Да даже в JS мире люди регулярно работают с DOM. Везде есть деревья.

Везде есть атомы, и что теперь каждому быть экспертом по ядерной физике?) Вопрос риторический.

Свапнуть две переменные == быть экспертом по ядерной физике? Плохая аналогия подобна котёнку с дверцей.

Свапнуть две переменные == быть экспертом по ядерной физике? Плохая аналогия

Это вы уже сами придумали свою аналогию, вот она у вас и плохая.

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

Такое можно сказать о чем угодно. Все живут, но большинство из живущих не знают биологию.

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

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

Давайте будем реалистами и посмотрим, как обстоят дела в реальности, а не в фантазиях: любой js разраб может прекрасно оперировать DOM, не разбираясь при этом в деревьях.

Это реальность, и если вы считаете, что деревья надо знать, значит ваши представления с реальностью расходятся.

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

Достаточно разбираются. Дерево очень простая концепция. В простом виде (наш случай) там по сути не в чем разбираться. Можно просто взять ветку от дуба и сразу всё понять.

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

Условный "эксперт" по деревьям это человек, который пишет кастомные имплементации binary search tree или что-то подобное. А мы обсуждаем самое простое древо из всех возможных. Проще не придумать. Да, можно не знать что это называется "древо", но понимать как оно работает. Вы ведь понимаете как надевать носки? Даже если вы забудете то, что носок зовётся носком. Вы всё равно в состоянии его надеть, снять, закинуть в стиралку. И не надеваете его на нос.

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

Снова котёнок с дверцей. Разработчики на постоянной основе сталкиваются с деревьями.

Хватит писать ерунду, умоляю.

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

Снова котёнок с дверцей. Разработчики на постоянной основе сталкиваются с деревьями.

Хватит писать ерунду, умоляю.

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

Возможно, коммуникационный барьер возникает из-за разницы фронтенд/бэкенд.

Просто, ну пишем мы, допустим, на бэкенде crud (взять жсон, положить в бд. Взять параметр, селектнуть по нему из бд, отдать json).

Это, казалось, бы, самое простое, что на бэке можно придумать.

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

У меня относительно крупный проект на JS (около 10к строчек). Максимальная работа с DOM там:

document.getElementById("lblValueOfVariable").innerHTML = myvar;

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

Еще есть такая:

a = new label;
a.innerHTML = myvar;
a.addEventListener(onclick,"updateValue('a')");
b = document.getElementById("lblValueOfVariable");
b.appendChild(a);

Или тут?

подскажите, где в этой строчке нужно знание деревьев

тут: getElementById

плюс весь HTML (и HTML like) код.

около 10к строчек

относительно крупный

хех

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

на уровне прикладного разработчика

Даже на уровне прикладного разработчика нужно понимать что эта штука делает. На мой взгляд обязательно надо знать даже КАК она это делает, но фиг с ним, остановимся на "что делает". Она ищет среди всех dom-nodes заданного участка DOM-древа ноду удовлетворяющую фильтру. Без понимания что такое древо человек не поймёт что вообще происходит. Нужно понимать концепцию древа. Особенно если вызывается что-то типа domNode.querySelector(selector). Нужно понимать что за пределами domNode ничего искаться не будет. Что вершина древа в поиск не входит. Что в querySelectorAll войдут все ноды, даже на разных уровнях. Нужно понимать что эти уровни вообще из себя представляют.

Да даже в CSS нужно понимание того, что такое древо. Иначе все многосоставные селекторы будут вообще непонятны. Как можно использовать то, что не понимаешь даже на базовом уровне?

И да, знать КАК оно устроено под капотом тоже нужно. Но похоже, по меркам того, во что превратилось IT, я прошу слишком многово.

Даже на уровне прикладного разработчика нужно понимать что эта штука делает.

org 0x100

    mov ah, 0x9
    mov dx, hello
    int 0x21
    
    mov ax, 0x4c00
    int 0x21

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

В то время как 9 из 10 веб программистов приходивших к нам на собеседование не могли int32 число в big endian формате в БД записать побайтно ( спойлер: вопрос был just for fun потому что проще потратить 10 минут на лигбез про биты и машинное представление числе чем искать того кто это с института/школы помнит )

так мы можем скатиться до

А зачем? Ваш комментарий не имеет смысла. Может ли разработчик писать на асcемблере без понимания mov? НЕТ. А на JavaScript? ДА.

Может ли человек работать с HTML без понимания концепта "дерево"? НЕТ.

Может ли человек работать с HTML без понимания концепта "дерево"? НЕТ.

А доказать?
HTML это вложенные друг в дружку контейнеры, именно так этому учат в 7 классе. И народ спокойно сдает лабораторки. Можно ли сделать HTML профессией оставаясь в концепции вложенных друг в друга коробок и не подозревая что в дискретной математике есть эквивалентное описание на графах и их частном случае - деревьях? на мой взгляд - легко.

HTML это вложенные друг в дружку контейнеры

= дерево. Человек может не знать слова, но это не важно. Я уже писал выше, что даже, не зная что носок называется носком, вы всё равно сможете им пользоваться. Вы не наденете его на нос. Так и тут. Вложенные в друг дружку контейнеры это по сути описание "что такое дерево" на пальцах.

Заметьте, вложенные в друг друга контейнеры не пересекаются. В пустой контейнер можно положить ещё какой-нибудь контейнер. А в него ещё что-нибудь. Можно положить один, а можно сразу три. Нельзя сделать так, чтобы засунув руку в один ящик, она вылезла из другого ящика рядом. Ну и т.д.. Это яркая демонстрация того, что ваш гипотетический школьник понимает, что HTML это дерево, не зная слова "дерево".

Что и требовалось доказать.

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

спрошу "а что это".

А вам в ответ:

Ну вот такая штука как на картинке. Вот её тип:

type TreeNode<T> = {
  value: T;
  children: TreeNode<T>[]
}

ну это такой направленный ациклический граф с одной вершиной

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

После этого мне останется только вежливо попрощаться.

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

А потом вам в ммо надо ип адрес из big endian в little endian преобразовать ( это школьный курс если что )

И что? Стэковерфлоу каллировать?

разработчик обязан понимать как на уровне железа оно все работает - хотя бы в общих чертах

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

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

Холмс был удивлен этим фактом ;) До встречи с Ватсоном (да и после тоже) ему ето знание ни разу не пригодилось. Ему можно, он литературный персонаж с лычками сеньйора.

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

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

b = document.getElementById("lblValueOfVariable"); b.appendChild(a);

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

Да, верно. Поэтому и я привёл эти два примера.
Что касательно остального, у меня было мнение, что обычно всей "низовой" работой занимаются фреймворки, но если я не прав и это руками делают разработчики, то поверю вам на слово.
Всё-таки JS (и игры на нём) это одно из моих хобби, а не область знаний, за которые я получаю деньги.

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

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

container = document.createElement('...')
container.appendChild(Object.assign(
  document.createElement('div'),
  { class: 'inner', title: 'test' }));

Мы пишем:

return <Container>
  <div className={s.inner} title="test"/>
</Container>

Но суть от этого не меняется. Мы просто описываем в слегка более декларативном виде всё те же domTree штуки, что и в 2000 делали руками (или посредством jQuery\mooTools\PrototypeJS). Просто добавили много новых абстракций в целях автоматизации рутиных действий и упрощения логики.

Без понимания что такое DOM древо писать фронт просто невозможно.

Сверху вниз - нельзя, это будет не дерево

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

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

не выглядит чем-то невероятным

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

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

Дано "binary tree". Без указаний на какие-либо сортировки. Если вам кажется что оная имеет место быть - надо спросить. Вообще правильно заданные вопросы это один из верных путей пройти собеседование "на отлично".

И в этот момент заканчиваются время

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

Приходится долго и методично учить их "разговаривать". Чтобы перед тем, как наворотить 500 строк diff-ов по всему проекту, они задали парочку правильно поставленных вопросов...

Задачу о том, как инвертировать бинарное дерево, может решить любой студент первокурсник

Я увлекся программированием с конца 90х, работаю именно как программист уже лет 20 с гаком. Знаете сколько раз мне за это время потребовались бинарные деревья (и деревья вообще)? НОЛЬ.

Это - экзотика. Она полезна для решения отдельного класса задач, но встретить их еще надо ухитриться.

До кучи - в статье вообще речь про JS. Это, как правило, фронтэнд - о чем нам и тестовые задачи прям намекают.

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

Мне реально интересно!

P.S.: а Гугл - это Гугл. Гуглов в мире мало. Задачи у них нестандартные, поэтому и интервью тоже проверяет совсем не то, что надо проверять рядовым компаниям - это нормально.

(и деревья вообще)? НОЛЬ

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

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

С бинарного не знаю, а просто с деревьями - полным полно. Вывод какой-нибудь иерархической структуры каталогов товаров. Компонент выбора словарных значений из какой-либо иерархии. Пробег по DOM-древу. Формирование\конвертация\интерпретация каких-нибудь древовидных темплейтов произвольных данных, для дальнейшего вывода на экране (например документ аля .doc).

что надо проверять рядовым компаниям - это нормально.

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

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

Без понятия, почему вы с ними сталкиваетесь, а я - нет. Я пишу сайты на php (с разными CMS) и фронт на js и jquery. Я вообще не представляю, куда тут можно деревья всунуть. Вы выше в ответе приводили пример, что DOM - это дерево. Но с ним же не требуется работать именно как с деревом! Там или ищем конкретный элемент по его id/class или работаем сразу с группой элементов, которая опять-таки ищется по id/class.

Еще я пишу разные проекты на C# и там опять-таки мне не требуются деревья. Самое продвинутое - hashset.

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

В 99,9% задач на входе у вас будет тупой линейный список, а не дерево. Потому что прилетит оно с бэкенда именно в виде списка. Потому что в базе данных оно хранится именно так и после sql-запроса это всё будет именно линейным списком. Не, конечно, вам может повезти и бэкенд будет отдавать xml/json/html, но зачем вам вручную их парсить-то? Берете готовую библиотеку и получаете результат в одну строчку - причем работающий намного быстрее, чем всё, что вы могли бы изобрести сами.

Компонент выбора словарных значений из какой-либо иерархии.

В большинстве случаев - это будет ассоциативный двумерный массив или hashset. Зачем тут дерево? Чтобы мозги программисту ломать?

Пробег по DOM-древу.

ЗАЧЕМ?? Побольше процессор погреть на ровном месте?

Формирование\конвертация\интерпретация каких-нибудь древовидных темплейтов произвольных данных, для дальнейшего вывода на экране (например документ аля .doc).

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

Но с ним же не требуется работать именно как с деревом!

Неоднократно работал с DOM как с деревом. Наиболее плотно когда писал wysiwyg. Или кастомный TSX/JSX шаблонизатор.

В 99,9% задач на входе у вас будет тупой линейный список, а не дерево

Я бесчисленное число раз выводил на экран (и не только) именно произвольные иерархические структуры. Комментарий, который вы сейчас читаете - это древо. Вы за свои 20 лет ни разу не писали систему комментариев?

после sql-запроса это всё будет именно линейным списком

Преобразовать плоский список в древо это, внезапно, задача на деревья. Да-да. Собрать иерархическую модель по item.parentId это построить древо.

В большинстве случаев - это будет ассоциативный двумерный массив или hashset. Зачем тут дерево? Чтобы мозги программисту ломать?

Если клиенту нужно древо (потому что клиент видит это как древо), то пишут древо. Да-да, с этими плюсиками collapse/expand. Вы никогда не писали иерархических контролов?

Как я и говорил - экзотика

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

если уже есть 100500 оптимизированных и поддерживаемых библиотек для этого?

Говна всякого много понаписали, да. Цена ему обычно грош. К тому же шаг влево, шаг вправо и приехали. В крупных SPA чаще всего свои собственные палитры компонентов.

Неоднократно работал с DOM как с деревом. Наиболее плотно когда писал wysiwyg. Или кастомный TSX/JSX шаблонизатор.

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

Преобразовать плоский список в древо это, внезапно, задача на деревья. Да-да. Собрать иерархическую модель по item.parentId это построить древо.

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

Если клиенту нужно древо (потому что клиент видит это как древо), то пишут древо. Да-да, с этими плюсиками collapse/expand. Вы никогда не писали иерархических контролов?

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

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

90% компаний в принципе не решает такие задачи. Остальные меня работать уже не возьмут по возрасту)

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

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

Да ладно! Именно структура - дерево для этой задачи вообще не нужна

Именно дерево в своём цикле вы и построите. Будет ли ваше дерево hashmap-ом или нет дело десятое. Но это будет дерево. Загуглите что такое дерево. Это абстрактное понятие, а не конкретный набор полей. В коде может быть представлено по разному. Может быть с hash-maps, может в массиве (как в Heap), может в виде конкретного struct. От задачи и инструментов зависит. Но древо это просто частный случай графа с конкретными критериями.

Ну а в итоге будет еще +1 вариант такой же субстанции

Ну дык напишите нормально. Как так вышло, что спустя 20+ лет работы в этой области вы не можете написать контрол лучше чем это делают вчерашние студенты?

Ну как я и писал - экзотика

В мире drupal-ов и wordpress-ов пожалуй да. И то от конкретной компании зависит. Но это самая низкая ступень в веб-разработке.

90% компаний в принципе не решает такие задачи.

Я проработал в 7 компаниях. Что-то около 15 лет. В 6 из них я решал (и решаю) такие задачи. Wordpress-ы были только в 1-й.

Именно дерево в своём цикле вы и построите. Будет ли ваше дерево hashmap-ом или нет дело десятое. Но это будет дерево. Загуглите что такое дерево. Это абстрактное понятие, а не конкретный набор полей.

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

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

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

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

Чем в итоге такой подход лучше использования одного из 100500 решений?

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

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

И что в итоге будет лучше?

Ну дык напишите нормально. Как так вышло, что спустя 20+ лет работы в этой области вы не можете написать контрол лучше чем это делают вчерашние студенты?

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

Я проработал в 7 компаниях. Что-то около 15 лет. В 6 из них я решал (и решаю) такие задачи.

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

Но вы не будете работать именно со структурой "дерево".

Почему? Буду. Древо это однонаправленный граф без циклов и островов. Комментарии это древо. Буду работать с ними как с древом. Т.е. с иерархической структурой данных.

Потому что она для вывода структуры разделов вообще не нужна.

Нужна.

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

Сложные алгоритмы вроде binary search tree - да, это уже экзотика. А просто проитерировать древо, преобразоваться его в какое-нибудь другое, отфильтровать ноды по какому-нибудь критерию - это ежедневная рутина.

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

Нельзя написать нормально.

Можно. И даже нужно. ИЧСХ пишут. Форма комментариев в которую вы сейчас что-то пишете - кастомная. Лента - кастомная. Остальное про "чужое\своё" опущу, т.к. это офтоп.

Потому что это нафик не нужно

Наверное поэтому крупные и средние компании пишут кастомные палитры компонентов. Нанимают дизайнеров, которые пишут design-system-ы. Создают core и ui отделы разработчиков?

Никому из них чего-то более продвинутее возможностей CMS просто не нужно

Рискну предположить что у нас с вами фундаментально разный уровень квалификации и оплаты. Дальше думайте сами.

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

А какая разница дереву, что вы не знаете что с ним работаете? В контексте собеседования это тоже не важно, оно будет для вас выглядеть примерно так
-"Разверните дерево", - "а что такое дерево? уже не помню", - "ок <рисует дерево>, надо чтобы вот эти ноды переместились сюда, вот эти сюда", "ок, понятно".

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

Хотя имхо структуры данных типа деревьев надо знать

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

да и вообще надо знать что внутри языковых структур данных и как оно работает

Имхо, сильно зависит от конкретных языков и их реализаций.

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

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

Если ты о чем-то знаешь - ты это сможешь нагуглить, когда понадобится)

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

А вот в php - это всё сделано вообще по-другому, там важнее знать когда идет работа по значению

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

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

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

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

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

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

Девиз php: "пофиг на всё, отработай и умри быстро!"

Я про пхп особо ничего не знаю, но удивлен что там так всем всё равно на контейнеры

Плюсы в общем случае - это какая-то программа которая будет работать относительно долго. А процесс на пхп должен отработать и умереть в течение 0,2-120 сек максимум. Много за это времени утечет памяти? Много у вас там задержек успеет образоваться из-за неправильно выбранных структур хранения данных?

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

В итоге для разработчиков сайтов на пхп намного важнее смотреть что там с БД творится. Т.к. задержки на ее уровне на порядки сильнее влияют на общую производительность. Ну и, понятно, не писать запросы к базе внутри циклов (вы бы знали, сколько любителей такого я встречаю!)

Программист на C# не пишет код для выделения/освобождения памяти. Поэтому, теоретически, чтобы писать на C#, необязательно знать, что такое куча, стек и сборщик мусора.
На практике джуну можно и не знать. А вот начинающий мидл уже должен знать хотя бы про стек и кучу. Как минимум для того, чтобы не использовать String там, где нужен StringBuilder. А сеньору уже нужно представлять как устроен сборщик мусора.

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

Вообще, массив и дерево - это две базовые единицы, на которых построены все структуры данных. Либо мы выделяем память подряд, либо храним ссылки на другие участки памяти. Связанный список является вырожденным ("унарным") деревом.
Программист без знаний/опыта использует структуру А, потому что он других не знает. Программист с минимумом знаний/опыта использует структуру А, потому что для такой задачи он всегда использовал эту структуру. Но опытный программист должен уметь обосновать свой выбор. А для этого ему нужно знать, что там под капотом, и какие есть альтернативы.

Как минимум для того, чтобы не использовать String там, где нужен StringBuilder

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

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

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

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

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

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

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

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

Сложение строк на стеке (ReadOnlySpan) работает быстрее, чем StringBuilder. При сложении строк основное время уходит не на копирование, а на выделение памяти в куче.

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

Замена в коде строки на массив символов не решает проблему. Написание своего StringBuilder (начнем выделять память с запасом) - решает.

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

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

А когда строку применять не стоит?

Замена в коде строки на массив символов

Ваше решение точно сможет работать с эмодзи и прочим юникодом?

Я пишу сайты на php (с разными CMS) и фронт на js и jquery

Ой, я проглядел самое главное. Это многое объясняет. Особенно jQuery. У меня этот этап закончился уже спустя 2 года работы по профилю. Дольше там лучше не задерживаться.

Для натягивания шаблонов на Wordpress и правда не нужно ничего особенного знать и уметь, кроме знания Wordpress. И правда лучше тащить коробочные плагины, ибо время=деньги.

Я так давно уже не слышал таких слов: PHP, CMS, CMF, jQuery. Ух. Как вспомню, так вздрогну.

Все эти wordpress/joomla/drupal/whatever платформы/CMF/CMS - это всё это самый низкий уровень в веб-разработке. Уровня "собери из кубиков готовый проект для соседнего барбершопа за 3 копейки, и чтобы не больше 2х дней на имплементацию". Есть такая ниша. Но реальная веб-разработка (например Google Docs, 2gis, Facebook, Tiktok) гхм... несколько сложнее. И там нужные другие навыки. И "плагины из коробки" отсутствуют как класс. Зато открывается целый новый мир задач и решений.

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

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

Я так давно уже не слышал таких слов: PHP, CMS, CMF, jQuery. Ух. Как вспомню, так вздрогну.

Да ладно! По сравнению с тем, что я видел на чистом JS - это рай)

Все эти wordpress/joomla/drupal/whatever платформы/CMF/CMS - это всё это самый низкий уровень в веб-разработке.

... который занимает 90+% рынка. И этим компаниям вообще не нужно проверять программистов на понимание деревьев. Но они зачем-то это спрашивают на собеседованиях.

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

Чем-то вы не тем занимались, видимо. Мне как-то всё больше попадаются проекты, где с десяток человек полгода-год сайт собирают и наполняют данными. А не 2-3 дня)

Но реальная веб-разработка (например Google Docs, 2gis, Facebook, Tiktok) гхм... несколько сложнее.

Сколько компаний такого уровня на рынке? Хоть пару тысяч названий наберем?
А остальные - вот именно что cms/php/jquery. Ну может быть еще что-то самописное. Вон, посмотрите на сайты МВидео, ДНС, еще каких-нибудь крупных торговых сетей - где там можно применить деревья? Это там в принципе нигде и никогда не потребуется!

90% компаний в целом не нужно ничего более, чем натягивать шаблоны на CMS

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

который занимает 90+% рынка.

90% рынка чего? Вы по какому критерию меряете? Если по посещаемости, то скорее всего топ 100 ресурсов в сети имеют в совокупности больший трафик, чем все эти веб-сайты местных парикмахерских. Если по финансовой выручке, то там вообще фиг что посчитаешь, ибо для парикмахерских сайт это реклама, а не источник дохода. Если по зарплатам, то ясное дело, что в крупных продуктовых конторах платят в разы больше, чем в друпал-студиях. Если по количество специалистов, то не стоит забывать, что в веб-студиях народу мало, в этих ваших гуглах орды. В общем я думаю, что 90% это очень натянутое число.

и наполняют данными.

Надеюсь не те же самые люди? :-D

Хоть пару тысяч названий наберем?

Десятки тысяч точно. Просто посмотрите на google trends слова вроде React, Vue, Angular.

где там можно применить деревья?

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

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

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

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

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

90% рынка чего? Вы по какому критерию меряете? Если по посещаемости, то скорее всего топ 100 ресурсов в сети имеют в совокупности больший трафик, чем все эти веб-сайты местных парикмахерских.

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

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

Надеюсь не те же самые люди? :-D

Вот! Это правильный вопрос) Вы не поверите, но достаточно часто - одни и те же. Далеко не каждая мелкая веб-студия вообще имеет в штате отдельного контент-менеджера. И при этом ухитряется обслуживать не один десяток сайтов параллельно.

Десятки тысяч точно. Просто посмотрите на google trends слова вроде React, Vue, Angular.

Мы живем в разных мирах) Мой мир выглядит примерно вот так https://itrack.ru/research/cmsrate/ - особенно рекомендую посмотреть на самые нижние картинки на странице. Где 60% корпоративных сайтов (больших! дорогих! С большими зарплатами!) - это вообще Битрикс, который все ненавидят) И за 20 лет сами разработчики битрикса осилили шаблонизатор только в ОДНОМ компоненте из нескольких сотен. Про что-то более продвинутое я даже не заикаюсь.

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

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

а итоговая оплата не сильно изменится в сравнении с более простыми сайтами. 

Это не правда. Экспертам в архитектуре SPAs и в Wordpress платят очень разные деньги. И перспектива роста тоже небо и земля.

от высокой посещаемости получите только новый геморрой

О как. Это теперь называется "геморрой"? А я думал в этом и заключается работа программиста. И в этом как раз самый кайф.

но достаточно часто - одни и те же. Далеко не каждая мелкая веб-студия вообще имеет в штате отдельного контент-менеджера.

Первое что нужно сделать в такой ситуации - свалить с такой конторы. Если программист занимается мартышкиным трудом по заполнению сайта, то это полное дно. Что дальше? Будет помогать разгружать фуры? Мыть полы?

И при этом ухитряется обслуживать не один десяток сайтов параллельно.

Я знаю эту кухню. Работал в таком. Это болото. Бегите оттуда :)

Где 60% корпоративных сайтов

О чём и речь. Корпоративные сайты. Т.е. дно. Смотрите на продуктовые компании. Т.е. в случае web-а это компании которые своим сайтом себе хлеб добывают. Остальное, лишь потеря времени для программиста.

DEPTH_LEVEL

Снова деревья. Никуда от них не деться. Ужас.

О как. Это теперь называется "геморрой"? А я думал в этом и заключается работа программиста. И в этом как раз самый кайф.

Кайфом это было 10 лет назад. А сейчас - геморрой на ровном месте)

Если программист занимается мартышкиным трудом по заполнению сайта, то это полное дно

А если тебе надо 10-20 товаров с демо-данными сделать? Причем ТЗ нет, какие будут поля у товаров - решаешь именно ты, а клиенту вообще на всё положить?
Не всегда нужен отдельный человек. А иногда вообще проще самому сделать. Да и наполнение не всегда вручную - есть эксель, csv, простейшие загрузчики данных, написанные на коленке под одну конкретную проблему. Когда контент-менеджер товары будет вручную заполнять месяц, а программист справится за день-два.

О чём и речь. Корпоративные сайты. Т.е. дно. Смотрите на продуктовые компании. Т.е. в случае web-а это компании которые своим сайтом себе хлеб добывают. Остальное, лишь потеря времени для программиста.

Ну мне не попадались такие проекты. Поэтому - только копоративные сайты и магазины. Там тоже бывает интересно, просто задачки совсем другие. Они чаще про то, как из деталей от Лады собрать Феррари, используя только молоток и гвозди )

DEPTH_LEVEL
Снова деревья. Никуда от них не деться. Ужас.

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

айфом это было 10 лет назад. А сейчас - геморрой на ровном месте)

Т.е. вы выгорели? А я вот нет. Рецепт: решать сложные задачи. Охотно за них браться. Браться за огромные проекты со сложной архитектурой. За сложные алгоритмические задачи. Огонёк из глаз никуда не пропадёт. Я до сих пор обожаю свою работу.

А если тебе надо 10-20 товаров с демо-данными сделать?

Наполнение сайта демо-данными и работа контент-менеджера это очень разные вещи.

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

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

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

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

Там тоже бывает интересно

Я знаю. Но за 4г я наигрался. Это тупик.

Но знать о том, что это дерево

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

Т.е. вы выгорели?

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

Наполнение сайта демо-данными и работа контент-менеджера это очень разные вещи.

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

Очередная интересная задача, где наверняка будут деревья.

Эксел. Пара десятков колонок. Сохранить в csv. Распарсить csv на php. Всунуть распарсенное в api cms'ки в правильном порядке.
Тут вообще творчества нет. Это прям вот работа контент-менеджера, но они программировать почему-то не умеют))

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

Я за столько лет не нашел себе что-то прям интересное. Поэтому пока так...

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

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

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

Решение: перестать это делать. Заняться чем-нибудь более интересным.

Ну вот если заказчик - маленький

То у него и денег нет. Поэтому сразу нафиг.

Эксел. Пара десятков колонок. Сохранить в csv. Распарсить csv на php

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

Я за столько лет не нашел себе что-то прям интересное

А там и искать не нужно. Попробуйтесь в какой-нибудь 2гис. Или avia-sales. Или в puzzle-english. Или ещё какую интересную продуктовую контору. Когда контора живёт за деньги полученные со своего продукта, это совсем другая реальность.

Ну так я и говорю - вот тем компаниям и нужно на собеседованиях про деревья и графы спрашивать.
А когда задачки уровня "подсвети в списке на странице элементы" - это вообще не 2гис и avia-sales. Даже не рядом. Это именно сайты уровня CMS плюс-минус. С соответствующей сложностью алгоритмов.

Когда я устраивался в контору уровня "подсвети в списке на странице элементы" меня спрашивали:

  • Сверстай вот такой макет на flexbox

  • Напиши простую гостевую книгу так, чтобы шаблонизатором был XSLT

  • Чем отличается такой-то SQL оператор в MsSQL 2005 от него же, но в MsSQL 2007 (о_О)

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

И SQL я знаю только с гуглом. Потому что 99,9% моих задач используют готовые api/функции/компоненты и sql код я вообще не вижу. Оставшийся 0,1% - это когда конкретном сайте творится неведомая фигня и надо разбираться почему так случилось.

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

задач за 30 лет мне таких просто не попалось.

Это вам просто тимлида толкового не попадалось. Который бы вам на пальцах показал зачем это всё нужно.

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

Это на 99% главная причина отказов на собеседовании у тех, кому за 40. Люди возьмут в команду более слабого джуна 20ти лет, потому что его можно научить тому, чего он ещё не знает. А вот 40-летнего джуна научить уже ничему нельзя, он уже не знает. В этом ключевая суть "эйджизма" при найме.

И SQL я знаю только с гуглом

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

P.S. ничего личного. Думаю вам должно быть интересно, как на это смотрят с другой стороны и что думают на самом деле (вживую такое не скажут, просто не перезвонят).

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

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

Это просто надо решать задачи, не связанные с sql напрямую. Если вернуться к предыдущему сообщению, то мне в целом наплевать на отличия между версиями софта sql. Они меня интересуют только в контексте какие параметры в ini файлах подкрутить надо. А сам код - в ядре cms, именно на него и влияют эти отличия версий, именно разработчики cms и волнуются.

Вот на фреймворках - там да, там это всё нужнее, там программист поближе к базе. Да и то, всякие orm'ы же есть, писать без них == создавать себе геморрой.

Вот скажите, зачем мне знать особенности sql запросов, если я их не использую? Зато я нормально знаю как работают индексы и могу ими оптимизировать производительность БД - ведь запросы-то в ядре CMS, у меня там власти нет, приходится извращаться)

Вы просто привыкли быть на острие прогресса) А полроссии сидит на битриксе, где верх технологий - использование классов в php, причем разработчики их внедряют уже 7 лет и всё ещё не закончили.

если я их не использую?

Попробуйте себе (не мне) честно ответить на вопрос "почему я их не использую?". Вроде за 30 лет невозможно с этим всем не столкнуться. Но вы смогли. Что-то, наверное, не так.

в ini файлах

Аж old-скулы свело.

А полроссии сидит на

Несмотря на всю ненависть к вашей стране, я не могу не признать, что у вас, оставшаяся половина страны, пишет приложения мирового уровня. Как по мне, так РФ это топ-2 IT страна в мире (1-ая USA). Уж где-где, а у вас полным полно крутого софта и высокий спрос на специалистов. Было бы желание.

Попробуйте себе (не мне) честно ответить на вопрос "почему я их не использую?"

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

Аж old-скулы свело.

Порадуемся же за линукс. php.ini, my.ini - как я их люблю, вы бы только знали... Особенно тот факт, что их содержимое практически не менялось с начала 2000х и по-умолчанию заточено под что-то уровня pentium-I.
Люблю линукс! /s

Уж где-где, а у вас полным полно крутого софта и высокий спрос на специалистов.

Ну они где-то там, в Москве. В общем, далеко)

фронт на js и jquery

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

По всем пунктам согласен с @faiwer

почему не хотят нанимать тех, кто не может их решить

При этом человек считает, что его не нанимают в толковые конторы потому, что возраст большой. А то что каждое третье его предложение это "красный флаг", наверное, тут не причём :)

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

Фронт на js и jquery определяется исключительно выбранной CMS. А 60% рынка CMS - это битрикс. Который написан через жопу и не поддерживает современные технологии в принципе. И ты даже если захочешь туда чего-то новое всунуть - но оно просто не влезет, потому что надо правки в ядро вносить, а это автоматом блокирует установку обновлений (ну или сиди и сливай правки после каждого обновления. Вручную).
С wodpress'ом примерно такая же картина - при этом на мировом рынке его доля сейчас сколько? 80%? Больше?

"Бытие определяет сознание" (с)

И ни разу не работали с иерархическими данными?

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

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

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

Как подработка студенту - прекрасное решение (сам так делал). Но дальше то зачем? Зачем объедать студентов!?

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

МВидео то может и нужен. Но вам то это зачем? Вам не хочется 300кк USD\секунду? Не хочется интересных задач? Не хочется ездить по Амстердамам и Лондонам на конференции? Не хочется трёшку в центре? Не хочется машину с 200+ лошадьми? Не хочется в отпуск на Багамы?

В 40+? Ну-ну...
Последнее время мне хочется только есть, спать и играться)

  • Некоторые мои знакомые программисты в 40+ уже долларовые миллионеры.

  • Я лично собеседовал и способствовал найму двух программистов 45-55 лет в мою прошлую контору. Взяли, работали под моим началом. Причём это даже с релокацией.

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

Реальная проблема тех кому за 40, чаще как раз в отрицании реальности, которая говорит, что их опыт малорелевантен. И тем из них, кто из песочницы выпрыгнуть хочет судьба благоволит. Тем кто находит отмазы - нет.

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

Мне 40+, мне хочется всё вышеперечисленное и еще немного сверху :)

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

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

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

Инвертировать двоичное дерево не смог на собеседовании в гугле разработчик Homebrew. Вот его твит. Выше по треду про него упоминали.

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

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

Знаете сколько раз мне за это время потребовались бинарные деревья (и деревья вообще)? НОЛЬ.

Вы за 20 с гаком ни разу JSON/XML не видели? С DOM ни разу не работали?

JSON/XML парсятся одной строчкой кода. На выходе - структура, или массив, или массив структур. В 99% случаев так передаются обычные линейные списки. И не деревья. Потому что sql-запрос к базе данных выдаст это именно обычным линейным списком, а в 99% случаев именно этот линейный список и полетит на фронт "как есть" без каких-либо преобразований данных.

Не, если вы любитель ASP.Net, то там еще туда-сюда есть варианты. Но это уже не совсем мейнстрим и не большинство сайтов. Даже не треть. Вот, гугл говорит мне: "на PHP написано 79% всех сайтов в интернете" и "доля ASP.NET составляет 11,2%".

 в 99% случаев именно этот линейный список и полетит на фронт "как есть" без каких-либо преобразований данных.

А вам очень принципиально где вы его преобразуете в древо, на FE или BE? Если нет, то к чему вы вообще это упомянули?

JSON/XML парсятся одной строчкой кода

И на выходе получаем древо. Что вы сказать то хотели?

ASP.Net ... PHP

А причём тут технология? PHP не отменяет работы с деревьями. Особенно если писать по старинке. Например древовидное меню записанное в базе. Задача - построить HTML для этого меню. Вам придётся преобразовать его в древо и вывести через foreach. Снова эти злощастные деревья. Не хотите на стороне PHP? Передадите в виде JSON-а на клиент плоским списком? А что изменится от этого? В условном React компоненте вам придётся делать тоже самое.

А вам очень принципиально где вы его преобразуете в древо, на FE или BE? Если нет, то к чему вы вообще это упомянули?

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

И на выходе получаем древо. Что вы сказать то хотели?

С которым никто не будет работать как с деревом. И гарантированно никто и никогда не будет его переворачивать)

А причём тут технология?

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

Например древовидное меню записанное в базе. Задача - построить HTML для этого меню. Вам придётся преобразовать его в древо и вывести через foreach.

Да не придется его преобразовывать! Это просто линейный массив с одним единственным foreach и парой флагов для проверки текущих уровней вложенности чтобы корректно открыть/закрыть ul/li. А всё остальное за вас сделает браузер и css в нем.

вам не нужно знать структуру "дерево"

Нужно. Придётся.

спрашивать это на собеседовании - идиотизм

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

С которым никто не будет работать как с деревом

С которым все работают как с древом.

И гарантированно никто и никогда не будет его переворачивать

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

Да не придется его преобразовывать!

А мы, дурачьё, преобразовываем.

Это просто линейный массив с одним единственным foreach и парой флагов для проверки текущих уровней вложенности чтобы корректно открыть/закрыть ul/li.

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

  • 1) Вы игнорируете то, что описываемый вами подход это алгоритм обработки древа. Причём более сложный, чем то как это делают люди на самом деле. Алгоритм рекурсивной отрисовки намного проще для понимания и поддержки.

  • 2) И на беке и на фронте вручную HTML как строку уже практически никто не формирует. Особенно во фронте (компонентный подход). У вас будет рекурсивный компонент по отрисовки элементов древа и древовидная же структура которую вы попадите ему на входе. А её нужно сформировать. И так будет, что в React, что во Vue, что в Angular.

  • 3) Вы упорно игнорируете тот факт, что сам факт наличия у вас depth у элемента это уже чья-то работа с деревьями. И не дай бог это древо мутабельное, вам этот depth придётся рекурсивно поддерживать консистентным. Никуда вы от этих злобных деревьев не денетесь.

А APS.NET \ PHP \ что угодно тут вообще не причём. Это так называемая БАЗА.

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

Так я и не говорил, что не надо. Я говорил о том, что сложность должна быть разумной. И если у вас сайт на cms, то просто глупо спрашивать деревья. Надо спрашивать вообще другие вещи: алгоритмы сортировки или почему не надо делать sql-запросы внутри циклов)

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

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

  1. ... Алгоритм рекурсивной отрисовки намного проще для понимания и поддержки

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

Это где-то там, у любителей фреймворков. А у тех, кто на CMS - самые новые технологии - это где-то ближе к 2010 году и jquery 2.4. Да, это печально - но с этим приходится жить, выбора нет)

  1. Вы упорно игнорируете тот факт, что сам факт наличия у вас depth у элемента это уже чья-то работа с деревьями

И мне в общем и целом на это наплевать. Потому что этот depth формирует ядро CSM, власти на которым у меня нет (потому что не стоит править ядро - потом будет сложно обновлять и поддерживать). И каким образом CMS заполняет этот depth - мне всё равно, меня волнует только конечный результат.

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

Я говорил о том, что сложность должна быть разумной.

Есть две популярные задачи предельно примитивного уровня - FizzBazz и инвертирнование бинарного древа. FizzBazz имхо сложнее, там нужно знать что такое %. Как можно спросить что-то ЕЩË БОЛЕЕ примитивное? Напишите функцию сложениях двух чисел?

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

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

но с этим приходится жить, выбора нет)

Есть. Выбор всегда есть. Открываете биржу труда. Ищете толковую продуктовую компанию. Готовитесь к собеседованию. Устраиваетесь. Гип-гип-ура!

фактически единственные места где есть деревья

Любая иерархия в ваших проектах = древо. Иерархия одна из самых фундаментальных сущностей в нашей жизни. Даже сущности вида [role .->* permissions] это уже двухуровневое древо.

Действительно редко встречаются разве что такие графы, которые не деревья и не списки.

Есть две популярные задачи предельно примитивного уровня - FizzBazz и инвертирнование бинарного древа.

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

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

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

Зато рекурсивный алгоритм проще, да)

Есть. Выбор всегда есть. Открываете биржу труда. Ищете толковую продуктовую компанию. Готовитесь к собеседованию.

Ага. А там спросят преобразования деревьев и обход графов - или еще какую-нибудь фигню. Причем по работе это потом не потребуется)

Любая иерархия в ваших проектах = древо

Да я разве против? Я который комментарий пишу о том, что понимать, что это дерево, на самом деле на практике вообще не нужно. Надо знать 1-2 алгоритма преобразования простейших линейных списков в древовидные (по типу ul/li) и всё. И в принципе за всю жизнь никогда не столкнуться с необходимостью как-то преобразовывать входной список - максимум будет фильтр значений при переборе в цикле по условию.

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

Смысл это спрашивать

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

если компания собирается это использовать и ищет такого программиста

Давайте упростим до "если компания ищет программиста". Человек не способный решить это инвертирование не программист. Я вот тоже сам смог заменить лампу в фаре. Но я не автослесарь.

Рекурсия - плохое решение

Некорректное утверждение. Как и всё остальное, что вы написали про рекурсию. Не вздумайте такое произнести на собеседовании. Но спорить не буду (итак уже 20+ комментариев).

Причем по работе это потом не потребуется

Потребуется.

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

С графами невозможно не столкнуться. Дерево - граф. Массив - граф. Связный список - граф. Даже строка это граф. Даже я сам (как, впрочем, и вы) - граф. Граф есть всё, аминь.

Некорректное утверждение. Как и всё остальное, что вы написали про рекурсию.

Ну, например, дерево может оказаться односвязным списком на 100500 элементов, и превед переполнение стека. Конечно, рендерить html-элементы по такому списку никто в здравом уме не будет, но для общего случая работы с деревьями проблема возможна.

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

Я всё это понимаю. Просто решил не вдаваться в оффтоп. А то мы сейчас и про оптимизацию хвостовой рекурсии начнём говорить (которой увы нет в JS)... Тут людей слово "древо" пугает :)

хвостовой рекурсии начнём говорить (которой увы нет в JS).

Была какое-то время в некоторых движках. Но выпили. Как думаете, почему?

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

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

выпилили за ненадобностью

Ну нужна то она нужна. Удобно же. Однако получить stack overflow ошибку лучше, чем повисшую вкладку из-за бага в коде. Может быть дело в том числе, и в этом.

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

поддерживается в Safari

Видимо, отключено. Сейчас проверил, вываливается "Maximum call stack ...."

Хвостовая рекурсия есть в JS со времен ES6 и поддерживается в Safari

Proper tail call (PTC) и tail call optimization (TCO, ака оптимизация хвостовой рекурсии) это не одно и то же. PTC добавили в стандарт какие-то фантазёры, когда она не была реализована ещё ни в одном браузере. Я полагаю, что это сделали как раз с подачи разработчиков Webkit (Safari), которые через примерно год ее предоставили.

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

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

PTC или TCO - уже детали.

Остальные не то, чтобы не осилили - там работы на вечер. Добавили, не понравилось, убрали.

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

PTC убивает историю вызовов функции в стек трейсах - при ошибке вы видите только последний вызов

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

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

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

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

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

PTC это не TCO. Например здесь нет рекурсии, но есть PTC:

const foo() => bar('hi')

const bar(s) => console.log(s)

В стандарте с PTC две проблемы.

Во первых в названии есть "tail call" и люди естественно путают с TCO. Может это был такой маркетинговый ход, чтобы протолкнуть революцию под видом простой фичи, пока толком ни кто не понял о чём речь?

TCO это локальная оптимизация. Вы просто переписываете код функции статически.

В PTC нет речи ни про рекурсию, ни про оптимизацию. Т.е. улучшения производительности фича явным образом не предполагает. А что тогда?

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

Фактически, в стандарт добавили требование, которое вынуждает разработчиков интерпретатора отказаться от модели исполнения с использованием стека и перейти на другую - continuations (call/cc как в scheme).

В каком-то смысле это предложение вернуться к истокам. Но Microsoft/Intell/Google оптимизируют с оглядкой на стек и чтобы call/cc работала так же быстро нужно переделывать всю инфраструктуру снизу: от библиотек и компиляторов, поскольку "кто вызывал функцию, тот и подчищает" уже не работает. И до процессоров - которые умеют быстро развернуть стек в случае исключений, но спотыкаются о long jump.

PTC это не TCO

Мы это уже выяснили выше.

Т.е. улучшения производительности фича явным образом не предполагает. А что тогда?

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

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

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

Вы пробовали отлаживать такой код в Safari?

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

При использовании стека у вас гарантировано есть вся история вычислений "сверху до низу". В случае PTC это просто хвост - последние N вызовов. А все что раньше - тишина.

Например rxjs, ramda и fp-ts, активно использует код в стиле continuations, которые Safari благополучно лианеризирует. Если между точкой возникновения проблемы и ее эффектом больше 128 шагов где все хорошо - приятной отладки. Для сравнения, в Chrome максимальная глубина стека когда последний раз смотрел была около 10к, в Firefox - почти на порядок больше. Этого хватает с лихвой.

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

И что, часто у вас с этим проблемы? Я вот занимаюсь, в основном, совместимостью и кучу времени провожу за отладкой. Практически каждый день, во всех движках, в том числе в древних, в том числе во всех версиях Safari, начиная с 5ой. Пишу и часто вынужден отлаживать полифилы Iterator Helpers, Async Iterator Helpers, Observable и т.д. - то есть, считайте, очень близкое к тому, что и в инструментах, упомянутых вами. И, знаете, как-то таких проблем не возникает.

JSON/XML парсятся одной строчкой кода.

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

В 99% случаев так передаются обычные линейные списки.

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

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

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

Можно ссылку на эту волшебную статистику?

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

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

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

Во-вторых, будет взято готовое решение. Как там оно работает - никого не интересует. Если одно не понравится, возьмут другой вариант - выбор большой. И именно проект адаптируют под выбранное решение, а не наоборот. Потому что - условно - решение стоит 1 000 руб, а время программиста на его написание с нуля - все 20 000, если не больше. Компании обычно умеют считать деньги)

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

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

Каким циклом вы выведете иерархическую древовидную структуру?

Всё нужное фильтрует бэкенд, еще на уровне запроса к sql-базе.

Т.е. когда юзер захочет отфильтровать уже полученные и выведенные древовидные данные, вы запрос на бэк пошлёте?

Собственный опыт.

Ваш опыт нерелевантен. В мире веба последние 15 лет реакты, ангуляры и вообще SPA, а вы на jquery карусели к вордпрессу прикручиваете, по вашим словам.

Т.е. когда юзер захочет отфильтровать уже полученные и выведенные древовидные данные, вы запрос на бэк пошлёте?

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

А те, где надо что-то более - это уже не рядовые сайты и там другой мир)

В мире веба последние 15 лет реакты, ангуляры и вообще SPA, а вы на jquery карусели к вордпрессу прикручиваете, по вашим словам.

Ага. И каждый год старый фреймворк отмирает в пользу более нового. А jquery c 2006 стабилен и везде. Так и живем.

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

без ajax

Пробудилось древнее зло. Честно, я слово AJAX в последний раз слышал, наверное, ещё в 2016.

@Dolios кажется мы спорим с людьми из PHP-студий. Они просто застряли в каменном веке и не понимают нас.

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

И всё бы ничего, но @Fahrain думает, что деревья заставляют вращать при найме специалистов на задачи, которые решает он, а это не так. Я когда-то 20 лет назад тоже на php делал сайты для ООО "Рога и копыта" и там меня ни про какие деревья не спрашивали, что логично. Уверен, что не спрашивают и сейчас.

@Fahrain речь про вакансии, где требуется каждый день с иерархическими данными работать, например, с GraphQL.

Можете привести примеры из практики работы с GraphQL, когда испозовали алгоритмы работы с деревьями и что это были за алгоритмы?

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

  • Выгрузить комментарии и отобразить на странице.

  • Выгрузить категории (что угодно иерархическое) в каталоге и отобразить на странице

  • In-page поиск\фильтр

что это были за алгоритмы?

BFS, DFS. Ничего хитрого.

А были какие-нибудь хитрые алгоритмы за последний год?

Честно говоря вся серьёзная алгоритмика у меня была только на литкодах. Не в этом году, а вообще. Ибо с картографией я не связан (а там интересные алгоритмы на графах). С геймдевом тоже. С прикладной физикой или математикой тоже. Навскидку, из того что было (не за последний год, а вообще что смог сходу вспомнить):

  • Использовал binary search при отрисовке графиков, составленных по формулам (аля `x = y ^ 2 + 2`). Там он пригодился для более точного поиска концевых точек получаемых отрезков. Без него, к примеру, у меня окружность получалась как 4 обрезанных обкусанных дуги. В принципе вся задача по "нарисуй интерактивный svg график по строке-формуле" очень интересная.

  • Virtual Scroll для чудовищно больших документов в визивиге, с произвольной вложенностью и структурой, и с неизвестными до рендера размерами всех блоков. С поддержкой таких штук как rowSpan=9999. Это наверное была самая сложная разовая задача за все годы. Я две недели это только отлаживал.

  • Штуки по мелочи вида карманного механизма по отлову избыточных рендеров react-компонент и xhr-запросов. Там было 3 очереди с linked list-ми и датированными элементами.

  • Много всяких DSL "на коленке". Чаще всего для тестов.

  • Писал TSX шаблонизатор на nodejs стороне. С поддержкой компонент. Но без всяких хуков и динамики. Просто построение строковой древовидной модели на основе тегов, с мгновенной склейкой. Классный получился проект. То что было на рынке такое же не умело даже в экранирование атрибутов.

  • Переписывал BFS в Enzyme от Airbnb.

  • А, ещё была интересная задачка по построению объектной матричной модели умножения\деления\сложения в столбик. Типа как мы в тетраде в клетку решали, только в виде интерактивного контрола. Вполне себе какая-никакая алгоритмика. Скучаю по таким задачам.

  • А, ну и всякие интепретаторы HTML\JS\CSS форм по JSON моделям. С валидаторами, async-валидаторами, вложенными полями и т.д.

  • Блин. Забыл действительно сложный проект. Ну скорее большой. Писал платформу упражнений (самых разнообразных, включая те расчёты в столбик и графики) для школ. Там и хитрые модели оценки прохождения уроков. И очень много интерпретирования иерархических моделей уроков. К примеру самописный визуальный json-based шаблонизатор на замену HTML.

  • О, ещё вспомнил. Было дело на mapbox карте рисовал полигоны. Там и освоить кривые Безье пришлось, и износиловать мозг гео-координатами (у них своя изощрённая математика).

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

Ещё, из странного. Писал парсер и интерпретатор регулярных выражений (но ооочень ограниченное подмножество языка: A-Z.?+*). Правда не для реальных задач, а в рамках собеседования.

кажется мы спорим с людьми из PHP-студий.

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

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

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

разворачивания односвязного списка

Вот тут соглашусь. Там хоть и несколько строк всего, но они мозг выворачивают. Лучше спрашивать простые и прямолинейные вещи (invert binary tree из таких). И да, лучше что-то из области реального кода. Можно и на те же деревья. Например во фронте:

  • Дано: Загружена иерархия разделов

  • Задача: Пользователь ввёл поисковое слово. Нужно отфильтровать древо по этому слову

  • Нюанс 1: Разумеется родительские ноды должны остаться. Кандидат должен либо сам догадаться, либо уточнить

  • Нюанс 2: Бонусом будет, если кандидат знает про нормализацию строк и про case sensitivity

А одного из основателей WhatsApp не взяли в Фейсбук в 2009. Но правда до написания WhatsApp.

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

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

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

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

Это не так.

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

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

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

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

Наниматели облажались.

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

Должен ли инженер уметь варить?

UFO just landed and posted this here

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

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

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

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

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

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

Аналогичная ситуация
Победитель хакатонов, аспирант крутого вуза, а на коммерческом проекте очень слаб в решении простых задач и вообще. Жаль...

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

Но у нас же нет каких-то авторизованных центров и стандартов сертификации, чтобы однозначно называть одного раработчика миддлом, а другого сениором. Особенно меня убивают понятия middle+, junior+ и т.д. В этих IT-лычках смысла даже меньше, чем в клановых званиях в какой-нибудь MMORPG (хотя лол, в MMORPG порой и бабло ещё можно зарабатывать реальное. А всякие воротилы в EVE Online так вообще всяким реальным финансовым аналитикам дадут пососать)

Но у нас же нет каких-то авторизованных центров и стандартов сертификации

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

То есть достаточно написать книгу и это должно дать автоматический проход в любую компанию? Новость в чем?
Если уж постить такое, так приводите вопросы и ответы автора. Может он специально лажал, чтобы хайпануть потом.

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

Вы никогда не читали плохих технических книг? Вам крупно повезло.

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

Книгу можно хоть год писать, обдумывая всё по 10 раз. Здесь надо было уложиться в какое-то время.

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

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

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

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

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

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

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

Тоже заметил. Если много этапов, то пройти шансов мало. Если в самом начале или второе интервью сразу с лицом принимающим решение, то положительх результатов больше. Поэтому вакансии со 100500 этапов и отпугивают, мороки много, толка мало.

Знать и уметь какие-то базовые вещи это не одно и то же. Как будто он на детском утреннике ни разу не был, где карапузы уделывают взрослых только так.

Его ощущения мне вполне понятны. Летом тоже не прошел собеседование в одну известную компанию на роль разработчика. Хотя в прошлом сделал для них несколько проектов. Так же завалился в лайф кодинге на довольно простых алгоритмических задачках. Проблема была не в IDE - я иногда пишу код даже с телефона. Но включиться в игру и соображать голова почему то отказывалась. Оставил как повод поугорать над собой и ситуацией.

UFO just landed and posted this here

Возможно, они бы и не справились. Все-таки накрутили в современном С++ столько, что сам черт ногу сломает. Или голову.

С С++ они бы справились конечно, да и редко на интервью какие-то языковые сложности. Но владение С++ и способность написать сложный алгоритм это совершенно разные скиллы. Обычно в больших компаниях интересуют алгоритмы, а не языки, даже на младшие уровни. На нынешнюю С++ позицию интервьюировался пиша на С#, ну в тот момент я его знал лучше. Приятно поговорили с одной девушкой о разнице С# и Java, которую использовала она. Интервьюировал на схожую С++ позицию людей использующих на интервью Питон. Если написал алгоритм и внятно объяснил мне детали программы которые я не понял из-за плохого знания Питона - берём.

У меня точно не возникнет мысли проверять их знания С++ и давать тестовые задачки по азам. Возможно, они мне не по карману или не подходят ещё по каким-то соображениям, но тогда зачем собеседование? Авторство популярной книги по теме "Х" - это зачёт автоматом по вопросам данной темы.

В начале года устраивался на должность PHP/Laravel разработчика. По требованиям подходил, пункты "будет плюсом" закрывал с запасом. Дали тестовое задание на час, оно состояло из 4 простых пунктов. Думал "халява", но кодить пришлось в чистом VS Code который никогда не использовал. Главной сложностью было полное отсутствие автокомплита. В итоге потратив время на осваивание редактора, все задания я не успел сделать.

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

После был мини собес с начальством. Если не ошибаюсь, который кодил на C++. Он дал пару задачек на подумать для работы с массивами. В пределах PHP они решались достаточно просто. Ответ его не устроил и он стал фантазировать на тему вырезания различного функционала из PHP. Как я считаю, я и тут справился т.к. ответы давал верные. Также приходилось выдавать решения на JS и Python, чтобы показать, что я не дурак и как-то реабилитироваться за тестовое. Парень я разносторонний и в какой-то момент мы дошли до обсуждения плюсов использования разных протоколов общения между беспроводными устройствами. Думал, что показав багаж знаний за пределами вакансии и что могу не только формочки с json гонять, то должность моя. Но меня не взяли с формулировкой, что другой соискатель справился с тестовым лучше.

Ага, а в реале окажется что второго взяли по совершенно иной причине, например, меньше зарплатные ожидания или нет детей/жены или готов к командировкам и переработкам или whatever. Life sucks ))

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Про "ни холодно, ни жарко", еще Сталин сказал - "Кадры решают все." И лучше, если нужные кадры отжарят конкурентов, ну или отморозят у конкурентов.

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

UFO just landed and posted this here

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

UFO just landed and posted this here

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

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

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

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

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

Третий вариант - человек, проработавший над той же самой системой N лет, да ещё и в одиночку.

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

Но конкретные примеры (с именами) я приводить не буду, ибо это неэтично.

Цель - нанять высококлассного и не нанять низкоклассного

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

Брать звезду на всю котлету зарплатой вилки - вам понты или ехать?

Брать звезду на всю котлету зарплатой вилки - вам понты или ехать?

Это очень похоже на ложную дихотомию. Вы бы ещё спросили: «вам код или умение общаться требуется»?

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

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

Если вас просят показать свои навыки, а вы вместо этого начинаете тестировать навыки интервьюера, это "красный флажок" что вы плохой командный игрок. Лучше отсеять вас на интервью, чем терпеть вас, такого одаренного, еще несколько лет. Все-таки вы работаете не только с кодом, но и с людьми. Архетип "genius jerk" прикольно наблюдать в сериалах типа "Доктор Хаус" и "Шерлок", а работать с таким человеком в реальной жизни - ну такое себе.

Если что это не наезд, сам таким был до довольно недавнего времени.

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

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

>Так и тут - вы провоцируете протест - хорошие спецы не будут стараться отчитываться перед человеком, который неадекватно оценивает собственные и аппонента навыки, а адекватно он их будет оценивать, только отвечая и на вопросы аппонента

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

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

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

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

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

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

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

загранпаспорт делал, а они за меня имя по своему решили написать

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

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

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

В различные года использовались разные стандарты, сейчас (вроде как) устаканился стандарт IATA. Вот уж поверьте, им вообще пофиг как вы будете называться: они вбили на русском, получили латиницу на выходе.
Всё! :)

Они ничего сами не творят. Сейчас транслитерацию для загранпаспорта делает программа, и исправить ничего вручную нельзя.

Можно, более того - меняют, и это рекомендуемая транслитерация - в госте так и написано - рекомендуемая. Просто проще следовать методичке.

Одно дело - ГОСТ, а другое дело - программа, которая установлена в паспортном столе в отделении МВД, где у нас делают загранпаспорта. Я лично видел - нельзя в ней ничего самому менять.

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

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

UFO just landed and posted this here

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

UFO just landed and posted this here

Там перечислен конкретный список документов, один из которых нужно приложить к заявлению. Например, если в ранее выданном паспорте или ВНЖ написано иначе, то можно написать заявление.

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

Ну да, тут только в конституционный суд, ибо нарушение статьи Статья 19 п. 1. по национальному признаку. Ведь гражданин скажем Британии получая паспорт РФ ли гражданин с двойным гражданством или видом на жительство будет иметь имя Maxim/Максим, а гражданин РФ получая тот же загранпаспорт будет иметь Maksim/Максим. Более того согласно статье 23 Конституции Российской Федерации каждый имеет право на защиту своей чести и доброго имени.

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

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

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

У меня достаточно простое имя, но за мою короткую жизнь правила транслитерации менялись и я успел побывать: Vasily, Vasilii, Vasiliy. Просто какой-то идиотизм постоянные эти смены. Хорошо, что теперь дали возможность остановиться на одном по желанию.

Надо ещё иметь желание что-то менять.

Хм. Мне в прошлом году в том ведомстве, которое выдаёт загранпаспорта, была в руки дадена клавиатура со словами "напишите сами свою фамилию латиницей". Когда получал предыдущий загран, за 10 лет до этого, писал на листочке свою фамилию при подаче заявления и потом в полученном документе фамилия была написана так, как я сам написал.

И что, можно написать вообще как угодно?

Как угодно я, честно говоря, не пробовал. Но в выборе способа написания букв, для которых есть разные варианты транслитерации, меня никто не ограничивал. Хотя я допускаю, что если бы моя фамилия была Иванов, а я решил бы написать ее как Petrov, то возникли бы вопросы.

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

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

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

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

Что я делаю не так?

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

Тут главное выбранную стратегию ни в коем случае не менять.

Вы слишком умный для этой компании / overqualified. Вы нам не подходите!

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

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

Судя по комментариям в этой ветке, не так то, что вы идёте на конфликт, явно или неявно. Это красный флаг.

О да, я и забыл как бывало в детстве - "Ты чего на меня смотришь! А? В тыкву захотел?!" Бывало заканчивалось это действительно дракой, недоломали меня до вашего уровня, виноват и смотрю неправильно (без раболепия) и беседовать пытаюсь на равных, красный флаг мне за это, и серп с молотом тоже гоните, пригодятся )))

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

Сейчас сына готовлю к экзаменам по ОГЭ и знаете... я бы наверно завалил и информатику и физику. Опять таки из-за избыточного объема знаний. Задачки там оторваны от реальности, формулировки многосмысленные.

По физике по книжке с надписью ФИПИ сделали с сыном несколько вариантов.

Пример 1: Горячая кастрюля с компотом, закрытая сверху крышкой. Куда лучше положить лед для более быстрого охлаждения и почему? Правильный (по книжке) ответ: сверху из-за конвекции, а ответ "из-за теплопроводности" - неправильный. Но я бы в реальной жизни... наверно положил лед снизу... Так как очевидно, что между крышкой и компотом практически всегда слой воздуха, а воздух значительно менее теплопроводен, чем вода, т.е. воздух выступает как теплоизолятор (как в окнах), и на первое место наверняка выходит теплопроводность. В общем я формально завалил эту задачу и сыну, получается, "неправильно" объяснял.

Пример 2: Электромагнит (провод намотан на гвоздь) подключен к источнику постоянного тока. Как изменится сила тока и модуль магнитного поля при переключении полярности?

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

Пример 3 (из ЕГЭ): Уравнение типа: x^2 - 3 + sqrt(x) = x + sqrt(x)

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

В общем и это я бы тоже завалил.

Единственный выход - натаскиваться под специфику таких экзаменов и экзаменаторов.

Мне так на гос экзамене по физике снизили оценку с 5 до 4. Первым же вопросом один человек из комиссии спрашивает "что такое функция распределения?" А я, как назло, знал строгое определение. Ну я им его и записал на доске. Тот мужик говорит да нет же, и начинает нестрого, на пальцах говорить определение не функции распределения, а плотности функции распределения. Я охреневаю, окидываю остальных членов взглядом, спрашиваю - господа, а никто ничего не хочет сказать? Как то это неправильно, когда целая комиссия преподавателей МФТИ путает функцию распределения с плотностью функции распределения. Ну они на такие слова обиделись, бычить стали. Кто то пытался замять и сказать, что мол вообще то пацан прав, но большинство решили, что я борзый и вообще больше 4х не заслуживаю.

В общем я формально завалил эту задачу и сыну, получается, "неправильно" объяснял.

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

Вы бы, собственно, и компот в реальной жизни не охладили :)

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

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

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

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

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

Месье не в курсе про то, что лёд можно класть в миски или другие кухонные ёмкости?

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

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

А вот кастрюля на подоконнике остывает довольно быстро. Кто-нибудь проверял, точно ли прикладывание льда вообще помогает? Или может свободный обдув кастрюли эффективнее? ;)

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

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

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

Эт' да, известная штука.
Приходишь весь такой опытом привыкший учитывать все нюансы. А задачка что то написать. Ну уточняешь граничные условия то се и вообще для чего - оно же по разному. Первый раз тебе что то вежливо поясняют. Но все равно - неясно..
А я физически уже не могут писать нечто, рассчитано только на 2+2 но на 3+3 уже нет, не говоря об миллион на миллион. И без учета эксепшенов, корректного возврата ,контроля границ, то се и чтоб под тестирование и обработку ошибок и масштабирование и вписать в архитектуру - то есть учесть развитие.
Им нужен обрывок говнокода, чтоб типо "понять" "навык". И за 10 минут слепить. А мне минут 20 только думать, как удачней решить все. Не умею в говнокод уже, я за него с других душу годами вынимаю. И побырому писать на забор. И навык как бы есть но дугой.
А даже вежливо объяснять смысла нет - у интервьюера свой процесс и время, его же выдернули с работы и он тоже хочет отделаться, а не для заглядывания в душу и найма именно тебя.

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

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

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

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

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

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

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

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

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

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

Класть лёд надо сверху а не снизу, поскольку холодный воздух/вода опускаются вниз, а горячий поднимается вверх.

Перельман -занимательная физика

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

Все-таки проблема не в консерватории …

Давайте максимизируем ключевую деталь - теплопроводность. Увеличим её. Представьте, на дне кастрюли компот на дне кастрюли на донышке, а все остальное пространство занимает воздух. Сильно сомневаюсь, что лед сверху через воздушную теплоизолирующую прослойку даст лучший эффект (за счет конвекции), чем лед снизу (при практически прямом контакте с компотом).

А про кипение (это отдельный процесс) в задаче вообще ни слова не было.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Я уже было решил, что хорошо справился с собеседованием и работа у меня в кармане, но тут буквально ввалился эффективный менеджер, даже не представившись или хотя бы поздоровавшись, развалился в кресле и выложил передо мной бумажку с каким-то графиком и сразу спросил: "Вот тут нам известны 3 точки, как ты найдешь остальные?". Я немного опешил от этого, но ответил что-то вроде "аппроксимирую значения". Он: "Ну напиши формулу для x,y произвольной точки на графике". Я взял листочек и с минуту тупил, не совсем понимая что от меня хотят. И тут этот эффективный менеджер так же внезапно вскакивает и не говоря ни слова уходит. Занавес.

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

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

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

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

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

Да, берут "своего" человечка, а собес это для соблюдения корпоративных формальностей. Для сбора массовки рассылают спам в LI. Что у непрожённой публики вызывает оргазм своей "восстребованности" и якобы дефцита кадров в айти.

UFO just landed and posted this here

Вы описали сейчас человека-кадровое агенство, что достаточно редкий случай. Кадровик в большой компании может реально заниматься ибд, чтобы показать что он нужен. Девочки-однодневочки из мелких кадровых агенств получают процент с тех мифических "n-окладов специалиста", если вообще не на зп. Потому собеседуют все, что общается. Часто с целью набить себе базу резюме и потом уже стать человеком-кадровым агенством. Ну и часто вакансии прилетающие в эти агенства - та еще дрянь, и в агенстве сразу понимают, что под такие требования никого толком не найдут, но отчитаться перед заказчиком/начальником надо, мол �

Что касается собеседовний.

Не забывайте фактор лояльности и предвзятости. Конторе нужен покладистый раб на галеру, а не суперзвезда.

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

Напомнило мне одного моего начальника. Он получил все возможные сертификаты от тогда ещё Sun Microsystems , по java. Включая что-то там типа enterprise architect

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

Наверное, он не поэтому был начальником?

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

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

А значит это не только у меня... Да, с рынком что-то странное происходит, они сейчас даже на итервью не зовут (на обычное интервью, которое до технического), а от очередного слова "unfortunately" в ответном письме хочется выключить компьютер и уехать жить в лес. Когда в таких условиях доходит до технического у тебя просто трясутся руки и задача на языке, который ты используешь вот уже вроде как 5 лет становится чем-то непосильным. И самое забавное им всем надо что-бы ты прям горел у них работать, что-бы написал cover-letter и нашел 1000 и 1 причину почему ты "выбрал" именно их, лишь для того, что-бы твое резюме в очередной раз проигнорили не дав никакого фидбека, да и впринципе в последнее время по вопросам HR складывается ощущение, что они не читают даже резюме, о каком cover-letter может идти речь?

Да, с рынком что-то странное происходит

Всего-то мировая рецессия, западные айти-гиганты выкинули на мороз тысячи программистов, весь СНГ токсичен или рискован для найма на аутсорс. Что же могло случиться?

Всего-то мировая рецессия,

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

что прям ВЕСЬ ??? раз и сдулся?

Нет. Российский ещё ждут массовые увольнения [под соусом оптимизации ФОТ "эффективными менеджерами"]. Будет много боли...

Так вон оно чо! В манагеры, значит, надо идти, а не в программисты!)) Шутка)) Хотя, в каждой шутке есть доля правды...

Российский это ни разу не ВЕСЬ. Когда мировой рынок ИТ сдуется?

Когда мировой рынок ИТ сдуется?

Так уже процесс вовсю идёт. И я не про новости "здоровенная компания Х сократила У тысяч сотрудников". Я про мирские утехи: из моих клиентов - американские разработчики софта для управления рисками сократили расходы на разработку, стали больше заказывать индусам. Израильские медики вообще прекратили, но там свои причины, хотя тоже в общемировом тренде. Финские девелоперы (которые девелоперы недвижимости) раз в пять бюджет сократили. Немецкий банк полностью поставил на паузу. Ещё одна финская компания, предлагающая решение EDI, убрала всех дорогих подрядчиков. И это только небольшой кусочек мирового рынка, с которым тесно работаю я. Рынок сдувается, очень сильно. Если вы лично не заметили, ну поздравляю, или у вас счастливый билетик, или вы огребёте, но чуть позже.

нет, я не заметил, у наших клиентов в штатах обороты растут, бизнес развивается

Зато мне сегодня телефон вот такую статейку подсунул https://www.cnews.ru/news/top/2023-11-03_rossijskim_it-shnikam_platyat (Российским ИТ-шникам платят почти миллион в месяц, лишь бы не уехали. Зарплаты в отрасли рекордно выросли) Во как! Плашка средней ЗП на хабре упала до 120 тысяч, люди повсеместно жалуются, что много месяцев работу найти не могут, а оказывается спрос такой огромный, что скоро айтишником прямо на улице будут хватать и насильно заставлять трудовой договор подписывать на ЗП миллион в месяц!

Hidden text

Воспитательница в детском саду говорит детям: — в Советском Союзе каждый сытно ест и красиво одевается. В советском союзе люди живут в прекрасных квартирах. У всех детей в Советском Союзе много красивых игрушек... Вовочка расплакался: — хочу. Хочу... Я хочу в Советский Союз!..

Тут по его описанию задачи мне видится, что он не так её понял.

Может, его просили не подсветить matches, а подсветить элементы списка, внутри которых присутствует match.

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

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

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

Я такого трэша больше нигде не встречал!

Тоже расскажу пару историй.

1. Жесткое интервью

Лет 10 назад, когда я ещё на C# писал, решил сменить работу. Закинул резюме - откликнулось несколько контор, а среди них - Касперский. Ехать мне туда было не очень удобно, но с другой стороны - всё-таки это бренд, крупная компания, интересно. Поехал к ним на собеседование.

В начале интевью они задали мне вопрос: насколько % я оцениваю свои знания C# и .NET. Ну я тогда разбирался в нем довольно неплохо: сениор, несколько лет опыта за плечами, прочитаны книги Д. Рихтера, проведено некоторые время в дизассемблере и т.п. Ну я и ляпнул: 90%!

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

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

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

2. Фейл на live coding

Собеседовался в один небольшой стартап, основная команда которого - в моем городе, а боссы, как я понял - в США.

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

Пособеседовался с командой - все довольны. Дальше, говорят, надо с боссами пособеседоваться, live coding пройти.

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

Но хоть гифт-ваучер дали за тестовое задание - не так обидно :)

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

Выводы

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

  2. Будет что вспомнить :)

Замечательная серия книг. Автору удачи!

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

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

UFO just landed and posted this here

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

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

UFO just landed and posted this here

Отмазка про ide какая-то левая. Ему что - vim дали? Или сразу ed? Мне как-то доводилось в нотепад++ писать. Я вообще невразумею какие там шорткаты. Бугурт был, так как он форматирование ломал и автодополнения не было, но не настолько подгорело чтобы решение заняло сильно больше чем если бы была idea.

ему просто отплатили его же монетой
"ТЫ НЕ ЗНАЕШЬ ЖАВАСКРИПТ!" "НЕТ ЭТО ТЫ НЕ ЗНАЕШЬ ЖАВАСКРИПТ!"

Получается, что он тоже пока не знает ДжаваСкрипт.

Конкретно к описанному в статье кейсу я отношусь достаточно сдержанно. Может быть, там и правда был перебор с задачками. А может быть, этот чувак действительно не очень хорошо знает JS. Я это пишу абсолютно серьезно. Знать язык и писать книги о нём - вещи, пусть и коррелирующие, но лишь частично. Чтобы писать книгу о языке программирования, вам не нужно свободно владеть языком, вам нужно иметь под рукой разнообразные материалы, понимать их, и писать на их основании текст. При этом подробности о том, что вы написали, вы через какое-то время можете спокойно забыть. Я это по себе знаю: меня, например, друзья однажды попросили помочь - читать курс лекций по Андроиду на замену внезапно уволившемуся преподу, когда группа уже была набрана. Я никогда в жизни не писал мобильные приложения (ну, вру, писал немного на сях под палм и на си шарпе под .NET Compact за десять лет до этого), да и джаву пользовал только в виде ЕЕ, и тоже последний раз за пять лет до. Ну что я делал? За день до лекции сам знакомился с каждой темой, делал тестовые примеры, проверял их, как они работают. Потом рассказывал студентам, разбирали примеры уже вместе с ними, давал им задания. В таком режиме успешно провёл весь курс от начала и до конца. Сказать, что при этом я сам знаю Андроид, до сих пор не имею права, и собеседование вряд ли пройду.

"компания отказала Симпсон в работу" это что это?

Спасибо большое! Исправил и плюс в карму поставил

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

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

Методика найма разными людьми из разных подразделений вообще не просто появилась.

Ну не знаю, от мелкого кумовства конечно спасает... Вообщем, не знаю.

Если честно, интереснее, как некоторых "персонажей" таки БЕРУТ!
Потом они вылетают, после испытательного срока, а то и раньше, но первый-то фильтр прошли!

В крупных компаниях натыкался на такое неоднократно.

Писать книги по ЯП и решать задачи на нем - разные вещи.

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

Other news