Без обид, но правда, если хотели взять мидла, то собес лайтовый для такого уровня. Обычно на мидла и такую зп побольше дрючат) Во всяком случае, если зп 230к, то пофиг как собес прошел, главное оффер дали)
тоже вместе с автором прошел этот собес 😳🤯 честно говоря во многих кейсах особенно в задачах, заметил ошибки и недочеты. начиная с банального красивого кода, заканчивая алгоритмом reduce, пониманием правильной типизации и правильный вызов функции обращения апи. быть может автор волновался. я пишу этот комментарий не с целью хейта, просто мне кажется, что собес относительно был легким и его можно было пройти гораздо быстрее и лучше. теоритические знания хороши! лайк, спасибо за контент и за ваш труд, ждём новых видосов
Вторая задача про дубли: а чем не угодил фильтр и индексоф? Он вернёт абсолютно тот же массив, что и в данном примере аккумулятор редьюса. Так же засетить его и получить правильный ответ.
FrontRend, live-coDDing) Решал вместе с тобой задачки, в целом достаточно просто, поздравляю с оффером) Для второй задачи я использовал методы Object.entries, reduce, map, filter, то есть четыре раза прошелся циклом по одним и тем же данным по сути) Как по мне твой вариант посимпатичнее и полаконичнее
Можно ещё лаконичнее сделать. Без вот этих выкрутасов на последней строке в виде Array.from(new Set()) - получается решение не оптимальное по памяти. Задачу можно решить за линейное время
самое лучшее решение думаю for (const item of arr) { if (duplicatesSet.has(item) && !duplicatesArray.includes(item)) duplicatesArray.push(item) else duplicatesSet.add(item) } здесь используется линейное решение O(n) с вторым видом for для исключения лишних операций и аргументов в итоге получается минимальные итерации нахождения дубликатов
Для меня такой пример карирования понятнее function curry(func) { let argsRes = []; return function curried(...args) { argsRes = [...argsRes, ...args]; if (argsRes.length >= func.length) { return func(...argsRes); } else { return curried; } }; }
@@АлександрКоваль-д3щ кажется у тебя зарплата джун + или мидл -, или тебя обманули. У автора три года опыта работы, у меня примерно так же, вот думаю какую зп просить, думал около 250
@@АнастасияШагаева-й8ч , знаете у меня была похожая проблема, возможно это из-за проблемы умения отстаивать себя. Посмотрите эту книжку "смит тренинг уверенности в себе". Я так же думаю это хороший повод обратиться к психологу и обсудить с ним эту проблему. Извините что так лезу, возможно это даже не про вас, но если бы мне кто-то об этом раньше сообщил я был бы рад.
Да вот вообще не понимаю смысл лайв кодинг интервью, какая-то дрочь на теорию лишняя. Как бы если что-то не знаешь в чём проблема загуглить и решить поставленную задачу?)
@@kirilldegtyarev6671 потому-что человек, который будет не гуглить, а сразу решать, потратит намного меньше времени на решение задачи, чем тот, который погуглит, возьмет код, а потом будет его править
задачу с нахождением дубликатов я решил через 2 вложенных for и 1 if, насколько это приветствуется на фронте ? просто в универе мы так задачи на с++ решали, вроде работает но на фронте for редко вижу вообще
@@andreyzhukov9134 для такой задачи два вложенных for совсем не ок, будет там огромное количество данных, эти два вложенных цикла аукнуться. Два вложенных for в принципе нужно использовать очень редко, иначе стоит задуматься о том, единственное ли это решение и нормально ли построен back, что из него приходят такие данные, с которыми прийдется использовать два вложенных цикла
function dubles(arr){ const originals = [] const dubles = []
for(let i = 0; i < arr.length; i++){ if(!originals.find((element) => element === arr[i])){ originals.push(arr[i]) } else { dubles.push(arr[i]) } } return dubles } у меня такое уродское решение, но чем чёрт не шутит))
Предлагаю записывать количество вхождений каждого элемента массива в объект. Затем запушить в массив те элементы, которые удовлетворяют условию задачи. const duplicates = (arr) => { const hash = {}; const res = []; for (let i = 0; i < arr.length; i++) { const num = arr[i]; if (hash.hasOwnProperty(num)) { hash[num]++; } else { hash[num] = 1; } } for (let num in hash) { if (hash[num] > 1) { res.push(Number(num)); } } return res; };
Представляю, что ответил бы Мурыч на вопрос про хойстинг: в ЕКМаскрипт документации нет таких понятий.. Это просто тупой жаргон, таких меанизмов в ЖС нету и в спецификации о нем нету ниодного слова 😂
Мурыча хрен поймёшь. На стриме с ходу заявляет, что никакого хойстинга в JS нет. Упомянутая в спеке HoistableDeclaration не имеет к популярному понятию "хойстинг" никаго отношения. В середине стрима выясняется, что HoistableDeclaration это как раз и есть тот самый хойстинг, о котором все говорят. Он применим только к function declaration, использование которых возможно по коду до её объявления. После чего Мурыч говорит, что хойстинг - это только про декларированные функции, к var он вообще никаким боком, хотя в начале стрима говорил, что хойстинга в JS нет, как его нет и в спецификации.
Норм на мидл тех собес У кого то до сих пор устоявшееся мнение что чем больше зп тем больше работаешь 🙃 Не всегда это так) Вопросы простые были да Задачи для тех собеса норм Каррированние - дроч, задачи на него такие же. Не вижу смысла в них. В теории в понимании вижу. А в практике это на тех собесе писать - бред. Только в рамках «просто достаточно знать»
имхо, на такие деньги собес оч. легкий. понятие карирования, конечно, нужно знать и вторую зачу решил криво, хоть и результат получил :) по реакту хорошо. не понял почему макротасок нет в js, они есть, это общепринятый термин
Ссылаясь на мировую статистику средних зарплат мидлов, вас очень сильно недооценили, учитывая ваши знания и опыт, вам полагается минимум 5-6к ($) месячного дохода, причем после вычета налога. Советую вам не тратить ваши силы на шарашкины конторы и попытать счастье в fang, где разработчики вашего уровня - ценятся
@@coder-interviews а почему решил не создавать асинхронную функция для того что получить и закинуть данные в стейт и вызвать ее в эффекте? это ведь более читабельно чем промисы и в принципе изначально ты хотел работать с async await
@@coder-interviews на будущее, я тоже так разок запутался и пришел к выводу, что проще написать отдельно асинхронной ф-ией, которую ты просто потом вызовешь внутри. Это и при дальнейшем расширении упростит работу, т.к. могут появится еще задачи при монтировании. Промисы не переношу, раздражает это нагромождение
@@user-chf7z61vnd6h8v почему-то не люблю такой синтаксис. Называть функцию которая кроме одного вызова больше нигде не будет использоваться. Лучше анонимную и тут же вызвать. Но это дело вкуса)
А почему это решение не подходит? const arr = [2, 3, 2, 3, 4, 5, 6, 2, 2]; function getDuplicate() { const result = []; for (let i = 0; i < arr.length; i++) { for (let j = i+1; j < arr.length; j++) { if (arr[i] === arr[j] && !result.includes(arr[i])) { result.push(arr[i]); } } } return result; } console.log(getDuplicate());
Ты дважды бежишь по оригинальному массиву, так ещё и includes используешь и получается у тебя алгоритмическая сложность больше чем O(n^2), а должно быть O(n)
@@coder-interviews Я решил задачку через заполнение пустого массива значениями, которых нет в nums. Что посоветуешь почитать про сложность алгоритмов в джаваскрипте?
Классное-доброе собеседование, уже слышится, что с людьми в команде будет комфортно работать.
Какое-то очень лайтовое собеседование, для миддла по крайней мере. Всем бы таких.
Рад за тебя, что нашел работу! Желаю развития, спасибо за контент
Пример хорошего вопроса на Мидла в студию!
Без обид, но правда, если хотели взять мидла, то собес лайтовый для такого уровня. Обычно на мидла и такую зп побольше дрючат)
Во всяком случае, если зп 230к, то пофиг как собес прошел, главное оффер дали)
@@coder-interviews , а можно получить намек на компанию, в которую собес проходил?)
@@coder-interviews у нас горят дедлайны, потому что менеджмент опять все просрал. Ты готов поработать в эти выходные? Мы же все таки семья...
@@moon.trance захотелось ведь))
тоже вместе с автором прошел этот собес 😳🤯
честно говоря во многих кейсах особенно в задачах, заметил ошибки и недочеты. начиная с банального красивого кода, заканчивая алгоритмом reduce, пониманием правильной типизации и правильный вызов функции обращения апи. быть может автор волновался. я пишу этот комментарий не с целью хейта, просто мне кажется, что собес относительно был легким и его можно было пройти гораздо быстрее и лучше. теоритические знания хороши! лайк, спасибо за контент и за ваш труд, ждём новых видосов
Впервые вижу собес, где спрашивают про реакт то, с чем реально приходится работать :D
Так разным люлям приходится с разным работать в React :)
@@jurafree426 да, но тут прям базу базу спрашивали
Такое на собесе, ещё и на мидла редко увидишь)
Относительно легкий собес, поздравляю)
спасибо за видосы, сам ща к собесам готовлюсь, на текущем месте работы 3 года отработал, но навык прохождения собесов вообще потерял))
Рад помочь)
@@coder-interviews вообще что заметил, если вакансия меньше 200к, то на собесе просят намного больше, ежели на собесе 200+) просто мое наблюдение
@@deantek факт
Очень даже не душно, я бы только отметил, что больше рассуждений вслух)) но это мое мнение, лайк влепил😁
видос на глазах родился
Мои поздравления)
Скрин с каррирование нечайно не туда воткнул)) Съехало после добавления вступления, заметил уже после того как видео выложил
Спасибо !
Я впервые на твоем канале(кажется), вступление чуть не заруинило просмотр
Афигенски интересно. Спасибо!
@Кодерские собесы
, Предупреждаешь ли ты на собесе, что будешь записывать собес?
Самое ламповое и вроде как извое собеседование
Подскажи с помощью чего видео можно обработать? Например заблюрить лица
230к +- норм для мидла если рьінок не зарубежньій
Вторая задача про дубли: а чем не угодил фильтр и индексоф? Он вернёт абсолютно тот же массив, что и в данном примере аккумулятор редьюса. Так же засетить его и получить правильный ответ.
Из-за алгоритмической сложности O(n^2)
FrontRend, live-coDDing)
Решал вместе с тобой задачки, в целом достаточно просто, поздравляю с оффером)
Для второй задачи я использовал методы Object.entries, reduce, map, filter, то есть четыре раза прошелся циклом по одним и тем же данным по сути) Как по мне твой вариант посимпатичнее и полаконичнее
Спасибо, не заметил. Сейчас исправил
Можно ещё лаконичнее сделать. Без вот этих выкрутасов на последней строке в виде Array.from(new Set()) - получается решение не оптимальное по памяти. Задачу можно решить за линейное время
@@coder-interviews
Самое лучшее и лаконичное решение это через new Map();
через вайл и инклудес по 2ом масивам и все
самое лучшее решение думаю
for (const item of arr) {
if (duplicatesSet.has(item) && !duplicatesArray.includes(item)) duplicatesArray.push(item)
else duplicatesSet.add(item)
}
здесь используется линейное решение O(n) с вторым видом for для исключения лишних операций и аргументов
в итоге получается минимальные итерации нахождения дубликатов
Спасибо огромное за видео. А чтобы попасть на собеседование Вы сначала тестовое решили? Тестовое всегда решаете перед собеседованием?
Не, тестовое не решал. Где просят тестовое - дальше не прохожу
голос в начале вводит в транс)
Меня на так же собеседовали на зп в 40-50к с супер легаси кодом. CRM для авиа запчастей не помню компанию.
16:15 внимание акцентрировать
он, наверное, в этот момент подумал о том, что забыл спросить "как в css отцентрировать блок"
Для меня такой пример карирования понятнее
function curry(func) {
let argsRes = [];
return function curried(...args) {
argsRes = [...argsRes, ...args];
if (argsRes.length >= func.length) {
return func(...argsRes);
} else {
return curried;
}
};
}
Слишком свежо :)
Нормально раскидал задачи) А как у тебя с собесами на более высокую зп?
А почему именно 230? Это удалёнка или офис МСК?
Кажется, всегда зп мидла была примено 3к$ что должно быть 270
Работаю миддлом за 150 😂😂
@@АлександрКоваль-д3щ кажется у тебя зарплата джун + или мидл -, или тебя обманули. У автора три года опыта работы, у меня примерно так же, вот думаю какую зп просить, думал около 250
@@АлександрКоваль-д3щ работала миддлом за 82к))) уволилась пару месяцев назад, потому что обидно уже за такую зп работать. Тоже готовлюсь к собесу.
@@АнастасияШагаева-й8ч , знаете у меня была похожая проблема, возможно это из-за проблемы умения отстаивать себя. Посмотрите эту книжку "смит тренинг уверенности в себе". Я так же думаю это хороший повод обратиться к психологу и обсудить с ним эту проблему.
Извините что так лезу, возможно это даже не про вас, но если бы мне кто-то об этом раньше сообщил я был бы рад.
@@АнастасияШагаева-й8ч нашли? какая зп сейчас?
хостинг)))
орнул
А где находятся такие чудесные вакансии?
Да у меня такой же вопрос? ГДЕ????? Мне тоже очень интересно
Не отвечу и на 10% теоретических вопросов из собеса - это не мешает мне делать сайты и зарабатывать на этом.
Да вот вообще не понимаю смысл лайв кодинг интервью, какая-то дрочь на теорию лишняя. Как бы если что-то не знаешь в чём проблема загуглить и решить поставленную задачу?)
@@kirilldegtyarev6671 потому-что человек, который будет не гуглить, а сразу решать, потратит намного меньше времени на решение задачи, чем тот, который погуглит, возьмет код, а потом будет его править
задачу с нахождением дубликатов я решил через 2 вложенных for и 1 if, насколько это приветствуется на фронте ? просто в универе мы так задачи на с++ решали, вроде работает но на фронте for редко вижу вообще
Два вложенных `for` вполне ОК, если только по разным функциям разложить, чтобы не путались два for, в одном лексическом окружении
а какая сложность получается у твоего алгоритма? О(n^2)?
@@andreyzhukov9134 для такой задачи два вложенных for совсем не ок, будет там огромное количество данных, эти два вложенных цикла аукнуться. Два вложенных for в принципе нужно использовать очень редко, иначе стоит задуматься о том, единственное ли это решение и нормально ли построен back, что из него приходят такие данные, с которыми прийдется использовать два вложенных цикла
function dubles(arr){
const originals = []
const dubles = []
for(let i = 0; i < arr.length; i++){
if(!originals.find((element) => element === arr[i])){
originals.push(arr[i])
} else {
dubles.push(arr[i])
}
}
return dubles
}
у меня такое уродское решение, но чем чёрт не шутит))
Предлагаю записывать количество вхождений каждого элемента массива в объект. Затем запушить в массив те элементы, которые удовлетворяют условию задачи.
const duplicates = (arr) => {
const hash = {};
const res = [];
for (let i = 0; i < arr.length; i++) {
const num = arr[i];
if (hash.hasOwnProperty(num)) {
hash[num]++;
} else {
hash[num] = 1;
}
}
for (let num in hash) {
if (hash[num] > 1) {
res.push(Number(num));
}
}
return res;
};
а есть собес джуна на удаленку ? В моем городе нет вакансий, могу ли я рассчитывать найти удалению работу ?
Надо искать именно удаленку
я думал это АСМР собес 🤣
Представляю, что ответил бы Мурыч на вопрос про хойстинг: в ЕКМаскрипт документации нет таких понятий.. Это просто тупой жаргон, таких меанизмов в ЖС нету и в спецификации о нем нету ниодного слова 😂
Мурыча хрен поймёшь.
На стриме с ходу заявляет, что никакого хойстинга в JS нет. Упомянутая в спеке HoistableDeclaration не имеет к популярному понятию "хойстинг" никаго отношения.
В середине стрима выясняется, что HoistableDeclaration это как раз и есть тот самый хойстинг, о котором все говорят. Он применим только к function declaration, использование которых возможно по коду до её объявления. После чего Мурыч говорит, что хойстинг - это только про декларированные функции, к var он вообще никаким боком, хотя в начале стрима говорил, что хойстинга в JS нет, как его нет и в спецификации.
Он просто таблетки иногда забывает пить@@Boortwint
А как ты попадаешь на собесы? Часто откликаешься на вакансии?)
тоже интересно где автор находит отклики, в рф с 2 годами опыта у меня пока всё достаточно тухло
95 отказов либо прочитано без ответа. Правьте резюме, демонстрируйте сильные стороны. А так я сам не советчик. С трудом нахожу
@@Tatsyaable совсем-совсем ничего? Откликаешься с сопроводительным или без? Сколько откликов всего?
c нахождением дубликатов намудрил конечно - там за пару строчек решается
Норм на мидл тех собес
У кого то до сих пор устоявшееся мнение что чем больше зп тем больше работаешь 🙃
Не всегда это так)
Вопросы простые были да
Задачи для тех собеса норм
Каррированние - дроч, задачи на него такие же.
Не вижу смысла в них. В теории в понимании вижу. А в практике это на тех собесе писать - бред.
Только в рамках «просто достаточно знать»
FRONTREND - обрати внимание
230k это net или gross?
Привет!
Ты удалённую работу искал?
Где эти вы такие собесы находите? На 90K и то намного сложнее вопросы
!!!!
А ну вернись в СБИС, план кто будет делать?
АХАХХАХАХАХАХ, ты кто?)
@@coder-interviews работал в сбисе? можешь тг дать?
имхо, на такие деньги собес оч. легкий. понятие карирования, конечно, нужно знать и вторую зачу решил криво, хоть и результат получил :) по реакту хорошо. не понял почему макротасок нет в js, они есть, это общепринятый термин
Осторожно, могут прибежать свидетели Мурыча и будут втирать за спеку
в смысле в js нет макротасок ? 😵
Оказалось что они есть только на learn.javascript.ru . На других ресурсах типа MDN такое понятие вообще не упоминается
На MDN их называют просто: Таски и Микротаски.
В тоже время мои собесы:
А напиши ка нам балансировку бинарного дерева поиска на вот этом листочке, у тебя 2 минуты, время пошло
эх мне бы такой собес
+
@@nics51 я получил оффер
@@mr.zxzxzxz3816 я тоже но просто так написал 😂 кстати поздравляю :)
@@nics51 взаимно)
Чувак ты работу ищешь или для себя проходишь?
Ищу работу, но я очень требователен и к себе и к работодателю)
@@coder-interviews Какие требования если не секрет? Сознательно забил на алгоритмы?
Почему ЗП всегда примерно одна и та же? Почему не просишь 300 и выше?@@coder-interviews
Ссылаясь на мировую статистику средних зарплат мидлов, вас очень сильно недооценили, учитывая ваши знания и опыт, вам полагается минимум 5-6к ($) месячного дохода, причем после вычета налога. Советую вам не тратить ваши силы на шарашкины конторы и попытать счастье в fang, где разработчики вашего уровня - ценятся
Вроде как мидлам в России во фронтенд столько не платят
Ага, фиг ты туда попадешь
Ахах
Что за fang?
@@Idealist2011 FANG - это аббревиатура, Facebook, Amazon, Netflix, Google.
последняя задачка простецкая, а еле решил. Даже не верится, что дали оффер
Почему еле? Изначально понимал как решать
@@coder-interviews а почему решил не создавать асинхронную функция для того что получить и закинуть данные в стейт и вызвать ее в эффекте? это ведь более читабельно чем промисы и в принципе изначально ты хотел работать с async await
@@АндрейБочарников-х5ъ я хотел написать iife, да что-то запутался со скобками, заволновался
@@coder-interviews на будущее, я тоже так разок запутался и пришел к выводу, что проще написать отдельно асинхронной ф-ией, которую ты просто потом вызовешь внутри. Это и при дальнейшем расширении упростит работу, т.к. могут появится еще задачи при монтировании. Промисы не переношу, раздражает это нагромождение
@@user-chf7z61vnd6h8v почему-то не люблю такой синтаксис. Называть функцию которая кроме одного вызова больше нигде не будет использоваться. Лучше анонимную и тут же вызвать. Но это дело вкуса)
А ваша девушка не стиралка? Просто звуки от сношения со стиралкой присутствуют, и еще сухарики постоянно кушоеш
а можно вопрос, нахрена ты собесы проходишь? чисто по приколу?
А почему это решение не подходит?
const arr = [2, 3, 2, 3, 4, 5, 6, 2, 2];
function getDuplicate() {
const result = [];
for (let i = 0; i < arr.length; i++) {
for (let j = i+1; j < arr.length; j++) {
if (arr[i] === arr[j] && !result.includes(arr[i])) {
result.push(arr[i]);
}
}
}
return result;
}
console.log(getDuplicate());
Ты дважды бежишь по оригинальному массиву, так ещё и includes используешь и получается у тебя алгоритмическая сложность больше чем O(n^2), а должно быть O(n)
@@coder-interviews Я решил задачку через заполнение пустого массива значениями, которых нет в nums. Что посоветуешь почитать про сложность алгоритмов в джаваскрипте?