Interview of a Middle Frontend developer

Поділитися
Вставка
  • Опубліковано 25 лис 2024

КОМЕНТАРІ • 561

  • @frontendscience
    @frontendscience  3 роки тому +133

    👍 Друзья, поддержите, пожалуйста, Алексея в комментариях - он самый смелый, прошел у нас интервью первым. И поставьте ему большой красивый лайк!

    • @ИльяХутчев
      @ИльяХутчев Рік тому

      😢😊🎉😂 ❤😮😢❤❤😊х😮😮🎉😊 л😂🎉😂😅😅е😊😢😅вы❤❤😂😂❤😊 😅😮😮х😮😢😮😂😅😢😅😮😊🎉к😢😊😢😢😂😊😊🎉🎉🎉😢😢😊😢эх😊😮😢😮😅😮😮😅❤😮😮😮❤😢😂😊😊😂😢🎉❤😊😢л😮🎉😊 7:41 🎉😅😢😢😢 7:55 🎉😢😊😅😊😢😮😢😢😅😊😮😢🎉😮😂😢з 8:б😅❤😂😊 10:17 42 как 8:54 😮х😂❤😮😊😢 9:56 😢😊😢😅😮х😢🎉😢ф😢😂😢😊😅😊😢😮🎉😊😅😊😮😮❤😊😊😮😊ч😂😮🎉😂😊

  • @maxtor5088
    @maxtor5088 3 роки тому +848

    У нас есть два JS, тот который мы используем каждый день и о котором говорим на собеседовани ))

    • @zheil2977
      @zheil2977 3 роки тому +14

      У нас есть два программирования, то которое мы используем каждый день и о котором говорим на собеседовании )))

    • @МихаилДементьев-ф8и
      @МихаилДементьев-ф8и 3 роки тому +15

      Согласен, в реальности все по другому, а здесь какие-то магические слова :)

    • @ELDlabIo
      @ELDlabIo 3 роки тому +13

      @@МихаилДементьев-ф8и Ну на самом деле слова не магические) Просто часто работа превращается в рутину и все мы работаем не с целью чему-то обучиться, а просто выполнять задачи, ибо начальству только это важно, к несчастью( Но я считаю, что если хочешь быть не просто кодером, а программистом думающим и отвечающим за каждую свою строчку кода, то надо чтобы все-таки все эти слова перестали быть магическими)

    • @michaelpetrov4965
      @michaelpetrov4965 3 роки тому +1

      @@zheil2977 можно подставить php, ничего не изменится.

    • @CJ19000
      @CJ19000 Рік тому

      +++++

  • @suslikest3708
    @suslikest3708 3 роки тому +68

    Мне лично сразу в кандидате понравилось то что он свободно и без напряга общается при этом в рамках приличия как по мне уже крутой показатель.

  • @vladbazhanov8321
    @vladbazhanov8321 3 роки тому +114

    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 роки тому +1

      Да return Алексей забыл добавить. Бывает

    • @vladbazhanov8321
      @vladbazhanov8321 3 роки тому +12

      @@frontendscience Но counter тоже инкрементировать стоит, в реализации на видео будет возвращать всегда 1. Но это мелочи )

    • @frontendscience
      @frontendscience  3 роки тому +5

      @@romanmed9035 Да именно так замыкания и работают. Они хранят контекст с переменными даже если эта функция уже отработала.
      У Алексея в решении была ошибка в решении: необходимо вместо строки counter + 1 делать return ++counter. Таким образом сохраняется увеличенное значение переменной counter и самое главное из функции возвращается значение.

    • @frontendscience
      @frontendscience  3 роки тому +1

      @@romanmed9035 Успехов!

    • @deemdeemdeem
      @deemdeemdeem 3 роки тому +12

      const inc = () => {
      inc.counter = inc.counter || 1;
      return inc.counter++;
      }
      а с iife крутое решение, сразу в голову не пришло

  • @mxrquez7692
    @mxrquez7692 2 роки тому +29

    1:00:12
    Вдруг кому-то нужно или интересно решение задачи с каррированием и рекурсией, на которую решили не тратить время
    const sum = (a) => {
    let result = a;
    return addMore = (b) => {
    result += b ?? 0;
    return b === undefined ? result : addMore;
    }
    }

    • @olegtsesko
      @olegtsesko Рік тому +6

      const sum = a => b => b ? sum(a + b) : a
      sum(1)(2)(3)() // 6

  • @phone1429
    @phone1429 2 роки тому +16

    Алексей, спасибо за участие в интервью. Считаю, отлично справился, несмотря на волнение. Успехов, профессионального и карьерного роста!

  • @ПавелБродкин
    @ПавелБродкин 3 роки тому +39

    Алексей молодец! Все знания можно помножить на 2, а то и на 3 - учитывая что все это происходит в стрессовой обстановке.

  • @alexr6829
    @alexr6829 3 роки тому +55

    Было круто, спасибо Сергей! Еще так много нужно узнать и еще большему научиться)

    • @frontendscience
      @frontendscience  3 роки тому +7

      И тебе спасибо! Больших успехов!

    • @boldureans
      @boldureans 3 роки тому +1

      Ты оч крутой!

    • @murad40
      @murad40 3 роки тому +2

      блиин, так круто прошел, можно было бы попросить у вас телегу или мэйл?)

    • @murad40
      @murad40 3 роки тому +2

      обещаю не спамить, хотел спросить про ваши ресурсы для подготовки

    • @srjoyme2525
      @srjoyme2525 2 роки тому

      огонь собес )

  • @Maiq-The_Liar
    @Maiq-The_Liar 3 роки тому +54

    Чувствуется, что готовился усердно :) Круто.

  • @maxkarrtopelka3718
    @maxkarrtopelka3718 3 роки тому +28

    в задаче с замыканием, есть вариант вот такой реализации:
    const inc = (counter => () => ++counter)(0);
    console.log(inc()); // 1
    console.log(inc()); // 2
    console.log(inc()); // 3

  • @8-Artem-8
    @8-Artem-8 3 роки тому +55

    Хорошее собеседование и вопросы адекватные. Еще интересно было бы увидеть собеседование на react разработчика.

  • @КонстантинАтрощенко-ъ8к

    Алексей крут конечно!!!! Зная что выступаешь на широкую аудиторию нервишки шкалят еще больше!!!! С учетом волнения его знания можно во много раз приумножить)) Такие видео помогают избавится от эффекта самозванца) Сергей вам огромный респект!!!! На некоторых конторах, на Middle позицию, спрашивают ядро JS и после по специфике конторы React, Redux, Typescript, Webpack и т.д. Хотелось бы увидеть собеседование в таком формате))

    • @FireORcolD
      @FireORcolD 2 роки тому +4

      у меня спрашивали чем отличается event loop браузера и nodejs, зачем эта инфа, что она решает, не понятно, учитывая что я ему рассказала как работает event loop браузера решая задачу, в итоге не взяли, может я был глуп для них, но была закономерность, придумывались абсурдные задания, что в итоге сказал сам интервьюер, не желаю никому на такого попасть, кстати есть ещё прикол, зачем-то сбивать с логики, я решая задачу сказал какой будет результат, а он старался сбить меня с моей логики раза 4-5 в одном вопросе, это что за способ самоудовлетворения, надеюсь что следующий интервьюер будет как Сергей

  • @victorkrasnov5576
    @victorkrasnov5576 2 роки тому +4

    Про замыкания и IIFE.
    let inc = (function() {
    let counter = 0;
    return function() {
    return counter + 1;
    }
    })();
    Код не будет работать :)
    Надо return counter + 1 заменить на ++counter
    А за видос спасибо, крутейший контент - позволяет представить себя на месте интервьюируемого и попрактиковать задачки. Подписался.

    • @frontendscience
      @frontendscience  2 роки тому

      Выше в комментариях я уже отвечал про эту задачу.

  • @alexkostrov5186
    @alexkostrov5186 3 роки тому +7

    Алексей красава просто! очень хорошие знания показал

  • @1kvolt1978
    @1kvolt1978 3 роки тому +2

    Я вымучил таки фруктовую функцию. :)
    Заняло примерно два часа с учётом вспоминаний синтаксиса стандартных методов на 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 роки тому +1

      отлично вышло! благодарю за решение!

    • @1kvolt1978
      @1kvolt1978 3 роки тому

      @@frontendscience Спасибо.

  • @sergeyplotnikov5031
    @sergeyplotnikov5031 3 роки тому +12

    Хорошая обратная связь и классные задачки. Спасибо!

  • @amirkerimov95
    @amirkerimov95 2 роки тому +8

    Привет! У меня вопрос по поводу решения в блоке про замыкания (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 не хватает

  • @АлексейКа-б2д
    @АлексейКа-б2д 2 роки тому +4

    Many thanks!! Такие интервью дают больше понимания, чем обучающие материалы!!

  • @maksimmnatsakanov2853
    @maksimmnatsakanov2853 3 роки тому +6

    Круто, спасибо, ждал! Люблю смотреть публичные собеседования)

  • @nickkorol5387
    @nickkorol5387 3 роки тому +9

    Очень круто и качественно!!!
    Я вчера проходил на трейни, так мне три задачи попались такие как тут проходили... узнал бы немножко пораньше !)
    В целом, спасибо, тут есть чему поучится !

    • @frontendscience
      @frontendscience  3 роки тому

      Прикольно! А какие именно задачи?
      И что еще было? Ребятам тут будет полезно узнать

    • @nickkorol5387
      @nickkorol5387 3 роки тому +2

      @@frontendscience Мне попилась по приоритетам(event loop and setTimeout, ну там добавили мне и IIFE), так же "Про замыкания и IIFE".
      от такое еще было:
      const arr = [
      [true, false, true],
      [false, false, true]
      ] // надо поменять с true на false на оборот.

    • @frontendscience
      @frontendscience  3 роки тому +2

      Благодарю что поделился!

  • @frontendscience
    @frontendscience  3 роки тому +67

    Ребята, а было бы интересно посмотреть behavioural интервью?

  • @al77ex1
    @al77ex1 2 роки тому +1

    Ой! Случайно перепроверил пример про инк. )) У меня какие-то неправильные решения полезли на ноч глядя
    let inc = function () {
    if (!this.c) this.c = 0;
    this.c +=1;
    return this.c
    }
    Но в целом собес супер! Алексей молодец держался хорошо! Спасибо за видео!

  • @seryozhamangushev9638
    @seryozhamangushev9638 3 роки тому +1

    Я так долго ждал этот формат.

    • @frontendscience
      @frontendscience  3 роки тому

      Здорово! Рады, что нравится 👍

  • @HIghtowerSever
    @HIghtowerSever 3 роки тому +13

    Привет. Все четко, кроме размера шрифта кода на экране. Учитывая, сколько на экране свободного места, шрифт можно увеличивать раза в 3-4. И тогда удобно будет смотреть на мобилке... Мобайл-ферст - не забывай, плиз.

  • @Aleal616
    @Aleal616 3 роки тому +3

    Блин не собирался смотреть это видео, 1 : 29 :52, но как то затянуло, самое интересное, что я не занимаюсь ни фронтом ни бэком, ни вообще IT разработками. Было просто интересно, продолжайте делать дальше такие видео.

  • @anastasiaviva5721
    @anastasiaviva5721 3 роки тому +6

    Контент просто огонь! Алексею респект! Сергей, огромная благодарность за такой формат!!!

    • @frontendscience
      @frontendscience  3 роки тому +1

      Рад что понравилось! Благодарю за поддержку!

  • @dw_tv3992
    @dw_tv3992 3 роки тому +21

    Сергей спасибо за контент, очень хочется увидеть, как вы собеседуете джуна

    • @frontendscience
      @frontendscience  3 роки тому +6

      Заполняйте форму! И можете не только увидеть, но и поучаствовать :)

    • @abffggjhf516
      @abffggjhf516 3 роки тому +1

      @@frontendscience Собеседовался на джуна, вопросы как здесь на мидла...

    • @frontendscience
      @frontendscience  3 роки тому +7

      @@abffggjhf516 Я тебе больше скажу - такие же вопросы будут и если на синьора собеседоваться, здесь важна точность и глубина ответов.

  • @АлексейТатаринов-й1ч

    Про High order functions и каррирование
    const sum = (a,b) => a + b;
    const mul = (a,b) => a * b;
    const calc = cb => a => b => cb(a,b);

  • @eakzit3181
    @eakzit3181 3 роки тому +13

    Когда работаешь каждый день с фреймворками, забываешь азы. Мне на самом деле чуток пришлось даже поднапрячься с рекурсивным решением курринга...Спасибо за фановый контент, азы нуно знать, есть что повторять :)

  • @МаксимКаськов-ч4п
    @МаксимКаськов-ч4п 3 роки тому +4

    Спасибо. Было полезно) Надеюсь увидеть собес на сеньера)

  • @tatianovnafrutti8982
    @tatianovnafrutti8982 3 роки тому +5

    Крутой формат!! Лайк! Побольше собесов )))

  • @dmitrykorovin4356
    @dmitrykorovin4356 3 роки тому +5

    прям очень круто! Алексею респект)

  • @alexshubin1
    @alexshubin1 3 роки тому +5

    Пишу на ангуляр. Думаю что все примеры в собеседовании нужны только для того чтобы понять как работает код другого программиста, который хотел всех удивить)

  • @ДмитрийКолышницын-с2л

    Завтра буду слушать , надеюсь будет крутяк !!!

    • @BROnik
      @BROnik 3 роки тому +2

      спасибо что проинформировал

    • @frontendscience
      @frontendscience  3 роки тому +1

      Прикольно! У вас тут весело 😆

  • @nk_77777
    @nk_77777 6 місяців тому

    Классный ролик, спасибо)❤

  • @guldenbazheeva297
    @guldenbazheeva297 3 роки тому +1

    Алексей большой молодец! Очень смело публично проходить собеседование! Успехов ему и вам!

  • @gykan
    @gykan 3 роки тому +2

    Трехтысячный лайк мой ))

  • @kirsanov2008
    @kirsanov2008 3 роки тому +47

    вот такие должны быть джуны! респект!

    • @АртемЛебедев-ы7с
      @АртемЛебедев-ы7с 3 роки тому +2

      Хорош в теории, слаб в практике

    • @DmitriiRepnikov
      @DmitriiRepnikov 3 роки тому +25

      По знаниям он полноценный мидл, то что в режиме лайвкодинга он не может сосредоточиться - это обычная история даже для сеньора. Может когда-нибудь собеседующие это поймут, и не будут давать советы уровня “будь внимательнее“, потому-что этому совету сложно следовать когда хмурый дядька палит на процесс твоей работы
      Хотя может и не мидл, ведь я не слышал вопросов по боевым задачам (смотрел на перемотке), а мидла, по мне, должны сильно изучить как он знает требуемый стек своих инструментов. Потому-что знание только фундамента требуется от джунов, а от мидла ждут что он быстрее возьмется за боевые задачи, а не будет изучать тонкости нужного фреймворка

    • @kirsanov2008
      @kirsanov2008 3 роки тому +10

      @@DmitriiRepnikov этот парень - джун, не более того. Мидл должен знать свой ЯП в совершенстве и уметь его готовить. Такого рода задачки мидл должен щелкать как семечки и это не должно быть в принципе центром собеседования. Даже если чел закрывает 100% задач на проекте он автоматом не становится синьером. Если тебя палит "хмурый дядька" и ты сразу посыпался то ты не более чем джун. Как я сказал, с уверенным мидлом и уж тем более с синером эта часть собеседования закончится через 10 минут. А если ты начинаешь сомневаться когда кто-то смотрит на твою работу а ты вроде как заявляешь себя мидлом/сеньером, то у тебя большие проблемы с пониманием где ты находишься и что делаешь... ну или ты просто надутый в попу письтюк... (не конкретно ты :))

    • @DmitriiRepnikov
      @DmitriiRepnikov 3 роки тому +49

      @@kirsanov2008 твоё мнение полно максимализма как у подростка, и судя по нику это кажется логичным. Объяснять почему твоё виденье неверно я не буду, т.к. судя по настрою твоего сообщения ты из тех кто изменит своё мнение только тогда когда появляется хоть какой-то опыт.

    • @kirsanov2008
      @kirsanov2008 3 роки тому +5

      @@DmitriiRepnikov 2008 это не дата моего рождения, а год, когда я зарегался в гмайле, но ты первый кто обратил на это внимание в таком ключе) я раньше даже не думал об этом))

  • @DmitryDolganov
    @DmitryDolganov 3 роки тому +2

    Отличный формат! Сергей, благодарю!

  • @Zhenkaaf
    @Zhenkaaf Рік тому

    Очень качественные интервью.. Когда продолжение?

  • @sceptic571
    @sceptic571 2 роки тому

    Классное собеседование. Алексей - молодец! Я искренне переживал за Алексея и тоже решал с ним задачки.

  • @marynashubna203
    @marynashubna203 3 роки тому +2

    респект Алексею!

  • @иноагент-д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

  • @Jonstonrich
    @Jonstonrich Рік тому

    1:07:23 - method => a => b => method(a, b); можно упростить

  • @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 роки тому +1

      Благодарю за решение! Успехов с каррированием )

  • @fazanaka
    @fazanaka 3 роки тому

    Каррирование
    const sum = a => b => b ? sum(a + b) : a;
    Cчетчик
    const inc = (n => () => ++n)(0);

    • @frontendscience
      @frontendscience  3 роки тому

      Отлично вышло! Компактно! :)

  • @АлексМиллер-п4г
    @АлексМиллер-п4г 3 роки тому +4

    задачки сложные, чтобы такое в онлайне решать. не отражает реальности уровня квалификации. тут даже сениоры поплыть могут

  • @tarasgordienko
    @tarasgordienko 3 роки тому +1

    Задача про фрукты у меня так получилась
    function getUniqueAndSort(array) {
    const addCountProperty = (word) => {
    const count = array.filter((item) => item === word).length;
    return { word, count };
    };
    return [...new Set(array)]
    .map(addCountProperty)
    .sort((a, b) => b.count - a.count)
    .map((item) => item.word);;
    }

  • @amirkerimov95
    @amirkerimov95 2 роки тому +4

    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)());

  • @Иван-ц3н4б
    @Иван-ц3н4б 2 роки тому +2

    из видео я понял, что знаний основ js между мидлом и джуном не особо много...
    на данный момент я не имею боевого опыта разработки, но прорешал больше 200 задач на codewars на js и все задачи приведенные в собесе мне показались скорее джуновскими
    в чем отличия мидла?

  • @АндрейПестерев-р1ц
    @АндрейПестерев-р1ц 2 роки тому +4

    Мне интересно. Если на собеседовании претендента спрашивают over 9999 оверхедов про всякие всплытия с var и без него. Это он должен знать иначе без этого никуда. И он должен обязательно их помнить и забивать ими голову. Почему у человека в голове не щелкает, что такого, как бы, не должно быть в нормальном-то языке программирования.

  • @dobermanpharaoh7567
    @dobermanpharaoh7567 3 роки тому

    как вариант задачка с фруктами ещё так решается:
    const mySuperSort = (array) => {
    fruitUnique = Array.from(new Set(array));
    obj = {};
    fruitUnique.forEach(i => {
    len = words.filter(f => f === i).length;
    obj[i] = len;
    });
    return Object.keys(obj).sort((a,b) => obj[b] - obj[a]);
    }

  • @leonidshvab6233
    @leonidshvab6233 3 роки тому

    еще более древний вариант)
    const obj = {
    a: 4,
    say: function() {
    let self = this;
    setTimeout(function () {
    console.log(self.a)
    }, 1000)
    }
    }

  • @vitaly-
    @vitaly- 3 роки тому +3

    Замыкание:
    const inc = ((i = 0) => () => console.log(++i))();
    inc();
    inc();

    • @SS-jg8ye
      @SS-jg8ye 3 роки тому

      Тебе функция число должна возвращать, а не undefined

    • @vitaly-
      @vitaly- 3 роки тому

      @@SS-jg8ye а с чего ты взял, что она undefined возвращает?

    • @SS-jg8ye
      @SS-jg8ye 3 роки тому

      @@vitaly- с того, что я очевидно понимаю в отличие от тебя как работает ахинея, что ты написал, но никто тебе не мешает самому в этом убедиться

    • @vitaly-
      @vitaly- 3 роки тому

      @@SS-jg8ye хахахахаах, что ты понимаешь? В чем проблема испробовать код который я написал? Хотя бы чисто в браузере? Чел, что ты вообще забыл на канале про прогу?))

    • @frontendscience
      @frontendscience  3 роки тому

      Смотри, ты написал все правильно, но выводишь просто все в консоль, а не возвращаешь результат работы функции. Подправь просто этот момент и все будет ок.

  • @НиколайПрибитков
    @НиколайПрибитков 3 роки тому +1

    По сути собеседование крутое и супер полезное, поэтому большое спасибо за контент)
    НО, на 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 роки тому

      Но судя по решению, условие поняли. Задачу решили правильно.
      Так в чем именно вопрос?

  • @nikolay6143
    @nikolay6143 3 роки тому

    Спасибо за отличный видос, подписался с надеждой увидеть ещё в подобном формате, несмотря на то, что довольно успешно решаю задачи бизнеса во фронтенде уже более 4х лет понимаю что до уровня миддла надо подтянуть знание базовых вещей, таких как замыкание/карирование

  • @konstantintanat4462
    @konstantintanat4462 Рік тому

    насчет счетчика. теперь это будет работать. да не фига. counter он не возвращает. и более того он его даже не инкрементит. результат count + 1 подвисает в пустоте

  • @andreiryabikov4896
    @andreiryabikov4896 3 роки тому +11

    Очень крутой формат, спасибо! Алексею респект) И вопрос про var и hoisting: это все еще актуальные знания, чтобы их задавать на интервью?

    • @frontendscience
      @frontendscience  3 роки тому +5

      Очень даже актуальные ) Во-первых код до сих пор на проектах компилируется в ES5. во-вторых хойстинг работает не только с var но и function declaration. В-третьих есть куча библиотек и пакетов в которых до сих пор var - и надо понимать особенности его работы.

    • @ОлегПузанкін
      @ОлегПузанкін 3 роки тому

      @@frontendscience в задача на 20мин выводится 5, почему ничего не должно выводится?

    • @frontendscience
      @frontendscience  3 роки тому

      @@ОлегПузанкін потому что внутри функции свой скоуп. И происходит всплытие объявления переменной (хойстинг). Но изначально она undefined. До тех пор пока не произойдет присвоение. Поэтому if не пройдет проверку и ничего не выведется в консоль

  • @LNMaster_
    @LNMaster_ 3 роки тому

    Задача на замыкание без use strict и без вложенных функций:
    function inc() {
    if (!window.res) res = 0
    return ++res
    }

    • @frontendscience
      @frontendscience  3 роки тому

      Видать, не услышали условие до конца. В глобальном контексте должна быть только одна переменная inc и ничего больше.

    • @frontendscience
      @frontendscience  3 роки тому

      @@ДмитрийЕрохин-э9в ачивка за находчивость!

  • @andriikarnaukh5864
    @andriikarnaukh5864 3 роки тому

    Отличный формат! Спасибо большое за этот собес)

  • @jorgen5462
    @jorgen5462 3 роки тому +4

    - ааа, у нас же идёт не по алфавиту, а по встречающимся элементам ...
    Серёга: 38:26 😂😂 попался, милок!

  • @oleksandrsavych4526
    @oleksandrsavych4526 3 роки тому

    Кльовий формат і грамотний гість!

  • @Alexander-fp4fs
    @Alexander-fp4fs 3 роки тому +3

    про фрукты
    let obj = {};
    for (let i = 0; i < arr.length; i++) {
    obj[arr[i]] = obj[arr[i]] + 1 || 1;
    }
    const res = Object.entries(obj).sort((a, b) => a[1] + b[1]).map((el)=> el[0]);

    • @frontendscience
      @frontendscience  3 роки тому

      Благодарю за решение. Вышло красиво. PS: можно укоротить самую малость и избавиться от map.

    • @akimy1583
      @akimy1583 3 роки тому

      Ошибка в компараторе. Сортировка сбитая. NaN || 1 - не пишите так пожалуйста, воткните лучше тернарник или лишний if/else - стейтмент но фактически тут ошибки нет (перемешивать типы арифметикой не оч.хорошо). Если из одной структуры линейным сканированием надо склеить другую, например хеш-таблицу в вашем случае, то подойдёт reduce. А в целом норм, лучше чем кандидат с видео справился).

    • @misteranderson6058
      @misteranderson6058 3 роки тому

      Ну и сахар) Ужасный синтаксис после Golang

    • @DmitriiRepnikov
      @DmitriiRepnikov 3 роки тому +1

      @@misteranderson6058 да не в синтаксисе дело, просто в js-среде многие меряются длиной своего уанлайнового решения. Как выше написали, if/else стейтмент здесь был бы приятнее.

    • @misteranderson6058
      @misteranderson6058 3 роки тому +1

      @@DmitriiRepnikov Пускай меряются, я думаю, что код должен быть читабелен, как белый лист, а не вот этот вот сахар со стрелочками палочками с кавычками. Ведь в реальном проекте кода на десятки тысяч строк и нет времени вникать в синтаксический сахар. Js позволяет написать такой код? Наверно да, зависит от мастера.

  • @Dobermun
    @Dobermun 3 роки тому

    Со второй задачей намудрили.
    let result = [];
    for(i=0; i

    • @frontendscience
      @frontendscience  3 роки тому

      Вот решение этой задачи: ua-cam.com/video/3jgE1ySa8xA/v-deo.html

  • @NEMEDYINYI
    @NEMEDYINYI 3 роки тому +8

    Крутой контент! Было бы интересно смотреть прямую трансляцию лайва, и + в таком формате как сейчас с монтажом публиковать ролик.

    • @frontendscience
      @frontendscience  3 роки тому +5

      А какие Вы видите плюсы от собеседования в лайве? Мы изначально так и планировали, но сейчас вот придумать не можем профита. Чат? Ну так он будет отвлекать участника или ведущего... свое решение задачек высылать? Так их и просто в комментариях можно писать, как и любые вопросы... поделитесь мнением!

    • @dobermanpharaoh7567
      @dobermanpharaoh7567 3 роки тому +1

      @@frontendscience Собеседоваться когда тебея смотрят 10k человек - такое себе))

    • @frontendscience
      @frontendscience  3 роки тому

      @@dobermanpharaoh7567 вообще-то 20k, но кто считает )))

    • @QwDragon
      @QwDragon 3 роки тому

      @@dobermanpharaoh7567 так всё равно посмотрят же.

  • @dmytromoroz4451
    @dmytromoroz4451 3 роки тому +1

    Отличный контент. Большое Вам спасибо!

  • @MrGourmetRazzy
    @MrGourmetRazzy 3 роки тому +4

    Под конец у парня лицо было краснее, чем его футболка). Застеснял пацана.

  • @1powernic
    @1powernic 3 роки тому +1

    Не совсем понятен вопрос про несколько доменов для статики, где одновременно может загружаться всего по 6 файлов. Это проблема была в протоколе http/1, с приходом http/2 проблема не актуальна. Надо лишь веб сервер со статикой перенести на http/2

    • @frontendscience
      @frontendscience  3 роки тому

      Да, все верно. Спрашивал, потому что до сих пор много серверов все еще работают на http/1.

  • @kozubskyi
    @kozubskyi 3 роки тому

    27:43 есть ошибка, забыли возле "+" поставить "=" , так все время будет возвращать 1,1,1. Надо прописать
    return () => counter += 1, тогда все будет работать

    • @frontendscience
      @frontendscience  3 роки тому

      Пролистай комменты, там все обсудили

  • @ІльченкоАртем
    @ІльченкоАртем 3 роки тому +1

    full stack самоучка, больше реакт чем бекенд, еще не работал, написал для резюме пару проектов: интернет-магазин с фильтром товаров и полной адмикой по редактированию и масштабированию сайта, соц сеть, месенджер, музыкальную площадку, но это собеседования не прошел бы))

    • @frontendscience
      @frontendscience  3 роки тому +1

      Наверное потому что самоучка и не работал еще, а это собеседование на миддл позицию?)

  • @ihordubenko7357
    @ihordubenko7357 3 роки тому +5

    Хорошее собеседование! =) Классные вопросы. Сам затупил на первом вопросе=). Однозначно лайк и подписка!
    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 роки тому

      Благодарю за поддержку! Клессное решение вышло!

  • @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))];

  • @MrReflection540
    @MrReflection540 2 роки тому +1

    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 Не видел! Извините)

  • @stormd2902
    @stormd2902 3 роки тому +3

    Спасибо, очень полезно

  • @ДимаРапид-ф5ъ
    @ДимаРапид-ф5ъ Рік тому +1

    При таком массиве можно дурака включить и написать:
    function uniq(fruit) {
    let b = []
    fruit.sort().forEach((a, i) => { if (a !== fruit[i - 1]) b.push(a) });
    return b
    }
    console.log(uniq(fruit))

    • @yoshimitsu7723
      @yoshimitsu7723 Рік тому

      с таким решением сразу в додж лист отправят

    • @ДимаРапид-ф5ъ
      @ДимаРапид-ф5ъ Рік тому

      @@yoshimitsu7723 при поставленных условия это норм решение)) Понятно что имеется ввиду но ради юмора можно ответить и так.

    • @ДимаРапид-ф5ъ
      @ДимаРапид-ф5ъ Рік тому

      @wesborland3381 Зачем?)

  • @murad40
    @murad40 3 роки тому +7

    Оч крутое и полезное видео, но почему сразу с мидла начали, хотелось бы посмотреть на вопросы и собеседование junior`a. Если не трудно скажите плиз какие вопросы задавали бы джуниору? ThankYouInAdvance!

    • @frontendscience
      @frontendscience  3 роки тому +1

      Скоро будет на канале видео и на джуниора! Не забудьте нажать на колокольчик 🛎 😊

    • @ccmadminstrator
      @ccmadminstrator 3 роки тому

      это и был джуниор, слабенький.

  • @grbak
    @grbak 2 роки тому

    Видос отличный, Алексей красава

  • @РоманГирич-з5ш
    @РоманГирич-з5ш 2 роки тому

    подивився до кінця, круто

  • @странствие
    @странствие 3 роки тому +2

    Если гарантируется, что одинакового количества элементов не будет, то можно так задачу про фрукты решать
    const mySort = arr => [...new Set(arr.sort((a,b) => arr.filter(y => y === b).length - arr.filter(x => x === a).length))]

    • @АндрейБочарников-х5ъ
      @АндрейБочарников-х5ъ 3 роки тому +3

      сложность и нечитаемость алгоритма зашкаливает

    • @странствие
      @странствие 3 роки тому

      @@АндрейБочарников-х5ъ это да, это да)) Зато решение почти сразу пришло

    • @alexkonoplian
      @alexkonoplian 3 роки тому

      Вот тот же код пришёл в голову. Да, нечитаемо, но пихнуть в хелпер какой-нибудь вполне можно.

    • @thesunrock
      @thesunrock 3 роки тому

      @@alexkonoplian хелпер? еще лучше :)

  • @ЮрийДьячков-к9ю
    @ЮрийДьячков-к9ю 2 роки тому +2

    мне кажется или на 55:52 это не финальное решение?

  • @АринаЯковлева-т3ж
    @АринаЯковлева-т3ж 3 роки тому

    28:00 ничего не будет возвращаться, внутренняя функция ничего не возвращает. И даже если мы поставим return counter + 1, то при вызове будет 1 каждый раз, так как в саму переменную ничего не записалось, тут нужен постфиксный инкремент, то есть return counter++

    • @frontendscience
      @frontendscience  3 роки тому

      Да, и об этом писали уже в комментах много

    • @АринаЯковлева-т3ж
      @АринаЯковлева-т3ж 3 роки тому

      @@frontendscience
      Извините, я листала и не нашла)
      В любом случае, спасибо за интересный и познавательный формат!:)

    • @frontendscience
      @frontendscience  3 роки тому

      @@АринаЯковлева-т3ж и Вам спасибо)

  • @MutalipUsmanov
    @MutalipUsmanov 3 роки тому

    Answer for sum :
    1 const sum1 = function(el){
    2 if(sum1.a === undefined){
    3 sum1.a = 0;
    4 }
    5 if(el !== undefined){
    6 sum1.a += el;
    7 }
    8 if(el === undefined){
    9 var sm = sum1.a;
    10 sum1.a = 0;
    11 return sm;
    12 }
    13 return sum1;
    14 }
    15 console.log(sum1(1)(2)(0)());
    16 var a1 = sum1(1)(2)(3);
    17 var b1 = a1(10)();
    18 console.log(b1);

  • @jony4you
    @jony4you 3 роки тому

    Задачка на замыкание решена неправильно ) (финальное решение на 28:00), во первых функция не возвращает counter, во вторых counter + 1 не меняет значение counter и при следующем вызове будет все тот-же 1 :)

    • @frontendscience
      @frontendscience  3 роки тому +1

      Ты абсолютно прав. Уже обсудили в комментариях выше. Я проверял другое. Эта мелочь для меня не была настолько важна в тот момент. Но я тоже ее видел.

    • @jony4you
      @jony4you 3 роки тому

      @@frontendscience а есть собеседования синьйоров? :) Есть какие-то отличия от вопросов для мидла?

    • @frontendscience
      @frontendscience  3 роки тому

      @@jony4you Пока у нас на канале собеседований с синьорами еще не было. В планах есть).
      Но в жизни я уже лет 5 только их и собеседую. Вопросы по большей части такие же. Смотрю на скорость ответа, глубину знаний, проверяю - насколько уверен кандидат в ответе тд. Плюс задачки могут быть сложнее.

  • @ДимаРапид-ф5ъ
    @ДимаРапид-ф5ъ Рік тому +1

    Поле вопроса про сортировку массива по частоте появления фруктов, уже можно не спрашивать остальные вопросы, видно что чел соображает, и даже если реакт или вью не знает, то разберется за неделю.Вот нахера спрашивать сотрудника по всему учебнику js??? Главное не знания, а понимание того что от тебя хотят.

  • @igornosatov1908
    @igornosatov1908 3 роки тому +3

    Супер 🥳🥳🥳

  • @Jonstonrich
    @Jonstonrich Рік тому

    27:40 - Это не будет работать так как мы не изменили переменную а возвратили результат операции с ней.

  • @pavel.arepev
    @pavel.arepev 3 роки тому +2

    Спасибо! Очень классно проводите собеседования. Вы бы могли в дополнение говорить в конце - взяли ли бы вы человека на данную позицию к себе на работу?

    • @frontendscience
      @frontendscience  3 роки тому +4

      Алексея я бы пропустил на следующий этап технического собеседования

  • @herr_imko
    @herr_imko 3 роки тому +2

    Не посмотрел еще но судя по названию частей это не на фронта собеседование а на JS кодера чисто)

  • @ОлегПетров-п4у
    @ОлегПетров-п4у 3 роки тому +1

    Крутой формат! Лайк, подписка!

  • @andreyzinovjev3920
    @andreyzinovjev3920 3 роки тому +4

    Сергей спасибо за видео, очень азартно) скажите как то вы оцениваете скорость выполнения кандидатом задач, его размышления а главное ошибки или если в отведенное время решил - то это + ?

    • @frontendscience
      @frontendscience  3 роки тому +9

      Много зависит от того на какую должность собеседую. Если на синьйора - то да ожидаю что он быстро поотвечает на все легкие вопросы. В любом случае смотрю как человек мыслит - особенно если не знает ответа на вопрос изначально. Как пытается дойти до него. Или как использует подсказки, или какие вопросы задает. Все это учитывается. время чаще просто как ограничение - чтобы не потратить его все на один вопрос (которые никак не может решить кандидат) а наоборот мог проявить себя на разных вопросах.

  • @VasylHvozdulych
    @VasylHvozdulych 3 роки тому +2

    Задачу на каррирование + рекурсию примерно так решил бы
    .
    .
    .
    .
    .
    .
    .
    .
    const sum = a => {
    return b => {
    return b ? sum(a + b) : a
    }
    }
    const result = sum(1)(2)(3)(4)(5)() // 15

    • @frontendscience
      @frontendscience  3 роки тому

      Класс! Очень красивый вариант вышел!

  • @yaroslav8609
    @yaroslav8609 3 роки тому

    задачку про фрукты решил за 2 минуты. (мимо стажер)
    const arr = ['a', 'b', 'b', 'b', 'c', 'a'] // ['b', 'a', 'c']
    const frequencies = arr.reduce((ac, el)=>{
    if(el in ac) ac[el] +=1
    else ac[el] =1
    return ac
    }, {})
    console.log(frequencies)
    const res = Object.entries(frequencies).sort((a,b)=>b[1]-a[1]).map((el)=>el[0])
    console.log(res)

  • @SergeyDovzhenko
    @SergeyDovzhenko 3 роки тому +3

    интересно на матерого синиора глянуть)

  • @Amkonax
    @Amkonax 3 роки тому +3

    Интересно, все задания по js из интервью решал почти сразу в уме, но до сих пор боюсь проходить собеседование на джуна)

    • @frontendscience
      @frontendscience  3 роки тому +3

      А чего именно боишься? В худшем случае все останется так же как сейчас.
      Если уже натренировался решать задачки, теперь надо натренироваться проходить собеседования.

    • @Amkonax
      @Amkonax 3 роки тому +3

      @@frontendscience Ну я 20 лет проработал системным администратором. Всю жизнь мечтал быть разработчиком, но как-то не сложилось. А сейчас сокращение на фоне пандемии, вот и подумываю сменить род занятий. Боюсь, потому что уже 40 лет за плечами, поздновато наверное становиться программистом)

    • @frontendscience
      @frontendscience  3 роки тому +9

      ​@@Amkonax Ничего не поздно! Сейчас открыты возможности ремоута по всему миру практически. То есть даже если в твоем городе/стране в 40 лет ты боишься дискриминации на новой должности, то в мире это нормальный возраст, чтоб начать. Тем более, что ты свитчишься из айтишной специальности. Обязательно опиши этот опыт в резюме. И давай не тяни с собеседованиями! Успехов!!

    • @Amkonax
      @Amkonax 3 роки тому +4

      @@frontendscience спасибо за поддержку и за ваши видео, которые я все с удовольствием смотрю. Обязательно буду пробовать!)

    • @misteranderson6058
      @misteranderson6058 3 роки тому +1

      @@Amkonax А почему девопс не рассматриваете?

  • @trewerguli1727
    @trewerguli1727 2 роки тому

    Судя ответам опытный проходитель собеседований😜

  • @LossevSergey
    @LossevSergey 3 роки тому +4

    Спасибо, видео помогло понять, какого уровня я джаваскриптист, если бы собеседовался на эту роль. Хоть и не являюсь им вообще ни разу, а js - просто побочный продукт более общего опыта работы в веб-аналитике )

  • @alexandercelevra2393
    @alexandercelevra2393 3 роки тому +21

    "ка-эс-эс как это правильно говориться" :) Джун если объективно, но за год вполне толковый результат. Или я просто уже ворчливым становлюсь с годами, "дед опять забыл выпить таблетки и опять про какие-то клирфиксы и джпеги с закругленными углами")

  • @ВолодимирМ-ъ4б
    @ВолодимирМ-ъ4б 2 роки тому

    По решению задачи на 28мин, с двумя функциями inc() - у меня возникли сомнения в правильности решения, по - моему при таком решении не будет ожидаемого результата

  • @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 роки тому +1

      Уже обсудили в комментариях выше.

    • @EvilYou
      @EvilYou 3 роки тому

      @@frontendscience Я заметил, как начал читать комменты, но удалять уже не стал :) Сегодня тему замыканий на learn.javascript прошел. Сразу же пересмотрел и этот момент в видео, и собеседование со стажером из EPAM, где тоже IIFE были. Закрепляю пройденное