"Фронтенд-собеседование" которое разрывает шаблоны. TCP/UDP, DNS, TSL и сертификаты, безопасность, refresh token, CORS, … Прикольно. Но весьма специфично ). Спасибо за видео!
29:34 Лучше проверить от обратного и использовать метод some вместо every. Если какое-то из свойств объекта ненулевое, то возвращаем false. Будет быстрее. Я бы, наверное, добавил бы ещё одно условие на 25 строке. if (countMap[num] < 0) return false. Если условие выполнится, то в первом массиве каких-то цифр меньше, чем во втором, так как итерация по второму массиву сделала счётчик отрицательным. Массивы в таком случае не могут быть равны.
Привет! Советую, вырезать часть с пояснениями по продукту из этических моментов, так как тот же Озон может держать конкретный продукт под "секретом" и если зайдет конкурент - общее понимание будет иметь по продукции этой фирмы. Нас интересует только то, что спрашивают на собесе
Привет! Спасибо за коммент) Мне хотелось бы как можно меньше обрезать, т.к. собес это не только про вопросы на Event Loop. Важна атмосфера, то как ты общаешься, какие вопросы задаешь (по продукту/стеку/команде), как комментируешь тейки интервьвера. В любом случае они собесят человека, а не чат гпт, который тебе должен задачки решить и на вопросы ответить. В этом мой посыл, передать полностью как проходит интервью. Да и по большей части ничего секретного никогда не рассказывается. Думаю ничего такого если вайлдберриз узнает, что ребята работают по скраму двух недельными спринтами. Когда есть реальная конкурентная борьба за информацию, то обычно у компании конкурента уже изначально неплохая осведомленность. Не думаю, что им может помочь мой ролик с ютуба про собес на мидла) Обычно то, что рассказывают про команду/продукт есть в открытом доступе. Рассказ в основном по верхам и не затрагивает какие-то вещи, которые могут быть под НДА (интервьювер не имеет права такое делать). Я обрезал в прошлых видео, когда мне начали сильно глубоко рассказывать, с шерингом экрана, показывали как у них проект работает и все такое. Это я конечно буду всегда обрезать из этических соображений.
@@brawlstarsbro5301чаще всего предварительный короткий собес либо когда hr при первом звонке задает тех.вопросы, чтобы отсеять часть кандидатов либо небольшое собеседование перед основным (последнее бывает в основном только в больших крупных компаниях)
в конце интервьвер полную хрень сказал по поводу под массива. В данном контексте присутствие под массива в принципе сломает код, так как ключом не может быть в объекте. И логика реализации задачи, тоже должна быть другая в этом случае.
там имелось ввиду что второй массив имеет те же значения что и первый кроме допустим одного. [0, 1, 2] и [0, 1]. Т е в данном случае второй массив является подмассивом первого, т к все значения пересекаются, но первый массив длиннее. Если в этом случае не проверить что ключ 2 имеет значение 0 то функция вернет неправильный ответ
@@ОлегЧудинов-щ2ю так вначале функции проверка на длину массивов. Или я не понял?) И обычно подмасивы называют которые внутри другого массива находятся
Если нет ограничений по решениям, я бы просто сделал через every() :) function isSimilar(arr1, arr2) { return arr1.every((num, index) => num === arr2[index]); }
@@shellbywalk2721 а зачем что-то гадать, подразумевать, если в тз нет четкого ограничения? Я проходил собесы, где явно указано O(n), например, по памяти или по скорости. Тут можно было бы спросить у собеседующего какое решение ожидается, в противном случае можно писать "в лоб"
@@salixar я думаю если предложить наивный алгоритм то попросят написать эффективнее. Но думаю достаточно включить логику, проанализировав рынок и формат собесов на такой грейд
slice() вызывается, чтобы создать поверхностную копию массива. sort() изменяет текущий массив, а не создает новый, поэтому копия необходима, чтобы передаваемые в аргументах массивы не изменились. Таким образом функция останется чистой и не будет вносить ненужных сайд-эффектов
А когда будет видео со след этапом ??? А то у меня во вторник как раз след этап и оч круто было бы посмотреть это видео до) К слову вопросы у тебя на скрининге не пересеклись с вопросами у меня...)
@@danf24простая классика: объявление переменных плюсы минусы подводные камни, объявления функций и про все нюансы, контекст, типы данных, ивентлуп, просимы и все что с ними связано, ну и одна задачка на преобразование данных, что то было еще по мелочи, но глобально эти вопросы 🤷
Я бы сначала проверил длину массивов, потом сравнил суммы и только потом просто проверил каждый элемент одного массива на наличие в другом массиве. Так сработало бы?
если не глубоко спрашивают, то вроде окей)) бывает когда начинают спрашивать как именно данные передаются и в каком формате они там хранятся тыры пыры :D
Типичный московский фронтэндер - никогда не настраивал инфраструктуру, за передалами браузера нету интересов, слышал словечки от бэкендеров. Главное чтобы реакт стэк знать и просить 300к Финтехи конечно раскормили этих бездарей
не понимаю в чем тут бездарность) ты закрываешь контректную проблему рынка, просишь максимальную сумму за это я так понимаю, что нужно разбираться во всех технических аспектах и просить 30к рублей? По мимо программирования в жизни есть еще очень много занятий, в которых у человека может быть интерес)
Не согласен с тобой Я предварительно спросил у HR нашли ли ребята кандидата, т.к. мне не ответили ничего, я подумал, что ребята закрыли процесс найма. Что такого в том, что люди посмотрят как проходит собес? Многим это будет полезно
Пусть люди ходят сами и сами сталкиваются с вопросами собеса, набирая опыт в реальности. А из-за таких как ты хомяков наберется, которые пройдя собес ничего из себя не представляют, потому что знают ответы на вопросы.
@@karen_danielianа ты не думал, что найм может быть в другие команды и процесс собеседования похож? Ты спалил процесс, спалил задачи, теперь процесс можно попробовать хакнуть и не будет честной конкуренции при найме.
@@СергейЛисицын-и8п в процессе ничего необычного нет, классический многосерийные собесы в крупные компании По задачам - я спалил несколько вопросов, уверен, что у ребят есть база задач и вопросов, которые они задают и они не спрашивают ровно одно и тоже у каждого кандидата (иначе это и без моих видео можно абузить условно заслав друга на собес)
годно, мое решение задачи решил за 15+-м function isSimilar(arr1, arr2) { arr1.sort((a, b) => a - b); arr2.sort((a, b) => a - b); const last = []; if (arr1.length !== arr2.length) return false; for (let key of arr1) if (arr2.includes(key)) last.push(arr2.includes(key)); return last.length == arr1.length ? true : false; } console.log(isSimilar([1, 5, 2, 3], [3, 1, 2, 5]));
@@AntonOtroshchenko делайте проверку на длину массивов, иначе ваше решение будет возвращать true, на допустим isSimilar([1,2,3] , []) или на isSimilar([1,2,3,4] , [1,2,3])
function isSimilar(arr1, arr2) { if (arr1.length !== arr2.length) { return false } arr1.sort() arr2.sort() for (let i = 0; i < arr1.length; i++) { if (arr1[i] !== arr2[i]) { return false } } return true }; чет жесткие какие-то решения через Map (условный), складывать, вычитать. В жизни бы не додумался
"Фронтенд-собеседование" которое разрывает шаблоны. TCP/UDP, DNS, TSL и сертификаты, безопасность, refresh token, CORS, … Прикольно. Но весьма специфично ). Спасибо за видео!
Привет! Спасибо за твой труд, смотрел твои прошлые видеоролики, приятно видеть прогресс в подаче материала. Успехов !
привет! спасибо большое, мотивирует делать еще лучше!))
Не, ну годно - годно. Прямо запасаемся попкорном, ожидается нормальный такой сериал
хаха, спасибо большое! очень мотивирует)
Братан хорош, давай дальше )
Спасибо большое бро) буду стараться
Спасибо , особенно как начинающему фронтендеру
Спасибо тебе за просмотр, удачи в карьерном пути )
И удачи в курьерном пути, если не получится с фронтендом😁
29:34 Лучше проверить от обратного и использовать метод some вместо every. Если какое-то из свойств объекта ненулевое, то возвращаем false. Будет быстрее.
Я бы, наверное, добавил бы ещё одно условие на 25 строке. if (countMap[num] < 0) return false.
Если условие выполнится, то в первом массиве каких-то цифр меньше, чем во втором, так как итерация по второму массиву сделала счётчик отрицательным. Массивы в таком случае не могут быть равны.
ой не песди умник сраный
Отличный собес)
Жду еще)
Спасибо за обратную связь!) Скоро будет вторая часть)
Сильно! Спасибо за контент
спасибо за просмотр!)
Спасибо большое за видос. По функции IsSimilar, в том решении, что на видео - какая в итоге получилась сложность алгоритма?
Привет! Советую, вырезать часть с пояснениями по продукту из этических моментов, так как тот же Озон может держать конкретный продукт под "секретом" и если зайдет конкурент - общее понимание будет иметь по продукции этой фирмы. Нас интересует только то, что спрашивают на собесе
Привет! Спасибо за коммент)
Мне хотелось бы как можно меньше обрезать, т.к. собес это не только про вопросы на Event Loop. Важна атмосфера, то как ты общаешься, какие вопросы задаешь (по продукту/стеку/команде), как комментируешь тейки интервьвера. В любом случае они собесят человека, а не чат гпт, который тебе должен задачки решить и на вопросы ответить. В этом мой посыл, передать полностью как проходит интервью. Да и по большей части ничего секретного никогда не рассказывается. Думаю ничего такого если вайлдберриз узнает, что ребята работают по скраму двух недельными спринтами. Когда есть реальная конкурентная борьба за информацию, то обычно у компании конкурента уже изначально неплохая осведомленность. Не думаю, что им может помочь мой ролик с ютуба про собес на мидла)
Обычно то, что рассказывают про команду/продукт есть в открытом доступе. Рассказ в основном по верхам и не затрагивает какие-то вещи, которые могут быть под НДА (интервьювер не имеет права такое делать).
Я обрезал в прошлых видео, когда мне начали сильно глубоко рассказывать, с шерингом экрана, показывали как у них проект работает и все такое. Это я конечно буду всегда обрезать из этических соображений.
Не говори за всех
Что помешает конкуренту попасть на собеседование?
тех скрининг уже как небольшое тех интервью, и после него еще одно тех.интервью)
Что такое скрининг
@@brawlstarsbro5301чаще всего предварительный короткий собес либо когда hr при первом звонке задает тех.вопросы, чтобы отсеять часть кандидатов либо небольшое собеседование перед основным (последнее бывает в основном только в больших крупных компаниях)
Наверное, это когда быстро отбирают тех, кто слаб @@brawlstarsbro5301
ждем следующих этапов)
14 минута, вопрос про куки только в рефреш запросе - разве withCredentials не будет решением в таком кейсе?
я думаю можно таким решением воспользоваться, но лучше детали погуглить
он ко всем кукам применяется (access тоже не будет отправляться)
@@astarta7772 точно) спс
очень странно что это собес на фронтенд. Все вобросы были про бек
ну не сказал бы что про бек, последняя только если) по сетке вопросы часто могут спросить у фронта
спасибочки) интересно ты реально работу ищешь или таким образом контент делаешь? ну или еще как вариант просто тренируешься чтоб не заржаветь?
в конце интервьвер полную хрень сказал по поводу под массива. В данном контексте присутствие под массива в принципе сломает код, так как ключом не может быть в объекте. И логика реализации задачи, тоже должна быть другая в этом случае.
:D интервьювер всегда прав!
там имелось ввиду что второй массив имеет те же значения что и первый кроме допустим одного. [0, 1, 2] и [0, 1]. Т е в данном случае второй массив является подмассивом первого, т к все значения пересекаются, но первый массив длиннее. Если в этом случае не проверить что ключ 2 имеет значение 0 то функция вернет неправильный ответ
@@ОлегЧудинов-щ2ю в начале проверка на равенство длин
@@ОлегЧудинов-щ2ю так вначале функции проверка на длину массивов. Или я не понял?) И обычно подмасивы называют которые внутри другого массива находятся
@@ОлегЧудинов-щ2ю проверка на длину массивов есть вначале функции. Подмассивами обычно называют вложенные массивы в другие.
Если нет ограничений по решениям, я бы просто сделал через every() :)
function isSimilar(arr1, arr2) {
return arr1.every((num, index) => num === arr2[index]);
}
Это собес наверное на middle/middle+. Такое решение не подразумевается изначально. После этого интервьюер скажет просто до свидания
@@shellbywalk2721 а зачем что-то гадать, подразумевать, если в тз нет четкого ограничения? Я проходил собесы, где явно указано O(n), например, по памяти или по скорости. Тут можно было бы спросить у собеседующего какое решение ожидается, в противном случае можно писать "в лоб"
@@salixar я думаю если предложить наивный алгоритм то попросят написать эффективнее. Но думаю достаточно включить логику, проанализировав рынок и формат собесов на такой грейд
так твое решение не рабочее, только для некоторых частных случаев сработает
Это если два отсортированных списка? Сложность будет O(n)?
не понял для чего slice() вызывать перед sort()
slice() вызывается, чтобы создать поверхностную копию массива. sort() изменяет текущий массив, а не создает новый, поэтому копия необходима, чтобы передаваемые в аргументах массивы не изменились. Таким образом функция останется чистой и не будет вносить ненужных сайд-эффектов
@@katory17 блин, вообще не очевидно )
лучше бы деструктуризацию заюзать, или через new Array
спасибо за ответ!
Ничего себе скрининг, как будто собес😮😊
А когда будет видео со след этапом ??? А то у меня во вторник как раз след этап и оч круто было бы посмотреть это видео до)
К слову вопросы у тебя на скрининге не пересеклись с вопросами у меня...)
а можешь написать какие у тебя были?)
@@danf24простая классика: объявление переменных плюсы минусы подводные камни, объявления функций и про все нюансы, контекст, типы данных, ивентлуп, просимы и все что с ними связано, ну и одна задачка на преобразование данных, что то было еще по мелочи, но глобально эти вопросы 🤷
В четверг выложу, там 4 задачки было
@@karen_danielian дружище, напиши пожалуйста что были за задачи, без решений. хотелось бы разобрать их, заранее благодарю!
@@easymoneydamnsniper Напиши в телегу, скину
А почему нельзя было решить задачу при помощи двух циклов? Типа медленно?
Да, типа того. Собеседущий хотел, чтобы я ручками написал оптимальный алгоритм
@@karen_danielian а как ты определяешь, какой алгоритм нужно использовать и много ли их вообще нужно знать?
@@andrewkaliarovich6516 ну просто пытаюсь самый быстрый написать
А потом какой этап? Еще один технический собес?
Ещё два этапа будет) один технический и еще софтовый+задача на реакт
а значение редюсов сравнить беле бэ геле мэ гелебеле геле мэ уу
волчок продает консультации и пишет что у него 10 лет опыта не забываем
это на каком языке? каких редьюсов?
@@jackshadows8073я свой реальный опыт вообще не скоываю)
Тем более для того, чтобы проводить такие консультации не обязательно иметь огромный опыт в программировании)
Там нужно сравнивать не общую сумму а идентичность массивов, поэтому два редьюса не прокатят
побырику посмотрю все видео на канале пока не забанили ну и пока время не прошло, что мало ли что не актуально будет)
да эта жоска
Я бы сначала проверил длину массивов, потом сравнил суммы и только потом просто проверил каждый элемент одного массива на наличие в другом массиве. Так сработало бы?
кмк более изящный способ был бы сделать через const countMap = new Map();
Удобнее работать с такими вводными
А собес на какой грейд был?)
middle, middle+
как работает http и сертификаты - на кой хуй это фронтендеру? Что именно они хотят задавая этот вопрос?
скажи спасибо, что бинарное дерево не попросили раскидать
если не глубоко спрашивают, то вроде окей)) бывает когда начинают спрашивать как именно данные передаются и в каком формате они там хранятся тыры пыры :D
:D
@@true227 бинарное дерево хоть как-то оправдать можно
это должен знать каждый уважающий себя веб-программист
ты забыл сказать, как ты вообще на собеседование попал
отправляешь резюме - получаешь приглос
@@danf24 а если по 500-700 откликов на вакансию?
нужно резюме хорошее сделать, чтобы оно было у ХР в топе выдачи. 90% откликов это резюмешки "работал работу на работе"
Типичный московский фронтэндер - никогда не настраивал инфраструктуру, за передалами браузера нету интересов, слышал словечки от бэкендеров. Главное чтобы реакт стэк знать и просить 300к
Финтехи конечно раскормили этих бездарей
не понимаю в чем тут бездарность) ты закрываешь контректную проблему рынка, просишь максимальную сумму за это
я так понимаю, что нужно разбираться во всех технических аспектах и просить 30к рублей? По мимо программирования в жизни есть еще очень много занятий, в которых у человека может быть интерес)
@@karen_danielian наверное это постоянная гонка будет с собесами. Лучше чтобы они потупее были, согласен
@@doomymax577 ага, лучше пусть 1 чел с ником думимакс557 будет умнее всего рынка, единственным непризнанным гением
@@karen_danielian ну я могу быть тимлидом этих дебилов
@doomymax577 так стань им, че ты у меня в комментах забыл?))
Это подло - выкладывать собесы. Пусть люди ходят сами, молодец какой, контент сделал, лучше бы работать пошел
Не согласен с тобой
Я предварительно спросил у HR нашли ли ребята кандидата, т.к. мне не ответили ничего, я подумал, что ребята закрыли процесс найма.
Что такого в том, что люди посмотрят как проходит собес? Многим это будет полезно
Пусть люди ходят сами и сами сталкиваются с вопросами собеса, набирая опыт в реальности. А из-за таких как ты хомяков наберется, которые пройдя собес ничего из себя не представляют, потому что знают ответы на вопросы.
@@karen_danielianа ты не думал, что найм может быть в другие команды и процесс собеседования похож? Ты спалил процесс, спалил задачи, теперь процесс можно попробовать хакнуть и не будет честной конкуренции при найме.
@@СергейЛисицын-и8п в процессе ничего необычного нет, классический многосерийные собесы в крупные компании
По задачам - я спалил несколько вопросов, уверен, что у ребят есть база задач и вопросов, которые они задают и они не спрашивают ровно одно и тоже у каждого кандидата (иначе это и без моих видео можно абузить условно заслав друга на собес)
@@karen_danielian а ты согласие брал от интервьюера, что будешь записывать собес?
годно, мое решение задачи решил за 15+-м
function isSimilar(arr1, arr2) {
arr1.sort((a, b) => a - b);
arr2.sort((a, b) => a - b);
const last = [];
if (arr1.length !== arr2.length) return false;
for (let key of arr1) if (arr2.includes(key)) last.push(arr2.includes(key));
return last.length == arr1.length ? true : false;
}
console.log(isSimilar([1, 5, 2, 3], [3, 1, 2, 5]));
const isSimilar = (arr1, arr2) => {
return new Set([...arr1,...arr2]).size === arr1.length
}
@@AntonOtroshchenko делайте проверку на длину массивов, иначе ваше решение будет возвращать true, на допустим isSimilar([1,2,3] , []) или на isSimilar([1,2,3,4] , [1,2,3])
function isSimilar(arr1, arr2) {
if (arr1.length !== arr2.length) {
return false
}
arr1.sort()
arr2.sort()
for (let i = 0; i < arr1.length; i++) {
if (arr1[i] !== arr2[i]) {
return false
}
}
return true
};
чет жесткие какие-то решения через Map (условный), складывать, вычитать. В жизни бы не додумался
На самом деле подход через мапу частый в алгоритмах в целом, просто тут излишен
return sortedArr1.every((value, index) => value === sortedArr2[index]);
твое решение O(nlogn) из-за сортировки, а через мапы меньше complexity - O(n)