Очень странное собеседование для уровня 7+ лет. 3 базовых вопроса, 2 задачки (1я уровня джун/трини) + разговор за ̶ж̶и̶з̶н̶ь̶ стек - ну такое. Собеседуемый про web workers упоминает, логично было бы туда капнуть, узнать про service workers (в конце конечно было, но уровень знаний собеседуемого в этой теме не раскрыт), например и тд. Ощущение после просмотра, как будто немного не дотянули собещедующие ребята. Не сочтите за токсичность, делюсь впечатлением после просмотра.
@@artiomborisov6838 у сеньоров почти такие же вопросы на собесах, как у джунов, только ответ ожидается более развернутый с пониманием сути. Сеньор может не решить задачу "джуна" из-за того что совсем другими задачами на работе занимался, а не писал сортировки
Менторы)) во второй задаче условия перечитайте и поменяйте результат если условие "сохранив оригинальную сортировку" вам нужно)) а так вот вам два решения, и соблюдением первого условия и второго, учитесь менторы)) const Todo = (arr) => { const result = arr.map((el) => { el *= el return el }) return result } //[-4,-1,0,3,10] // result [16, 1, 0, 9, 100] сохранив оригинальную сортировку const Todo = (arr) => { const result = arr.map((el) => { el *= el return el }) return result.sort((a,b) => a-b) } //[-4,-1,0,3,10] // result [0, 1, 9, 16, 100] по возрастанию
Странный фидбэк от задач. По первой, если проверяется знание языка, то почему интервьюер не спросил решение через методы, тот же Array.reduce. По второй. Для разработчика с 7летним опытом странно не знать, как работает unshift по технике, для интервьюера странно не знать, как работает unshift по памяти. У вас длина конечного массива уже известна, зачем каждый раз выделять память? Создали массив той же длины, что начальный и с конца по индексам заполняете. Так себе, собес, я бы чела взял на джун+/мидл-
Как часто вы используете unshift в своей работе? Я бы даже спросил когда последний раз это было, у меня например когда я изучал массивы в js то есть в прошлом десятилетии) А reduce сразу переводит разработчика на уровень синьора? Кстати из глубинных знаний, которые опять же на хер не кому не нужны - операция unshift более тяжёлая, так как перестраивает массив, а push легче потому что дописывает в конец. Я к тому что по таким вопросам, никого не разделить на джунов и сеньоров.
O(N), по памяти O(1) решил за 10 мин, при наблюдателях конечно сложнее сконцентрироваться function zip(str){ let start = 0; let end = 0; let currentSymbol = str[0]; let result = ''; for(let i = 1; i < str.length+1; i++){ if(str[i] === currentSymbol){ end++; } else { const dif = end-start; if (dif
Первый паззл решается в одну строку: const reduceStr = (str) => str.replace(/(.)\1+/g, (m, c) => c + m.length); Вторую можно решить за O(N), а чувак сделал O(N^2) на ровном месте из-за гребаных аншифтов.
@@inqvisitor3722 этот вывод сделан на основе замеров, или на основе "богатого" опыта в js? Судя по всему, второе, потому что когда я стал сравнивать, выяснилось, что решение из видоса неправильное - рисует единицы после однократных символов (но это легко поправить). Запустил в консоли. В Хроме на mac os решение с регуляркой быстрее в 1.1-1.5 раза, а в Сафари - в 3 раза (Сафари славится своим движком регексов)
20 летние чуваки берут интервью у 30 летнего чувака с 10 летним опытом который решает задачи 3 урока JS и то еле справляется + невнимательность высшего уровня. Неужели за 10 лет, хорошо, за 7, нельзя было в начальники выбиться 😮 Теперь понятно почему у нас сфера IT в таком состоянии
Потому что чел 10лет пишет бизнес, а не решает кодеварс, литкоды и прочую чепуху которую не применяют в бизнес фичах. Если у него будет задача натренировать этот навык он его как и любой другой натренирует.
@@frontendiya Я не хотел оскорбить, но пригласите кого-то из взрослых на интервью. Это важно. Взрослый человек к вам приходит на собеседование, у него семья, ипотека, дача, у него совсем другая жизнь. О чём ему с вами говорить? Отвечать на заученные вопросы, а дальше то что?
Что-то я потух на первом же тех. вопросе... Без обид, я бы не писал такой коммент, если бы вы не сказали ниже "Мы занимаемся индвидуальным менторством для фронтов"... Ну куда вам? Кандидат - молодчик. Все круто и он сам крут. Пусть убивает своего самозванца. По интервью: 1. Long-Pooling? SSE? Где же вы это юзаете? 2. Потом, прям мягко поехал в CORS. Это же прям фронт решать должен. Ведь если фронт это решает - это дно. 3. Event Loop и ре-рендер - собеседующие понимающе кивают... Занавес... 4. Отдельный поток - это не про Service Worker, а про Web Workers... Но собеседующие этого не знают... 5. Все выше не интересно, давайте про Babel... И даже тему транспиляции не раскрыли... 6. Окей, давайте поговорим про TS - классы и абстрактные классы... Тип рассказывает про абстракции - собеседующий едет в Enum и то, почему его не стоит использовать, ведь так на хабре сказали... Как он читал... И даже читал чушь... Кандидат даже сказал, что это обьект... Но нет, собеседующий читал))) 7. Pick/Omit/Record - это интересно, Jenerics - это лишнее))) Поклон собеседующим... 8. "По вашему взгляду, есть ли у вас Manual QA" - как на это отвечать? 9. Давайте поговорим о сборщиках, ведь вы собеседуете настройщика билда. 10. Как же сделать лучше? Собеседующий - я не знаю... 11. Память/сложность - чуваки, ну реально, вы ничего об этом не знаете... 12. unshift/push - нет понимания в чем разница? печалька... 13. Куда дальше, "лиды/архитекторы"? - а вы что об этом знаете? 14. Общая задачка, но при каких обстоятельствах это нужно на фронте? Какая цена такой оптимизации? 15. ДА! Рассказывают, как запускают ракеты. Твитч - проще ракеты.
Тут роли можно спокойно менять. Вопросы не прорабатывались собесудующими, такое впечетление что они их выписали на листочек и ставят галочки, даже без понимания ответа. Да и уровень проверки - поверхностный. Для формошлепства и страничек по типу казино и подобных сайтиков по готовым апишкам пойдет, там как раз такие болванчики и нужны. Но для нормального проекта/стартапа уж извольте нет, тут максимум уровень вопросов это мидл. Тут нету даже разбора полетов о декораторах и их написания та даже конфигурации проекта. А это между прочим Ангуляр, огромная балда, с которой нужно хоть какое то понимание как оно работает ибо там избыточного функционала в коробке слишком много.
@@alexandrtaushkanov3813 а какая сложность у конкатенации строк? если есть строка длины n, то после конкатенации со строкой длины m должна быть строка длины n + m. по идее, поскольку строки - это неизменяемый тип данных, то должно произойти копирование данных из обоих строк, то есть сложность O(n + m). и такое копирование происходит на каждом шаге цикла. в чём я не прав?
Покажу свое решение: const countDuplicates = (str) => { const hash = {}; let res = ""; for (let i = 0; i < str.length; i++) { const el = str[i]; if (Object.hasOwn(hash, el)) { hash[el]++; } else { hash[el] = 1; } } for (let key in hash) { res += key; res += hash[key]; } return res; };
@@MassEffecn да, для этой задачи действительно, я проглядел немного, думал нужно сократить так, чтобы не было повторяющихся букв и выводилось их кол-во.
@@Nikita-po3sj Туду лист с беком, поисковик книг на апишке гугл букс, это реакт, на вью кастомный редактор текста, ну и все. Обязанности делать все что не касается бекенда. Это верстка, адаптив, кроссбраузерность, доступность, бизнес логика , интеграция сторонних сервисов, виртуализация данных, написание Кастомных плагинов для опенсорсных интеграций под наши задачи, работа с базой данных, создание граф кьюэль запросов, написание тестов, ну в основном вот
@@ЮрийМусатов-ь3я сужу по себе, я почему-то более чем уверен, что такие методы как push и unshift, хоть 5 лет я не буду использовать, вспомню как они работают и что возвращают)