СОБЕСЕДОВАНИЕ НА FRONTEND РАЗРАБОТЧИКА | REACT TYPESCRIPT

Поделиться
HTML-код
  • Опубликовано: 19 июн 2024
  • В данном видео мы проведем собеседование на frontend разработчика. Зададим вопросы разной сложности и на разные темы (javascript, typescript, react), и определим уровень кандидата.
    Если вы хотите записаться на подобное собеседование - переходите в мой Телеграмм канал:
    telegram.me/ayub_begimkulov_c...
    Таймкоды:
    00:00-01:07 - Интро
    01:07-04:19 - Задача на id функцию
    04:19-09:23 - Сортировка массивов
    09:23-18:47 - Пишем функции map/filter через reduce
    18:47-23:54 - Говорим про промисы
    23:54-28:49 - Promise.all/Promise.allSettled
    28:49-46:17 - Пишем Promise.all с нуля
    46:17-57:48 - Таймер на React
    57:48-01:01:41 - Говорим про React.memo и ререндеры
    01:01:41-01:07:03 - Задача на бесполезный useCallback
    01:07:03-01:18:51 - Задача на ref + useEffect
    01:18:51-01:23:24 - Подводим итоги

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

  • @ayub_begimkulov
    @ayub_begimkulov  Год назад +4

    Друзья, как правильно заметили, пропустил пару ошибок:
    - Типизация map - колбэк не должен возвращать `T`, а совсем другой дженерик.
    - filter не должен пушить `res`, а `value`.

    • @user-pw8qb2ci1u
      @user-pw8qb2ci1u Год назад +5

      Можешь объяснить, почему ты сказал, что в коллбэке map все параметры обязательны? Ведь я могу прокидывать туда коллбэки, которые не то, что индекс не используют, но даже сам elem

    • @user-vu6hn4ul2i
      @user-vu6hn4ul2i Год назад

      @@user-pw8qb2ci1u плюсую

    • @andreilatosh58
      @andreilatosh58 Год назад

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

    • @andreilatosh58
      @andreilatosh58 Год назад

      Мне. Я бомж без мозгов могу решить данную задачу за один символ. Слишком простая задача

    • @andreilatosh58
      @andreilatosh58 Год назад

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

  • @user-vq8zi4ne7s
    @user-vq8zi4ne7s Год назад +43

    Хороший собес 👍 19 лет, пол года стаж - отлично и бодро отвечает

    • @user-vq8zi4ne7s
      @user-vq8zi4ne7s Год назад +21

      P.S Я с такими ответами на сеньора проходил, а тут миддла не дали, я протестую! 😂 Не забывайте, hard скиллы лишь часть из того, что учитывается на собеседовании, можно взять хитростью(вычеркнуто) - софт скиллами, амбициями и просто по-человечески понравится, ведь чем выше позиция - тем меньше кода и тем больше созвонов 😂

    • @ayub_begimkulov
      @ayub_begimkulov  Год назад +2

      @@user-vq8zi4ne7s Ахахаха, ну тут все от позиции зависит.

    • @user-li2dh2ox8j
      @user-li2dh2ox8j Год назад +2

      @@user-vq8zi4ne7s синеры занимаются кодом еще больше чем все остальные просто они пишут код за 10 минут который Джуны за три часа делают и этот код Джунов в два раза длиннее кодов синеров

    • @vladbreez4036
      @vladbreez4036 Год назад

      ​@@user-vq8zi4ne7sвидимо какая-то очень слабая команда или компания.
      Ответы здесь джуновские...

    • @hitotsu5729
      @hitotsu5729 Год назад

      слабый, я с 18 сразу залетел)

  • @segabelka8095
    @segabelka8095 Год назад

    Ты как всегда делаешь великое дело, спасибо за контент)

  • @user-cm8nr4fe8j
    @user-cm8nr4fe8j Год назад +2

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

  • @promoabys
    @promoabys Год назад +3

    Мне собес понравился. Задачки были интересные.
    Расширяют практику восприятия ))
    Спасибо

  • @dr.livesey5157
    @dr.livesey5157 Год назад

    Спасибо за контент! Ты делаешь великое дело

    • @ayub_begimkulov
      @ayub_begimkulov  10 месяцев назад

      Да просто видосы же по программированию делаю, ничего великого вроде) Но спасибо!

    • @dr.livesey5157
      @dr.livesey5157 10 месяцев назад +1

      @@ayub_begimkulov ты обучаешь людей, дааешь им знания, тем самым двигая прогресс вперед. Это действительно благое дело

  • @ILEAN123
    @ILEAN123 Год назад +30

    Формат неплохой, я так понимаю всё было поставлено на решение задачек и дискуссию об устройстве языка. Советую тебе добавить блок об опыте работы, по моему мнению это гораздо важнее чем, например, знания map, filter и reduce. Может эта часть и хромала, но на работе ты быстро загуглишь про эти методы и за 10 минут поймешь, а вот различные нюансы разработки, частые юзкейсы ты за 10 минут не загуглишь.
    Также совет другим людям - не пугайтесь задачек и не думайте, что спрашивать будут только это, у всех разные подходы к собеседованиям, у меня например было собеседование в формате диалога с тимлидом, обсуждали решенные задачи, технологии и процесс разработки. А кто-то вас пошлёт на литкод и попросит объяснить внутреннее устройство браузера. Также забудьте о грейдах и фразах "мидлом тут не пахнет", в реальности так не работает, грейды от компании к компании разные, где-то их вообще нет, не советую добавлять эти приставки себе в резюме или на собеседовании.
    Единственный способ определить свой уровень - сделать резюме, понять вилку зп и пройти собеседование, а дальше можете себе называть кем угодно :) Хоть мидлом, хоть синьором

    • @foryoutubeandothers
      @foryoutubeandothers Год назад +1

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

    • @ILEAN123
      @ILEAN123 Год назад

      @@foryoutubeandothers трактовка джуна очень условная, а если я полгода-год отработал я уже кем-то другим должен считаться? Везде по-разному) Тем более конкретно в этом видео у человека полгода в компании и полгода на фрилансе

    • @ILEAN123
      @ILEAN123 Год назад

      @@foryoutubeandothers такое впечатление складывается только у немотивированных айтишников)

    • @ayub_begimkulov
      @ayub_begimkulov  10 месяцев назад +1

      Отличный совет! Спасибо, что поделился мыслями!

  • @front_interviews
    @front_interviews Год назад +1

    Очень благодарен Вам!

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

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

  • @orcsamuro9687
    @orcsamuro9687 9 месяцев назад

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

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

    хороший демотиватор спасибо

  • @diggerdog001
    @diggerdog001 Год назад +20

    «Я думал ты так и сделаешь» ты же проводишь собеседование, покажи ему как можно было сделать и все. А эти комментарии, какую то токсичность вызывают. Задание можно выполнять разными способами - он выбрал этот

    • @vladbreez4036
      @vladbreez4036 Год назад +1

      Если учитывать что это упор был на то что это мидл, то лол, всё правильно он сказал. Учитывая что он изначально делал замыкание, а потом просто не допёр как его использовать до конца, то блин. В итоге это выглядит как чел, который вообще не разбирается в механизме замыкания.
      На моё субъективное мнение это джун с опытом и даже не стронг джун.

    • @ruslanshikhaliev9341
      @ruslanshikhaliev9341 11 месяцев назад +3

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

    • @user-chf7z61vnd6h8v
      @user-chf7z61vnd6h8v 9 месяцев назад

      ​@@vladbreez4036какой джун, он на стажёра с натяжкой тянет...

  • @user-gw4fx8ms3q
    @user-gw4fx8ms3q Год назад +4

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

    • @ayub_begimkulov
      @ayub_begimkulov  Год назад

      Кандидат вообще молодец, местами чуть пробелы подтянуть - и будет вообще топ!

  • @grenadier4702
    @grenadier4702 Год назад +1

    Я бы еще добавил условие для задачи с promiseAll: сделать типизацию, что если передаешь массив промисов [number, string], то в then летит так же [number, string]
    Как вариант:
    type AwaitedPromises = {
    [K in keyof T]: Awaited
    };
    function promiseAll(promises: T) {
    return new Promise(...)
    }
    Также, может, лучше писать таймер через рефу, а не эффект? Иначе придется лишний раз рендерить компонент, когда запускаешь таймер, так как меняется состояние isStarted
    const [second, setSecond] = useState(0);
    const timerId = useRef();
    const startTimer = () => {
    if (timerId.current === undefined) {
    timerId.current = setInterval(() => {
    setSecond((sec) => ++sec);
    }, 1000);
    }
    };
    const stopTimer = () => {
    if (timerId.current !== undefined) {
    clearInterval(timerId.current);
    timerId.current = undefined;
    }
    };
    useEffect(() => stopTimer, []); // очищаем таймер, если компонент демонтируется

  • @starunski_
    @starunski_ Год назад +1

    Cool !

  • @offiza8631
    @offiza8631 Год назад +4

    Привет, отличное видео! Подскажи, разве на 1:01:30 есть ререндер компонента Button, на сколько я вижу там только первичный рендер. Или я чего-то не понял?

    • @user-fx1fl2or9j
      @user-fx1fl2or9j 6 месяцев назад

      Да и я чтото не понял

  • @ArtemMindsurfer
    @ArtemMindsurfer 3 месяца назад

    интересная в конце задачка последняя)

  • @thimerlanmatyakubov8940
    @thimerlanmatyakubov8940 Год назад +1

    Top person

  • @miloman1995s
    @miloman1995s Год назад +4

    15:30 я думал вы напишите что то типа этого:
    Array.prototype.mymap = function (callback) {
    return this.reduce((resultArr, currentElement, index) => {
    resultArr.push(callback(currentElement, index, this));
    return resultArr;
    }, []);
    };

  • @multtanker6365
    @multtanker6365 Год назад +25

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

    • @h4x0rlol
      @h4x0rlol Год назад

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

  • @svgaryaev
    @svgaryaev Год назад

    20:50 полагаю, имелось в виду, что коллбэк для res и rej можно передать в одном then двумя аргументами
    такое будет работать

  • @sasdasaasdasdasdadad5354
    @sasdasaasdasdasdadad5354 Год назад +2

    привет такой вопрос к тебе . как правильнее писать isVisible && hello
    или isVisible ? hello : null или без разницы

  • @multtanker6365
    @multtanker6365 Год назад +7

    Я кста еще не помню точно, собеседующийся в цикле forEach написал break, его же вроде нельзя прерывать?

    • @kawaikaino5277
      @kawaikaino5277 Год назад

      break-a там и в помине нет, только в счетчиках for

    • @multtanker6365
      @multtanker6365 Год назад

      @@kawaikaino5277 31:15 открой

    • @kawaikaino5277
      @kawaikaino5277 Год назад

      @@multtanker6365 не))) я к тому, что в переборах .map, .filter .foreach нет break. В плане - ты прав)

    • @multtanker6365
      @multtanker6365 Год назад

      @@kawaikaino5277 ааа)понял))

    • @ayub_begimkulov
      @ayub_begimkulov  Год назад

      break потом убрали, насколько я помню. Но в целом верно.

  • @maksim9078
    @maksim9078 Год назад +4

    Самому 18 лет, 2 года опыта, сейчас работаю на позиции middle frontend разработчик и хотят попробовать меня на позиции senior. В принципе сам давно алгоритмы не решал, но задачи показались не сложными, парень молодец, показал не плохо, но можно было лучше. С map, filter, сам задачи на собеседовании сам даю :)
    Есть вопрос к типизации map. Разве мы не должны создать ещё один дженерик помимо T? Ведь cb не обязательно возвращает тот же тип.

    • @antohnyt2067
      @antohnyt2067 Год назад +4

      Жесть у меня от твоего комментария депрессия. 18 лет - сеньор. Я в 26 не могу джуном работу найти

    • @nick-ei2og
      @nick-ei2og Год назад +1

      @@antohnyt2067 не думай о всякой xeрне и просто упорно прокачивай навыки. Если прям слишком долго не можешь найти, возможно у тебя пет-проекты не оч сложные, резюме так себе изложено, мало откликов в день оставляешь (у меня это было 100-200 штук за вечер) или ты просто ещё сыроват и мало знаешь. Новичкам сложнее всего сейчас найти, нужно целый ряд технологий знать.

    • @luckytima2315
      @luckytima2315 Год назад

      @@antohnyt2067 Рисуй опыт в резюме и все, знакомый 2 года учил swift, потом начал делать отклики, на джуна нигде не брали, нарисовал опыт, прошел собес на миддла спрашивали вообще базу самую, больше про опыт прошлый, он нормально ответил , спокойно работает за 190к мидлом.

    • @inqvisitor3722
      @inqvisitor3722 Год назад +5

      @@antohnyt2067 джуны просто никому не нужны. А в 18 сеньор - это что-то из области фантастики, я бы не верил всяким коментам.

    • @669pain
      @669pain Год назад +2

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

  • @user-vc6mo5nl8g
    @user-vc6mo5nl8g Год назад +3

    Я понял только одно, что про перерисовки - ничего не знаю! У тебя конечно Крутая экспертиза! Виден скилл с первых слов…. Братан, можешь сделать об этом подробное видео? Как дебажить такие вещи, как работать с плагином(react dev tools)в Гугл хром… Как решать все самые частые проблемы с перерисовками и ререндарами

    • @user-vc6mo5nl8g
      @user-vc6mo5nl8g Год назад +1

      ну реально контента на эту тему - в ютубе просто нет..

    • @user-gw4df2de3k
      @user-gw4df2de3k Год назад

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

  • @Fanzetess
    @Fanzetess Год назад +1

    касательно sort на 9 минуте))) Меня вынесло с того, что говорил автор про a и b (перепутал их) и как работает сам сорт)))

    • @ayub_begimkulov
      @ayub_begimkulov  Год назад

      Привет. Не мог бы ты раскрыть мысль? Что тебя так сильно удивило? Как и было сказано на видео, я сам всегда вспоминаю принцы работы sort экспериментальным путем.

  • @user-mo1gm8hv7l
    @user-mo1gm8hv7l 10 месяцев назад +2

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

  • @user-uo7tg9tk3j
    @user-uo7tg9tk3j Год назад +7

    Просмотрел до 8:54 и что-то интервьюер растекается и плывет. Парень, если не можешь четко и обоснованно изложить мысль, делая замечание, то лучше промолчать, все же. А то переписал тот же sort, сделал все то же самое, что и парнишка, но с такой академической претензией и гонором, что дышать нечем.

    • @ayub_begimkulov
      @ayub_begimkulov  Год назад +1

      На самом деле смешно, как люди могут видеть очень разные вещи в одном ролике).
      Я хотел объяснить, как я обычно вспоминаю формат колбэка, передаваемого в sort, на примере. Постараюсь в дальнейшем локаничнее выражаться.

  • @NikIzrailev
    @NikIzrailev 8 месяцев назад

    Спасибо за интервью!
    В promiseAll есть почти незаметная ошибка. Если в оригинальный Promise.all придет что-то не-thenable (например, просто едиинчка: Promise.all([1])), то он обернет это значение в промис и сразу зарезолвит. В нашем решении же будет ошибка "promise.then is not a function". Это поправится, если на строке 77 вместо promises[i] написать Promise.resolve(promises[i])

  • @grenadier4702
    @grenadier4702 Год назад +3

    С map забыли вывести возвращаемый тип. В вашем случае всегда будет возвращать T[], что неправда
    function map(arr: T[], callback: (item: T, idx: number, arr: T[]) => R) {
    return arr.reduce((result, item, idx, arr) => {
    result.push(callback(item, idx, arr));
    return result;
    }, [] as R[])
    }

  • @dmytroz.2084
    @dmytroz.2084 Год назад +6

    про реализацию фильтра, ошибочка. Пушим не res, а сам value в acc

  • @Abdul-hy4cy
    @Abdul-hy4cy Год назад

    55:41 - тут парню чутка совсем не повезло. Если бы он не добавил условие if(!isStarted), то у него бы работало. Дело в том что во время cleanup, isStarted = true потому что шел таймер. isStarted станет false только на следующем рендере, а как Аюб ранее говорил: "useEffect срабатывает перед обновлением компонента, при смене массива зависимостей". Поэтому если убрать то условие, про которое я выше написал, всё заработает.

  • @user-tj7nh1ty7q
    @user-tj7nh1ty7q Год назад +4

    Вполне бодрячком парень, соображалка на уровне. Не так давно видел сеньор говорил как раньше собесы были , пришел спросили типы данных и еще пара вопросов и оффер получил, а сейчас он же с 20-ти летним опытом не прошел)). Душнилы в общем .....

    • @threehundredbucks3212
      @threehundredbucks3212 Год назад

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

  • @aisennogoibaev1924
    @aisennogoibaev1924 Год назад +1

    Привет) А есть вопросы с ответами в текстовом формате?

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

    Второе название для видео - Сеньёр уничтожает ЭГО миддла с полу годовым коммерческим опытом )

  • @SmotritelTube
    @SmotritelTube Год назад +6

    почему в колбэке параметры можно оставлять обязательными ?

    • @ayub_begimkulov
      @ayub_begimkulov  Год назад

      Потому что они всегда будут переданы в колбэк. А используешь ты их или нет - уже твое дело.
      Тут просто нужно понимать, как работает TS. Когда у тебя есть функция, которая принимает 2 аргумента, а ты передаешь туда 3, то TS будет ругаться, так как это явная ошибка.
      Но если ты ожидаешь где-то колбэк, в который будет передаваться 3 параметра, а туда передают функцию с 2-мя, то все норм. Так как 3-й тебе может быть вообще не нужен. Главное, чтобы результат функций был одинаковый.
      Например в посмотри типизацию addEventListener, например, должно понятнее стать.

    • @SmotritelTube
      @SmotritelTube Год назад

      @@ayub_begimkulov ааа, понял, спасибо за подробный ответ!! а где удобнее всего посмотреть про то как типизирован addEventListener?

  • @MisaNia25
    @MisaNia25 Год назад +1

    Где он учился?

  • @Dimashiii
    @Dimashiii Год назад +1

    Здравствуйте можете объяснить почему на задачке с мап индекс нельзя сделать опционально

    • @ayub_begimkulov
      @ayub_begimkulov  Год назад

      Потому что индекс туда передается всегда. Ты можешь его не использовать - но это уже твое дело.
      Индекс в колбэк должен всегда передаваться. Иначе если человек его вдруг решит заюзать - вылетит ошибка.

    • @Dimashiii
      @Dimashiii Год назад

      Понял спасибо

  • @MaximPletenev
    @MaximPletenev Год назад +1

    Разве в filter функции при res === true надо пушить res, а не value?

  • @ebadmaev
    @ebadmaev Год назад

    на 56 минуты Вы сказали, что функция - примитив, верно ли?

  • @user-vu6hn4ul2i
    @user-vu6hn4ul2i Год назад +1

    15:45 колбек в map не должен возвращать тип T, там, скорее unknown

    • @grenadier4702
      @grenadier4702 Год назад +1

      Надо вывести отдельный тип через дженерик
      function map(arr: T[], callback: (item: T, idx: number, arr: T[]) => R) {
      return arr.reduce((result, item, idx, arr) => {
      result.push(callback(item, idx, arr));
      return result;
      }, [] as R[])
      }

    • @ayub_begimkulov
      @ayub_begimkulov  Год назад

      Тут правильно подметили, нужен отдельный тип. Проглядел этот момент.

  • @andTutin
    @andTutin Год назад +28

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

    • @ayub_begimkulov
      @ayub_begimkulov  Год назад +3

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

    • @user-sp1vi7fg2u
      @user-sp1vi7fg2u Год назад

      @@ayub_begimkulovЧестно говоря, немного в шоке как мои коллеги по цеху, айтишники (читать: веб-макаки, «любители сыров по 500), любят плодить себе конкуренцию … Это только в АйТи такое есть (наверное)

    • @nurymnurlan3320
      @nurymnurlan3320 Год назад +1

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

  • @Lloyd2281
    @Lloyd2281 Год назад +1

    Аюб вы грепплингом увлекаетесь?)

    • @ayub_begimkulov
      @ayub_begimkulov  Год назад

      Ага, увлекаюсь.

    • @Lloyd2281
      @Lloyd2281 Год назад

      @@ayub_begimkulov круто, просто наткнулся на видео где были соревнования по грепплингу. Смотрю что то имя знакомое) Круто, вы очень разносторонняя личность 👍

  • @nim3981
    @nim3981 Год назад +4

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

    • @user-sp1vi7fg2u
      @user-sp1vi7fg2u Год назад

      АйТи пропаганда дает о себе знать 😂

    • @ayub_begimkulov
      @ayub_begimkulov  Год назад

      Да, есть такое.

  • @CyberGenius777
    @CyberGenius777 Год назад

    С секундомером можно было бы сделать проще:
    useEffect(() => {
    let interval;
    if (isStarted) {
    interval = setInterval(() => {
    setTime((prev) => prev + 10);
    }, 10);
    }
    return () => clearInterval(interval);
    }, [running]);
    Делать проверку на !isStarted нет смысла, потому что по нажатию у тебя isStarted в true

    • @alexanderonishchuk9293
      @alexanderonishchuk9293 Год назад

      ти сам у свому ж прикладі зробив цю перевірку

    • @inqvisitor3722
      @inqvisitor3722 Год назад

      setInterval не рекомендуют использовать

    • @PlusTVPlus
      @PlusTVPlus Год назад

      @@inqvisitor3722 смотря для каких целей использовать. В данном случае для такого таймера - самое то, чтоб не заморачиваться.
      Дело в логике работы самого интервала - он не ждёт выполнениея колбэка, и здесь могут возникать сюрпризы)

    • @ayub_begimkulov
      @ayub_begimkulov  10 месяцев назад

      так у тебя же та же проверка, просто isStarted, вместо !isStarted. И так и так писать можно, по итогу работать будет одинаково)

  • @demiurgen13
    @demiurgen13 Год назад +2

    В сортировке ошибка касаемо что такое а и b. На самом деле a - это второе число, а b - это первое

    • @ayub_begimkulov
      @ayub_begimkulov  Год назад

      Насколько я помню, там нету четкого правила.
      Если 0, то оставляем как есть. Если 1 - то a должен быть после b, ну и -1 то a перед b.

    • @demiurgen13
      @demiurgen13 Год назад +2

      @@ayub_begimkulov Да, все верно, но в функцию сравнения они передаются именно в таком, контринтуитивном порядке)

    • @ayub_begimkulov
      @ayub_begimkulov  Год назад

      @@demiurgen13 Прикольно. Не знал про это.
      Я как и сказал в видосе, всегда экспериментальным путем понимаю, как что работает.
      Спасибо за фидбэк!

  • @co181
    @co181 Год назад

    объясните в чем прикол писать функции мар или filter если их просто можно использовать уже готовыми?

    • @ayub_begimkulov
      @ayub_begimkulov  Год назад

      Нет прикола - просто проверка знаний.
      Почему именно map/filter? Потому что уже все знаю как они работают и не надо объяснять алгоритм.

  • @v.demchenko
    @v.demchenko Год назад

    Привет, ведешь менторство? Хотел бы поучиться у тебя)
    Естественно не бесплатно)

  • @Danny-uc6kx
    @Danny-uc6kx Год назад

    а что в результате? мидл то или нет? какой оклад?

    • @ayub_begimkulov
      @ayub_begimkulov  10 месяцев назад

      Это моковое собеседование было же. Я в конце говорил, что до мидла чуть не дотягивает (имхо), но можно быстро до него вырасти.

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

    Посмотрев 2 задачи, и по ответам. Я думаю что он Джун, Джун+...

  • @Abdul-hy4cy
    @Abdul-hy4cy Год назад

    1:01:50 - у меня не сошлось тут. Что с useCallback, что без него button рендерится 2 раза как Аюба и при нажатии на кнопку clickMe, повторного рендера button не происходит. Хотя и у Аюба его тоже не происходит, но он говорит что происходит. То есть рендер Button происходит только 1 раз в случае mount, в случае Аюба 2, потому что у него strict mode включен - но суть одна. Button рендерится 1 раз при mount'e и при нажатии на клик не рендерится, что с useCallback, что без.
    Я это видео 5 раз пересматривал и 2 раза запомнил такое поведение и только сейчас дошли руки написать комент. Я же не один с таким поведением? И ещё, Аюб говорит: "Перерендера не будет". Но он не проверяет этого и идет дальше. Понимаю senior туда сюда, но интересно разобраться.

    • @ayub_begimkulov
      @ayub_begimkulov  Год назад

      Привет, а можешь подробнее рассказать, что у тебя не сошлось, не совсем понял из твоего сообщения?
      Я добавил useCallback на onClick и спросил у Андрея (кандидат) «в таком случае не ререндерится?», он ответил «да», с чем я согласился.
      Мы ведь тоже самое и сказали? Рендерится только при Маунте)
      Или я тебя как-то не так понял?

    • @Abdul-hy4cy
      @Abdul-hy4cy Год назад

      @@ayub_begimkulov ты на 1:01:20 - спрашиваешь Андрея: "onClick каждый раз будет новым. И в итоге будет ререндерить или нет?". Андрей говорит будет. Дальше ты соглашаешься и говоришь: "Button ререндерится". Хотя не не ререндерится по вызову функции. Не хочу душить, просто я внимательно слушаю и смотрю. И меня это запутало. Хотя в прошлом комментарии ты сказал, что ты спросил «в таком случае не ререндерится?». Но ты спросил будет ли onClick ререндить Button и он сказал да.
      Извини что задушнил :D

    • @TarasovFrontDev
      @TarasovFrontDev 8 месяцев назад

      ​@@Abdul-hy4cyу меня такое же мнение сложилось во время просмотра. Но я не перепроверял.
      А по последней задаче нет вопросов? Я не понял смысла компонента, ведь если придёт новая функция, то новый слушатель не создастся.

    • @Abdul-hy4cy
      @Abdul-hy4cy 8 месяцев назад

      @@TarasovFrontDev я уже не помню, не хочу погружаться обратно в контекст этого т.к. для меня пока что, это не имеет значение

  • @oogway4894
    @oogway4894 Год назад

    что за трек в начале?

    • @ayub_begimkulov
      @ayub_begimkulov  10 месяцев назад

      мой видео-редактор ставил, сам не знаю)

  • @alexander551
    @alexander551 Год назад

    Ну с первой задачи про айди я уже всё понял :/
    Лично я в IT ровно год и позиционирую себя как миддл. Похоже, не преувеличиваю свои способности.

    • @ayub_begimkulov
      @ayub_begimkulov  Год назад

      Я бы не смотрел на опыт, 1 год опыта может быть очень разный.
      Попробуй составить резюме и пройти собесы. Так можно будет точно определить свой уровень.

    • @ruslanshikhaliev9341
      @ruslanshikhaliev9341 11 месяцев назад

      стратегия так себе, тут не HR-ы сидят, перед нами писей махать не надо)) у себя в проекте ты и тех и тим лид и заказчиком можешь быть и что это будет означать? Если любишь выеbivatься, а не саму разработку, то в принципе ведешь себя соотвественно)

  • @Abilovv599
    @Abilovv599 Год назад

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

    • @ayub_begimkulov
      @ayub_begimkulov  10 месяцев назад

      У всех же понимание уровней разное)

  • @user-sp1vi7fg2u
    @user-sp1vi7fg2u Год назад

    Ну я первую работу нашел в 17, сейчас 18, что дальше ? Я буду синьор в 19-20 ?)

    • @airpodsclub6443
      @airpodsclub6443 Год назад

      не в возрасте дело браточек

    • @user-sp1vi7fg2u
      @user-sp1vi7fg2u Год назад

      @@airpodsclub6443Спасибо, кеп

    • @robotiksillya8363
      @robotiksillya8363 Год назад

      @@airpodsclub6443 а в чем

    • @andreilatosh58
      @andreilatosh58 Год назад

      Ну тебе от природы дан гениальный мозг просто
      А кому то нет. Им нужны деньги на образование чтобы прокачать мозг
      Это законы природы. Продолжай в том же, и ускорить эволюцию

    • @alexander551
      @alexander551 Год назад

      @@andreilatosh58 не мозг, а сильная мотивация + произошло случайное во времени событие - роды. Именно это позволило парню в данный момент в 18 лет быть мидлом.

  • @Abdul-hy4cy
    @Abdul-hy4cy Год назад

    Ayub какая у тебя мотивация чтобы вести youtube канал? Ты же senior-разраб, сидел бы и лутал ЗП. Зачем на ютубе ещё работать?

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

    Сортировка. Сейчас я говорит покажу тебе как я до этого дошёл, и херню какую то понес

  • @user-vj7ec1ms4d
    @user-vj7ec1ms4d Год назад +1

    Парень не знает замыкания, какой мидл? Если не знаешь и не понимаешь замыкания , то про реакт лучше даже вопросы не задавать. Такие разработчики потом удивляются почему переменная не так высчиталась в эффекте или в мемо.
    Ну хотя от таких мидлов, я спокоен за себя )

  • @ReaktorGaming86
    @ReaktorGaming86 Год назад

    Задачи, оторванные от реальности. На проектах дают какую-нибудь большую задачу, типа сделать огромную форму, которая в разных вкладках находится, и еще в диалоговых окнах - и вот пили это всё 2 дня в ограниченные сроки. На первый план там совсем другие проблемы приходят. Никто не будет над каждой мелкой функцией париться и следить, чтобы она не перерендеривалась. Работает - да и ладно. Было бы полезнее рассказывать о том, как писать код, чтобы максимально снизить вероятность ошибок. Собеседование крайне душное, а парня жалко))

    • @mtb-love-belarus
      @mtb-love-belarus Год назад +2

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

    • @threehundredbucks3212
      @threehundredbucks3212 Год назад +1

      @@mtb-love-belarus так и есть
      Даже дело не в функции, а в правильно сформулированном алгоритме, логике короче
      Если заранее максимально все не придумал, то потом придется все переписывать из-за маленькой мелочи, которую нужно добавить и которая рушит всю работу твоего кода

  • @MaximYalagin
    @MaximYalagin Год назад

    Я в 19 шпилил в игры и смотрел аниме и ходил в универ и до 25 не программировал . В итоге у меня начальник младше меня лол

    • @user-vu6hn4ul2i
      @user-vu6hn4ul2i Год назад

      Как будто, это что-то плохое

    • @MaximYalagin
      @MaximYalagin Год назад

      @@user-vu6hn4ul2i нет но если бы я пошел сразу на работу вместо универа я думаю было бы лучше

    • @user-vu6hn4ul2i
      @user-vu6hn4ul2i Год назад

      @@MaximYalagin не факт, может быть уже бы выгорел 🤷🏿‍♂️

    • @ayub_begimkulov
      @ayub_begimkulov  10 месяцев назад

      Главное дальше не упускать время)

  • @InSimpleWords_WebDev
    @InSimpleWords_WebDev Год назад

    Пи**ц, во что React превращается. Ну был же раньше нормальный жизненный цикл. Сейчас привязка хуков к файберу и мышление снэпшотами дико затрудняет понимание рендера.

    • @threehundredbucks3212
      @threehundredbucks3212 Год назад +1

      Ты про классовый подход ?
      Хз, тема рендеринга очень сложная на самом деле в реакте, жизненные циклы тут причем ?

    • @InSimpleWords_WebDev
      @InSimpleWords_WebDev Год назад

      @@threehundredbucks3212 Да, классовый подход был нагляднее. Сейчас наглядность ушла =(. Тема сложная, согласен. Но все равно это надо предоставлять в каком-то удобоваримом виде: что-то инкапсулировать, какие-то методы API сделать более простыми. А так, без поллитра не разберешься.

    • @threehundredbucks3212
      @threehundredbucks3212 Год назад

      @@InSimpleWords_WebDev ну я согласен что рендер очень сложная штука, на классах Я почти не писал, так как начал с реактом работать в начале года и собсна к этому времени классы остались только в Легаси или каких-то специфичных проектах не относящихся к обучению. Но по-моему что там что там жизненный цикл одинаковый, какие кардинальные отличия в этих подходах по циклу ? В том, что вместо них используют хуки типа use layout effect и use effect ? Более глубокие вещи по рендерингу кажется что там что там сложны

    • @InSimpleWords_WebDev
      @InSimpleWords_WebDev Год назад +1

      @@threehundredbucks3212 Может вы и правы. Просто к классам я быстро привык: четкие методы, четкое API... Тут же я до сих пор не могу научиться контролировать реакт.
      `use layout effect и use effect ` не покрывают все случаи - рождаются костыли вроде flushSync, useEffectEvent ... Дока реакта призывает вообще думать не жизненым циклом, а snapshot-ами и синхронизацией. Причем самое забавное: жизненный цикл остался, просто его спрятали поглубже (render phase, commit pahse: commitLayoutEffects, и тд).
      Однако нам вместо прямого инструмента, дали derived \ косвенное управление этой шайтан-машиной через современные хуки. И получилась двойная абстракция над их третьей: переизобретенным EventLoop-ом через файберы. В результате, шаг влево, шаг вправло - и хуков верхнего API не хватает...
      И начинается костыляние. Причем даже не кода, а мысли человеческой.
      Да, я не постиг хуки еще. Мне не стоит судить об этом. Возможно, когда я разберусь с этим, я пойму и причины и как с этим код писать. Но пока... пока сложно.

    • @threehundredbucks3212
      @threehundredbucks3212 Год назад

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

  • @grokhotun
    @grokhotun Год назад +8

    Мидлом тут не пахнет, не знать как работает sort и как получить функцию из функции id - моветон. Максимум джун с половиной

    • @voloduhe
      @voloduhe Год назад +10

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

    • @kawaikaino5277
      @kawaikaino5277 Год назад +21

      Щас бы по паре ответов, определять мидл или джун))) поздравляю у вас мидл-головного мозга.
      Я честно не понимаю, почему Ру-комьюнити, так любит сложности\пытки и унижения???
      - Даешь человеку пулл задач, даешь фиксированное время. Смотришь результат. Сделал\Работает\Чисто? Эти все ваши "Мидл, Хуидл и прочее" это в голове!!! Есть программист который выполняет задачи, а есть который не выполняет

    • @ayub_begimkulov
      @ayub_begimkulov  Год назад +4

      Я бы не был так жесток, у человека нету опыта прохождения собесов. С id, кажется, он не совсем понял условие. sort - я сам тоже затупил там)
      Тут я бы скорее к базе React больше придрался. Так как его понимать как раз таки очень нужно.
      Если чуть поработает над ошибками, подтянет базу и наберет опыта с собесами - то можно спокойно подаваться на мидла.

    • @threehundredbucks3212
      @threehundredbucks3212 Год назад

      А ты учти что чел на собесе, переживает и на подумать время ограниченно
      Возможно в спокойной обстановке и имея под рукой гугл он бы эту задачу щёлкнул на раз два

  • @evgeny421
    @evgeny421 Год назад

    Ужасное интервью. Автор как будто сам не понимает, что говорит -_-

  • @militant6709
    @militant6709 Год назад

    Это далеко не мидл

  • @user-jp5hb6sj1e
    @user-jp5hb6sj1e Год назад

    Кринж