⎡msk⎦⎡sobes: 07⎦ JavaScript собеседования: Event Loop и вся правда о нем

Поделиться
HTML-код
  • Опубликовано: 25 ноя 2024
  • ХоббиХобби

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

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

    Таймкоды:
    00:00:00 Музыка
    00:03:00 Приветствия
    00:05:00 Начал по сути Event Loop
    00:07:30 Самый универсальный ответ о вопросах про Event Loop
    00:10:00 Подробная расшифровка ответа
    00:38:00 Что в Task Queue может выполняться не по порядку
    00:56:00 Ответы на вопросы
    00:57:39 Пример ответного вопроса ломающего собеседование
    00:59:21 Вероятности выполнения (я перепутал их местами)
    01:02:00 Многопоточность и Event Loop
    01:04:40 JS синхронный или асинхронный
    01:09:09 Смотрите отражение монитора в очках
    01:16:49 Что такое Job и что такое Realm
    01:21:25 Task Queue как Set
    01:22:10 Почему console.log вызывается раньше setTimeout
    01:33:40 Event Loop это часть движка или браузера
    [...] На стадии расшифровки

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

      1:36:33 схема HOST, Runtime и вызов API
      1:47:16 setTimeout Node vs setTimeout Browser
      1:51:30 технология апплетов и Java
      1:57:20 что думаешь про Deno и Bun
      2:04:28 почему не уважаешь TypeScript
      2:07:07 в JS не существует примитивных типов
      2:12:40 снова TypeScript
      2:13:55 снова про типы данных и собеседования
      2:19:00 детство Шелдона и что Мурыч разрабатывал в 12 лет
      2:26:15 немного про Call Stack

  • @leetcode24
    @leetcode24 Год назад +11

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

  • @Volodymyr-y1c
    @Volodymyr-y1c Год назад +4

    До речі, дуже гарна українська на 1:42:00. Набагато краще ніж на перших стрімах українською. Респект!

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

    51:48 Согласно спецификации HTML (Living Standard, раздел 8.6 Timers -> The timer initialization steps) преобразование задержки в 4ms указано для случая с nesting level, а не для любого таймера:
    4. If timeout is less than 0, then set timeout to 0.
    5. If nesting level is greater than 5, and timeout is less than 4, then set timeout to 4.
    Спасибо за выпуск!

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

      Про это дополнительно сделана запись ruclips.net/video/MxL04wXIyBQ/видео.html
      Там и обьясняется появление таких уверенных речей про 4мс

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

    дякую за корисну інфу 🎉 💪🇺🇦

  • @petermashine1483
    @petermashine1483 9 месяцев назад +1

    сложное сделать сложным особого ума не надо.
    сложное сделать простым - это искусство.
    Спасибо!

  • @kirillzaytsev8105
    @kirillzaytsev8105 11 месяцев назад +1

    Лайк не глядя.

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

    Дякую

  • @dimador1737
    @dimador1737 2 месяца назад

    смотрим видос и идем клепать формы

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

    Здравствуйте, спасибо большое за видео! У меня возникло два вопроса:
    1. Как связаны между собой task queue / microtask queue и genericJob / promiseJob? Если я правильно поняла, вы в видео мельком упомянули, что из task queue задачи попадают в genericJob, можете немного подробнее, пожалуйста, рассказать об этом
    2. Аналогичный вопрос, как связаны между собой очереди и execution context stack? Как задачи из очереди попадают в стек?

  • @johngalt9494
    @johngalt9494 2 месяца назад

    @AsForJS
    1) 53:00 - 53:10 - Почему вы сказали, что "Task Queue" (Макротаски) является отражением "Generic Jobs", если "Task Queue" - это не только только про "AtomicsAPI", а "Generic Jobs" - это только про "AtomicsAPI" ?
    2) 22:20 - 22:55 - Кажется вы перепутали "execution context stack" и "GenericJobQueue" ? Разве не в "execution context stack" хост среда помещает функцию на выполнение ?
    3) 25:40 - Почему вы сказали что "Task queue" работает по по логике стека: "То которое находится выше всех - то я и возьму", разве она "обычно" работает не по принципу очереди: "первым зашёл - первым вашел", т.е. тот, кто зашёл последним, последним и выйдет ?
    4) 2:27:20 - 2:27:50 - Почему вы сказали, что функция (job) ставится в "Generic job queue", если на самом деле он хост среда ставит его в "execution context stack"?

  • @frstnmlstnm-it1mf
    @frstnmlstnm-it1mf Месяц назад

    По сути работа с промисами это как будто мы напрямую дергаем апи, которое нам предоставляет promiseQueue(microtaskQueue);

  • @Volodymyr-y1c
    @Volodymyr-y1c Год назад +1

    Мурич, як я зрозумів є 4 черги: дві у хост середовищі (browser: task queue, mictotask queue) і дві у самому рантаймі (v8: job queue, promise queue). Хост середовище відповідно до специфікації пушить задачі із своїх черг в черги рантайму. В самому джаваскрипті (без використання АПІ хост середовища), як ти сказав, не можливо якимось чином покласти задачу в TASK queue хоста. Але чи є можливість покласти щось в JOB queue або PROMISE queue без використання зовнішнього апі і цих зовнішніх черг? Наприклад, чому в Promise.resolve().then(callback) потрібно спочатку класти щось в MICROTASK queue, якщо Promise це частина ecma спеки і немає ніякої взаємодії з зовнішнім апі? Це щоб забезпечити коректний порядок виконання коду ?

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

    Спасибо вам за весьма познавательное видео! Могли бы рассказать, почему вы никогда не используете команду if(), или может у вас уже есть видео, где вы об этом подробно рассказываете? Очень интересно узнать, что и почему лучше использовать вместо if else.
    У меня есть предположение касательно тернарного или switch операторов и лучшей читабельности кода, а так же возможно лучшей производительности...

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

    Вопросы по event loop задаются на интервью по той причине, что от соискателя требуют выполнение определённых задач, требующих знание работы хост-среды.
    Когда человека берут на работу фронтом, например, не предполагается, что он будет только лишь запускать v8 из консоли и читать байт-код. Фронтенд-разработчик обычно пишет интерфейсную часть, которая тесно связана с браузером как средством отображения этого интерфейса.

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

      Вы насколько абсолютно правы, настолько же и ошибаетесь.
      Язык JavaScript не имеет никакого отношения к EventLoop. При этом, самостоятельное знание языка JS бессмысленно - потому, что без знаний о HOST среде, применение знаний JS программиста бессмысленны.
      Современный JS, для массового его потребителя (изучающего) делится на две большие разницы: это браузер (где EvenLoop выписан согласно стандарту HMTL5) и backEnd илди Node (где EventLoop выписан согласно архитектуре библиотеке libUv).
      Как следствие, чрезвычайно важно, чтобы программист, который эксплуатирует свои навыки в определенной области, четко мог дифференцировать - где сам JS, а где особенности той области в которой он оказался.
      Если ты оказался в браузере то там есть EvenLoop солгасно стандарту HTML5. Оказался в ноде, то там EvenLoop другой и он согласно левой патяке создателей LibUv. Оказался в китайском чайнике - а там ВООБЩЕ НЕТ EVEN LOOP.
      Основная мысль в том, чтобы программист использующий JS как свой основной инструмент для работы, четко диферренцировал - где JS а где оособенности среды.

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

      ​@@AsForJS собеседование на позицию того же фронта довольно комплексное. Там и HTML, и CSS обсуждается, затрагиваются вопросы тестирования и флоу разработки. Там не только по JS гоняют.
      Event Loop хоть и не является частью языка, но всё же тесно с ним связан. Тесно связан относительно других тем, в которых разработчик должен разбираться. Посему вопросы по циклу событий часто находятся рядом с вопросами по JS. На моей практике вопросы по хост-среде задавались после блока вопросов, касающихся конкретно языка JS.
      Вопрос по event loop как раз-таки позволяет определить, насколько соискатель понимает разницу между функционалом самого языка и функционалом хост-среды. Поэтому я искренне не понимаю, почему вопросы о цикле событий на собеседованиях должны вызывать желание воткнуть копью в голову собеседующему.

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

      ​@@Boortwint Да, он безусловно тесно с ним связан тогда, когда Вы работает с HOST средой которая реализует стандарт HTML5. Так и следует грамотно гооворить об этом: вот тут JavaScript, вот тут EventLoop стандарта HTML5, а вот тут мы рыбу заворачиваем.
      Копье собеседнику следует воткнуть потому, что собеседник задает эти вопросы, предполагая что это это вопросы относящиеся к JavaScript, но не к особенностями HOST среды где он выполняется.
      Потому, что люди, которые слушают и проходят такие собеседования, потом еще очень долго думают, что это именно JavaScript и он именно такой, но не то, что он тут вообще никаким боком.
      Когда Вы на собеседовании, например на должность фронтендера, то у Вас должны спрашивать:
      1) как работает JavaScript
      2) какие API предоставляет HOST среда вашему JS коду
      3) особенности применения этих API для формирования фронтенда
      Пункты 2 и 3 не имеют НИКАКОГО отношения к JS.
      Но при этом пункты 2 и 3 создают именно то, почему Вы как фронтендер отличается от бекендера.
      И еще раз подчеркну - JavaScript тут не причем от слова СОВСЕМ.

    • @Boortwint
      @Boortwint 11 месяцев назад +1

      @@AsForJS формулировка второго пункта опровергает тот факт, что он не имеет *НИКАКОГО* отношения к JS. Агент, выполняющий код, взаимодействует с хостом. Взаимодействие есть отношение.
      Вопрос про цикл событий можно задать по-разному.
      "Расскажите про цикл событий в javascript" - некорректный вопрос, достойный копья.
      "Расскажите про принцип работы event loop в браузере" - вполне себе адекватный вопрос, который можно и нужно задавать.

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

    02:17:10 - где книжку взять?)

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

    Здравствуйте! Как правильно называются упомянутые уязвимости на 40:45 минуте? Не могу правильно загуглить, чтобы о них подробнее прочитать

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

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

  • @theoty-js
    @theoty-js Год назад +4

    Event Loop - интересная тема

  • @СергейБит
    @СергейБит Год назад

    43:14 теперь ближе к пониманию почему сейчас браузеры такие прожорливые

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

    Все отлично) Но один вопрос - в чем выражается такая нелюбовь к ровным линиям?)) 24:25

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

    👍

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

    Когда я говорю о "копье" и о том что в JS нет event loop - меня на собеседовании отсеивают :)

    • @AsForJS
      @AsForJS  11 месяцев назад +2

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

    • @ВладимирВлад-н8в
      @ВладимирВлад-н8в 10 месяцев назад

      Охренеть))))! Только оставил комент про копье, не думал что кто-то реально будет так отвечать.

  • @klapperbein6632
    @klapperbein6632 7 месяцев назад

    Хотелось бы подкаст на тему "Почему typeScript = 💩"

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

    Карина.jpg
    Но за видео пасиб.

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

    Мурыч, что такое хоз среда о которой ты постоянно говоришь?

    • @ИгорьНово
      @ИгорьНово Год назад +1

      Host

    • @klapperbein6632
      @klapperbein6632 11 месяцев назад +1

      Насколько я понял, под хост средой имеется ввиду - браузер, он как бы является хостом для нашего кода Js, также хост среда(бразуер) предоставляет некие внешние api которые мы можем использовать - например DOM-дерево. Runtime - это этапы жизненного цикла кода, но тут я могу ошибаться, я недавно начал увлекаться этим. Было бы очень круто если бы меня подправил кто по умнее)

    • @frstnmlstnm-it1mf
      @frstnmlstnm-it1mf Месяц назад

      Runtime это движок v8, который крутится в хост среде и исполняет js код.

  • @ВладимирВлад-н8в
    @ВладимирВлад-н8в 10 месяцев назад

    5:22 дальше можно не смотреть. Это не просто бесполезное видео, ЭТО ВРЕДНОЕ ВИДЕО, если вы будете на собесах отвечать "копье" про работу можно забыть в принципе )).

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

    Это бесценная информация ...

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

    Вам не приходило копьё?😂

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

      Меня так на сеньора взяли 😂