Interview of a Middle Frontend developer

  Рет қаралды 199,131

Front-end Science with Sergey Puzankov

Front-end Science with Sergey Puzankov

Күн бұрын

Пікірлер: 561
@frontendscience
@frontendscience 3 жыл бұрын
👍 Друзья, поддержите, пожалуйста, Алексея в комментариях - он самый смелый, прошел у нас интервью первым. И поставьте ему большой красивый лайк!
@ИльяХутчев
@ИльяХутчев Жыл бұрын
😢😊🎉😂 ❤😮😢❤❤😊х😮😮🎉😊 л😂🎉😂😅😅е😊😢😅вы❤❤😂😂❤😊 😅😮😮х😮😢😮😂😅😢😅😮😊🎉к😢😊😢😢😂😊😊🎉🎉🎉😢😢😊😢эх😊😮😢😮😅😮😮😅❤😮😮😮❤😢😂😊😊😂😢🎉❤😊😢л😮🎉😊 7:41 🎉😅😢😢😢 7:55 🎉😢😊😅😊😢😮😢😢😅😊😮😢🎉😮😂😢з 8:б😅❤😂😊 10:17 42 как 8:54 😮х😂❤😮😊😢 9:56 😢😊😢😅😮х😢🎉😢ф😢😂😢😊😅😊😢😮🎉😊😅😊😮😮❤😊😊😮😊ч😂😮🎉😂😊
@maxtor5088
@maxtor5088 3 жыл бұрын
У нас есть два JS, тот который мы используем каждый день и о котором говорим на собеседовани ))
@zheil2977
@zheil2977 3 жыл бұрын
У нас есть два программирования, то которое мы используем каждый день и о котором говорим на собеседовании )))
@МихаилДементьев-ф8и
@МихаилДементьев-ф8и 3 жыл бұрын
Согласен, в реальности все по другому, а здесь какие-то магические слова :)
@ELDlabIo
@ELDlabIo 3 жыл бұрын
@@МихаилДементьев-ф8и Ну на самом деле слова не магические) Просто часто работа превращается в рутину и все мы работаем не с целью чему-то обучиться, а просто выполнять задачи, ибо начальству только это важно, к несчастью( Но я считаю, что если хочешь быть не просто кодером, а программистом думающим и отвечающим за каждую свою строчку кода, то надо чтобы все-таки все эти слова перестали быть магическими)
@michaelpetrov4965
@michaelpetrov4965 3 жыл бұрын
@@zheil2977 можно подставить php, ничего не изменится.
@CJ19000
@CJ19000 2 жыл бұрын
+++++
@phone1429
@phone1429 3 жыл бұрын
Алексей, спасибо за участие в интервью. Считаю, отлично справился, несмотря на волнение. Успехов, профессионального и карьерного роста!
@vladbazhanov8321
@vladbazhanov8321 3 жыл бұрын
28:00 const inc = (function() { let counter = 0 return function () { counter + 1 }; })() Не возвращается значение, и не переопределяется сам counter: const inc = (function() { let counter = 0 return function () { return ++counter }; })()
@frontendscience
@frontendscience 3 жыл бұрын
Да return Алексей забыл добавить. Бывает
@vladbazhanov8321
@vladbazhanov8321 3 жыл бұрын
@@frontendscience Но counter тоже инкрементировать стоит, в реализации на видео будет возвращать всегда 1. Но это мелочи )
@frontendscience
@frontendscience 3 жыл бұрын
@@romanmed9035 Да именно так замыкания и работают. Они хранят контекст с переменными даже если эта функция уже отработала. У Алексея в решении была ошибка в решении: необходимо вместо строки counter + 1 делать return ++counter. Таким образом сохраняется увеличенное значение переменной counter и самое главное из функции возвращается значение.
@frontendscience
@frontendscience 3 жыл бұрын
@@romanmed9035 Успехов!
@deemdeemdeem
@deemdeemdeem 3 жыл бұрын
const inc = () => { inc.counter = inc.counter || 1; return inc.counter++; } а с iife крутое решение, сразу в голову не пришло
@suslikest3708
@suslikest3708 3 жыл бұрын
Мне лично сразу в кандидате понравилось то что он свободно и без напряга общается при этом в рамках приличия как по мне уже крутой показатель.
@АлександрЕрмолов-п2ь
@АлександрЕрмолов-п2ь 3 жыл бұрын
Да, парень - крут!
@Maiq-The_Liar
@Maiq-The_Liar 3 жыл бұрын
Чувствуется, что готовился усердно :) Круто.
@mxrquez7692
@mxrquez7692 2 жыл бұрын
1:00:12 Вдруг кому-то нужно или интересно решение задачи с каррированием и рекурсией, на которую решили не тратить время const sum = (a) => { let result = a; return addMore = (b) => { result += b ?? 0; return b === undefined ? result : addMore; } }
@olegtsesko
@olegtsesko Жыл бұрын
const sum = a => b => b ? sum(a + b) : a sum(1)(2)(3)() // 6
@alexr6829
@alexr6829 3 жыл бұрын
Было круто, спасибо Сергей! Еще так много нужно узнать и еще большему научиться)
@frontendscience
@frontendscience 3 жыл бұрын
И тебе спасибо! Больших успехов!
@boldureans
@boldureans 3 жыл бұрын
Ты оч крутой!
@murad40
@murad40 3 жыл бұрын
блиин, так круто прошел, можно было бы попросить у вас телегу или мэйл?)
@murad40
@murad40 3 жыл бұрын
обещаю не спамить, хотел спросить про ваши ресурсы для подготовки
@srjoyme2525
@srjoyme2525 2 жыл бұрын
огонь собес )
@ПавелБродкин
@ПавелБродкин 3 жыл бұрын
Алексей молодец! Все знания можно помножить на 2, а то и на 3 - учитывая что все это происходит в стрессовой обстановке.
@frontendscience
@frontendscience 3 жыл бұрын
Ребята, а было бы интересно посмотреть behavioural интервью?
@vladsosnov3749
@vladsosnov3749 3 жыл бұрын
System design тоже)
@vpetryniak
@vpetryniak 3 жыл бұрын
Да очень
@КонстантинАтрощенко-ъ8к
@КонстантинАтрощенко-ъ8к 2 жыл бұрын
Алексей крут конечно!!!! Зная что выступаешь на широкую аудиторию нервишки шкалят еще больше!!!! С учетом волнения его знания можно во много раз приумножить)) Такие видео помогают избавится от эффекта самозванца) Сергей вам огромный респект!!!! На некоторых конторах, на Middle позицию, спрашивают ядро JS и после по специфике конторы React, Redux, Typescript, Webpack и т.д. Хотелось бы увидеть собеседование в таком формате))
@FireORcolD
@FireORcolD 2 жыл бұрын
у меня спрашивали чем отличается event loop браузера и nodejs, зачем эта инфа, что она решает, не понятно, учитывая что я ему рассказала как работает event loop браузера решая задачу, в итоге не взяли, может я был глуп для них, но была закономерность, придумывались абсурдные задания, что в итоге сказал сам интервьюер, не желаю никому на такого попасть, кстати есть ещё прикол, зачем-то сбивать с логики, я решая задачу сказал какой будет результат, а он старался сбить меня с моей логики раза 4-5 в одном вопросе, это что за способ самоудовлетворения, надеюсь что следующий интервьюер будет как Сергей
@amirkerimov95
@amirkerimov95 2 жыл бұрын
Привет! У меня вопрос по поводу решения в блоке про замыкания (28:00): разве там всё работает? Там же по сути в замыкании остаётся значение counter = 0 и при каждом вызове inc он будет сначала 0 потом увеличится на 1. Там кстати return тоже надо добавить. В целом, задача такая, что нужно сохранить этот counter где-то кроме global scope. Я решил это так: сделал так же функцию, поместил в переменную inc, внутри сохранил counter как свойство (функция это объект) this.counter = 0. Потом из той же функции вернул другую функцию, которая это свойство и меняет this.counter += 1. И теперь всё работает
@TheHackedpro
@TheHackedpro 2 жыл бұрын
let inc = (function(){ let count = 0 return ()=> count+=1 }())
@PussyDestroyerUK
@PussyDestroyerUK 2 жыл бұрын
Да там ошибка, функция будет возвращать undefine.
@nebogova
@nebogova 2 жыл бұрын
@@PussyDestroyerUK там просто return не хватает
@victorkrasnov5576
@victorkrasnov5576 3 жыл бұрын
Про замыкания и IIFE. let inc = (function() { let counter = 0; return function() { return counter + 1; } })(); Код не будет работать :) Надо return counter + 1 заменить на ++counter А за видос спасибо, крутейший контент - позволяет представить себя на месте интервьюируемого и попрактиковать задачки. Подписался.
@frontendscience
@frontendscience 3 жыл бұрын
Выше в комментариях я уже отвечал про эту задачу.
@maxkarrtopelka3718
@maxkarrtopelka3718 3 жыл бұрын
в задаче с замыканием, есть вариант вот такой реализации: const inc = (counter => () => ++counter)(0); console.log(inc()); // 1 console.log(inc()); // 2 console.log(inc()); // 3
@frontendscience
@frontendscience 3 жыл бұрын
Да отличный вариант1
@alexanderkosinskiy7339
@alexanderkosinskiy7339 2 жыл бұрын
Украдено с Хекслет
@maksimmnatsakanov2853
@maksimmnatsakanov2853 3 жыл бұрын
Круто, спасибо, ждал! Люблю смотреть публичные собеседования)
@sergeyplotnikov5031
@sergeyplotnikov5031 3 жыл бұрын
Хорошая обратная связь и классные задачки. Спасибо!
@АлексейКа-б2д
@АлексейКа-б2д 2 жыл бұрын
Many thanks!! Такие интервью дают больше понимания, чем обучающие материалы!!
@seryozhamangushev9638
@seryozhamangushev9638 3 жыл бұрын
Я так долго ждал этот формат.
@frontendscience
@frontendscience 3 жыл бұрын
Здорово! Рады, что нравится 👍
@anastasiaviva5721
@anastasiaviva5721 3 жыл бұрын
Контент просто огонь! Алексею респект! Сергей, огромная благодарность за такой формат!!!
@frontendscience
@frontendscience 3 жыл бұрын
Рад что понравилось! Благодарю за поддержку!
@alexkostrov5186
@alexkostrov5186 3 жыл бұрын
Алексей красава просто! очень хорошие знания показал
@8-Artem-8
@8-Artem-8 3 жыл бұрын
Хорошее собеседование и вопросы адекватные. Еще интересно было бы увидеть собеседование на react разработчика.
@Иван-ц3н4б
@Иван-ц3н4б 2 жыл бұрын
из видео я понял, что знаний основ js между мидлом и джуном не особо много... на данный момент я не имею боевого опыта разработки, но прорешал больше 200 задач на codewars на js и все задачи приведенные в собесе мне показались скорее джуновскими в чем отличия мидла?
@al77ex1
@al77ex1 2 жыл бұрын
Ой! Случайно перепроверил пример про инк. )) У меня какие-то неправильные решения полезли на ноч глядя let inc = function () { if (!this.c) this.c = 0; this.c +=1; return this.c } Но в целом собес супер! Алексей молодец держался хорошо! Спасибо за видео!
@nickkorol5387
@nickkorol5387 3 жыл бұрын
Очень круто и качественно!!! Я вчера проходил на трейни, так мне три задачи попались такие как тут проходили... узнал бы немножко пораньше !) В целом, спасибо, тут есть чему поучится !
@frontendscience
@frontendscience 3 жыл бұрын
Прикольно! А какие именно задачи? И что еще было? Ребятам тут будет полезно узнать
@nickkorol5387
@nickkorol5387 3 жыл бұрын
@@frontendscience Мне попилась по приоритетам(event loop and setTimeout, ну там добавили мне и IIFE), так же "Про замыкания и IIFE". от такое еще было: const arr = [ [true, false, true], [false, false, true] ] // надо поменять с true на false на оборот.
@frontendscience
@frontendscience 3 жыл бұрын
Благодарю что поделился!
@nk_77777
@nk_77777 7 ай бұрын
Классный ролик, спасибо)❤
@tatianovnafrutti8982
@tatianovnafrutti8982 3 жыл бұрын
Крутой формат!! Лайк! Побольше собесов )))
@ЮрийДьячков-к9ю
@ЮрийДьячков-к9ю 2 жыл бұрын
мне кажется или на 55:52 это не финальное решение?
@gykan
@gykan 3 жыл бұрын
Трехтысячный лайк мой ))
@frontendscience
@frontendscience 3 жыл бұрын
👍
@dmitrykorovin4356
@dmitrykorovin4356 3 жыл бұрын
прям очень круто! Алексею респект)
@ДмитрийКолышницын-с2л
@ДмитрийКолышницын-с2л 3 жыл бұрын
Завтра буду слушать , надеюсь будет крутяк !!!
@BROnik
@BROnik 3 жыл бұрын
спасибо что проинформировал
@frontendscience
@frontendscience 3 жыл бұрын
Прикольно! У вас тут весело 😆
@HIghtowerSever
@HIghtowerSever 3 жыл бұрын
Привет. Все четко, кроме размера шрифта кода на экране. Учитывая, сколько на экране свободного места, шрифт можно увеличивать раза в 3-4. И тогда удобно будет смотреть на мобилке... Мобайл-ферст - не забывай, плиз.
@frontendscience
@frontendscience 3 жыл бұрын
Спасибо, учтем
@wpcity-pm2wk
@wpcity-pm2wk 3 жыл бұрын
Yes, I'm also watching it from my phone
@МаксимКаськов-ч4п
@МаксимКаськов-ч4п 3 жыл бұрын
Спасибо. Было полезно) Надеюсь увидеть собес на сеньера)
@DmitryDolganov
@DmitryDolganov 3 жыл бұрын
Отличный формат! Сергей, благодарю!
@frontendscience
@frontendscience 3 жыл бұрын
И я Вас благодарю )
@Aleal616
@Aleal616 3 жыл бұрын
Блин не собирался смотреть это видео, 1 : 29 :52, но как то затянуло, самое интересное, что я не занимаюсь ни фронтом ни бэком, ни вообще IT разработками. Было просто интересно, продолжайте делать дальше такие видео.
@frontendscience
@frontendscience 3 жыл бұрын
:) Благодарю!
@1kvolt1978
@1kvolt1978 3 жыл бұрын
Я вымучил таки фруктовую функцию. :) Заняло примерно два часа с учётом вспоминаний синтаксиса стандартных методов на w3schools, попутного ознакомления с Map и Set и частыми перекурами. Вот что получилось (немного изменил первоначальный массив, потому что иначе получался сразу отсортированный итоговый и я не мог проверить правильность сортировки): // Вывести новый массив из уникальных элементов заданного, отсортированный по числу вхождений let fruitsArr = ["banana", "grapefruit", "orange", "grapefruit", "orange", "banana", "orange", "banana", "orange"]; function uniSortByEntr(wordsArr) { const uniWordsObj = {}; // uniWordsObj - объект с уникальными ключами-элементами данного массива и значениями, // равными числу вхождений соответствующего элемента wordsArr.forEach(function(word) { uniWordsObj.hasOwnProperty(word) ? uniWordsObj[word]++ : uniWordsObj[word] = 1; }); // Сортируем ключи объекта uniWordsObj по убыванию их значений, т.е. вхождений соответствующих элементов // в данный массив, создаём отсортированный массив из этих ключей, который добавляем к объекту uniWordsObj, // возвращаем этот объект, содержащий ключи-слова со значениями-числами вхождения и отсортированный массив const uniWordsArr = Object.keys(uniWordsObj); uniWordsObj.uniSortArr = uniWordsArr.sort(function(a, b) { return uniWordsObj[b] - uniWordsObj[a]; }); return uniWordsObj; } console.log(uniSortByEntr(fruitsArr)); Я возвращаю весь объект, потому что инфа о количестве вхождений слов может оказаться полезнее самого отсортированного конечного массива, а это массив просто цепляю к возвращаемому объекту. Теперь можно и посмотреть, что у Алексея получилось. :)
@frontendscience
@frontendscience 3 жыл бұрын
отлично вышло! благодарю за решение!
@1kvolt1978
@1kvolt1978 3 жыл бұрын
@@frontendscience Спасибо.
@oleksandrsavych4526
@oleksandrsavych4526 3 жыл бұрын
Кльовий формат і грамотний гість!
@eakzit3181
@eakzit3181 3 жыл бұрын
Когда работаешь каждый день с фреймворками, забываешь азы. Мне на самом деле чуток пришлось даже поднапрячься с рекурсивным решением курринга...Спасибо за фановый контент, азы нуно знать, есть что повторять :)
@АринаЯковлева-т3ж
@АринаЯковлева-т3ж 3 жыл бұрын
28:00 ничего не будет возвращаться, внутренняя функция ничего не возвращает. И даже если мы поставим return counter + 1, то при вызове будет 1 каждый раз, так как в саму переменную ничего не записалось, тут нужен постфиксный инкремент, то есть return counter++
@frontendscience
@frontendscience 3 жыл бұрын
Да, и об этом писали уже в комментах много
@АринаЯковлева-т3ж
@АринаЯковлева-т3ж 3 жыл бұрын
@@frontendscience Извините, я листала и не нашла) В любом случае, спасибо за интересный и познавательный формат!:)
@frontendscience
@frontendscience 3 жыл бұрын
@@АринаЯковлева-т3ж и Вам спасибо)
@marynashubna203
@marynashubna203 3 жыл бұрын
респект Алексею!
@Zhenkaaf
@Zhenkaaf Жыл бұрын
Очень качественные интервью.. Когда продолжение?
@alukret
@alukret 3 жыл бұрын
28:02 не совсем понял что за counter + 1, надо или counter++ или counter = counter + 1, иначе переменная не увеличивается
@frontendscience
@frontendscience 3 жыл бұрын
уже много раз отвечал на это в комментариях - если интересно, пролистайте
@rem-singer
@rem-singer 3 жыл бұрын
в задаче на 20:16 я и с let и с var, и с const вывожу в консоль undefined, никаких ошибок. Как же так?
@valdasstonkus5493
@valdasstonkus5493 2 жыл бұрын
At end of 27 minute code is wrong, it will not return 1 and 2, it will return twice undefined. But you sayed that it will work.
@bolovy6093
@bolovy6093 2 жыл бұрын
Всем привет, а функция ведь не работает на 28:02
@TheBububo
@TheBububo 3 жыл бұрын
Ограничение по 6 соединений на домен, это же про http1. Для http2 это же не актуально?
@frontendscience
@frontendscience 3 жыл бұрын
Да, все верно. Но до сих пор очень много сервисов работает именно на http1. И бывают случаи, когда по объективным причинам его нельзя перевести на http2.
@1powernic
@1powernic 3 жыл бұрын
Не совсем понятен вопрос про несколько доменов для статики, где одновременно может загружаться всего по 6 файлов. Это проблема была в протоколе http/1, с приходом http/2 проблема не актуальна. Надо лишь веб сервер со статикой перенести на http/2
@frontendscience
@frontendscience 3 жыл бұрын
Да, все верно. Спрашивал, потому что до сих пор много серверов все еще работают на http/1.
@strange_man317
@strange_man317 3 жыл бұрын
28:10 Через секунду выведет в лог 42. Или я что то не понимаю.
@DavitAve
@DavitAve Жыл бұрын
Что такое heap stack, generators это мне задавали на middle а
@dw_tv3992
@dw_tv3992 3 жыл бұрын
Сергей спасибо за контент, очень хочется увидеть, как вы собеседуете джуна
@frontendscience
@frontendscience 3 жыл бұрын
Заполняйте форму! И можете не только увидеть, но и поучаствовать :)
@abffggjhf516
@abffggjhf516 3 жыл бұрын
@@frontendscience Собеседовался на джуна, вопросы как здесь на мидла...
@frontendscience
@frontendscience 3 жыл бұрын
@@abffggjhf516 Я тебе больше скажу - такие же вопросы будут и если на синьора собеседоваться, здесь важна точность и глубина ответов.
@sceptic571
@sceptic571 2 жыл бұрын
Классное собеседование. Алексей - молодец! Я искренне переживал за Алексея и тоже решал с ним задачки.
@kozubskyi
@kozubskyi 3 жыл бұрын
27:43 есть ошибка, забыли возле "+" поставить "=" , так все время будет возвращать 1,1,1. Надо прописать return () => counter += 1, тогда все будет работать
@frontendscience
@frontendscience 3 жыл бұрын
Пролистай комменты, там все обсудили
@РоманГирич-з5ш
@РоманГирич-з5ш 2 жыл бұрын
подивився до кінця, круто
@guldenbazheeva297
@guldenbazheeva297 3 жыл бұрын
Алексей большой молодец! Очень смело публично проходить собеседование! Успехов ему и вам!
@kirsanov2008
@kirsanov2008 3 жыл бұрын
вот такие должны быть джуны! респект!
@АртемЛебедев-ы7с
@АртемЛебедев-ы7с 3 жыл бұрын
Хорош в теории, слаб в практике
@DmitriiRepnikov
@DmitriiRepnikov 3 жыл бұрын
По знаниям он полноценный мидл, то что в режиме лайвкодинга он не может сосредоточиться - это обычная история даже для сеньора. Может когда-нибудь собеседующие это поймут, и не будут давать советы уровня “будь внимательнее“, потому-что этому совету сложно следовать когда хмурый дядька палит на процесс твоей работы Хотя может и не мидл, ведь я не слышал вопросов по боевым задачам (смотрел на перемотке), а мидла, по мне, должны сильно изучить как он знает требуемый стек своих инструментов. Потому-что знание только фундамента требуется от джунов, а от мидла ждут что он быстрее возьмется за боевые задачи, а не будет изучать тонкости нужного фреймворка
@kirsanov2008
@kirsanov2008 3 жыл бұрын
@@DmitriiRepnikov этот парень - джун, не более того. Мидл должен знать свой ЯП в совершенстве и уметь его готовить. Такого рода задачки мидл должен щелкать как семечки и это не должно быть в принципе центром собеседования. Даже если чел закрывает 100% задач на проекте он автоматом не становится синьером. Если тебя палит "хмурый дядька" и ты сразу посыпался то ты не более чем джун. Как я сказал, с уверенным мидлом и уж тем более с синером эта часть собеседования закончится через 10 минут. А если ты начинаешь сомневаться когда кто-то смотрит на твою работу а ты вроде как заявляешь себя мидлом/сеньером, то у тебя большие проблемы с пониманием где ты находишься и что делаешь... ну или ты просто надутый в попу письтюк... (не конкретно ты :))
@DmitriiRepnikov
@DmitriiRepnikov 3 жыл бұрын
@@kirsanov2008 твоё мнение полно максимализма как у подростка, и судя по нику это кажется логичным. Объяснять почему твоё виденье неверно я не буду, т.к. судя по настрою твоего сообщения ты из тех кто изменит своё мнение только тогда когда появляется хоть какой-то опыт.
@kirsanov2008
@kirsanov2008 3 жыл бұрын
@@DmitriiRepnikov 2008 это не дата моего рождения, а год, когда я зарегался в гмайле, но ты первый кто обратил на это внимание в таком ключе) я раньше даже не думал об этом))
@НиколайПрибитков
@НиколайПрибитков 3 жыл бұрын
По сути собеседование крутое и супер полезное, поэтому большое спасибо за контент) НО, на 48 минуте вы спрашиваете про массив уникальных значений, и не очень понятно зачем?) Запутать собеседуемого?) Ведь это объект, все ключи строки, и это значит после reduce там будет всего три ключа со значениями) а значит они все уникальны и задача отсортировать по значениям и вернуть ключи function sortFn(words) { const objData = {}; words.forEach((word) => objData[word] ? (objData[word] += 1) : (objData[word] = 1) ); return Object.keys(Object.fromEntries(Object.entries(objData).sort((item1, item2) => item2[1] - item1[1]))) } я еще не смотрел дальше 48 минуты), если вас не затруднит можно ли короткий фидбэк по моему решению
@frontendscience
@frontendscience 3 жыл бұрын
Что значит запутать? Это условие задачи! Я даже сделал подсказку таким образом. Если бы Вы были на собеседовании и не поняли бы - я бы Вам объяснил иначе.
@frontendscience
@frontendscience 3 жыл бұрын
Но судя по решению, условие поняли. Задачу решили правильно. Так в чем именно вопрос?
@zacker-tech
@zacker-tech 3 жыл бұрын
Код с iife не работает. Его нужно немного по-другому сделать.
@frontendscience
@frontendscience 3 жыл бұрын
Да, уже в комментах выше обсудили. Должен быть return ++counter.
@АндрейПестерев-р1ц
@АндрейПестерев-р1ц 2 жыл бұрын
Мне интересно. Если на собеседовании претендента спрашивают over 9999 оверхедов про всякие всплытия с var и без него. Это он должен знать иначе без этого никуда. И он должен обязательно их помнить и забивать ими голову. Почему у человека в голове не щелкает, что такого, как бы, не должно быть в нормальном-то языке программирования.
@andriikarnaukh5864
@andriikarnaukh5864 3 жыл бұрын
Отличный формат! Спасибо большое за этот собес)
@frontendscience
@frontendscience 3 жыл бұрын
Рад, если полезно!
@EvilYou
@EvilYou 3 жыл бұрын
Я решил задачи [59:47 Про каррирование и рекурсию] и [1:03:15 Про High order functions и карриррование] не зная, что такое каррирование и high order functions😂 Использовал знание рекурсии и вложенных функций (по аналогии с замыканиями). Мое решение задачи [59:47 Про каррирование и рекурсию]: function sum(a) { return function(b) { return isFinite(b) ? sum(a + b) : a; } } console.log( sum(1)(2)(3)(4)() ); // 10 Другую решил так же, как и Алексей. P.S. Видосы с собеседованиями на этом канале мне очень нравятся. Когда смотришь такое видео и понимаешь, что вполне смог бы решить ту или иную задачу, это мотивирует. P.P.S. Теперь нужно изучить каррирование :D
@frontendscience
@frontendscience 3 жыл бұрын
Благодарю за решение! Успехов с каррированием )
@alexshubin1
@alexshubin1 3 жыл бұрын
Пишу на ангуляр. Думаю что все примеры в собеседовании нужны только для того чтобы понять как работает код другого программиста, который хотел всех удивить)
@frontendscience
@frontendscience 3 жыл бұрын
😂
@yuTimer
@yuTimer 2 жыл бұрын
как сервис для шаринга кода называется?
@amirkerimov95
@amirkerimov95 2 жыл бұрын
59:52 решение, если кому интересно function sum(a) { if (a) { return function (b) { if (b) { return sum(a + b) } return a; } } return 0; } и не забыть вывести результат в консоль console.log(sum(1)(2)(3)(4)());
@andidandi1866
@andidandi1866 2 жыл бұрын
зачем так много букв. const sum = (a) => (b) => b ? sum(a + b) : a; console.log(sum(1)(2)(3)(4)(5)(6)(7)());
@MrGourmetRazzy
@MrGourmetRazzy 3 жыл бұрын
Под конец у парня лицо было краснее, чем его футболка). Застеснял пацана.
@АлексейТатаринов-й1ч
@АлексейТатаринов-й1ч 2 жыл бұрын
Про High order functions и каррирование const sum = (a,b) => a + b; const mul = (a,b) => a * b; const calc = cb => a => b => cb(a,b);
@Jonstonrich
@Jonstonrich Жыл бұрын
1:07:23 - method => a => b => method(a, b); можно упростить
@rinatvaliullov3247
@rinatvaliullov3247 3 жыл бұрын
28:00 (как уже прокомментировади, работать не будет) А почему сразу нельзя показывать исполнение кода? Можно взять chrome devtools, или утилиту runJS, или VSCode с плагином или настроенным repl node в терминале, или в песочнице (например, codesandbox, jsbin, playcode, jsfiddle, replit, etc...) * Если, конечно, есть техническая возможность.
@frontendscience
@frontendscience 3 жыл бұрын
1) все дело в том что в данной задаче мне важны было понимание хойстинга в первую очередь. Ошибка с ретерном для этого задания не значительна. ( при условии что собеседование на мидла) 2) я практикую собеседования именно без консоли. В западных компаниях вообще все собеседования проходят в гугл доке. Я же за то, чтобы была подсветка кода, но запускать не обязательно. По кранец мере на тех задачах что были. Дальше будут другие задания, возможно будем и с консолью работать. А эти сервисы умеют делать ливкодинг (парное программирование)?
@rinatvaliullov3247
@rinatvaliullov3247 3 жыл бұрын
@@frontendscience Ясно, Спасибо за развёрнутый ответ. Посмотрите в сторону Visual Studio Live Share(расширение для VSCode есть). В продуктах JetBrains также недавно что-то подобное появилось.
@АндрейБочарников-х5ъ
@АндрейБочарников-х5ъ 3 жыл бұрын
@@frontendscience codesandbox точно поддерживает, JSFiddle возможно, но не уверен. Codesandbox используют часто для онлайн собеседований, сейчас это на ютубе стала популярная тема)
@GreeNders10
@GreeNders10 3 жыл бұрын
На кукую ЗП собеседуется сотрудник?
@Jonstonrich
@Jonstonrich Жыл бұрын
27:40 - Это не будет работать так как мы не изменили переменную а возвратили результат операции с ней.
@MrReflection540
@MrReflection540 2 жыл бұрын
1:14:41 На самом деле тема холиварная, потому как поход браузером к DNS-серверам за информацией тоже замедляет работу
@evgeniychuhay6486
@evgeniychuhay6486 3 жыл бұрын
По поводу замыканий, этот код не будет работать. Нужно что бы функция которая ретёрнится возвращала counter+=1 а не просто что то с ним делала и возвращала void, то есть нужно добавить return counter+=1 или изменить функцию на стрелочную ()=> counter +=1 что то типа такого let inc = (function (){ counter = 0; return () => ++counter })()
@frontendscience
@frontendscience 3 жыл бұрын
Да уже обсудили выше в комментариях
@evgeniychuhay6486
@evgeniychuhay6486 3 жыл бұрын
@@frontendscience Не видел! Извините)
@herr_imko
@herr_imko 3 жыл бұрын
Не посмотрел еще но судя по названию частей это не на фронта собеседование а на JS кодера чисто)
@andreyzinovjev3920
@andreyzinovjev3920 3 жыл бұрын
Сергей спасибо за видео, очень азартно) скажите как то вы оцениваете скорость выполнения кандидатом задач, его размышления а главное ошибки или если в отведенное время решил - то это + ?
@frontendscience
@frontendscience 3 жыл бұрын
Много зависит от того на какую должность собеседую. Если на синьйора - то да ожидаю что он быстро поотвечает на все легкие вопросы. В любом случае смотрю как человек мыслит - особенно если не знает ответа на вопрос изначально. Как пытается дойти до него. Или как использует подсказки, или какие вопросы задает. Все это учитывается. время чаще просто как ограничение - чтобы не потратить его все на один вопрос (которые никак не может решить кандидат) а наоборот мог проявить себя на разных вопросах.
@viktorkniahnitskyi2947
@viktorkniahnitskyi2947 3 жыл бұрын
00:35:00 const words = ["banana", "grapefruit", "banana", "grapefruit", "banana", "orange", "banana"]; const sortHelper = (a, b) => {return words.filter(itm => itm === b).length - words.filter(itm => itm === a).length; } [... new Set(words.sort(sortHelper))];
@VelikiyZmey
@VelikiyZmey Жыл бұрын
25:03 - у меня этот код неработает как требуется. что я делаю не так?
@vitaliec2212
@vitaliec2212 Жыл бұрын
counter + = 1
@grbak
@grbak 2 жыл бұрын
Видос отличный, Алексей красава
@dmytromoroz4451
@dmytromoroz4451 3 жыл бұрын
Отличный контент. Большое Вам спасибо!
@frontendscience
@frontendscience 3 жыл бұрын
И Вам спасибо 😉
@andreiryabikov4896
@andreiryabikov4896 3 жыл бұрын
Очень крутой формат, спасибо! Алексею респект) И вопрос про var и hoisting: это все еще актуальные знания, чтобы их задавать на интервью?
@frontendscience
@frontendscience 3 жыл бұрын
Очень даже актуальные ) Во-первых код до сих пор на проектах компилируется в ES5. во-вторых хойстинг работает не только с var но и function declaration. В-третьих есть куча библиотек и пакетов в которых до сих пор var - и надо понимать особенности его работы.
@ОлегПузанкін
@ОлегПузанкін 3 жыл бұрын
@@frontendscience в задача на 20мин выводится 5, почему ничего не должно выводится?
@frontendscience
@frontendscience 3 жыл бұрын
@@ОлегПузанкін потому что внутри функции свой скоуп. И происходит всплытие объявления переменной (хойстинг). Но изначально она undefined. До тех пор пока не произойдет присвоение. Поэтому if не пройдет проверку и ничего не выведется в консоль
@murad40
@murad40 3 жыл бұрын
Оч крутое и полезное видео, но почему сразу с мидла начали, хотелось бы посмотреть на вопросы и собеседование junior`a. Если не трудно скажите плиз какие вопросы задавали бы джуниору? ThankYouInAdvance!
@frontendscience
@frontendscience 3 жыл бұрын
Скоро будет на канале видео и на джуниора! Не забудьте нажать на колокольчик 🛎 😊
@ccmadminstrator
@ccmadminstrator 3 жыл бұрын
это и был джуниор, слабенький.
@Тёмыч-ъ6и
@Тёмыч-ъ6и 3 жыл бұрын
у меня выдает //1 //1 let inc = (function () { let counter = 0; return function () { counter + 1 //console.log(counter + 1); } })() inc(); inc();
@frontendscience
@frontendscience 3 жыл бұрын
почитай комменты плиз - там вместо counter + 1 должно быть return counter++;
@igornosatov1908
@igornosatov1908 3 жыл бұрын
Супер 🥳🥳🥳
@EvilYou
@EvilYou 3 жыл бұрын
25:05 - не совсем правильно. Надо было написать return ++counter во вложенной функции. Я задачу решил двумя способами: 1) Через IIFE let inc = function() { let counter = 0; return function() { return ++counter; } }(); 2) С помощью блока let inc; { function func() { let counter = 0; return function() { return ++counter; } } inc = func(); }
@frontendscience
@frontendscience 3 жыл бұрын
Уже обсудили в комментариях выше.
@EvilYou
@EvilYou 3 жыл бұрын
@@frontendscience Я заметил, как начал читать комменты, но удалять уже не стал :) Сегодня тему замыканий на learn.javascript прошел. Сразу же пересмотрел и этот момент в видео, и собеседование со стажером из EPAM, где тоже IIFE были. Закрепляю пройденное
@kirilldonenko5387
@kirilldonenko5387 3 жыл бұрын
Подскажите такое решение задачки на массив уникальных элементов с сортировкой норм? let array = ['banana','grapefruit','banana','orange','grapefruit','banana','grapefruit','banana']; let unique = [...new Set(array)]; let temp = unique.map(el => { return { [el]: array.filter(item => item === el).length } }); let res = temp.sort((a,b) => { return Object.values(b)[0] - Object.values(a)[0]; }).map(el => Object.keys(el)[0]); console.log(res);
@frontendscience
@frontendscience 3 жыл бұрын
Благодарю за решение. Там проблема с сортировкой Object.values(b) - должен принимать в качестве аргумента объект -а тут в него передается строка
@ВладимирСоловьёв-щ4ь
@ВладимирСоловьёв-щ4ь 3 жыл бұрын
Почему-то этот код не срабатывает? let words = ['orange','banana','apple','orange','apple','apple','banana','orange','orange','orange'] const mySortArray = (array) => { const temp = array.reduce((acc,cur) => { acc[cur] = (acc[cur] || 0) + 1; },{}) const keys = Object.keys(temp); return keys.sort((a,b) => { return temp[a] - temp[b] }) } mySortArray(words)
@ВладимирСоловьёв-щ4ь
@ВладимирСоловьёв-щ4ь 3 жыл бұрын
Cannot read property 'banana' of undefined - вот такая ошибка, а сказали "Гуд". Вопрос я, что не так я записал?
@frontendscience
@frontendscience 3 жыл бұрын
да забыли написать return acc внутри reduce
@jorgen5462
@jorgen5462 3 жыл бұрын
- ааа, у нас же идёт не по алфавиту, а по встречающимся элементам ... Серёга: 38:26 😂😂 попался, милок!
@nikolay6143
@nikolay6143 3 жыл бұрын
Спасибо за отличный видос, подписался с надеждой увидеть ещё в подобном формате, несмотря на то, что довольно успешно решаю задачи бизнеса во фронтенде уже более 4х лет понимаю что до уровня миддла надо подтянуть знание базовых вещей, таких как замыкание/карирование
@frontendscience
@frontendscience 3 жыл бұрын
Желаем Вам успехов!
@ihordubenko7357
@ihordubenko7357 3 жыл бұрын
Хорошее собеседование! =) Классные вопросы. Сам затупил на первом вопросе=). Однозначно лайк и подписка! const sortFruits = (arr) => { const hash = {}; for (const i of arr) { hash[i] = hash && hash[i] ? hash[i] + 1 : 1 } return Object.keys(hash).sort(function(a, b) { return hash[b] - hash[a] }); }
@frontendscience
@frontendscience 3 жыл бұрын
Благодарю за поддержку! Клессное решение вышло!
@ОлегПетров-п4у
@ОлегПетров-п4у 3 жыл бұрын
Крутой формат! Лайк, подписка!
@frontendscience
@frontendscience 3 жыл бұрын
Благодарю за поддержку)
@jony4you
@jony4you 3 жыл бұрын
Задачка на замыкание решена неправильно ) (финальное решение на 28:00), во первых функция не возвращает counter, во вторых counter + 1 не меняет значение counter и при следующем вызове будет все тот-же 1 :)
@frontendscience
@frontendscience 3 жыл бұрын
Ты абсолютно прав. Уже обсудили в комментариях выше. Я проверял другое. Эта мелочь для меня не была настолько важна в тот момент. Но я тоже ее видел.
@jony4you
@jony4you 3 жыл бұрын
@@frontendscience а есть собеседования синьйоров? :) Есть какие-то отличия от вопросов для мидла?
@frontendscience
@frontendscience 3 жыл бұрын
@@jony4you Пока у нас на канале собеседований с синьорами еще не было. В планах есть). Но в жизни я уже лет 5 только их и собеседую. Вопросы по большей части такие же. Смотрю на скорость ответа, глубину знаний, проверяю - насколько уверен кандидат в ответе тд. Плюс задачки могут быть сложнее.
@stormd2902
@stormd2902 3 жыл бұрын
Спасибо, очень полезно
@СПБСАТ-т6х
@СПБСАТ-т6х 3 жыл бұрын
let inc = function (){ let counter = 0; return function () { counter + 1 } }; почему не работает ? Получаю. inc(); ƒ () { counter + 1 }
@Smerrrtnik
@Smerrrtnik 3 жыл бұрын
Эксперты, объясните, плиз, по коду первого задания, разве там логнется хоть что-то? думаю, if не сработает и консоль лог просто не вызовет.
@frontendscience
@frontendscience 3 жыл бұрын
Да, так и есть. Ты все верно понял. К этому в видео и пришли, что в if обработчик не зайдет и в консоль ничего не выведется.
@Smerrrtnik
@Smerrrtnik 3 жыл бұрын
@@frontendscience спасибо, а то по видео я понял, что консоль выдаст андефайнд.
@alexkolesnik9063
@alexkolesnik9063 3 жыл бұрын
27:57 это не будет работать, он просто добавляет единицу, но не меняет значение переменной, к тому же нигде её не выводит
@frontendscience
@frontendscience 3 жыл бұрын
Да, ниже в комментах комментировал этот момент.
@Helen-do2og
@Helen-do2og 3 жыл бұрын
Хорошее видео, но всегда мучает вопрос - зачем в 2021 году спрашивать задания с var? Это же уже не актуально... его уже можно найти только в легаси. Я, например, пришла в разработку, когда везде уже es6+, но это дурацкое поведение var мне приходится учить только для собесов...
@frontendscience
@frontendscience 3 жыл бұрын
Ну скажем так - если задачи которые решаются в повседневной работе - это просто создавать новые формы/страницы на фреймвоке - то тогда - да, возможно var и не нужен. Но если дело доходит до разработки скажем так - "своего фреймвока", или если есть взаимодействие с более старым кодом, или если проект компилируется из es6+ в es5 и потом надо будет что-то задебажить в скомпилированном коде - вот тогда знание хойстинга var очень пригодятся.
@sergeyzhukov1370
@sergeyzhukov1370 3 жыл бұрын
@@frontendscience Imediate functions, прототипы, var - это все рудименты языка. Почему об этом часто спрашивают на собесах - для самого загадка. Если говорит о браузерах, то почти все современные поддерживают es6 синтаксис. Если что есть babel. Я фронтендер с бородатых времен, когда люди спорили что лучше jquery или mootools. А единственным фреймворком был страшный и ужасный extJs. Тогда писали громоздкие плагины для jquery и скрипты на прототипах, и они часто падали из за конфликтов. Потому что все переменные лежали в глобальном скоупе и спасало как раз инкапсуляция переменных в эти Imediate functions. Сейчас когда есть js модули, и вместо прототипов можно использовать полноценное наследование (понятно что под капотом там тоже прототипирование) эти вопросы мне кажутся странными. Вы ведь не лезете в кишки компилятора/интерпретатора в других языках. Последний раз прототипами я пользовался чтобы переоределить стандартные метод языка(Regexp.test), потому что либа использовала этот метод, там был баг из за кривой регулярки и мне не хотелось ее форкать. Своего рода хак, но вообще это плохая практика считается, а на собесах спрашивают про них почти всегда. Да и кстатии в штатах собесы попроще.
@frontendscience
@frontendscience 3 жыл бұрын
@@sergeyzhukov1370 Ну смотря на каких проектах работать. Кто-то использует готовые фреймворки и им этого достаточно, а кто-то создает свои фреймворки и нужны глубокие знания js. Буквально в прошлом месяце мы сидели и дебажили волшебные новые "классы" - и копались именно в прототипах. Не знание базовых вещей на которых построены новые - "не освобождает от ответсвенности". А по поводу штатов - там совсем другой подход к собесам просто - там надо знать алгоритмы и структуры данных + System design интервью обязательно. Не скажу что там легче - там просто по другому.
@frontendscience
@frontendscience 3 жыл бұрын
@@alexup7437 Успехов вам в компаниях Рога и копыта - с исключительно гринфилд разработкой!
@frontendscience
@frontendscience 3 жыл бұрын
@@alexup7437 Ты хоть одно интервью пройди для начала в нормальную компанию, а потом рассуждай. У тебя нет объективного представления о том, из каких этапов состоит процесс найма в крупных компаниях, и что спрашивают и с какой целью. Плюс обрати внимание с каким тоном ты заходишь в разговор - прокачай софт скиллы. Успехов.
@ВладимирПолицковой
@ВладимирПолицковой 3 жыл бұрын
чет вы задачку первую. не правильно. решили оба, как в функции a. === undefined.,если она выше вызовы функции проиниализирована? 5 выведется
@frontendscience
@frontendscience 3 жыл бұрын
Почитай про хойстинг. Станет понятно почему undefined. Потом еще раз пересмотри видео - Алексей когда построчно начал разбирать, понял в чем был не прав, озвучил все.
@GregKurman
@GregKurman 2 жыл бұрын
17:20 Совсем не верно, хоть бы запустили.... будет ошибка на варе в блоке Uncaught SyntaxError: Unexpected token '=' А если убрать "var =10" то ИФ спокойно сработает, так как он берет из области видимости своей.... то что у вара область видимости функциональная это значит, что он не выйдет из своей функции, а вот во внутрь других функций заходит ... в данном примере он глобальный и в любой функции появится
@СергейРыженьков
@СергейРыженьков 3 жыл бұрын
хотелось бы видеть Ваш вариант решения задачки на каррирование с рекурсией
@frontendscience
@frontendscience 3 жыл бұрын
Вообще стоит в планах отдельное видео про каррирование. Думаю туда включу эту задачу
@ДмитрийРуссу-л6о
@ДмитрийРуссу-л6о 2 жыл бұрын
​@@frontendscience Cпасибо за Ваш труд на канале, очень познавательно. Подходящее решение? const sum = number => number2 => number2 ? sum(number + number2) : number; sum(1)(2)(3)(4)(); //10 И это ведь не совсем каррирование, верно?)
@иноагент-д2ф
@иноагент-д2ф Жыл бұрын
А я зробив curring, де можна робити необмежену кількість викликів. Не лише 2. const plusik = (function (){ let s = 0; function add (a) { s = s + a return add; } add.toString = function(){return s}; return add; })() document.write(plusik(3)(4)) // виведе 7 document.write(plusik(3)(4)(5)) // виведе 12
@amator8219
@amator8219 2 жыл бұрын
он пошёл устраиваться QA ,а его взять frontend разработчиком? или я чёт не так понял
@andreisharshneu1510
@andreisharshneu1510 3 жыл бұрын
на 27:58 не отработает ожидаемо, не присваевается новое значение в переменную, ну и оно не возвращается)
@frontendscience
@frontendscience 3 жыл бұрын
Да, в комментариях уже много раз обсуждали
@maksimmnatsakanov2853
@maksimmnatsakanov2853 3 жыл бұрын
А что значит палец на 22:37?
@frontendscience
@frontendscience 3 жыл бұрын
Ачивка за внимательность 👍 Я просто показывал оператору куда вставлять провод.
Interview of a Junior Frontend developer. Trainee frontender 19 years old from EPAM
1:16:43
Front-end Science із Сергієм Пузанковим
Рет қаралды 406 М.
Cheerleader Transformation That Left Everyone Speechless! #shorts
00:27
Fabiosa Best Lifehacks
Рет қаралды 16 МЛН
IL'HAN - Qalqam | Official Music Video
03:17
Ilhan Ihsanov
Рет қаралды 700 М.
BAYGUYSTAN | 1 СЕРИЯ | bayGUYS
36:55
bayGUYS
Рет қаралды 1,9 МЛН
ЗАЧЕМ ЗАКРЫЛ ДЕПОЗИТЫ И КУПИЛ КВАРТИРЫ!
20:08
Харыбин Александр: инвестиции в недвижимость
Рет қаралды 7 М.
Frontend Interview of a Junior Developer. Freelancer, student, 20 years old
1:31:35
Front-end Science із Сергієм Пузанковим
Рет қаралды 92 М.
Becoming a Frontender After 30: From Circus Arcobat to Front-End Developer
1:22:27
Front-end Science із Сергієм Пузанковим
Рет қаралды 133 М.
The first interview of a self-taught frontender (30+). Solved more than 2000 problems on Codewars
1:41:08
Front-end Science із Сергієм Пузанковим
Рет қаралды 147 М.
Завершаем интеграцию аутентификации: Полное руководство
34:34
CatСoding – обучающая ІТ-платформа
Рет қаралды 18
Frontend interview. Ilnura, the first job right after Yandex Practicum
1:39:47
Front-end Science із Сергієм Пузанковим
Рет қаралды 166 М.
mock-собеседование. middle. angular.
1:33:10
Даже и не стараюсь
Рет қаралды 919
Полный гайд по JavaScript собеседованию. Все в 1 видео!
1:41:32