Frontend собеседование на позицию middle+

Поделиться
HTML-код
  • Опубликовано: 23 ноя 2023
  • / discord
    DONATIONS: www.donationalerts.com/r/euge...
    visit us telegram channel:
    t.me/frontend_interview_full
    #react #frontend #interview #algorithm #codewars #coding #learntocode #learnprogramming #javascript #learnjavascript #frontenddeveloper #programming #programminglife #computer #computerscience #computers #homework #learning #tutorial #programmingtutorials #programmingtutorial #javascripttutorial #javascripttutorialforbeginners #javascripttutorials #kata #code #codes #beginners #beginner #howto #howtocode #learningjavascript #codingtutorials #codingtutorial #learn2code | #conditionaloperator #conditional #condition #operator #operators #ternaryoperator #ternary #slice #method #methods #slices
  • ИгрыИгры

Комментарии • 59

  • @user-wu8wn8cs6p
    @user-wu8wn8cs6p 6 месяцев назад +25

    17:00 просто перепиши callback внутри setTimeout, как стрелочную функцию. Тогда стрелочная функция возьмет контекст от родителя. А еще, с apply решение не правильное! apply и call вызывают функцию в моменте. То есть в этом примере функцию вызвал не setTimeout, а сам пользователь. Тут нужно использовать bind. Будьте внимательнее собеседующие.

  • @hhsqlp7747
    @hhsqlp7747 2 месяца назад +5

    const removeDublicates = (arr) => {
    const hash = new Map()
    const result = []
    for (let i = 0; i < arr.length; i++) {
    const jsonItem = JSON.stringify(arr[i])
    if (!hash.get(jsonItem)) {
    hash.set(jsonItem, jsonItem)
    result.push(arr[i])
    }
    }
    return result
    }

    • @user-os5uo9ww8h
      @user-os5uo9ww8h Месяц назад

      Или так))
      const removeDublicates = (arr) => [...new Set(arr.map(item => JSON.stringify(item)))].map(item => JSON.parse(item))
      Читаемость вышла из чата))

  • @front_interviews
    @front_interviews  6 месяцев назад +15

    Ставьте лайки!!! Если будет много лайков еще запишу

    • @nanika3487
      @nanika3487 6 месяцев назад

      На 22:45 логика улетела. apply() сразу отработал, setTimeout() не у дел вообще. Там не apply(obj) надо, а bind(this)

  • @diggerdog001
    @diggerdog001 6 месяцев назад

    Полезно, выкладывай еще

  • @user-ry1zf7sl8i
    @user-ry1zf7sl8i 4 месяца назад +3

    Молодец парень которого собесят. Да там есть какие-то недочеты, но красавчик, что не сломался не сдался молоток, так держать. Интервьюеры, вижу что по хардам вы молодцы где-то, но качайте софты вы же проводите собеседование на вас будут равняться…

  • @meddwedd
    @meddwedd 4 месяца назад +1

    22:33 - некорректно применить apply к функции, таким образом она сразу же исполняется и выводит в консоль 42, здесь правильнее использовать именно bind, т.к. в таком случае возвращается новая функция. P. S. вижу, что до меня это уже отметили, но пусть будет.

  • @nurislamaituarov7743
    @nurislamaituarov7743 6 месяцев назад

    👍👍👍👍👍

  • @_soryegeton
    @_soryegeton 29 дней назад

    Мини-сторис:
    Пошёл на вакансию Middle, где зп была 80-100к (+в условиях было как на джуна) - ну и подумал что на джуна.
    Скрининг прошёл, тестовое сделал, на тех-собесе 2-3 вопроса из 15 завалил. После проанализировал и понял, что меня хотели развести и всё же это была Middle позиция, тк вопросы 1в1 как в этом собесе на видео )))

  • @dw_tv3992
    @dw_tv3992 Месяц назад

    livecoding это жоско респект автору 👍
    интересно на какую зп, такой ур-нь вопросов и задач

  • @XTANCE
    @XTANCE 6 месяцев назад +2

    Конечно, на собеседовании гораздо сложнее сходу всё решать, но всё же
    1:05:30 - два редусера вместо arr.map(JSON.stringify) и arr.map(JSON.parse)

    • @EgorMoscowNeverSleep
      @EgorMoscowNeverSleep 6 месяцев назад

      Но всё же JSON.parse тут вообще не нужен и решается всё в один проход

    • @XTANCE
      @XTANCE 6 месяцев назад

      @@EgorMoscowNeverSleep ну я говнокодер прост

    • @vadimveksler7699
      @vadimveksler7699 6 месяцев назад

      @@EgorMoscowNeverSleep на пример как ты это решишь без JSON.parse в один проход?

    • @EgorMoscowNeverSleep
      @EgorMoscowNeverSleep 6 месяцев назад

      @@vadimveksler7699 По условиям задачи, нужно было только удалить "дубликаты", а копирование объектов не предполагалось.
      ```javascript
      var oldArr = [ { a: 1 }, { b: 1 }, { b: 2 }, { a: 1 }, { c: 3 } ];
      var set = new Set();
      oldArr.reduce((newArr, item) => {
      const key = JSON.stringify(item);
      if (set.has(key)) return newArr;
      newArr.push(item);
      set.add(key);
      return newArr;
      }, []);
      ```

    • @existanz
      @existanz 6 месяцев назад

      @@vadimveksler7699 проверяешь есть ли твой стрингифаенный объект в сете, если нет добавляешь его и в сет и в результирующий массив.

  • @alananakhaev4922
    @alananakhaev4922 5 месяцев назад +5

    ИНКЛАДС сюда...

  • @glebbaruch6644
    @glebbaruch6644 19 дней назад

    сложность будет O(n x m)

  • @user-is8ov1km3t
    @user-is8ov1km3t 2 месяца назад

    function removeDuplicates(arr){
    return [...new Set(arr.map(item => JSON.stringify(item)))].map(item => JSON.parse(item))
    }

  • @pavlof
    @pavlof 6 месяцев назад +2

    в последнем задании такой кейс не будет работать [{a:1, b:1}, {b:1, a:1}]

    • @alexandrsachishin962
      @alexandrsachishin962 6 месяцев назад

      вот тебе и миддл+ разработчик)

    • @den4ik9992
      @den4ik9992 6 месяцев назад +2

      Потому что условия такого и не было, был дан массив объектов где всегда 1 свойство.

  • @astarta7772
    @astarta7772 4 месяца назад

    расскажи плс какие вопросы тимлид в конце задавал?

  • @inqvisitor3722
    @inqvisitor3722 6 месяцев назад +1

    похоже собес в втб, еще кто-то экспресс использует.

  • @den4ik9992
    @den4ik9992 6 месяцев назад +3

    56:40 почему O(n^2)?? Что такое n в данном случае. Сложность этого алгоритма O(k + n) где k - количество элементов в массивах read, write, а n - это количество таких массивов. Дальше вообще шок, это можно решить линейно через редьюс, может я плох в алгоритмах, но я в лоб не понимаю как это можно решить линейно и причем тут редьюс, если у редьюса под капотом те же фор и редьюс никак не уменьшает сложность по времени, а наоборот увеличивает сложность по памяти. Есть пара методов оптимизации данного алгоритма 1. использовать хэш таблицу чтобы сделать сложность O(1), но по условию задачи это невозможно. 2. Чтобы сделать алгоритм линейным, нужно использовать some вместо инклюд и тогда в лучшем кейсе мы получим O(n), а в худшем все также и останется O(k + n) или O(n * m) где n число свойств, а m среднее количество элементов.

    • @andreiostapenko288
      @andreiostapenko288 6 месяцев назад

      Не совсем понимаю, почему это не O(n^2) если Include это та же итерация по массиву. И каким образом some спасет ситуацию, если он так же будет итерироваться по массиву и в худшем случае это все равно O(n)

    • @den4ik9992
      @den4ik9992 6 месяцев назад

      @@andreiostapenko288Потому что как минимум объясни что такое n? Допустим для тебя n это среднее количество элементов в обеих массивах, в нашем случае это 3, 3^2 будет 9, include пройдет 1 раз по write (3 элемента) + read (3 элемента) = 6. Вопросы почему это не O(n^2)? На второе даже отвечать не буду, внимательней читай что я написал

    • @tnsaturday
      @tnsaturday 6 месяцев назад

      N ключей в объекте data * N элементов в массиве каждого ключа.

    • @den4ik9992
      @den4ik9992 6 месяцев назад +1

      @@tnsaturday N ключей в объекте дата = 2, N элементов в массиве каждого ключа в нашем случае 6, получаем 2 * 6 = 12. В нашем случае итераций будет 6, по 3 пробега на каждый массив. Ну и выведите формулу вы одной переменной N назначили два смысла

    • @tnsaturday
      @tnsaturday 6 месяцев назад

      @@den4ik9992 жесть

  • @wayfaringstranger2798
    @wayfaringstranger2798 Месяц назад

    честно говоря не понял почему оффер не дали. Нормально же собесился.

  • @number_one_y_h
    @number_one_y_h 5 месяцев назад

    какие умники блин сидят спрашивают про сеттаймоут от мидла

  • @existanz
    @existanz 6 месяцев назад +1

    Как же приятно самоутверждаться за счёт таких собесов, автор давай ещё.

    • @user-ry1zf7sl8i
      @user-ry1zf7sl8i 4 месяца назад +6

      Глупый, самоутверждаться надо в другом месте

    • @existanz
      @existanz 4 месяца назад

      @@user-ry1zf7sl8i в таком случае, ты зря пытаешься здесь самоутвердиться за счёт моей глупости.

  • @krpzzr
    @krpzzr 4 месяца назад

    На какую зп был собес?

    • @AzwartNk
      @AzwartNk Месяц назад

      скорее всего на 1000 usd

    • @user-on5gt8rd2w
      @user-on5gt8rd2w 18 дней назад

      ⁠@@AzwartNkmiddle+ на 1000usd?

  • @askelatre9550
    @askelatre9550 5 месяцев назад

    сделали офер по итогу?

  • @victard7512
    @victard7512 6 месяцев назад +1

    А это мок собес или в компанию?

    • @front_interviews
      @front_interviews  6 месяцев назад

      в компанию

    • @victard7512
      @victard7512 6 месяцев назад

      @@front_interviewsа почему в последний задаче получилось о от н, если он два раза пробежался по массиву плюс делал сет ?

    • @front_interviews
      @front_interviews  6 месяцев назад

      @@victard7512 Потому что циклы все идут друг за другом

    • @aw3s0me
      @aw3s0me 6 месяцев назад

      ​@@victard7512 тут получается по одному и тому же набору данных проходится 4 раза:
      1. Первый редюс, где он мапит данные в строку (по сути arr.map(JSON.stringify))
      2. Преобразование массива в Set - от этого шага можно было бы избавиться, если бы он на первом проходе заполнял сразу выше объявленный Set, а вставка в Set насколько помню константа, поэтому ее не считаем
      3. Преобразование обратно Set в массив
      4. Маппинг их обратно в объекты (arr.map(JSON.parse))
      Итоговая сложность 4n (если оптимизировать 3n), числовой индекс обычно откидывают, поэтому можно говорить про O(n).

    • @aw3s0me
      @aw3s0me 6 месяцев назад

      В лучшем варианте тут наверное будет ввести сразу и Set и массив с итоговым ответом.
      И затем в один проход делать следующее:
      1.преобразовывать элемент в строку,
      2. проверять, есть ли такая строка в Set
      3. если нету, то добавлять строку в сет, а объект в массив ответов
      после одного прохода вернуть массив ответов.

  • @askerkotsev363
    @askerkotsev363 6 месяцев назад +2

    Ясно я мидл+

    • @kawaikaino5277
      @kawaikaino5277 6 месяцев назад +9

      Дома, сидя на стуле, глядя видео собеса))) ты мидл+

    • @askerkotsev363
      @askerkotsev363 6 месяцев назад +4

      Челу чел подсказал ответ а чел сделал вид типо сам допер , я так заебался учить js что попутно выучил основы swift и напиликал пет проект на SwiftUI + написал API на node + pg

  • @stannesklada
    @stannesklada 6 месяцев назад +2

    const removeDublicates = (arr) => {
    const tmp = {};
    return arr.reduce((acc, item) => {
    const tmpKey = Object.keys(item).sort().reduce((acc, key) => acc + key + item[key], '');
    if(tmp[tmpKey] === undefined) {
    acc.push(item);
    tmp[tmpKey] = 1;
    }
    return acc;
    }, []);
    }
    console.clear();
    console.log(removeDublicates([{a: 1, b: 1}, {b: 1}, {a: 2}, {b: 2}, {b: 1, a: 1}, {c: 4}]));

    • @valentynkuriato605
      @valentynkuriato605 6 месяцев назад +1

      removeDuplicates([
      { a: 11, b: 11 },
      { a: 11, b: '11' },
      ])
      test

    • @stannesklada
      @stannesklada 6 месяцев назад

      ⁠​⁠​⁠@@valentynkuriato605
      typeof to tmpKey
      (acc + key + (typeof item[key]) + item[key])