Тёмный
Vladimir Lebedev
Vladimir Lebedev
Vladimir Lebedev
Подписаться
Комментарии
@АлександрЕрмолов-п2ь
ждем продолжения 2 части
@d1mas1k2KA
@d1mas1k2KA День назад
Лучшее видео как для новичков, так и для более опытных. Мне не помешало ничего досмотреть до конца. Продолжай в любом случае, у тебя хорошо получается🎉
@vladimirlebedev00010
@vladimirlebedev00010 День назад
Спасибо большое!
@couragic
@couragic День назад
37:50 а здесь не лучше ли выполнить нестрогое сравнение value == null, чтобы еще и на undefined проверить ?
@vladimirlebedev00010
@vladimirlebedev00010 День назад
А мы же проверкой typeof !== 'object' уже учли undefined, null мы отдельно обрабатываем, потому что у него typeof === 'object'
@couragic
@couragic День назад
@@vladimirlebedev00010 понял, спасибо
@Voipli-567
@Voipli-567 2 дня назад
Неге симболды саймбол дейды
@alkodeliriy
@alkodeliriy 5 дней назад
На джуновские должности идёт 3-4 вопроса из JS, typescrpipt, вопросы по фрэйворку, плюс серверные технологии. И тут уже ничего шаблонного нет, вопросы будут идти чистым рандомом, на усмотрение проводящего собес сотрудника. Как предложите готовиться к такому?
@vladimirlebedev00010
@vladimirlebedev00010 5 дней назад
Привет! Почему же, вопросы из остальных тем такие же шаблонные) Конкретно это видео покрывает те самые 3-4 вопроса из JS. Как правило, все они (или большинство из них) будут аналогичны тем, что я в видео разобрал. По другим технологиям в идеале бы выпустить аналогичные видео, но довольно много времени занимает подготовка к таким видео. Думаю, в течение года по всем темам подобные ролики выпущу)
@Сельхоз_продукция
Спасибо за грамотную лекцию!
@ilya2u58
@ilya2u58 9 дней назад
Никогда нигде не писал комментарии, но здесь без шансов. Очень хорошее и главное полезное видео, спасибо большое за такой контент😊
@vladimirlebedev00010
@vladimirlebedev00010 8 дней назад
Спасибо огромное!
@victancia
@victancia 9 дней назад
Немного не так...если число делить на 0, то будет infinity/ -infinity. Nan будет если 0 делить на 0
@MrREALball
@MrREALball 13 дней назад
36:14 держу в курсе, structuredClone в разы медленней чем JSON.parse + stringify в большинстве случаев. Реальное преимущество structuredClone - это его возможность сохранять копию вместе с функциями и прочими эл-тами, не помещающимися в json
@vladimirlebedev00010
@vladimirlebedev00010 13 дней назад
Спасибо! Изучу этот вопрос ещё раз)
@МикиКляйн
@МикиКляйн 14 дней назад
Хороший углубленный видос.
@СергейКарих-ж3ы
@СергейКарих-ж3ы 14 дней назад
Привет, подскажи плз, что за хук Inject на 1:01:44
@vladimirlebedev00010
@vladimirlebedev00010 14 дней назад
Привет! Вот хорошее видео по этому поводу: ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-nXjK7tWZ8sQ.html&ab_channel=DecodedFrontend
@azatfarmanyan150
@azatfarmanyan150 17 дней назад
Здравствуйте! Я хотел бы узнать, есть ли возможность записаться на собеседование для оценки моих знаний. Буду признателен за информацию!
@vladimirlebedev00010
@vladimirlebedev00010 17 дней назад
Привет! Да, можем мок собес провести, напиши в тг, плиз (t.me/VladimirLebedev02)
@qwerty-k5r1u
@qwerty-k5r1u 19 дней назад
все бы ничего , но ты ГОРТАВИШЬ - не каждому это зайдет) работай над этим
@theempire392
@theempire392 4 дня назад
А ты пишешь с ошибками, не каждому зайдет) работай над этим
@АнастасияСергеева-х9о
у вас очень хорошо получается объяснять
@vladimirlebedev00010
@vladimirlebedev00010 20 дней назад
Спасибо большое!
@marcinskavysh8690
@marcinskavysh8690 21 день назад
А какой ответ ожидали услышать по Ангуляр задачке?
@surhep
@surhep 23 дня назад
Блин, информация очень круто и подробно раскрыта. Некоторые вещи вообще впервые увидел, в силу их спецефичности, также и не видел чтобы их спрашивали, но тем не менее, очень полезно для понимания того, как устроен язык и как он обрабатывает определенные процессы. Спасибо, больше бы контента, который так же раскрывает обыденные темы и охватывает больше, чем просто шаблонные вопросы!
@vladimirlebedev00010
@vladimirlebedev00010 23 дня назад
Спасибо!
@yoerh
@yoerh 24 дня назад
Привет! Спасибо за видео) Можешь, пожалуйста, подсказать, что за песочница для кода используется в видео?
@vladimirlebedev00010
@vladimirlebedev00010 23 дня назад
Привет! Я две песочницы использовал: codesandbox (codesandbox.io) и от тинька (interview.tbank.ru)
@alexandrkryzhevnikov7325
@alexandrkryzhevnikov7325 27 дней назад
а почему нельзя объединить 2 массива, далее отсортировать по дате или id... и взять из полученного массива n количество записей последних?
@vladimirlebedev00010
@vladimirlebedev00010 26 дней назад
Привет! Собеседующий упомянул, что массивы могут быть произвольных размеров, а нам могут потребоваться всего 3 элемента, например
@РоманРовнинин
@РоманРовнинин 29 дней назад
А как оно в третьей задаче у них работало если там is not a function?) алсо там наверное не больше и равно, а % fn.length или % 3
@РоманРовнинин
@РоманРовнинин 29 дней назад
Вторую задачу по старинке можно 2 форами сделать, тоже норм решение, сравнить arr[i] + arr[j] === sum. Но видимо это был реально вопрос на маппинг. Если да то ок
@saluteup5198
@saluteup5198 24 дня назад
2 фора это не линейная скорость
@РоманРовнинин
@РоманРовнинин 21 день назад
@@saluteup5198 может функция?
@НикитаЯкунин-и2ф
@НикитаЯкунин-и2ф Месяц назад
По первой задаче ставим по курсору на конец каждого массива. Если arr1id < arr2id берем arr2id и сдвигаем курсор второго, иначе берем arr1id и сдвигаем курсор первого
@ViacheslavChernyavskij
@ViacheslavChernyavskij Месяц назад
ну прям скажем если парень поплыл с первой задачей последних пяти элементов, то на сеньера и тем более мида ему точно пока не стоит. не досмотрел, но как по мне все четко было задано. даны два массива отсортированных, которые являются представлением какого-то очень важного списка, нужно получить последние пять добавленных, как добавлялось неизвестно... ключевые слова "даны отсортированные" и "последние пять". просто берешь последние пять из одного и последние пять из другого, конкатишь и сортируешь, возвращаешь последние пять из результата. закавырки по поводу мол в одном всего три во втором четыре, это решается потом. а суть в том что выдрать последние и отсортировать 10 элементов максимум. и не надо никаких мап придумывать тут или циклов или еще чего-то
@РоманРовнинин
@РоманРовнинин 29 дней назад
тотал соглы, подумал про return [...arr1, ...arr2].sort((x1, x2) => x1.id - x2.id).slice(-5), а тут Ваш комментарий, кек
@saluteup5198
@saluteup5198 24 дня назад
по-моему это ты поплыл, друг мой. У тебя в одном массиве допустим 10 000 элементов, а в другом 100 000 элементов. Если ты их будешь конкатить и сортировать (даже с быстрой сортировкой), то по перформансу может долго идти. Такие задачи чаще всего решаются по методу двух указателей. Если не вдаваться в другие пограничные условия, то ты просто создаёшь две переменные, которые указывают на последние значения в массивах, а затем сравниваешь их, пока длина результирующего массива не будет равна условно 5. Если 2 указатель (2 индекс) больше, чем у первого, то тогда пушишь в результирующий массив последний элемент по указателю второго массива и сдвигаешь 2 указатель, если всё наоборот, то пушишь последний элемент по указателю первого массива и соотвественно сдвигаешь 1 указатель. Твоё решение имеет смысл, но тут явно была задача не такая простая как могло показаться
@ViacheslavChernyavskij
@ViacheslavChernyavskij 24 дня назад
@@saluteup5198 читай внимательно что написал, последние в одном и последние в другом. получится максимум 10, а не как ты фантазировать начал. без негатива, просто внимательно прочти. пускай хоть миллионы записей будут, работать надо с последними...
@saluteup5198
@saluteup5198 24 дня назад
@@ViacheslavChernyavskij так я понимаю, что надо работать с последними и брать последние 5. Просто если ты будешь конкатенировать два массива с большим количеством элементов и потом это сортировать, то у тебя сортировка будет жрать перформанс. Мой посыл был в этом и что такие задачи обычно решают двумя указателями
@ViacheslavChernyavskij
@ViacheslavChernyavskij 24 дня назад
@@saluteup5198может я не так тебя понял. пять последних с одного и пять с другого. после собираешь в один и его же сортируешь, т.е. сортировка для массива в 10 элементов максимум. Почему конкат с большим кол-вом элементов? входные данные вообще не трогаются...
@Вадим-й8п4з
@Вадим-й8п4з Месяц назад
Привет фамильный теска)
@vladimirlebedev00010
@vladimirlebedev00010 Месяц назад
Привет!
@ВикторМожарук
@ВикторМожарук Месяц назад
Интереса ради накидал 1-ую задачу тоже, проще всего, по-моему, сложить в одну отсортированную мапу и достать поледние k элементов function getLastDecision(decision1, decision2, k) { const sortedDecisions = new Map(); const totalDecisions = [ ...decision1, ...decision2 ] for (let decision of totalDecisions) { sortedDecisions[decision.id] = decision } return Object.values(sortedDecisions).slice(-k); }
@yuriy_german
@yuriy_german Месяц назад
управление очисткой памяти называется не просто высокоуровненвый а managed язык, то есть управляемый.
@corvette1297
@corvette1297 Месяц назад
Спасибо за такое видео, всё очень подробно и информативно изложил. Лучший )
@strangerfromthevoid6237
@strangerfromthevoid6237 Месяц назад
Возможно ли пойти стажером в какую-либо компанию на позицию ангулярщика фронта, с последующим повышением до джуна и тд?
@vladimirlebedev00010
@vladimirlebedev00010 Месяц назад
Привет! Можно в тинек, я таким путем и шел: попал на стажировку на ангуляр и дальше рос внутри компании по грейду
@strangerfromthevoid6237
@strangerfromthevoid6237 Месяц назад
@@vladimirlebedev00010 интересно! Спасибо за ответ. А то многое говорят про накрутку опыта и другие уловки, но вот про то как хотя бы стажером устроиться особо информации нет)
@mattspeed
@mattspeed Месяц назад
Максимально шаблонный собес. Идёт два часа, а почти никак уровень кандидата не определяет и не проверяет его опыт. Нет описаний задач в текстовом виде и явных формулировок, что сбивает с толку. Так много про безопасность, а в итоге собеседующий вместо CSRF описал фишинг 🙃 40+ минут тратить на какие-то академические задачи с первых строчек гугла аля "js задачи для собеседования", вместо того чтобы придумать практическое задание с ключевыми навыками для позиции. Видимо премии за продолжительность собеседования, не иначе 😅 Про ContentChildren в конце хороший вопрос на опыт кандидата, но опять же устное описание всё портит, на второй час интенсивного собеседования уже котелок не особо варит устные формулировки воспринимать.
@Ятебяуважаюно
@Ятебяуважаюно Месяц назад
я тебя люблю!!!
@NIReeMK
@NIReeMK Месяц назад
Дай бог здоровья
@vanek_keks2488
@vanek_keks2488 Месяц назад
const getLastDicision = (decision1, decision2, k) => { const arr = [...decision2.slice(-k), ...decision1.slice(-k)] const res = arr.sort((a, b) => a.id - b.id) return res.slice(-k) }
@hllwrld
@hllwrld Месяц назад
очки навалили кринжа
@asphix1980
@asphix1980 Месяц назад
По второй задачке на сумму чисел в массиве, хз как там на leetcode, но вроде как-то так: const hasPairWithSum = (arr, num) => arr.some((el, i) => arr.slice(i+1).includes(num - el));
@ИгорьШироков-ц1т
@ИгорьШироков-ц1т Месяц назад
ух ты и ядерный долбоеб , во первых - джс не однопоточный , во вторых ты просто долбаеб раз считаешь что функция это определяющий элемент функционального программирования , на хуя тебя из больницы выпустили
@vladimirlebedev00010
@vladimirlebedev00010 Месяц назад
Прости пожалуйста
@tnsaturday
@tnsaturday Месяц назад
На клонировании объекта стало понятно, что автор видео вообще не понимает, что такое JavaScript. Вкатунам, впрочем, зашло, что видно по комментам.
@vladimirlebedev00010
@vladimirlebedev00010 Месяц назад
Привет! Хотелось бы поконструктивнее критики, если не затруднит)
@tnsaturday
@tnsaturday Месяц назад
@@vladimirlebedev00010 привет! Ну ты же из интернета просто взял решения. Попробуй ими склонировать объект, ты удивишься результату
@tnsaturday
@tnsaturday Месяц назад
@@vladimirlebedev00010 ну или давай начнем сразу. Ты когда-нибудь что-то слышал про прототипное наследование?
@tnsaturday
@tnsaturday Месяц назад
@@vladimirlebedev00010 ну или давай начнем сразу. Ты когда-нибудь что-то слышал про прототипное наследование?
@vladimirlebedev00010
@vladimirlebedev00010 Месяц назад
Так и не понял, в чем претензия. Моё решение не покрывает все кейсы? Очевидно, полифил выглядел бы сложнее, чем то, что я реализовал, ну а кому это нужно? На собеседованиях чаще всего несколько задач, если представить, что это одна из них, то предложенного мной решения хватит.
@СтаниславХуртов
@СтаниславХуртов Месяц назад
просто отличные ответы, еще не видел чтобы так подробно расскрывали ответы. Жду следующие видео
@romanvishnevetsky9418
@romanvishnevetsky9418 Месяц назад
Спасибо, за structuredClone() не знал). всегда юзал рекурсию
@dididie158
@dididie158 Месяц назад
Спасибо за видео. Поправка, рендер делается после выполнения микротасок, а не после макро
@vladimirlebedev00010
@vladimirlebedev00010 Месяц назад
Спасибо! А можно ссылочку на источник, пожалуйста? Ознакомился бы с удовольствием)
@dididie158
@dididie158 Месяц назад
@@vladimirlebedev00010 на learn js страница event-loop, там заголовок микро и макрозадачи. Ютуб ссылки удаляет
@tnsaturday
@tnsaturday Месяц назад
Поправка, такого понятия как макротаска не существует
@dididie158
@dididie158 Месяц назад
@@tnsaturday это понятие которое придумало сообщество. В спецификации нет.
@tnsaturday
@tnsaturday Месяц назад
@@dididie158 если какого-то понятия нет в спецификации, значит его не существует.
@ivanMoldovanu
@ivanMoldovanu Месяц назад
очень круто сделал. очень глубоко разобрал каждый вопрос. т.е. ты именно разобрал вопрос, дал понимание почему так, а не тупо сказал что это так. респект
@ПолинаЕремина-у2ч
@ПолинаЕремина-у2ч Месяц назад
В использовании var iife получила undefined 10 раз
@vladimirlebedev00010
@vladimirlebedev00010 Месяц назад
Привет! А попробуй точь-в-точь скопировать пример из видео)
@9fds9fnsd9dfnsd9nfs2
@9fds9fnsd9dfnsd9nfs2 Месяц назад
Мурыч бы оценил)
@АлексейЕгарев-и5у
@АлексейЕгарев-и5у 2 месяца назад
В первой задаче проще всего рекурсией. Количество итераций будет зависеть от того, сколько нам элементов нужно получить, если столько конечно есть в двух массивах function getLastDecision(decisions1, decisions2, k) { let result = []; const lastItemD1 = decisions1[decisions1.length - 1]; const lastItemD2 = decisions2[decisions2.length - 1]; // Базовый случай if(!k || (!lastItemD1 && !lastItemD2)) { return result; } // Рекурсивный случай else{ if((lastItemD1?.id ?? 0) > (lastItemD2?.id ?? 0)){ result.push(lastItemD1); decisions1.pop(); } else { result.push(lastItemD2); decisions2.pop(); } return result.concat(getLastDecision(decisions1, decisions2, k - 1)); } }
@КонстантинСигуев
@КонстантинСигуев 2 месяца назад
Спасибо!
@xxxxrat
@xxxxrat 2 месяца назад
Спасибо! 1. Примитивы тоже передаются по ссылке, а не по значению. Это легко заметить, если переменную с огромным стрингом отправить в качестве параметра в функцию: размер кучи не поменяется. 2. Псевдомассив arguments де-факто deprecated. Используй метод rest вместо: (...args)
@MegaDjeday
@MegaDjeday 2 месяца назад
asdfasdf
@eduardvershinin2894
@eduardvershinin2894 2 месяца назад
1:39:42 разве асинхронность работает в forEach ? Похоже на ошибку
@vladimirlebedev00010
@vladimirlebedev00010 2 месяца назад
Почему нет? Он принимает коллбек, вполне им может быть асинхронная функция)
@eduardvershinin2894
@eduardvershinin2894 2 месяца назад
Откройте форточки перед включением видоса или включите кандер на максимум, а то задохнетесь от духоты. Лайк поставил)
@sedoy_tak_byvaet
@sedoy_tak_byvaet 2 месяца назад
базёнка... ну пожалуйста.... ну не надо так трахать русский язык...
@Kurigohan-and_k
@Kurigohan-and_k 2 месяца назад
Классное видео!
@liga_frontend
@liga_frontend 2 месяца назад
Нужно такое же видео по angular)