Разбор самой популярной задачи с собеседования в OZON | .NET Backend C# | Senior Middle

แชร์
ฝัง
  • เผยแพร่เมื่อ 25 ก.ย. 2024
  • Актуальную информацию по собеседованиям и другие материалы, вы всегда можете найти в ТГ: t.me/dannylogs
    Код конвенции от Майкрософт:
    learn.microsof...
    learn.microsof...
    Буду безмерно балогодарен за лайк и комментарий ⸜(。˃ ᵕ ˂ )⸝♡

ความคิดเห็น • 13

  • @ВасилийПупкин-у9ь
    @ВасилийПупкин-у9ь 2 วันที่ผ่านมา +2

    monitor.Enter/Exit вместо lock иам используется для того, чтобы компилятор не ругался на вызов await внутри. То есть здесь таким грубым способом обходят запрет на await внутри блока синхронизации монитора. И это также важно упомянуть, поскольку так делать нельзя из-за того, что до мы взодим в монитор из одного потока, а выйти можем из другого (после await)

  • @aniband5387
    @aniband5387 4 วันที่ผ่านมา

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

  • @xenm85
    @xenm85 6 วันที่ผ่านมา

    Вот это классная задача для собеса. А не эти задачи по типу - что выведет этот код или напиши функцию сортировки какую нибудь

  • @hhgforfhuv
    @hhgforfhuv 17 วันที่ผ่านมา +5

    ещё момент: нельзя эвейтить между Monitor.Enter и Exit, т.к. монитор требует одного и того же потока на открытие и закрытие, в то время как async await такое не гарантирует

    • @eugenezaznoba3591
      @eugenezaznoba3591 17 วันที่ผ่านมา +1

      тоже хотел сказать об этом, при наличии async/await для синхронизации обычно используется SemaphoreSlim

    • @dannythehumbleguy
      @dannythehumbleguy  17 วันที่ผ่านมา

      @@hhgforfhuv Точно, все таки забыл что-то)

    • @AlexYakunin
      @AlexYakunin 15 วันที่ผ่านมา

      Ну и если бы была гарантия, что await продолжает код в том же потоке (там не .ConfigureAwait(false), что вроде-как подразумевает, что код вызывается из UI thread), Monitor.Enter блокировал бы конкурирующие потоки на время ожидания в await, "выводя" их на это время из пула. Что эффективно делает асинхронный код синхронным (т.к. он требует ровно того же кол-ва потоков, что эквивалентный код без async/await).

    • @ЕвгенийП-д8л
      @ЕвгенийП-д8л 4 วันที่ผ่านมา +1

      По этой же причине lock там нельзя использовать. И этого не позволит компилятор.

  • @woutakwot9831
    @woutakwot9831 6 วันที่ผ่านมา

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

  • @superdingo9741
    @superdingo9741 15 วันที่ผ่านมา

    Не нужно игнорировать исключение. Там же что-то произошло, а мы это просто скрыли. За такое сразу можно указывать на дверь.

  • @jiggaaut
    @jiggaaut 13 วันที่ผ่านมา

    через фабрику можно инжектить сервисы