Собеседование JUNIOR FRONTEND REACT разработчика

Sdílet
Vložit
  • čas přidán 25. 08. 2024

Komentáře • 866

  • @Davidovich_aka_smoozydrinker

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

    • @Cos6a4oK
      @Cos6a4oK Před 3 lety +11

      Заходите на литкод и решаете задачи любого уровня и смотрите как можно было решить совсем иначе.

  • @chicken_naggets3561
    @chicken_naggets3561 Před 3 lety +506

    Задачу со скобками можно было решить проще, вместо стека объявить счётчик и если встречаем открывающуюся скобку увеличиваем, если закрывающуюся уменьшаем. В конце счётчик должен быть равным нулю, иначе скобок разное количество

    • @chicken_naggets3561
      @chicken_naggets3561 Před 3 lety +7

      Ещё можно делить входящию на две части и одновременно их обрабатывать

    • @Max-mv6gr
      @Max-mv6gr Před 3 lety +77

      @@chicken_naggets3561 А если будет такой пример: ')(', то счётчик же тоже равен 0

    • @xenon671games7
      @xenon671games7 Před 3 lety +27

      @@Max-mv6gr каждую итерацию проверяем, что переменная >= 0

    • @v.k.samurai
      @v.k.samurai Před 3 lety +28

      @@Max-mv6gr, в общем то да :) но это не противоречит условию задачи. Сказано, что скобки могут быть в произвольном порядке, вопрос тут конкретно стоит в том, что если есть равное количество открывающих скобок и закрывающих, значит вернуть true. В твоем примере у нас одна закрывающая скобка и одна открывающая, собственно, условие соблюдено)) Короче говоря, нужно уточнять условия задачи чтобы 100% понимать какие есть нюансы.

    • @ivannebyshynets8829
      @ivannebyshynets8829 Před 3 lety +2

      А если ещё и скобки разные, ок да.

  • @mikeneikovych3700
    @mikeneikovych3700 Před 3 lety +150

    Отличное, а главное, познавательное собеседование. Я смотрю все собеседования от "Отсобеседование", "Web interview", и ещё много где понемногу, но нигде ни разу не видел, чтобы интервьюер так подробно разжовывал алгоритм действий решения задачи для зрителя и самого собеседуемого. Это было очень полезно, спасибо большое!

    • @UlbiTV
      @UlbiTV  Před 3 lety +13

      Рад слышать, спасибо!

    • @HatWriter
      @HatWriter Před 3 lety +5

      @@UlbiTV были бы почаще такие интервьюеры, чтобы джунам, которые пробуют впервые ходить на собеседования - было понятно, что стоит подучить/подтянуть. Спасибо за видео

    • @Independent19c
      @Independent19c Před 2 lety +3

      А я считаю зачем париться просто плейлист создать собеседования и уровни в превью видео с должностью и всё, как бы вопросы не повторялись люди то разные, и смотреть интересно(а интересные уже определять самим время от времени ну или просто кидать в плейлист) думаю каждый вынесет для себя что то полезное, возможно узнаёт себя, не знаю как у всех ,для меня слово собеседование наверное на втором месте после слова очередь и ремонт.

    • @kvadro_id
      @kvadro_id Před 2 lety

      @@UlbiTV Татьяну в итоге взяли?

    • @IIIEPBE4OK
      @IIIEPBE4OK Před 2 lety +1

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

  • @-inside4478
    @-inside4478 Před 3 lety +57

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

    • @UlbiTV
      @UlbiTV  Před 3 lety +3

      Спасибо) Успехов!

  • @Valeryi07
    @Valeryi07 Před 3 lety +76

    Отличное собеседование,на одном дыхании посмотрел,и конкретно для меня ,оно очень познавательное..спасибо ребят..👍🙂

    • @UlbiTV
      @UlbiTV  Před 3 lety +1

      Благодарю!

  • @lordunitaz
    @lordunitaz Před 3 lety +24

    Спасибо за видео! Нужно больше роликов, готовящих к собесам. Ты одновременно учишь теорию и практикуешься, когда ищешь решение задачки. Очень эффективно и в целом интересно.

    • @UlbiTV
      @UlbiTV  Před 3 lety +3

      Спасибо за отзыв!)

  • @itpro952
    @itpro952 Před 3 lety +52

    Ждал собес, щас активно готовлюсь, вспоминаю теорию, спасибо Тимур.

    • @UlbiTV
      @UlbiTV  Před 3 lety +7

      Успехов!

    • @serikabsadykov9260
      @serikabsadykov9260 Před 3 lety +1

      @@UlbiTV Привет, я смотрел твой ролик про firebase и как так сделать авторизацию и при созданий папки, я использовал базовую комплектацию, и у меня нету индекс.нтмл ( 7:16 в том видео ), мне стоит начинать все с начало, или есть другой путь?

    • @user-bu5xw6yf8q
      @user-bu5xw6yf8q Před 3 lety +1

      Как успехи с собесом?

    • @sharover455
      @sharover455 Před 2 lety +1

      @@user-bu5xw6yf8q он забухал и насваем сейчас торгует

    • @user-bu5xw6yf8q
      @user-bu5xw6yf8q Před 2 lety

      @@sharover455 жесть, коменту уже 10 месяцев

  • @user-zq9fo4zk5n
    @user-zq9fo4zk5n Před 3 lety +15

    Очень ёмкое и полезное видео!!! Спасибо за такой качественный контент!👍🏻

    • @UlbiTV
      @UlbiTV  Před 3 lety +1

      Благодарю!

  • @nuriddintashpulatov4233
    @nuriddintashpulatov4233 Před 3 lety +14

    Я тоже Джун, начал учить фронт с верстки 4 месяца назад, видео я начал с теоретических вопросов, и расстраивался когда она отвечала раньше меня или более четко чем я (ну типа "блин, вот она тоже Джун, но более смышлёная, а я видимо никогда не научусь программированию такими темпами"). Но когда я досмотрел видео, а потом узнал что оказывается у нее уже есть два года коммерческого опыта, то прям камень с плеч упал, ахахах. Спасибо автору за видео!

    • @viktord3507
      @viktord3507 Před 2 lety

      Тут уже миддл?

    • @SNSDfOu
      @SNSDfOu Před rokem

      так то у нее опыта для джуна прилично, да и женщина 86 года.

  • @ipa_stor
    @ipa_stor Před 3 lety +18

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

  • @programming5944
    @programming5944 Před 3 lety +35

    Вопросов по реакту хотелось бы больше и поглубже рассмотреть какие то моменты

  • @met1388
    @met1388 Před 3 lety +25

    Да, интересные задачи было бы круто увидеть как вы их решаете оптимально

  • @victormog
    @victormog Před 3 lety +21

    Видео по практическим задачам всегда интересны!

  • @SmirnovVladimir
    @SmirnovVladimir Před 2 lety +17

    Работаю год фронтом. Забавная вещь - я на теоретические вопросы не на все смог сразу ответить. А на практические - на все кроме одного. Это к вопросу о разнице между собесом на первую работу, когда соискатель знает кучу теории, но как правило имеет очень мало практики, и спустя год работы - когда куча неиспользуемой теории забывается, а мозг заточен под решение практических задач. Друзья, кто ищет первую работу - больше практикуйтесь! Постоянно пишите код )

    • @OpankiDeLegend
      @OpankiDeLegend Před rokem +5

      Чтобы на собесе ничего не ответить по теории?) Замкнутый круг

    • @djdisik
      @djdisik Před rokem +2

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

    • @user-gs9yh7rj6d
      @user-gs9yh7rj6d Před 3 měsíci

      @@djdisik подскажите, образование необходимо или нет?

    • @djdisik
      @djdisik Před 3 měsíci

      @@user-gs9yh7rj6d у каждой компании по разному, где-то возьмут без образования, но зачастую требуют высшее техническое

  • @user-lx5vv3uu8u
    @user-lx5vv3uu8u Před 3 lety +11

    Заранее благодарю!
    Сейчас начну смотреть!))

    • @UlbiTV
      @UlbiTV  Před 3 lety +2

      Приятного просмотра!

    • @step_6512
      @step_6512 Před 3 lety

      Всё конкретно, понятно и без лишней воды. Спасибо!

  • @garikmelqonyan6011
    @garikmelqonyan6011 Před 2 lety +12

    Many thanks to you, man.
    Your lessons are just great.
    They are very helpful for those who are really interested in learning something new or improving and enhancing one's skills.
    Learned a lot from your tutorials and interview videos.
    May you be prosperous in this good job of yours.
    Thanks a lot.

    • @powerrampage
      @powerrampage Před 2 lety

      You watched the video with subtitles ?

    • @garikmelqonyan6011
      @garikmelqonyan6011 Před 2 lety +1

      I understand russian, my friend.

    • @powerrampage
      @powerrampage Před 2 lety

      @@garikmelqonyan6011 if you know, why you wrote in English

    • @garikmelqonyan6011
      @garikmelqonyan6011 Před 2 lety +1

      Seems that you are interested in that comment more than in video itself, my friend.
      I just dont write grammatically correct in russian.
      Hope this will be the last question.

    • @powerrampage
      @powerrampage Před 2 lety +1

      @@garikmelqonyan6011 sorry bro =)

  • @suvar8667
    @suvar8667 Před 3 lety +5

    спасибо за труд! такие интервью отлично подкрепляют изученные темы + позволяют расширить существующие знания.

  • @chcylabrab
    @chcylabrab Před 2 lety +9

    Спасибо за контент, а так же за то, что смонтировали ролик. Это Ваше конкурентное преимущество среди блогеров которые выкладывают интервью.

  • @user-pl6xx3xk9t
    @user-pl6xx3xk9t Před 2 lety +3

    Спасибо за такой формат видео. Решал задачи параллельно с просмотром. По задаче про уникальные, не дублирующие значение, есть вариант короче, с одним циклом.
    const num = [1,1,2,4,6,6,5];
    function unique(arr) {
    const unicArr = [];
    for (const item of arr) {
    const pos = unicArr.indexOf(item, 0);
    if (pos === -1) {
    unicArr.push(item);

    } else {
    unicArr.splice(pos, 1);
    }
    }

    return unicArr;
    }
    unique(num ) // [2, 4, 5]

  • @derw1sz
    @derw1sz Před 3 lety +27

    Со скобочками можно было без стека обойтись, делать +1 или -1 к сумме и проверять на каждой итерации что не меньше нуля, после всех итераций проверить что сумма равна нулю и всё.

    • @swaxshow8404
      @swaxshow8404 Před rokem

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

  • @robertarakelyan4629
    @robertarakelyan4629 Před 2 lety +11

    Задачку с массивом можно решить так:
    function withoutRepeat(arr) {
    const res = [];
    arr.forEach(item => {
    const indx = arr.indexOf(item);
    const lastIndx = arr.lastIndexOf(item);
    if (indx === lastIndx) res.push(item);
    });
    return res;
    }

    • @Kleo_Wyatt
      @Kleo_Wyatt Před rokem

      У меня еще вот так получилось. Работает только с отсортированным массивом.
      const withoutRepeat =(array) => {
      const uniqueValue = []
      let count = 0 ;
      for(let i = 0; i < array.length; i++ ) {
      if(array[i] !== array[i+1] & count === 0) {
      uniqueValue.push(array[i])
      } else if(array[i] !== array[i+1] & count > 0) {
      count = 0;
      } else {
      count ++;
      }
      }
      return uniqueValue
      }

  • @moscowtv5767
    @moscowtv5767 Před 3 lety +7

    Автор дает наводки, считаю это очень правильным походом. Татьяна молодец, автор молодец. :)

    • @UlbiTV
      @UlbiTV  Před 3 lety +1

      Спасибо!)

  • @user-zn5ky3fw5h
    @user-zn5ky3fw5h Před 3 lety +19

    Классное собеседование, узнал для себя несколько новых интересных вещей.
    Сам уже больше года разрабатываю на реакт, а про такую вещь, как React.memo не знал. Как говорится век живи, век учись!)
    Девушка молодец, успехов ей!)

    • @UlbiTV
      @UlbiTV  Před 3 lety +3

      Спасибо! Успехов!

  • @dimka_shchepa
    @dimka_shchepa Před 3 lety +16

    Оо-о, видосы решения задачек на js вообще бы зашли идеально)) было бы не плохо, если б автор сделал это

  • @user-sd7le8xj4z
    @user-sd7le8xj4z Před 2 lety +1

    на самом деле очень интересно) и пусть будут заезженные вопросы! продолжай контент очень интересный.

  • @uNkind33
    @uNkind33 Před 3 lety +5

    Ждем видос с оптимальными решениями задач!

  • @omnomnom1323
    @omnomnom1323 Před 2 lety +4

    Пожалуйста поясните кто-нибудь: почему Татьяна, которая работает фронтом 2 года и ее основной стек это уже реакт - собесится на позицию джуна. То есть чувак с курсов без опыта и Татьяна будут претендовтаь на одну и ту же позицию джуна в теории. Что-то я не понимаю явно

  • @helenit4365
    @helenit4365 Před 3 lety +34

    Собеседование понравилось! Татьяна молодец!

  • @user-kn3ut1sh2o
    @user-kn3ut1sh2o Před 3 lety +6

    Очень полезное видео! Тимур, спасибо за качественный контент! Плюсую за решение задачек.

    • @UlbiTV
      @UlbiTV  Před 3 lety +1

      Спасибо, Олег! Скоро будет видео!

  • @Vlad-yj2ny
    @Vlad-yj2ny Před 3 lety +13

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

  • @kostasancez2358
    @kostasancez2358 Před 3 lety +6

    Видео с задачами ждём!)))

  • @scottwalker6071
    @scottwalker6071 Před 3 lety +8

    Это было интересно, мне понравился сценарий опроса, попробую применить его на своих собесах🙃 Спасибо, Тимур🤠 Было бы интересно посмотреть собес на сеньора или мидла++ по фронту

    • @UlbiTV
      @UlbiTV  Před 3 lety +4

      Спасибо!) До собеседования middle ++ и сеньоров я еще не дорос)

    • @pie_company
      @pie_company Před rokem

      можно к вам?

  • @victorchilari
    @victorchilari Před 3 lety +3

    Нормальный эксперимент получился, удачи в долнейшем

    • @UlbiTV
      @UlbiTV  Před 3 lety +1

      Спасибо)

  • @MACTEP_SHIFU
    @MACTEP_SHIFU Před rokem +1

    У меня нет IT образования, самоучка с 2005 года. Никогда не лез в конторы на работу, считая это без образования бесмысленным. Это первое видео с собеседованием что я увидел. Первые 10 вопросов я вообще был удивлен их наличию, в силу их простоты для меня. Про DOM дерево и null/undefined, вообще офигел. Походу если я для проверки себя попробую, то спокойно пройду собеседованиеи ...учитывая степень сложности этих вопросов для меня.
    А задачу со скобками...решение писец какое сложное. Разве что только для наглядности работы стека подходит. Обычный цикл, подсчет и тех и тех...и сравнивать количество. Ну или ещё короче, без цикла:
    const check = str => str.split('(').length === str.split(')').length;

    • @-And6053
      @-And6053 Před 11 měsíci

      составь ка вопросы для уровня middle, а мы посмотрим)

  • @dimabashynskyi4984
    @dimabashynskyi4984 Před 3 lety +4

    спасибо большое, очень интересные видосы с заданиями.

    • @UlbiTV
      @UlbiTV  Před 3 lety +1

      Благодарю!)

  • @Wynell
    @Wynell Před 3 lety +3

    если честно не знал что такая интересная ситуация с try catch finally
    спасибо за видео

  • @vovayankers8956
    @vovayankers8956 Před 2 lety +2

    Хорошая подача! Поддерживаю видосы по оптимальному решению сложных задачек с собеседований.

  • @YuriiLutsyk0304
    @YuriiLutsyk0304 Před 3 lety +2

    Отличный видос получился! Ждем новые видео)

    • @UlbiTV
      @UlbiTV  Před 3 lety +1

      Спасибо!

  • @user-ho8ft6cw1o
    @user-ho8ft6cw1o Před 2 lety +2

    Супер!!

  • @dariabannaya2681
    @dariabannaya2681 Před rokem

    Спасибо большое! Очень интерсный формат. Нравится больше всего у тебя смотреть

  • @__online7250
    @__online7250 Před 3 lety +2

    Четко и информативно! Спасибо за такой формат!

  • @falsetrue7910
    @falsetrue7910 Před 3 lety +26

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

    • @KhoroshilovEI
      @KhoroshilovEI Před 3 lety +10

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

    • @drinkoron8063
      @drinkoron8063 Před 3 lety +2

      @@KhoroshilovEI Ну, будет у вас задача написать калькулятор, вот и решайте проблему со скобками.

    • @KhoroshilovEI
      @KhoroshilovEI Před 3 lety +6

      @@drinkoron8063 пишу я, например, социальный сервис и тут мне вдруг срочно потребовался калькулятор? Еще и строковый?

    • @nickolayivanov2848
      @nickolayivanov2848 Před 3 lety +6

      Кстати, мне интересно, а можно было просто посчитать количество открывающих скобок и сравнить его с количеством закрывающих?)

    • @drinkoron8063
      @drinkoron8063 Před 3 lety +5

      @@nickolayivanov2848 Если банально посчитать количества и сравнить в конце, то нет. Пример: )( явно противоречит этому варианту. Нужно немного модифицировать подсчёт, берём счётчик со значением 0 пройдёмся по массиву, если встретим откр. скобку увеличиваем счётчик на 1, если закр. скобка то уменьшаем. Если счётчик ушёл в минус можно остановить цикл и вернуть false а после цикла проверяем уже равняется ли счётчик нулю.

  • @kanatasanaliev8763
    @kanatasanaliev8763 Před 3 lety +2

    Спасибо за видео было интересно познавательно готовлюсь к собеседованию мне зашло (лайк поставил)

    • @UlbiTV
      @UlbiTV  Před 3 lety +2

      Успехов в подготовке!

    • @kanatasanaliev8763
      @kanatasanaliev8763 Před 3 lety +1

      @@UlbiTV а к стати может видео запилишь на счет работы Джуна что он делает до того как начнёт самостоятельно работать краткое видео думаю многим бы было интересно таких видео я не встречал

    • @kanatasanaliev8763
      @kanatasanaliev8763 Před 3 lety +1

      @@UlbiTV заранее спасибо

  • @yuravychiwskii553
    @yuravychiwskii553 Před 3 měsíci +1

    Решение задачи со скобками в 1 строку:
    function checkBrackets(str) {
    return (
    str.replace(/[^\[({]+/g, '').length === str.replace(/[^\])}]+/g, '').length
    );
    }

  • @usertyfoon
    @usertyfoon Před 3 lety +1

    супер!!

  • @dmitrykorovin4356
    @dmitrykorovin4356 Před 3 lety +4

    самый крутой собес, что я смотрел ) без воды и пауз, очень круто и познавательно, спасибо! Другие порой смотришь - а там два часа непонятно чего

  • @alexnikolaienko3478
    @alexnikolaienko3478 Před 2 lety +1

    Классное видео. Просмотрел с удовольствием.

  • @efreitorhabibulin238
    @efreitorhabibulin238 Před 3 lety +8

    13 лет опыта, 4 года проработал в Google и Google Nest, я бы походу провалил твое интервью xDDD, к примеру блок с finally меня поймал
    я наверное пишу код как-то специфически, что подобное никогда не использовал )))))

    • @delir0
      @delir0 Před 3 lety +1

      За return в finally нужно сразу увольнять

    • @efreitorhabibulin238
      @efreitorhabibulin238 Před 3 lety

      @@delir0 хахахаххаха

  • @user-wq3wt9pq5v
    @user-wq3wt9pq5v Před 2 lety

    Все что касается собеседования очень нравится )) вдохновляет и настраивает, спасибо!

  • @IlyaShaforostoff
    @IlyaShaforostoff Před 3 lety +6

    Если решаете задачу, как например со скобочками, то проверяйте как следует свои решения. А то у вас получилось, что верное решение будет только если строка состоит из двух символов, открывающейся и закрывающейся скобочки.
    Прежде чем писать реализацию функции, напишите сперва проверки, например такие
    console.assert(checkBrackets('(())') === true, 'not passed 1')
    console.assert(checkBrackets('))((') === false, 'not passed 2')
    console.assert(checkBrackets('(()') === false, 'not passed 3')
    console.assert(checkBrackets('()()(()())') === true, 'not passed 4')
    console.assert(checkBrackets('writeMe("hello world")'), 'not passed 5')

  • @orionpro79
    @orionpro79 Před 2 lety +3

    Работаю уже более 2х лет с реактом, интересно было просмотреть ролик (пусть и немного на перемотке, потому что ответ и так был известен), думаю новичкам вообще зайдёт на ура. А всякие мемо, тем кто учит реакт, надо на заметку брать и пользоваться на практике.

    • @user-cg1pq2kh6t
      @user-cg1pq2kh6t Před rokem

      полный бред, никто вам не позволит этого сделать

    • @orionpro79
      @orionpro79 Před rokem +1

      @@user-cg1pq2kh6t бот?

  • @goedekoop501
    @goedekoop501 Před 3 lety +3

    Побольше видео с задачками, топ🔥🔥🔥

  • @darkside2436
    @darkside2436 Před 3 lety +14

    Топ контент!!! Ещё есть вопрос: когда тесты?

    • @UlbiTV
      @UlbiTV  Před 3 lety +2

      Трудно сказать, как время появится)

    • @darkside2436
      @darkside2436 Před 3 lety +1

      @@UlbiTV 😂

  • @M27B_our_victory
    @M27B_our_victory Před 3 lety +8

    Запиши видео по решению задач!)

  • @MrJackseI
    @MrJackseI Před 3 lety +10

    Благодарю за твои видео!

    • @UlbiTV
      @UlbiTV  Před 3 lety +1

      Спасибо!

  • @forellko8600
    @forellko8600 Před 2 lety +1

    Очень крутой контент! Спасибо!

  • @user-race-Vulcan
    @user-race-Vulcan Před 3 lety +2

    6:50 Бро, спасибо огромное что поставил пробел после знака присваивания(связывания)..., у меня аж глаз чуть не задергался...

  • @fkinggaming934
    @fkinggaming934 Před 2 lety

    Круто, познавательно и интересно. Я вместе с вами решал все задачки ) и много чего нового узнал для себя. По больше бы подобных видосов !

  • @redhook777
    @redhook777 Před 3 lety +1

    Лайк! Ждём видос про задачи!!!

    • @UlbiTV
      @UlbiTV  Před 3 lety +1

      Спасибо!

  • @HatWriter
    @HatWriter Před 3 lety +1

    Спасибо за видео. Многое для себя подчеркнул. И что стоит подтянуть.

  • @samoyed1
    @samoyed1 Před 3 lety +12

    const withoutRepeat = array => array.filter(x => array.filter(y => y === x).length === 1)

    • @artemalesenko9855
      @artemalesenko9855 Před 3 lety +1

      У меня только такое вышло
      function withoutRepeat(array) {
      const repeat = arr.map((el, idx) => idx !== array.indexOf(el) && el)
      return arr.filter((el) => !repeat.includes(el))
      }

    • @user-ml9lh7zn7d
      @user-ml9lh7zn7d Před 3 lety

      const withoutRepeat = arr => arr.filter((x) => arr.indexOf(x) === arr.lastIndexOf(x))

  • @user-hw4rh5du2q
    @user-hw4rh5du2q Před 3 lety +1

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

  • @AGM140580
    @AGM140580 Před 2 lety +1

    Очень жду Ваших видео с решением задач!

  • @ТимСлим
    @ТимСлим Před 3 lety +14

    Думал будет испанский стыд за собеседуемого (мои тараканы 😁), но зря, интересное и как всегда - полезное видео! Спасибо Тимур!

    • @UlbiTV
      @UlbiTV  Před 3 lety +1

      Спасибо, Теска!)

  • @denhost5033
    @denhost5033 Před 2 lety

    Интересна тема видео с решениями задач, записывай еще ))) Спасибо за видео очень крутой и познавательный контент.

  • @irinamyskoooo
    @irinamyskoooo Před 3 lety +2

    очень крутые видео и канал !!!

  • @outward6339
    @outward6339 Před 2 lety +3

    const arr = [1,1,10,2,4,4,9,8,14,5]
    const arrf = arr.filter(i=>arr.filter(item=> item===i).length===1)
    console.log(arrf)
    Что можете сказать о таком способе?

  • @snatvb
    @snatvb Před 3 lety +4

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

    • @UlbiTV
      @UlbiTV  Před 3 lety +2

      С разными видами скобок все же лучше использовать стек

    • @alext1677
      @alext1677 Před 3 lety +3

      @@UlbiTV это если скобки идут друг за другом, расставив их по разным местам - уже не работает.

  • @azamatzhamakeev670
    @azamatzhamakeev670 Před 2 lety +1

    Ulbi the best!

  • @user-hh8fs6qg9v
    @user-hh8fs6qg9v Před 3 lety +29

    Задачи на джава скрипт оптимальным способом

  • @EctxD
    @EctxD Před rokem +1

    На задачах со скобками можно было посчитать сумму скобок и просто проверить на четность.

    • @user-rh4nk7os6u
      @user-rh4nk7os6u Před rokem

      у меня сразу в голову пришла идея на парность (если конечно не нужно указать где именно у нас ошибка)

  • @kirillgabov705
    @kirillgabov705 Před 3 lety +6

    32:00
    Я не уверен как работает in, но сложновато поверить что она работает за О(1)
    В худшем случае (когда все значения разные) он будет каждый раз поиск делать по количеству уникальных значений на данный момент, что тоже n в общем случае, так что сложность чуть меньше n^2

    • @untured6167
      @untured6167 Před 3 lety +1

      Если я правильно помню, то O(n) - это случай когда длительность обработки увеличивается линейно относительно длины обрабатываемого массива
      В этом случае можно решить почти O(n). Почти, потому-что сначала придётся отсортировать массив, а O сортировки может быть разным.
      У меня получилось так:
      function removeDuplicate(array)
      {
      function compNumber(a,b)
      {
      if (a>b) return 1;
      if (a==b) return 0;
      if (b>a) return -1;
      }
      let result = new Array
      let current = null
      let add = false
      array.sort(compNumber)
      for(let i = 0; i

    • @DmitriiRepnikov
      @DmitriiRepnikov Před 2 lety

      Оператор in в javascript поверяет наличие ключа в хеш-мапе. Это не поиск, там всегда либо есть такой ключ, либо его нет. Доступ по ключу в хешмапе происходит за O(1), как и во всех других языках программирования
      Другое дело что в некоторых языках программирования оператор in можно вызвать и в списках, что действительно уже не будет O(1), но это не тот случай, в js оператор in на списках не вызывают, так как это не имеет смысла, т.к. он не ищет элементы таким образом

  • @holinet6894
    @holinet6894 Před 3 lety +4

    А в задаче со скобками можно было так решить, вроде даже понятнее?
    function checkBrackets(str) {
    str = str.split('')
    let counter = 0
    for (let i = 0; i < str.length; i++) {
    const elem = str[i];
    if (elem == '(') {
    ++counter
    }else if (elem == ')') {
    --counter
    }
    if (elem == '{') {
    ++counter
    }else if (elem == '}') {
    --counter
    }
    if (elem == '[') {
    ++counter
    }else if (elem == ']') {
    --counter
    }
    }
    if (counter == 0) {
    return true
    }else {
    return false
    }
    }

    • @UlbiTV
      @UlbiTV  Před 3 lety +1

      Это неработающее решение, один счетчик для разных скобок

    • @Sunr1sen2
      @Sunr1sen2 Před 3 lety +1

      Раз уж юзаем методы массива, так юзаем) Можно конечно упороться и в строку вытянуть, но так более читаемо
      ну и доп скобки можно в фильтр прям запихивать
      function checkBrackets(str) {
      const arr = str.split('');
      const leftBracketsCount = arr.filter(item => item === "(").length;
      const rightBracketsCount = arr.filter(item => item === ")").length;
      return leftBracketsCount === rightBracketsCount;
      }

  • @frozeninside5004
    @frozeninside5004 Před 3 lety +2

    Поддерживаю видео о решении задач оптимальным способом

  • @cohomological46
    @cohomological46 Před 3 lety +3

    По задачам: видос по решению самых сложных ката с codewars _оптимальным_ способом.

  • @tyafizi
    @tyafizi Před 3 lety +14

    В конце была фраза: "на работе не встречается, редко что то такое приходится реализовывать". А чем тогда на работе джуны занимаются?

    • @vladnasadyk3541
      @vladnasadyk3541 Před 3 lety +10

      Кнопки двигают влево-вправо)

    • @MrRadiostep
      @MrRadiostep Před 3 lety +27

      делают 80% работы за 20% денег

    • @UlbiTV
      @UlbiTV  Před 3 lety +2

      @@MrRadiostep :D

    • @alexelkin2502
      @alexelkin2502 Před 3 lety

      У меня другой вопрос, - "Зачем тогда это на собесе обсуждать?"

  • @nikishiro8278
    @nikishiro8278 Před 3 lety +3

    Еще так можно решить задачу со скобками:
    const getBracketCount = (str, type) =>
    str.split('').reduce((acc, v) => {
    if (v === type) return acc + 1;
    return acc;
    }, 0);
    const checkEvenBrackets = (str) => {
    const openBrackets = getBracketCount(str, '(');
    const closeBrackets = getBracketCount(str, ')');

    return openBrackets === closeBrackets;
    };
    const result = checkEvenBrackets('((()))');
    console.log('result', result);

    • @kostyakozlov5289
      @kostyakozlov5289 Před 2 lety

      Ага, только если у тебя сначала закрывающиеся скобки, а значит не правильная последовательность, то твоя функция вернет не верное значение

  • @cseedrvr6627
    @cseedrvr6627 Před 3 lety +5

    Со скобками мне кажется можно было сделать просто на открывающуюся скобку +1 для закрывающейся -1, и на выходе должно получаться 0

    • @falsetrue7910
      @falsetrue7910 Před 3 lety +6

      А если будет вот такое выражение ")()()("?

    • @cseedrvr6627
      @cseedrvr6627 Před 3 lety +3

      @@falsetrue7910 ну да, для такого случая не сработает, но если условие просто чтобы для каждой закрытой скобки была открытая то пойдет

    • @nagalokgames8861
      @nagalokgames8861 Před 3 lety +4

      @@falsetrue7910 если счетчик будет меньше 0, на любой из итераций, сразу будет неправильная последовательность. так что решение со счетчиком корректное.

    • @Godrik99shadows
      @Godrik99shadows Před 3 lety +3

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

    • @arhim7650
      @arhim7650 Před 3 lety +1

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

  • @ilnurgabitov3264
    @ilnurgabitov3264 Před 3 lety +2

    Господа! У меня возник вопрос!
    Почему, человек работающий в этой отрасли 2 года, идёт на собеседование джуна?

    • @olgapolskolg1112
      @olgapolskolg1112 Před 3 lety +2

      Плюсую, тоже интересно. Она слишком хорошо разбирается для джуна.

  • @Sense1ko
    @Sense1ko Před 3 lety +5

    Так давай собеседования middle front / node js developer, бегло посмотрел, на канале только джуновские собесы, хотелось бы знать что ждёт нас дальше!)

  • @user-dl2fv2uc8o
    @user-dl2fv2uc8o Před 2 lety +1

    Спасибо, полезное видео!

  • @itsmekamikoto4940
    @itsmekamikoto4940 Před 2 lety +1

    Задача с массивом (удалить все чила , которые дублируется) я бы решил двумя способами :
    1. Создать Set от входящего массива , и для каждого элемента сета проверить если indexOf() и lastIndexOf() этого элемента во входном массиве равны - значит такой элемент единственный и добавить его в массив , который вернет функция в результате
    2. Отсортировать массив и использовав for () проитерироваться с начальным индексом итерации 0 и для каждого значения сравнить если индекс итерации не равен lastIndexOf() элемента в массиве тогда присвоить индекс итерации lastIndexOf() элемента , а если равен то добавить значине в конечный результат функции

    • @UlbiTV
      @UlbiTV  Před 2 lety +1

      Варианты хорошие, но неэффективные, квадратичная сложность

  • @MrDilord
    @MrDilord Před 3 lety +2

    По задачке с массивами. Имхо с объектом не очень читабельно if/else потом foreach с вложенным условием еще. Мне кажется самый простой вариант (хотя в плане скорости он серьёзно уступает):
    function filter (array) {
    const result = []
    for ( let i = 0; i < array.length; i++) {
    const items = array.filter((el) => {
    return el === array[i]
    })
    if (items.length < 2) result.push(array[i])
    }
    return result;
    }

    • @UlbiTV
      @UlbiTV  Před 3 lety +1

      Ключевой момент как раз в скорости

  • @aruh5baruh528
    @aruh5baruh528 Před 3 lety +1

    со скобками первое что в голову пришло
    ставим счетчик = 0
    за каждую '(' + 1 за каждую ')' - 1, если в любой момент -1 то false, если в конце не 0 то false, остальное true
    ------------------------------------
    а если брать с разными скобками,
    то логика почти таже, правило с отрицательным счетчиком остается
    только массив счетчиков и как только идет смена типа скобки '(' то подключается следующий,
    при закрывающейся смене скобки должен быть 0 иначе false
    в конце если массив не 0 или счетчик не 0 то false, иначе true

  • @user-gz9ky5zg7k
    @user-gz9ky5zg7k Před 3 lety +3

    Топ канал, раньше минина канал был фаворитным, теперь этот)

    • @UlbiTV
      @UlbiTV  Před 3 lety +1

      Спасибо!

  • @tricky_pie
    @tricky_pie Před rokem

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

  • @demonicchannel5372
    @demonicchannel5372 Před rokem +1

    Задачу со скобками можно решить без циклов и счетчиков.
    function checkBrackets(str) {
    if (str.split(" ").filter(i => i === (" ").length === str.split('').filter(i => i === ')').length) {
    return true
    }
    return false
    }

  • @einh213viperz8
    @einh213viperz8 Před 3 lety +1

    Как то замудрёно со скобками, не проще под каждый вид скобок завести простую переменную аля int8/16 и инкриментить/декриментить на 1 при встрече ( и ) соотвественно, а в результат проверку на 0 этой переменной.

  • @bbnowhat
    @bbnowhat Před rokem

    С удалением повторяющийся элементов в массиве можно:
    Перебирать массив со 2го по предпоследний элемент и если каждый очередной элемент не равен предыдущему или следующему то записываем в новый массив значение, это если упорядоченный исходный массив

  • @user-kt7fm6ow4p
    @user-kt7fm6ow4p Před 7 měsíci

    Можно доп проверку сделать в задаче со скобками. Посмотреть длину строки. Если нечетное число, сразу вернуть false, чтобы цикл даже не запускать, не тратить время, вдруг строка оч длинная

  • @evgeniyn1542
    @evgeniyn1542 Před 3 lety +1

    Супер, интересное собеседование. Плюсую за решение задачек.

    • @UlbiTV
      @UlbiTV  Před 3 lety +2

      Спасибо!

  • @looking_at_the_sky
    @looking_at_the_sky Před rokem

    Спасибо за интересный и познавательный ролик. Много хорошей пищи для размышлений и обучения :>

  • @NoakSV
    @NoakSV Před 2 lety

    Спасибо, было интересно!

  • @user-jy2rh9cu1o
    @user-jy2rh9cu1o Před rokem +1

    Задачу со скобочками можно решить через filter и сравнение длинны массивы 2 полученных массивов. А уникальные массивы задача с кодварса, легко решается, спасибо кодварсу :D => return arr.filter((x,i,array) => array.indexOf(x) === array.lastIndexOf(x))

    • @UlbiTV
      @UlbiTV  Před rokem

      Плохое решение, хоть и выглядит красиво
      Циклы вложенные в цикл

  • @oleksandrvoichyshyn7486
    @oleksandrvoichyshyn7486 Před 3 lety +2

    Жду больше решений разных задач тут

  • @keeprock1529
    @keeprock1529 Před rokem

    Решение задачи с дубликатами (23:40) на Typescript и разными edge case. Time complexity будет O(n) + O(n) за счет двух циклов обхода. Что в итоге получается как O(2n). Далее, 2-ка из 2n отбрасывается и получается просто O(n). O(n^2) это когда внутри цикла цикл. Подряд два цикла друг за другом не дают O(n^2), а складываются между собой.
    const arr = [1, 1, 1, 0, 3, 4, 5, 5, 6, 7]
    const arr2 = [0]
    const arr3 = [] as number[]
    const arr4 = [1, 1, 1, 1, 1, 1, 1, 1]
    function withoutRepeat(arr: T[]): T[] {
    const arrItemCountDict = new Map();
    arr.forEach((item, i) => {
    arrItemCountDict.set(item, arrItemCountDict.has(item) ? arrItemCountDict.get(item) + 1 : 1)
    })
    return arr.filter((item) => arrItemCountDict.get(item) === 1)
    }
    console.log(withoutRepeat(arr))
    console.log(withoutRepeat(arr2))
    console.log(withoutRepeat(arr3))
    console.log(withoutRepeat(arr4))

  • @vladprodan7010
    @vladprodan7010 Před 3 lety +16

    Что-то мало совсем вопрос по Реакту было))

    • @jorgen5462
      @jorgen5462 Před 3 lety +4

      Автор ещё не выучил. Он же не практикующий программист.

    • @grenadier4702
      @grenadier4702 Před 3 lety +1

      @@jorgen5462 что за бред :)

    • @UlbiTV
      @UlbiTV  Před 3 lety +2

      @@jorgen5462 хорошая шутка

    • @CyberGenius777
      @CyberGenius777 Před 3 lety +1

      @@jorgen5462 Я думаю, он с синьорами посоревнуется еще)

  • @DennisTurbay
    @DennisTurbay Před rokem +1

    Классное собеседование! Оба участника себя чувствовали комфортно, главный как по мне фактор в собесах.

  • @yanmezinskiy8817
    @yanmezinskiy8817 Před 2 lety +1

    Задача на удаление повторяющихся цифр в массиве
    const removeDuplicate = (arr) =>{
    let result = [];
    arr.forEach(num => {
    if(result.includes(num)){
    result = result.filter(item => item !== num)
    } else {
    result.push(num)
    }
    })
    return result
    }

  • @user-ou5ok8fs9c
    @user-ou5ok8fs9c Před 3 lety +3

    Спасибо за собеседование

    • @UlbiTV
      @UlbiTV  Před 3 lety +1

      и вам спасибо за отзыв)