Comments 37
Опять квизы под вопросы замаскировали. Ну, такое. На любителя.
Половина вопросов - срань бесполезная.
Сеньор? Серьезно? Это вопросы из учебника для джуниоров. Сеньоры в это области даже не работают.
Статья конечно интересная. Но уровень Senior...? А джун тогда кто?
Джун то же самое только без опыта. И может ещё сказать "не знаю" на некоторые вопросы. А вот кто давно работает не может сказать не знаю", вот и вся разница на собеседование, плюс он должен показать портфолио.
Все кроме последнего можно выкинуть к чертям. Никакого смысла они не несут.
Чему равно
[] == ![]
?
Либо я угадаю и мои тесты пройдут; либо не угадаю и тесты обвалятся, и я тут же поправлю. Если вообще когда-нибудь напишу такое. А если напишет кто-то другой, то на ревью его заверну. Вот и всё сеньорство.
Ну вот, теперь новоиспечённые интервьюеры понесут дальше в массы эти свежие и интересные задачи, вместо нормальной подготовки к собеседованию.
Наличие таких вопросов на собесе, это сразу звоночек. Ну а те, кто реально умеют проводить собеседования, конечно не понесут такое к себе
В том и проблема, что хабр имеет авторитет при поиске информации.
Т.е. в кейсе, когда начинающий интервьюер будет собирать пул задач, он примет эти советы как актуальные.
Про звоночек согласен. Вероятность сильно повышается, что технологии и процессы в команде такие же актуальные как и вопросы :)
Это не звоночек, это прям колокол
Помню первое собеседование, интервьювер задавал кучу вопросов, вроде "что будет если написать fn(--i++), на что я ему ответил что если такой код напишу в проекте, мне нужно по рукам бить. Даже прошел собеседование )
Ну тут не угадать, задают тебе вопрос на проверку адекватности и рассуждений или слепо следуют советам аналогичных сухих статей.
Просто статья в контексте собеседования, а не только про особенности работы JS. Хорошо бы какой-то пример привести из реальности в каждом пункте.
В целом, с начинающим разработчиком может быть интересно порассуждать на такие темы, но интервьюеру нужно чётко понимать для чего и как задавать вопросы и каких ответов ждать.
Когда уже люди поймут, что это вопросы просто на знание принципов работы языка, и это не значит, что это нужно писать в реальном проекте. Точно также, как решения и победы в спортивном программирование почти всегда не будут иметь общее с реальным кодом коммерчески продуктов. Но победитель олимпиад, как минимум не плохо будет разбираться в принципа работы языков, математике, структурах данных.
Ну и надо понимать, что разным компаниям нужны разные кадры. Для вебстудии заказной разработки может быть вообще достаточно человека с сугубо прикладными навыками составления простых реакт компонентов. Заказы сдаются, зарплата платится, все счастливы.
console.log(1 + '1' - 1);
Можете ли вы угадать поведение операторов + и — в ситуациях, подобных описанной выше?
А теперь правильный ответ: если я увижу такое в коде, посмотрю, кто его наложил, и напишу менеджеру злое письмо.
Ещё более правильный ответ: выбирая между диалектами EcmaScript (а у меня, слава богу, есть такая возможность для своей браузерной сборки), я выберу тот, который выкинет исключение вместо имплиситных конверсий. Нестандартный диалект это, конечно, не очень хорошо, но надёжность того стоит.
В отличии от джуна, сеньор на такую чепуху наверное и не ответит, но по факту сделает в миллион раз больше продуктовых задач и проектов от 0 до production.
Ужас любой компании когда к ним приходят теоретики, с SOLID(упоротыми) заветами и вопросами на собесе подобно данной статьи.
Истинный сеньор шлет всех подальше на первом примере console.log(1 + '1' - 1);
Если на позицию сеньора вам задают подобные вопросы - разворачивайтесь и уходите. По вопросам на собеседовании можно многое понять о адекватности собеседующего и о общей культуре разработки в компании. Такие вопросы - это сразу красный флаг.
Мне кажется это не для синьеров, а для грандов). Весь пост пронизан тем самым теплым ламповым джаваскриптом - без strict modе, let/const, arrow functions, async/await и статического код анализа. Эх, где ты мой 2003?
Во втором вопросе не только вопрос туп, так еще и ответ неверный. Функция duplicate(arr) кроме того, что создаёт новый массив, еще и меняет старый... Бред какой-то, если честно
А где там создаётся новый массив? Метод возвращает изменённый переданный массив.
Ну по ТЗ у них было создание: "В этом фрагменте кода нам требуется создать новый массив с дублированными элементами. На первым взгляд, код создает новый массив newArr
путем дублирования каждого элемента из исходного массива arr
. "
Другое дело, что они по ссылке меняли объект, в общем функция не делает то, что нужно и делает то, что не нужно. Причём как исходная, так и полученная...
Мдя. Человек который собеседует либо пытается узнать что ты знаешь чтобы понять как это применить в проекте, либо показать как много он знает по сравнению с тобой.
Здесь явно второй вариант. Хуже чем собесевование с таким человеком может быть только работа с ним\ней.
Настоящий сеньор глядя на такое говорит, что так просто делать не надо - код должен быть явным. А там, где по какой-то причине неявное поведение надо, должен быть понятный комментарий, описывающий что и почему.
Простите, но что за срань-то? Сейчас, в свете популярности TypeScript ответ на вопрос:
что выведется в "1 + '1' - 1"
будет однозначный:
TS2362: The left-hand side of an arithmetic operation must be of type any , number , bigint or an enum type.
Вот так, благодаря автору статьи, я сразу стал сиьнором JS, хотя я даже джуном JS никогда не был, но с JS немного знаком.
Не использовать var
Не смешивать типы
Я синьор?
уже по наличию var и хренотятине в duplicate, в результате которой новый массив так и не получили, я понял, что статью выдавил из себя июнь или трейни, и дальше чисто до комментов долистал )
Отличие сеньйора от джуна в том что сеньйор скажет что это срань собачья и в реальной разработке использовать такое нельзя. Но если очень хочется позаниматься ментальной гимнастикой, всегда можно просто открыть мануалы и разобраться что на самом деле произойдёт. Джун же считает что это сакральные знания, которые отличают айти помазанных от черни.
Спасибо, никогда не поздно напомнить, что js - это ад на земле, но альтернатив нету. Добавлю свой пример, который стоил мне двух дней дебага : оказывается в for(var i in []) i - это строка. То, что во всех других циклах - число и в этом контексте не может быть ничем иным кроме числа, внутри такого цикла даётся как строка.
Всё же софт в большей части состоит не из такого шаманского и узкоспециализированного кода. Знать наверное приятно, такие мелочи добавленные из за несовершенства языка и недальновидностью создаелей этого языка. Но всё же для программиста в первую очередь, без деления на касты требуется знать архитектурные паттерны, алгоритмы, подходы и т.д
Если такими вопросами опеределяют сеньера, это забавно.
Сидишь ты такой, пытаясь понять, почему докер-контейнер с переписанным на njs сервисом у тебя в марафоне работал, а в новом кубере не хочет, и что он там в кибане говорит по логам, а тебе "console.log(1 + '1' - 1);" ? Серьезно? :)
8 углубленных вопросов на собеседованиях на роль сеньора в JavaScript