💡 JavaScript собеседование: вопросы по асинхронному программированию

Sdílet
Vložit
  • čas přidán 27. 06. 2024
  • 🚀 Фрагмент семинара из курсов Node.js 2024 и Async 2024:
    👉 Вопросов на собесы по асинхронному программированию: github.com/tshemsedinov/Async...
    👉 Вопросов на собесы по ноде: github.com/tshemsedinov/NodeJ...
    👉 Node.js 2024 описание курса: github.com/HowProgrammingWork...
    👉 Открытый курс по Node.js: github.com/HowProgrammingWork...
    👉 Описание курса Async 2024: github.com/HowProgrammingWork...
    👉 Старый курс по асинхронности: github.com/HowProgrammingWork...
    👉 Оглавление всех открытых лекций: github.com/HowProgrammingWork...
    👉 Github автора: github.com/tshemsedinov

Komentáře • 13

  • @tonyslark6370
    @tonyslark6370 Před 27 dny

    Привет, Тимур, очень уважаю тебя как эксперта в JS. У меня к тебе нетривиальные задачки. Был на собеседовании Node.js разработчика на 120к, и не смог ответить на 3 из 4 вопросов.
    Код первого вопроса:
    const arr = [5, 12, 16, 23]
    console.log(arr[4]) //Вывод 20
    console.log(arr[Variable]) //Вывод 20
    Надо добавить что-то после arr (менять массив нельзя), чтобы консоль логи отрабатывали корректно и выводили 20 при таком обращении к массиву. Variable в коде не определяется.
    Второй вопрос такой:
    Мы посылаем 1000 долгих запросов на сервер, 500 из них ещё не вернули ответ. И мы переодически убиваем процесс Node.js через kill(9). Нужно, чтобы эти 500 незавершенных запросов отправили на клиент ошибку status: 400. Я предложил использовать gateway сервис и через него перенаправлять запрос к процессу, либо попробовать через nginx(или подобную технологию) отдавать статус код. Такой вариант собеседующему сильно не понравился.
    Найти какой-либо ответ на это я найти не смог. Может ты или кто другой подскажет, какой ответ от меня ожидали?

    • @4alexvlasov
      @4alexvlasov Před 24 dny +2

      const arr = [5, 12, 16, 23];
      // Создаем прокси для массива
      const handler = {
      get: function(target, prop) {
      if (prop == 4 || prop == 'Variable') {
      return 20;
      }
      return target[prop];
      }
      };
      const proxyArr = new Proxy(arr, handler);
      console.log(proxyArr[4]); // Вывод: 20
      console.log(proxyArr['Variable']); // Вывод: 20

  • @yankov2206
    @yankov2206 Před 29 dny +3

    А где посмотреть первые 50? ((

    • @antergonza6476
      @antergonza6476 Před 29 dny

      Под видео ссылка

    • @TimurShemsedinov
      @TimurShemsedinov  Před 29 dny +2

      @@antergonza6476 а разбор на курсе мы делали на той неделе

  • @user-mv9jg7no7l
    @user-mv9jg7no7l Před 29 dny +1

    что вы обозначаете "контрактом"?

    • @TimurShemsedinov
      @TimurShemsedinov  Před 29 dny +2

      Контракт, это то, интерфейс в виде тайпинга или спецификации, например jsdoc или .d.ts + поведение, т.е. это не только имена и типы, но и то, что невозможно описать типами, т.е. асинхронный аспект или последовательность вызовов или изменений. Пример: Promise, shared arrays, fetch. У меня есть отдельная лекция czcams.com/video/K5_kSUvbGEQ/video.html

  • @dmitrykomkov8480
    @dmitrykomkov8480 Před 27 dny

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

    • @TimurShemsedinov
      @TimurShemsedinov  Před 27 dny +3

      Вы про воркеры в тред-пуле или воркер-треды? Какие признаки бы можно было предъявить, чтобы они были частью исполняемой js-прогоаммы? Кстати очень неточный термин, исполняемая js-программа, что это?

  • @user-jf2ui2qy1y
    @user-jf2ui2qy1y Před 29 dny +1

    JavaScrip в названии ... Опечатка или великий заложенный смысл?