Как пройти СОБЕСЕДОВАНИЕ на C# & .Net РАЗРАБОТЧИКА? (2)

Поделиться
HTML-код
  • Опубликовано: 31 май 2024
  • 🤚Привет! Вы на канале IT школы TeachMeSkills. И я ведущий рубрики НАТИВ Илья Рублевский.
    Ну что ж, вы, наверняка, ждали этот выпуск. Мы делаем продолжение.
    Наш наставник Паша Львов продолжит давать ответы на каверзные вопросы с собеседований по C# и .Net.
    Погнали к вопросам!
    ❗️Ссылка на курс TeachMeSkills (BY) - clck.ru/34qTbR
    ❗️Ссылка на курс TeachMeSkills (RU) - clck.ru/34qTdB
    🧔Профайл Паши - / pavel-lvou-328139146
    🧔Telegram Ильи (для ваших предложений по контенту) - @ilyarublevsky
    Что еще будет в видео👇
    0:00 - Интро
    2:22 - Концепция сборщика мусора в C#
    10:32 - Цель использования операторов в C#
    12:27 - Разница между статичным методом и методом экземпляра
    13:59 - В чем суть виртуального метода
    17:25 - Разница между private и protected методами
    20:20 - Разница между throw и throw ex
    22:50 - Разница между структурой и классом в C#
    25:01 - Что такое лямбда-выражение и как оно используется
    27:58 - Разница между var и dynamic в C#
    31:07 - Какова цель ключевых слов ref и out в С#
    33:20 - Какова цель ключевого слова lock в С#
    36:45 - В чем разница между StringBuilder и String в С#
    38:15 - Что такое extension methods в C#
    40:09 - Каковы преимущества при использовании внедрения зависимостей в код
    46:05 - В чем разница между списком и массивом
    48:24 - Как реализовать singleton
    52:51 - Какие типы шаблонов проектирования существуют в C#

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

  • @benjaminBTN
    @benjaminBTN 11 месяцев назад +207

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

    • @JinOptimist
      @JinOptimist 11 месяцев назад +10

      А можно в коммерческий опыт сложить опыт работы программиста и преподавателя? Если да, то с большим запасом хватит :D

    • @user-si3xd9kc9d
      @user-si3xd9kc9d 3 месяца назад

      ​@@JinOptimistОчень понравилось видео, большой лайк! Но хотелось бы услышать немного больше об override методах. Дело в том, что помимо виртуальных методов есть и абстрактные, хотелось бы узнать, каковы их различия и в каких случаях использовать тот, или иной тип метода. Так же интересно узнать, зачем использовать модификатор sealed для класса? (да, я знаю, что в видео не было о них сказано, мне интересно услышать ваше мнение)

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

      @@user-si3xd9kc9d по сути всё просто. Если метод абстракнтый, то он не содержит в себе никакой реализации и ты обязан реализовать его в классе-наследнике через override (как и в случае с интерфейсом), а если виртуальный, то ты просто наследуешь его реализацию, но, если потребуется, можешь его переопределить внутри класса-наследника и этот метод внутри наследника будет считаться приоритетным, в случае, описаном в этом видео на 14:00
      Модификатор sealed же запрещает переопределение метода. Пример: Есть класс Person с виртуальным методом SayHello, от него наследуется класс User, который переопределяет этот метод через override, и следующим указываем модификатор sealed, что будет значить следующее - если какой-либо класс наследуется от класса User, он не сможет переопределить метод SayHello, но, так как этот метод был виртуальном в классе Person, то предпочитаемым, в таком случае, будет именно метод класса User. Как-то так, а в целом, более толково и подробно можно почитать здесь:
      metanit.com/sharp/tutorial/3.19.php

  • @user-nh1lp8xt4j
    @user-nh1lp8xt4j 11 месяцев назад +80

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

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

      вне всякого сомнения. полностью согласны)

    • @JinOptimist
      @JinOptimist 10 месяцев назад +6

      Настоящее испытание "рассказать просто о сложном" ещё впереди, но я безусловно буду стараться )))

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

      @@JinOptimist Паша ты просто молодец. Удачи тебе и счастья в жизни)

  • @user-vt4gh3sj2o
    @user-vt4gh3sj2o 11 месяцев назад +29

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

    • @TheMrGlobus
      @TheMrGlobus 7 месяцев назад +4

      К сожалению, та же херня :(

  • @qimbe7441
    @qimbe7441 9 месяцев назад +39

    Очень хотелось бы увидеть подобный ролик, но с уклоном в web разработку на c#. Обкашлять все тонкости с ASP и EF. Думаю очень многим было бы интересно посмотреть.
    Всё таки с одним только знанием языка и ООП далеко не уехать на собесе. Но видео всё-равно - огонь!!!🔥🔥🔥

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

      А по математике что то спрашивают - логику, теорвер, матстатистику и т.д. ?

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

      @@ei2292дают полностью исписанную тетрадь, но с небольшим местом на полях и просят доказать ВТФ(Великую Теорему Ферма), не прибегая к методам эллиптических кривых

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

      @@ei2292 смотря куда идешь

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

      ​@@ei2292нет

  • @DF-ov1zm
    @DF-ov1zm 11 месяцев назад +23

    dynamic - это не попытка сломать строгую типизацию, это необходимый инструмент, которым не просто можно, а нужно пользоваться тогда, когда вы из c# пытаетесь взаимодействовать с объектами, которые не принадлежат инфраструктуре C# (внешние по отношению к языку) и пришли к вам в код из динамически типизированной парадигмы. Например, когда вы из C# пытаетесь взаимодействовать со структурой DOM из Js или пользуетесь Python рантаймом из шарпа (да, такой вполне себе возможно, см. IronPython). Когда то взаимодействие между разными системами в винде происходило только через интерфейсы COM объектов, которые существовали задолго до C# и были полностью динамическими, что доставляло довольно много проблем там, где казалось бы никаких проблем быть не должно, ведь и то и другое разрабатывает одна и таже контора. В целом, без dynamic было очень не просто с динамическими структурами, приходилось изобретать дикие костыли с рефлекшеном, что сложно с точки зрения кода и медленно с точки зрения рантайма. Сейчас, конечно, такое уже реже встречается, потому что и COM уже не так актуален и есть TypeScript, с которым из шарпа можно работать нативно, ведь оба строготипизированные.. да и необходимость пользоваться питоновскими или другими рантаймами и их классами из шарпа - довольно специфическая история. Но и сейчас динамические структуры встречаются, например json с точки зрения C# - вполне себе динамически типизированный, если не десериализован в какой то конкретный тип.. и вы можете десериализовать его в dynamic и и работать с ним как с динамической структурой, без необходимости описывать заранее в классе. Для быстрого прототипирования - очень крутая штука, для продакшена, конечно, так лучше не делать) Без dynamic все это было бы намнооооого геморойнее.

  • @ilyha1801
    @ilyha1801 11 месяцев назад +38

    То чувство, когда по мнению Павла "сеньорский вопрс" про DI container, задают на каждом собеседовании джуна. Говорю не от балды, а прошел около 10 собесов и на каждом спрашивали про внедрение зависимостей, время жизни и что от чего не желательно ставить в зависимость (привет чистая архитектура). А вообще у Паши дар приподносить информацию, вроде всё что он говорил тут я знаю, но после просмотра многие вещи лучше устаканились! Жду 3 выпуск😅

    • @teachmeskills
      @teachmeskills  11 месяцев назад +6

      Стоит задуматься и сделать!) спасибо

    • @JinOptimist
      @JinOptimist 11 месяцев назад +10

      Вопросы про DI сильно отличаются по глубине ожидаемого ответа.
      Для джуна достаточно знать, что DI есть. Вот тут регистрирует, вот тут запрашиваем.
      А вот архитектурные вопросы, например, о возможности ограничения доступа на уровне DI, это уже совсем не для джуна вопрос.
      PS Приятно знать, что эта работа кому-то приносит пользу. Буду и дальше стараться ))

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

      @@JinOptimistУ моего друга на стажировке спрашивали про время жизни. И в чем проблема когда в компонент с большим временем жизни попадает компонент с меньшим временем жизни.

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

      ​@@DimaBriquezда ладно, только хотел об этом написать)
      Тоже на стажировку проходил, и тоже спрашивали, что будет если в скоупе транзиент, и наоборот. И по архитектуре тоже спрашивали...
      Не прошел, наверное мидла искали на стажёра)

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

      ​@@gengerlolблин, как вы вообще попадаете на собеседования, у меня за последнюю неделю 5 отказов при том, что резюме далеко не пустое(много пет проектов), но без коммерческого опыта пока только нахер иду

  • @ilyha1801
    @ilyha1801 11 месяцев назад +17

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

  • @goldgold594
    @goldgold594 11 месяцев назад +5

    Большое спасибо за выпуск!
    Ооочень многие моменты прояснил для себя! Жду 3 часть ❤️

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

      тоже большое спасибо за просмотр) были рады стараться)

  • @user-xj7te3qs8u
    @user-xj7te3qs8u 7 месяцев назад +1

    Фантастика! Сложные темы, но быстро и простым языком. Так держать!

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

    Огонь видео! Вот бы побольше таких!

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

    Чудесное и понятное объяснение!!!!

  • @lizavetalitvinava4264
    @lizavetalitvinava4264 5 месяцев назад +7

    Очень хочется курс от Паши для Middle-Senior уровня. Про преподавательский дар это факт

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

      Все со временем. Мб, и сделаем)

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

    Ооо, приятно видеть продолжение, повод сделать чай

  • @user-ix4cm7ch5z
    @user-ix4cm7ch5z 8 месяцев назад +3

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

  • @user-ds4wn3zd6x
    @user-ds4wn3zd6x 4 месяца назад +1

    Супер! Спасибо за оба выпуска! Жду новых видео с Пашей))
    Было бы круто мидл-синьор собес посмотреть😀

    • @teachmeskills
      @teachmeskills  4 месяца назад

      спасибо большое) что-нибудь придумаем обязательно)

  • @magiccreature7225
    @magiccreature7225 10 месяцев назад +4

    Спасибо большое за первую и вторую части видео! Сегодня проходила собеседование, вопросы и их разбор очень помогли)

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

      Прошла?

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

      @@victoriash6047 да)

    • @ds-vs
      @ds-vs 4 месяца назад

      @@magiccreature7225 Привет, собес на джуниор позицию? Долгий был поиск работы?

    • @magiccreature7225
      @magiccreature7225 4 месяца назад

      @@ds-vs привет, на позицию стажёра, поиск относительно долгий)

  • @ZuraevD
    @ZuraevD 8 месяцев назад +3

    Ахах, он так артистично объясняет. Надеюсь в будущем буду также говорить на собеседованиях

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

    Большое спасибо за ролик, про DI для себя многое почерпнул)

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

    Спасибо вам за ваш труд! Узнал много новых фич, получил небольшое прозрение о DI (Dependency Injection).

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

      Спасибо огромное) очень приятное) 5 марта будет следующий ролик с Пашей) будет тоже интересно)

  • @anaprodan6648
    @anaprodan6648 10 месяцев назад +2

    Ребят, это реально круто! Спасибо🤩

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

      Всегда пожалуйста :)

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

      Спасибо)

  • @S3424868
    @S3424868 8 месяцев назад +3

    Очень много полезной информации. Спасибо

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

      Спасибо большое)

  • @user-hm7xe5xt9l
    @user-hm7xe5xt9l 7 месяцев назад +1

    Спасибо большое! Четко и понятно :D

  • @user-ow1sd5mt6y
    @user-ow1sd5mt6y 8 месяцев назад +9

    У него преподавательский талант. Хоть бери и конспектируй, много нового узнал. С удовольствием бы посмотрел 3ью серию)

    • @JinOptimist
      @JinOptimist 8 месяцев назад +1

      Спасибо. Рад стараться ))

  • @DecembristITTV
    @DecembristITTV 11 месяцев назад +27

    Павел, вы говорили в прошлом выпуске, что стек лежит в куче. В этом выпуске вы рисуете их отдельно. Это разные стеки все таки или стек таки не лежит в куче?

    • @amicropness
      @amicropness 11 месяцев назад +4

      А вас тоже заставили лайкнуть, шантажируя вашими интимными фото?

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

      1) Это тот самый стек
      2) Рисуют их отдельно, что бы наглядней донести основную мысль
      3) А вот касательно, лежит ли он в куче...
      Многие на этом моменте заострили внимания и просили поделиться первоисточником. Я уже делал пару забегов в интернет, но ни старую статью, где это я впервые увидел, ни обратного утверждения, что стек и куча создаются отдельно, я пока не нашёл.
      Так что пока ни подтвердить, ни опровергнуть я это утверждение пока не могу.
      Если кто-то найдёт, поделитесь информацией. В конце концов если я ввёл людей в заблуждение, нужно будет исправиться и извиниться в очередном видео.

    • @DF-ov1zm
      @DF-ov1zm 11 месяцев назад +13

      ​@@JinOptimistэто какой то бессмысленный вопрос сам по себе, и стэк и куча - фактически просто адресные пространства в одной и той же памяти и все. Физически они ничем не отличаются, только алгоритмом работы с ними. К тому же эти адресные пространства - виртуальные и принадлежат конкретным процессам, что бы одни процессы не могли ходить в чужие кучи. А вот стэк привязан не к процессу, а к треду и треды не должны беспокоиться, что к их стэку может получить доступ другой тред из того же самого процесса. Что значит стэк в куче? Типа, пересекается ли виртуальное адресное пространство стэка с виртуальным же адресные пространством кучи? Нет, не пересекается, нахера? У них даже адресация может быть принципиально разной, стэку просто не нужна 64-битная адресация с его размерами, а вот куче нужна. А как это все физически организовано в памяти - вообще не важно, вы все равно из режима, в котором процессор запускает пользовательский код, в физическую организацию памяти никакого доступа иметь не будете. А если вы там свою ОС пишите, ну тогда наверное придётся в теме лучше разбираться)

    • @Vovnenko
      @Vovnenko 10 месяцев назад +3

      Цитата "На схемах организации памяти младшие адреса обычно располагаются вни- зу (начиная с адреса 0), а старшие - вверху. Помните обсуждение стека и кучи в главе 1? По принятому соглашению, стек располагается в старших адресах, а куча - под ним. Стек растет вниз, куча - вверх." Источник Кокоса К Управление памятью в NET 2020 страница 105 и ниже на страницы 112 про windows подробне.

  • @akiroqw
    @akiroqw 11 месяцев назад +5

    Так интересно его смотреть, приятный человек:)

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

      это да)

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

      Вы меня прямо застесняли )))
      Но всё равно, спасибо за добрые слова

  • @clutchmeisteryo9831
    @clutchmeisteryo9831 8 месяцев назад +3

    Нуу, честно говоря лучше я не видел. Паша огонь.

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

      Согласны) спасибо большое)

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

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

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

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

  • @Alex_Noizzzz
    @Alex_Noizzzz 11 месяцев назад +5

    Паша вообще молодец)) всегда нравится слушать именно его) все грамотно и доступно)) благодаря Паше я решил выбрать для себя C# как основной язык программирования, несмотря на то, что склонялся больше в сторону Java и конечено IDE от JetBrains.

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

      Мы полностью согласен) спасибо и вам за просмотр. И надеемся, что выбором довольны)

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

      @@teachmeskills ну C# похож на JAVA вот только до сих пор не привыкну к Visual Studio) как по мне IntelliJ удобнее но уверен что это дело привычки))) спасибо за видео))почаще Пашу приглашайте)))

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

      @@Alex_Noizzzz сделаем! Спасибо! Вам удачи в учебе)

    • @DF-ov1zm
      @DF-ov1zm 11 месяцев назад +1

      ​@@Alex_Noizzzzесли вам idea больше нравится, то можете использовать Rider от той же конторы, это таже самая idea ток для c#.

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

      ​@@Alex_NoizzzzНикогда не использую VS для разработки. Rider куда приятнее

  • @JinOptimist
    @JinOptimist 11 месяцев назад +16

    Мне стыдно. Я в тот день просто слишком много дебажил, так что Stack я не иначе как CallStack называл. Это конечно не правильно, речь идёт именно, что о Stack.

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

      Чистосердечное признание)

    • @user-ji4iy8db5k
      @user-ji4iy8db5k 8 месяцев назад +3

      Спустился сюда специально в поисках этого комментария

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

    Очень интересно и очень полезно! Я не фанатка изучения сухой теории, но спикера увлекательно слушать

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

      Рад что вам понравилось :)

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

    Воу. Я только посмотрел первую часть и вот вторая!

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

    Выпускай больше таких видео по C#, особенно с Пашей

  • @samirsalimkhanov3554
    @samirsalimkhanov3554 6 месяцев назад

    extension methods- методы расширения.
    Этим подходом можно расширять функционал классов к исходникам которых ты не имеешь доступа.
    Например есть класс из DLL но в этом классе не хватает для твоих нужд какого-то метода, вот тут ты можешь этот класс расширить.

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

    Спасибо, кажется я начинаю понимать dependency injection.

  • @AnTonPro
    @AnTonPro 10 месяцев назад +2

    Спасибо за вторую классную часть. А будет ли выпуск(или возможно уже есть) про веб и HTTP? На собеседованиях во многих языках это необходимо и устройство того же HTTP можно отлично прочесть на мозиле, но будет ли это так же прозрачно понятно как если бы об этом рассказали такие спецы и классные преподаватели как есть у вас в школе...) Мне кажется такой материал был бы актуален для многих направлений разработчиков, так как веб это неотъемлемая часть многих, если не всех проектов) Буду благодарен в любом случае

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

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

    • @user-ck3dq5pb4n
      @user-ck3dq5pb4n 4 месяца назад

      @@JinOptimistПривет. Видео про веб ещё в производстве?

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

    Ждем третью часть

  • @igorpak6478
    @igorpak6478 29 дней назад

    Оч крутой выпуск👍

  • @user-si3xd9kc9d
    @user-si3xd9kc9d 3 месяца назад

    Очень понравилось видео, большой лайк! Но хотелось бы услышать немного больше об override методах. Дело в том, что помимо виртуальных методов есть и абстрактные, хотелось бы узнать, каковы их различия и в каких случаях использовать тот, или иной тип метода. Так же интересно узнать, зачем использовать модификатор sealed для класса? (да, я знаю, что в видео не было о них сказано, мне интересно услышать ваше мнение)

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

      В комментарии постараемся ответить) спасибо большое за апрув!)

  • @user-bh5pf5xu6h
    @user-bh5pf5xu6h 8 месяцев назад +1

    Такие же вопросы мне задавали 18 лет назад, на моём первом собеседовании на C# разработчика. ОДин в один, я как раз Рихтера прочитал, и был хорош.
    Как выбрать из толпы человека, который будет показывать лучше результат... Вот есть два кандидата - один опытный практик - П, другой лучше подготовлен к собеседованию, теоретик - Т.
    Какого человека вы себе хотите? , наверное - практика, который быстро покажет результат без багов. На большинство вопросов из видео лучше ответит Теоретик.
    Что до практики, то IDE + AI подсветит, где virtual, где using, где protected, где StringBuilder вместо string, и держать это всё в голове - у меня не хватает места.
    Также я делал много задач по оптимизации, и всё, что обсуждается в подобных собеседоавниях про выделение памяти к 99% промышленных задачах не имеет смысла, так как затыки в других местах - базы данных и всё что связано с ними, большие объёмы передаваемых данных, специфики работы конкретных библиотек, повторные вычисления, парсинг, отсутствие кэширования - это секунды, а класс или структура - это 0.000001 секунды. Ну вот правильный выбор типа коллекции может ещё что то дать, если много поисков там по ней.
    Я больше доверяю методике, когда расшаривается экран, и делается простое тестовое задание за 40 минут.
    По тому что человек делает, как уверенно, как быстро набирает код, какие варианты решения проговаривает, какие уточняющие вопросы задаёт можно гипотезы построить. А также - можно полученный код как то сравнить между собой, а не "ну тот вроде про сборщик мусора лучше ответил, давай его возьмём.".
    Но кроме знаний ещё как то надо понять, что человек в принципе порядочный, энергичный, инициативный, пытливый ум, кропотливый...
    Возможно я ошибаюсь, и сравниваю поиск сеньора с поиском джуна...
    У меня нет ответа как правильно искать специалиста, но то, что общеустоявшаяся практика собеседоаний и список вопросов, который не меняется десятилетия, не работают - для меня очевидно.

    • @JinOptimist
      @JinOptimist 8 месяцев назад +2

      Я с вами по многим пунктам согласен. Но обратите внимание, что тут в основном речь про собеседования для Джуна.
      То есть для человека без опыта работы. Было бы странно, ждать от него, что он будет хороший Практик. Поэтому и дают ему теоретические вопросы, которые покажут насколько он усидчивый, целеустремленный, серьёзно ли он настроен на профессию и т.д.
      Но конечно, если такие вопросы идут на позицию Сеньора, то это странно

  • @ivka-xj7in
    @ivka-xj7in Месяц назад

    если используешь ref или out получается что value type будет на куче?

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

    Супер!

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

      Спасибо большое)

  • @ivka-xj7in
    @ivka-xj7in Месяц назад

    как поместить ссылку в кол стек, чтобы объект не был удален в куче?

  • @swalowslove3968
    @swalowslove3968 4 месяца назад +1

    Кайф, вот бы на вышке также учили :(

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

    По вопросу про разницу String и StringBuilder я бы хотел услышать более развернутый ответ:
    Когда вы изменяете объект типа String, например, конкатенируете строки или выполняете другие операции над ней, создается новый объект строки, содержащий изменения. Изначальная строка остается неизменной. Это означает, что каждая операция изменения строки создает новый объект в памяти, что может вызывать накопление мусора и иметь негативное влияние на производительность при выполнении большого количества операций над строками.
    В отличие от этого, StringBuilder предоставляет изменяемую последовательность символов. Вы можете модифицировать объект StringBuilder, добавляя, удаляя или изменяя символы в нем, и сам объект будет изменяться без создания новых объектов в памяти. Это позволяет сэкономить ресурсы и повысить производительность в случаях, когда требуется множество операций изменения строки.
    Таким образом, StringBuilder обеспечивает более эффективное использование памяти и скорости выполнения операций изменения строки по сравнению с использованием операций изменения String.

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

      Хороший ответ. Но если вы на собеседовании скажете, что StringBuilder лучше, у меня тут же возникнет вопрос, а почему бы не использовать только его. Зачем вообще тогда существует String если StringBuilder лучше во всём.
      Когда описываете инструмент, не забывайте уточнять для каких он задач лучше подходит, и какие у него есть минусы ;)

    • @user-yt6bq7eg2f
      @user-yt6bq7eg2f 10 месяцев назад

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

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

    У Павла отличная подача, если бы сейчас начинал, то обязательно пошёл бы к нему! Но на сегодняшний день есть твёрдая уверенность, что рынку не нужно столько программистов, даже программисты с опытом идут под сокращение. Но что самое удивительно, так это то что сейчас развелось очень много паразитов, которые предлагают платные стажировки. То есть, заплати нам за то что ты у нас работаешь и выполняешь задачи для нашей компании. Недавно даже скинули опросник по стартапу, который направлен на такие вот стажировки, там был вопрос "Сколько вы готовы платить за стажировку?" Вы в своём уме? Даже бесплатную стажировку мало кто может себе позволить, а тут плати им они поделятся с тобой своим опытом))) А схема тут простая, эти гуру берут заказы, получают за них деньги а эти заказы делаешь ты. В итоге они получают деньги от заказа и от лоха-програмера, который сам платит что бы им этот заказ сделать. И да самый сок, джун сейчас в Минске может получить со старта 300-400 у.е. скажу я вам это совсем не серьёзно.

  • @PersonaN1
    @PersonaN1 6 месяцев назад

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

    • @teachmeskills
      @teachmeskills  6 месяцев назад

      Попробуем) спасибо за наводку)
      А про ваш случай - это нормально)

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

    Уже по первой теме появился вопрос (задача инженерная):
    Записан файл на 16 гб. В нем идут пачки данных с синхрой crc и т.д. Самое долгое - это считывание из файла и чем большими кусками ты будешь это делать, тем быстрее отработает программа. Но в этом случае много крупных объектов да и выделенной памяти в целом. Решение к которому склонился я - использовать шаблон IDisposable и в ручную вызывать сборщик мусора.
    Ваше мнение?
    Как бы поступили в данном случае?

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

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

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

    Ребят, сделайте пожалуйста такой же формат только на middle позицию!

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

      Интересная идея. Подумаю над возможными вопросами

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

    Запугал интервьюера насчет экстеншена :) А просто ответить, что это добавление (расширение) новых методов к имеющимся типам путем написания нового кода в отдельном статическом методе с параметром this и ссылкой на этот тип .

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

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

    • @teachmeskills
      @teachmeskills  10 месяцев назад +5

      Что-нибудь придумаем)

    • @bequiet141
      @bequiet141 10 месяцев назад +8

      Да, а еще в чем отличие множества от set, очереди от queue, стэка от stack, массива от array. Полезно было бы узнать, конечно

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

      действительно, об этом же информации нет в интернете

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

    Памяти пользователю может и хватать, но GC запуститься сам в зависимости от её заполнения. Это не зависит от самочувствия пользователя или "места не хватает". Для этого есть специальное значение процентного уровня превышения памяти с трешхолдом.

  • @KirillMvS
    @KirillMvS 29 дней назад

    Слушаю после окончания курса Java, как будто почти все также)

    • @teachmeskills
      @teachmeskills  28 дней назад

      ну не зря языки похожи между собой и постоянно конкурируют)

  • @user-bm6qq6xo9p
    @user-bm6qq6xo9p 9 месяцев назад +1

    По поводу GC. Реально задумался про то, Что изначально для него все объекты мусор, а потому он изначально помечает(маркирует), добавляет бит в SyncBlockIndex всем объектам сразу. А затем идя по стеку и корням - убитает на тех объектах, до которых добрался.
    Надо Рихтера перечитать кусочек. Почему у меня было другое понимание?

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

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

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

    Классный специалист!

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

    String и StringBuilder - это одно и тоже даже на уровне методов, просто первый тип неизменяемый, а второй да. "Намерения" не собираются, а сразу выполняются как метод модификации строки.

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

    Вот не соглашусь, что ref - это просто ностальгия по плюсам! Да, востребованное и эффективное применение этого ref довольно редко и специфическое, но оно имеет свою нишу. Значимые типы иногда бывают относительно большими, те же структуры с десятками полей или энумы с сотнями значений. Если в структуре, скажем, сотня значений, это будет 400 байт. При передаче без ref эта структура будет скопирована в стеке, малейший цикл вызовет сами знаете какое исключение (это даже если отбросить момент различного поведения при передаче по ссылке или по значению)
    А про DI и сеньора вообще улыбнуло. По-моему, понимание слабой связанности классов - это вообще мастхев и без её понимания вообще к программированию коммерческих продуктов допускать нельзя!

  • @AlexKras92
    @AlexKras92 8 месяцев назад +1

    У Стива Джобса была водолазка, у Павла - сандали)

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

    Босоножки реально тема

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

      :D
      Это что бы проще было зайти за своего среди программистов староверов.

  • @Hennadii_S
    @Hennadii_S 8 месяцев назад +1

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

    • @JinOptimist
      @JinOptimist 8 месяцев назад +1

      Согласен. Это классический ответ, но обычно его ожидают услышать на вопрос: какие типы паттернов вы знаете?
      А тут вопрос был достаточно странно сформулирован про шаблоны для C#.
      Но в целом да, думаю ваш вариант будет надёжней ))

  • @samirsalimkhanov3554
    @samirsalimkhanov3554 6 месяцев назад

    "Какие типы шаблонов проектирования существуют в C# " -> дан четкий ответ!

  • @samirsalimkhanov3554
    @samirsalimkhanov3554 6 месяцев назад

    StringBuilder и String похожи тем что они являются классами.
    StringBuilder как видно по названию он создает строку.

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

    Насчет var - с помощью него можно создавать анонимные типы

  • @user-hl7lr7wo6m
    @user-hl7lr7wo6m 5 месяцев назад +1

    Сглазил немного) Хочу маленькую ремарку вставить про то, как Singleton нарушает SRP из SOLID.
    Р.Мартин «Чистая Архитектура», Глава 7, стр. 79:
    “…функция должна делать что-то одно и только одно. Этот принцип мы используем, когда делим большие функции на меньшие, то есть на более низком уровне. Но он не является одним из принципов SOLID - это не принцип единственной ответственности. Соответственно, окончательная версия принципа единственной ответственности выглядит так: Модуль должен отвечать за одного и только за одного актора.”
    Singleton скорее нарушает Шаблон High Cohesion из GRASP, К. Ларман «Применение UML 2.0 и шаблонов проектирования», Глава 17, п. 17.14, стр. 341:
    «Проблема: как обеспечить сфокусированность обязанностей объектов, их управляемость и ясность, а заодно выполнение принципа Low Coupling?»
    То есть, Singleton конечно же наделяет дополнительной обязанностью класс, но если им пользуется только один актор, то этот паттерн не нарушает SRP; но конечно уменьшается степень зацепления, т.е. в некоторой смысле противоречит High Cohesion. А вот в какой степени - это надо решать в конкретном случае, возможно при всех доступных вариантах проектирования будет лучше применить Singleton, т.к. остальные варианты расфокусируют еще больше другие модули/классы или повысят еще связность (или нарушать еще другие принципы).
    Но это все не умоляет подачу материала, спасибо дуэту!🤗

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

    Кроме передачи параметров по "ref"/"val" в .NET добавили "in" - это когда параметр передаётся как бы по "ref" (избегаем копирования - передаём ссылку на объект), но при этом - менять параметр внутри функции - НЕЛЬЗЯ.
    Крмое этого из спецификаторов доступа упущен "internal" который виден в пределах проекта, но не виден ВНЕ текущего проекта. А также комбинации, но там чёрт ногу сломит - проще забить и использовать стандартные public/protected/private, иногда разбавляя internal.

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

      В промышленном программировании ни разу не видел, что бы использовали internal.
      Хотя да, про такой модификатор, программисты обычно знаю.
      Про In большинство и не слышали вовсе. К тому же применение для такого поведения проблематично придумать. Те же record куда как более органично в проектах используют. По крайней мере в моей практике.
      Но в любом случае, спасибо за ваш комментарий. Приятно встречать коллегу, который так же радеет за качество информации )))

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

      @@JinOptimist Потому что "in" относительно недавно появился - по моему только пару версий языка назад. Я сам про него узнал в марте этого года, когда освежал знания C# для преподавания.
      internal можно использовать в EntityFramework для создания конфигураций - public для этого слишком много, а private - определённо не хватает.

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

    Очень абстрактно

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

      Очень непонятна «абстрактность») конкретики дайте

  • @user-sp1zu9ci1e
    @user-sp1zu9ci1e 8 месяцев назад

    Про virtual методы ...я бы хотел все таки услышать про таблицу виртуальных методов.... а не сказку как компелятор сам понимает куда ему идти ))) а так спасибо большое )))

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

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

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

    Опять буду негодовать и говорить, что структура не всегда хранится в стеке :)

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

    Сейчас out переменную предварительно объявлять не нужно.

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

    Всё напутал. Параметры сортировки передаются вместе со ссылкой (или телом ф.) на функцию сортировки. А лямбда - это просто запись этого.

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

    Из стека зависшие ссылки мы не удаляем, они там удаляются сами.

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

    А как же вопрос про инкапсуляцию?))

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

    В случае с virtual. Может это упоминалось в ролике, но я не заметил. Я проходил тест в компанию, и там было несколько заданий с ним. Именно что меня заинтересовало, так это когда в родительском классе был virtual метод, а в дочернем(который от родителя унаследовался) вместо override было написано new virtual. Я тогда немного удивился, ибо даже не знал что так можно, и сути я тоже не понял. Единственное что я заметил, если мы в переменную с типо "A", например, пихаем инстенс "B"(тот что дочерний), то в отличии от override метод не переопределяется. Можете подсказать в чем тут нюанс и зачем так делать, или это из ряда задачек на собеседование?

    • @DF-ov1zm
      @DF-ov1zm 11 месяцев назад +3

      Нюанс в том, что вы не переопределяете метод базового класса, а просто подменяете методом дочернего класса. Соответственно, на объекте с дочерним типом выполнится метод дочернего же класса, а на объекте базового типа выполнится метод базового же класса. То есть в зависимости от того, в какой тип вы один и тот же объект засунете, выполняется два разных метода. На самом деле такое вряд ли вообще где то зачем то применяется, такое просто делать не принято, это антипаттерн. Вам и иде об этом скажет, если вы new не напишите. По сути new просто означает, что вы в курсе, что вы творите какую то дичь. То, что он и в базовом и в дочернем помечен как виртуал - на результат абсолютно никак не влияет, это просто что бы вас запутать. А вот если у базового класса метод как virtual НЕ помечен, то его можно подменить с помощью new в дочернем и сделать его virtual, что все наследники от дочернего класса могли его нормально переопределить (но переопределить именно метод дочернего класса, не базового,базовый останется таким же как был, просто будет спрятан).

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

      @@DF-ov1zm понял, спасибо за обьяснение👍

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

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

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

    Было бы ещё круто пригласить Пашу одновременно с Unity кодером и поговорить с ними о С# в контексте гэймдев.

    • @JinOptimist
      @JinOptimist 10 месяцев назад +3

      С большим удовольствием пообщался бы с кем-нибудь из геймдева.
      Как навреное любой мальчика, всегда мечтал сделаю свою игру, так что будет интересно послушать как там у них на Unity всё работает и какие особенности в работе с C# у них есть.

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

      @@JinOptimist Блин, лайк! Было бы очень интересно. Тем более сам этому учусь,

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

    Мне одному стало любопытно, почему на вопрос про разницу массивов и списков речь вдруг зашла про коллекции? 😁

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

      Наверное потому, что это одна предметная область.
      Когда задают вопрос о String вполне нормально если тут же всплывают String Builder, char[], large object heap
      Тоже самое и со списком. Это как слово триггер, после которого тут же хочется рассказать про коллекции, про алгоритмическую сложность, массивы и т.д.

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

    А мидл что, может пока умолчать о самом интересном, об уровнях генерации объектов при сборке мусора? Видно, что ещё пока не разобрался... По стеку никто не лазит в поисках ссылок, они хранятся в спец. таблицах ссылок с которыми работает GC.

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

    а как поколения не влияют, если 0 поколения переменные быстрее уничтожаются тк находятся рядом!?

  • @user-st1jh8tp4q
    @user-st1jh8tp4q 4 месяца назад

    ссылки на видео не оставили

    • @teachmeskills
      @teachmeskills  4 месяца назад

      держите - ruclips.net/video/zQbk4hVzVyU/видео.html

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

    Ну вот дожили, не можем указать главное отличие класса и структуры. Тут даже в джуны не возьмут :)

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

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

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

      Точно-точно?

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

      Поддержу комментатора выше.
      А вы уверены что любой Статичный метод и тем более свойство потокобезопасны? Может вы что-то конкретное имеете ввиду, потому что пока ваше утверждение выглядит, мягко говоря ложным

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

    Но про DI только практика, по теории ничего не сказано, про Inversion of Control ни слова.

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

    Дуже круто, дякую з України!

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

      І вам дзякуй! Вельмі прыемна)

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

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

    • @JinOptimist
      @JinOptimist 10 месяцев назад +3

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

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

      @@JinOptimist не последнее)

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

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

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

    Вам нужно приглашать народ. И собесы им устраивать))

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

      Ну, на своём основном месте работы, я как раз много собеседований провожу :)

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

      ​@@JinOptimistНу это круто разумеется. Но я про то, что если была бы рубрика. В которой иногда подобие собесов на трансляции проводили.
      Было бы топ. Ну типа стрессовая ситуация, многим бы помогло :D Ну тебе в любом случае виднее))

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

      ​@@zjloo Тут дело в том, что у каждой компании, есть свои "любимые" вопросы и она их расскрывать не хочет. Потому что важно посмотреть, как кандидат будет справляться с задачей. О чём он будет думать, столкнувшись с проблемой. Зачастую нам нужен не правильный ответ, а увидеть, как человек к нему идёт.
      Поэтому проводить полноценной собеседование мало кто будет. Скорее это будет как тут, какие-то общие вопросы, которые ты можешь и так легко нагуглить.
      Собствено поэтому, я в этих роликах и пытаюсь не просто краткие ответы давать, а рассписывать мыслительный процесс :)

    • @1args
      @1args 8 месяцев назад +1

      ​​​@@JinOptimistKуча разделяется на Small Object Heap (SOH) и Large Object Heap (LOH). Когда размер объекта превосходит 85кб - он отправляется в LOH. Сделано для производительности процессов взаимодействия. Исходя из этого в одной куче не может быть слишком маленьких и слишком больших объектов вместе.
      Garbage Collector анализирует корни программы. Каждый такой корень может иметь указатель (переменную типа IntPtr, которая представляет адрес) либо может иметь значение NULL. GC организует объекты в управляемой куче по поколениям в зависимости от того, как долго они существуют. Объекты, которые только что созданы, находятся в поколении 0. Если они выживают после сборки мусора, они перемещаются в поколение 1, а затем в поколение 2. Объекты в поколении 2 считаются долгоживущими и редко проверяются на наличие мусора. GC обычно собирает мусор в одном поколении за раз, начиная с поколения 0. Сборка мусора может быть вызвана автоматически, когда доступная память становится недостаточной, или принудительно с помощью методов класса System.GC.
      К тому же GC работает постоянно в фоновом режиме. Механизм оптимизации сборщика мусора определяет наилучшее время для выполнения сбора, основываясь на произведенных выделениях памяти.
      Профессионал в .NET должен знать все азы платформы.

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

    Как пройти собеседование на C#, когда в стране всего 16 вакансий?) И то половина из них, это middle/senior.

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

      Не в той стране ищите)

    • @JinOptimist
      @JinOptimist 10 месяцев назад +3

      Из ваших слов следует, что прямо сейчас есть как минимум 8 (половина от 16) вакансий, где требуются Джуны.
      Так что ответ просто, ходить на собеседования и учиться ;)

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

    Лайк однозначно. Зачем джуну знать про то, как сборщик мусора работает с памятью? Это уже перебор по-моему 🙂

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

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

    • @pulsar1934
      @pulsar1934 10 месяцев назад +2

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

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

      @@JinOptimist Всё равно мне это кажется странным.. Время на собеседование ограничено, и важно понять может ли джун писать добротный код, и с какой скоростью решает поставленные задачи. Поэтому если этот вопрос не влияет на результат собеседования, то ИМХО нет смысла тратить на это время, а если влияет, то это странно 🙂.
      Кстати, Вы прекрасно обьясняете сложные вещи простыми словами, очень приятно и полезно слушать! 🔥И ведущий тоже большой молодец! 👍

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

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

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

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

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

    Что-то к третьей части интервьюер выглядит уставшим

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

    Почему такие легкие вопросы. Где вопросы про REST, GRPc, Microservices, MessageBroker, SOLID, тестирование NUnit, REST vs GRPc, Паттерны обычно спрашивают каждого вида и по несколько, Dapper vs EF, зачем нужна Reflection. И это не все.
    В общем как по мне сейчас от джуна требуют куда больше знаний технологий ибо знаниями самого языка не особо кого то удивишь. Вернее сейчас это считается пост фактум базой.

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

      Как вы правильно заметить, начинаем мы с базовых вопрос о C#. То что как вы заметили этими знаниями никого не удивишь, не значит, что об этом не спрашивают или что этого знать не нужно.
      В тоже время, спасибо за список вопросов. Думаю если будет следующее видео, обязательно поговорим там о NUnit, ORM, Reflection, REST и много другом )))

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

    Если бы я так отвечал на собеседовании, я бы вряд ли прошёл его :/
    много деталей опущено.

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

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

  • @dmitryp2121
    @dmitryp2121 4 месяца назад

    ппц, я оказывается все это знаю, много лет, как избавится от чувства самозванца? много проектов веду с коммерческим опытом, но нет уверенности в себе чтобы попросить больше ЗП ((

    • @7xAlpha
      @7xAlpha 4 месяца назад

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

  • @DenisDenis-zq8mk
    @DenisDenis-zq8mk 11 месяцев назад

    Так и не понял что выбрать Java или C#?

    • @DF-ov1zm
      @DF-ov1zm 11 месяцев назад +1

      По дефлоту всегда C#. Java ток если вам очень хочется разработчиком под какой нибудь SAP, для всего остального java уже давно мертва как язык и как платформа

    • @DenisDenis-zq8mk
      @DenisDenis-zq8mk 11 месяцев назад

      На Java почему-то вакансий в 2 раза больше. Вот это смущает. И вроде ревирсинжинирингу код легко поддается.

    • @DF-ov1zm
      @DF-ov1zm 11 месяцев назад

      @@DenisDenis-zq8mk смотря в какой стране, в России, да и думаю во всем СНГ, на Шарп намного больше спрос, чем на джаву, так уж повелось.. в остальном мире наверное да, но тут надо понимать какие вакансии вам интересны... если в допотопном тырпрайз говне ковыряться - это, то чем вы мечтаете - то велкам в джаву, SAP тащем то про это же. Это все писалось десятилетиями и ещё много десятилетий будет поддерживаться, поэтому и спрос на джаву огромный. Если вы хотите работать с современным кодом и интересными проектами - то альтернатив шарпу не так уж много. Что касается реверсинжениринга, я так понимаю вы про декомпиляцию? Любой язык, компилируемый в промежуточный язык, очень хорошо декомпилируется почти в первозданный вид.. в эту категорию попадает множество языков, в том числе и джава с c#'ом.

    • @DenisDenis-zq8mk
      @DenisDenis-zq8mk 11 месяцев назад

      C cовременным кодом и интересными проектами ? кроссплатформенность? .net core пишут что урезан..

    • @DF-ov1zm
      @DF-ov1zm 11 месяцев назад

      @@DenisDenis-zq8mk во первых, вы всему, что в интернете пишут, верите? Во-вторых, такой конструкции как Net Core не существует уже скоро 3 года как, даже поддержка последней его версии закончилась уже скоро год как) В-третьих, я даже спрашивать не буду причём тут вообще язык: это абсолютно разные никак друг с другом не связанные вещи, у .net множество языков (VB, F#, Q# итд), а у c# множество фреймворков (net framework, net core, net, asp net, asp net core, wpf, wf, xamarin, maui, unity, nano, итд итп) .. Ну и чего там урезали и где - это абсолютно бессмысленное и глупое утверждение, которое даже джун произносить не должен, если хочет что бы его хотя бы собеседовпть начали.

  • @UnknownCorey
    @UnknownCorey 3 месяца назад +1

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

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

      А можно столбиком эти вопросы и список компаний, а то звучит так, что мы в вакууме живем, а у вас актуалочка на руках)

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

    Жалко не было моего любимого вопроса из собесов про DI и DIP из SOLID.

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

      DI было)

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

    Ref для экономии памяти имхо

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

      А ещё если по ref передать reference type то можно проинициализировать новый объект, ссылка на который будет подложена в старую переменную )))
      Но всё же думаю, это не основная причина использования ref

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

      @@JinOptimist спасибо за видео вы очень уверенно отвечаете на вопросы. Мне бы так на собесах

    • @SomeOne-rv2bk
      @SomeOne-rv2bk 10 месяцев назад

      ​@@JinOptimistещё можно делать return ref

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

    Жалко не раскрыли кто такой Паша Львов. Хотя бы вкратце кто он?

    • @teachmeskills
      @teachmeskills  6 месяцев назад

      У нас с его участием до этого выходили ролики. Когда приглашаем гостя в первый раз, просим пройтись по его биографии) вот ссылочка - ruclips.net/video/4ZykAmPUtrw/видео.html

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

      @@teachmeskills спасибо