Пример типичного собеседования программиста .Net c#

Подготовка к собеседованию на C# Developer

Транскрипция видео:

  • так поставил на запись опять же мы делаем мы проводим пример собеседования тут описано это как ассессмент это опять же для сотрудников которые уже работают и они правовые по ним проводятся ассессмент для понимания его текущего уровня потому что уровень постоянно растет как бы да Он может проседать даже наверное но просто пример Я тоже проводил То есть у нас были сотрудники которые там тестировщики но они хотели стать программистами Да разработчиками и также они у них какой-то там есть уровень подготовки есть какое-то уже там

    00:00:01 - 00:01:00

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

    00:00:31 - 00:01:29

  • короче тут много типа на минус и знаю и понимаю теорию неоднократно применял на практике Но почему-то это почему-то 0,8 Хотя это на самом деле должна быть единица потом соответствующий практический опыт чем это отличается от предыдущего непонятно но это уже единица А есть типа глубокая экспертное понимание предмета Ну типа там тот человек который там должен рихтера учить Как как там типа что-то де Ну делать какие-то сложные вещи То есть это как бы ну 1,2 но наверное то есть вообще по-хорошему тоже этот пункт проставлять

    00:01:00 - 00:01:57

  • логически Если конкретным пунктом человек работал наверное там Ну больше трёх там тире 5 лет как бы если у него Ну то есть это уже были бы которые ближе уже к экспертам и имеют именно вот полноценную экспертизу да то есть там большое количество времени этой области занимались То есть наверное как так Ну обычно мы ставим 0,8 единичку как бы тогда по человеку там в среднем заполняем то есть ну это внутри опять же заполнял вам наверное тут тут мы сейчас не зачем не гонимся то есть логически может быть даже если что-то слабо как бы

    00:01:29 - 00:02:20

  • ну у нас получается Михаил Антон то есть вот только до вдвоём здесь два два пока что и подопытных в чатике У нас сейчас все народ должен подтянуться и получается Ну Миша вроде у него вроде понимает хороший опыт Миша Расскажи в двух словах про себя про свой опыт еще раз но у меня нету в компании на проекте не работал [музыка] Сколько ты там проектов собрал или там тестовых учебных проектов собрал Ну слабенькие каждый раз там по какому технологии смотрю а сейчас я собираю по сути это есть от Microsoft

    00:01:54 - 00:03:19

  • и шел сервис который с книжки архитектура приложения микро сервис [музыка] это прямо от Microsoft они недавно микросервисы от Microsoft магазин который на микросервисах я про него тоже слышал ни разу так не посмотрел я они там книжки под него Но я сейчас в архитектурку немножко потому что архитектура в принципе дает понимание Зачем нужны паттерны что нужно что Не так абсолютно другое Я считаю у меня конечно будут писать не то что нужно не то что нужно бизнесом выписать как он видит Ну так такой я Я максимально бизнес

    00:02:47 - 00:04:33

  • направленные разработчик который делает то что нужно бизнесу и как бы со мной там все эти Ну у меня чёткое понимание что всё что там прошли про архитектуру это всё Говорят это как бы зачастую просто ну просто разработчики-то любят внедрять всё что всё что угодно это абсолютно как бы не нужно бизнес в 100%, но как бы ну они прикрываются гибкостью там И расширяемостью как бы но это всё как бы ну это опять же короче всё по ситуации но О'кей э-э что давайте Давай пробуем Короче Миша Поехали Давай мы как

    00:03:59 - 00:05:06

  • начинаем полноценно и как вот ну это то же самое Это просто по большому счёту обычная собеседование просто в этот в этом случае мы постараемся какие-то моменты Если у тебя есть какие-то пробелы Мы постараемся их разобрать опять же помощь залу приветствуется То есть все Каждый кто что-то понимает видит что это когда я я тоже не совсем не там не мы абсолютно там не Эксперт такого там большого уровня Я что-то я знаю у меня есть пробелы Я тоже готов к этому Ну абсолютно и если кто-то что-то может дополнить сразу же подключайтесь

    00:04:32 - 00:05:27

  • То есть просто тут можно включать микрофон говорить Нет у нас там поднять руку там что-нибудь такое а просто включаетесь аккуратненько там ну то есть там не сильно перебивая просто помогайте да поехали так поехали смотри давай пока поставите нет знаний система общих типов значимые типа ссылочные типы тут сразу же идет дальше класса структуры Но тут еще есть перечисления наверное ему да то есть про них вопрос и про интерфейсы Давай наверное да Вот потому что тут и на Space секундочку просто про память Я сейчас секунду Посмотрю где это

    00:05:00 - 00:06:08

  • все про память говорится наверное То есть тебе тоже тут же в этом же вопросе Пожалуйста расскажи про стек и про кучу и про вообще как она организована память и что что-то Какую что ты знаешь Давай начнем с памяти сначала потом типа перейдём но память удобно приложение организовано собственно стеком и кучей таких хранятся ссылки на кучу либо собственно значение и у нас поэтому разделяются значимые типы которые хранятся в стеке и ссылочные типы которые хранятся в куче хранится лишь ссылка [музыка]

    00:05:34 - 00:06:54

  • значимые типы обычно используется удобно для математических ссылочное значение то есть операция всякие копирование [музыка] то есть мы просто перейдем ссылку так по объему Сколько размер насколько куча выделено что выделяется куча на что выделяется стек знаешь не знаешь но на кучу кучу выделяется для работы программы собственно все там по моему на процесс бесконечное То есть у нас по идее стек стэк моей информации каждый поток у каждого потока есть свой стек и стек у нас ограничен двумя мегабайтами по моему

    00:06:14 - 00:07:42

  • если я не ошибаюсь сейчас [музыка] так Парни всем привет У добавился там Денис мы проводим тестовая получается то есть это по большому счету тоже собеседование Но это проводилось у меня в компании как асессунд то есть это просто когда раз в год сотрудники еще разок проходят и по всем пунктам их прогоняют это где-то полтора два с половиной часа занимает и как бы полезно просто свои скиллы потренировать лишний раз проговорить какие-то там Технологии то есть кто-то в каком-то направлении вырос больше

    00:07:21 - 00:08:28

  • углубился изучал больше ну вот для проведения обычно проводится до того когда в компании много сотрудников и их можно там ну чтобы у руководителей было получается видно Матрица компетенции Кто кто умеет чтобы в нужный момент просто к другому проекту можно было подключить ну какая-то такая история Ну и просто личная тренировочка сейчас нормально Я не услышал твой вопрос который ты задал то что эти потоки то что под каждый поток выделяется свой стеклом потоки получается эмулируется у нас же есть у нас есть наш процесс и

    00:08:15 - 00:09:30

  • под него у нас есть пул потоков с которым получается наше приложение работает и соответственно когда мы вот дебажем там же как раз на студии у нас же есть у нас в студии мы видим получается вот здесь Ну допустим да что-то у нас запустится и у нас получается Давай поставим какой-нибудь там на какую-нибудь Home Controller Да какой-нибудь там самый индекс страничка получается Он причем оно это про нас асинхронный Action получается да и откроется приложение мы еще раз не зайдем смотри он нам подсказывает что у нас этот поток

    00:09:05 - 00:10:22

  • сейчас 1216 поток это мы прилетели сюда 12.16 запомнили А теперь давай зайдем просто под ну другой запрос отправим к этому к этому там и к нему опять отправились и Вот соответственно то есть другой запрос он уже в другом потоке пришёл 10.000 0,36 Ну вот потому что и при отладке соответственно когда мы особенно играемся с синхронностью очень удобно потому что здесь указан именно номер потока в котором происходит работа соответственно когда там что-то асинхронно то есть мы проваливаемся наверное с тем же потоком А вот код как

    00:09:44 - 00:10:55

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

    00:10:19 - 00:11:26

  • поэтому мы всё например не засовываем потому что он ограничен по памяти он быстрее работает чем Куча и как бы какие-то быстрые Ну там более быстрый вещи которые нам хотелось бы чтобы нам быстрее обрабатывались то мы долги тут логически должны уже думать где у нас что хранится э и поэтому как бы использовать быстрее просто память о нём быстрее выделяется по факту обращения что человеку что куча происходит но за то же время там именно выйдет не памяти быстрее работает потому что ну потому что стеклу просто указательстве куча там

    00:10:53 - 00:12:06

  • а процесс работы ни разу не по скорости одинаково Ну и сама работа быстрее да да Окей про кучу Какие разделы кучи Ты знаешь Нет наверное не знаю раньше делилась на два разделась сейчас три раздела У нас есть это малые объекты есть и появился То есть у нас смол его недавно объекты которые попадают 85 килобайт по умолчанию Я помню что большие коде я ни разу не видел чтобы его использовали какие-то большие тяжелые вычисления либо под просто большие объекты получается в куче [музыка] хип и они будут больше 85 килобайт этим

    00:11:30 - 00:13:18

  • порогом можно управлять то что это опять же то что я там был как-то по-хитрому по-другому работает с этими тремя получается отделами куча для оптимизации работы с памятью тут есть тоже можно спокойно погрузиться почитать более глубоко и я вот тоже информация которая обладает я на самом деле тоже работаю кучу кучу лет просто разработчикам до центра разработчикам Я никогда на самом деле не работал в прямую То есть я не знал где мои данные в стейки они хранятся или в куче и в каком там блоке кучи То есть это

    00:12:35 - 00:13:39

  • все-таки в моём понимании такая тоже оптимизация работает с памяти это всё-таки работа наверное плюсовиков Обычно они как бы там заморачиваются означает что хранится потому что как бы изначально он сделан для того чтобы удобно пробрасывать любые данные из хранились быстро легко тут один момент он постоянно все косячит то что я встречаю они просто большие объемы из базы данных Когда в базе данных там допустим обычно делают как у нас искать страничка на ней отображается табличная информация и обычно

    00:13:10 - 00:14:07

  • разработчик Он просто пишет из таблички вытянуть всё на страничку Ну вы отправить на фронт и когда соответственно там ну там 100 записей всё нормально 1.000 записи всё ещё нормально работает быстренько А когда там уже там больше 10.000 записей Но даже 10.000 записи обычно Там эта секунду полторы-две когда железо быстро а когда соответственно и там ну не часто запросы происходят допустим там нет Там миллиона пользователей у этого сайта А когда соответственно там уже записи больше миллиона если допустим это

    00:13:38 - 00:14:31

  • Ну статистика какая-то обычно там обычно данных потому что во всех остальных сущностях обычно все равно немного данных то есть пользователи не очень много регистрируются заказов там ну там вот когда-нибудь там будет больше 100 тысяч больше 100 тысяч Все начинают уже тормозить так тут получается тормозит из базы данных на backend потому что большой объем выгребается и тормозить все начнет зависать из бэконда на фронта даётся тоже тут тоже начинает всё тормозить это вот самая стандартные косяки как бы с чем там программисты как

    00:14:04 - 00:14:58

  • ну что-то косячат что-то делают как бы и с чем как бы приходится сталкиваться что приходится оптимизировать оптимизируется легко просто накладывается пейджем то есть указывается номер страницы и количество записей я стараюсь вообще не больше десяти записей отправлять вот говорят чтобы гоняли какие-то коллекции данных ну там возможно больше 100 не больше 100 записей чтобы гонялась между базой бэкэндом и фронтомка частями О'кей проговорили так поехали Ну всё про значимый ссылочные ты проговорил э-э

    00:14:31 - 00:15:36

  • добавлю строго говоря абсолютно уверен что я могу положить значимый тип в кучу и правильное определение знать ссылочных это в том что они передаются по значению по ссылке и она типа основное Правильно Потому что ну понятно что у тебя значимый тип находясь в составе объекта как поле объекта Ну просто кажется поэтому скорее правильными говорить про Просто то что они передаются по значению по ссылке [музыка] про боксинг Ну нет ну типа смысле ты заводишь антовое поле у своего класса и пожалуйста у тебя но лежит на объекте Ну

    00:15:05 - 00:16:35

  • то есть ну поэтому строго говоря не совсем верно определение Они вроде как бы так да получается Если у нас привычный получается да Когда у нас идет копирование по ссылке а значение у нас происходит потому что это медленная операция Ну да потому что локация памяти куча всегда в общем не быстро особенно если начнёшь это делать сходу для кучи объектов одну то есть обычно все какие-то такие приколы там вылазят с памятью когда ты в каком сложном цикле на куть маленькую Казалось бы операцию натыкаешься и

    00:15:59 - 00:17:18

  • получаешь проблемы где-то у этих как они с единорожкам ребят пв-студия есть статья где они обнаружили что линки у каждой вызов создает дополнительный объект Куча и за счет этого у них замедлялось работа анализатора они долго отлаживали потом как-то убирали получается что именно операция ну быстро Окей отлично хорошо так Ну расскажи тут смотри тут указаны перечисления про Я думаю что ты знаешь придумал Ну и ну это обертка над Инком изменять память и по сути У нас есть но обращение к числовому через какое-то

    00:17:26 - 00:18:57

  • значение смысловой буквенное обозначение встречался кстати многие те кто занимаются оптимизацией рекомендуют указывать и получается ты можешь набор допустим Если у тебя тебе нужно не одно это значение ему может быть не одно значение а несколько Селект допустим цифра 7 будет подразумевать что у тебя выбор первый второй и наверное первый второй третий один два и четыре то есть 3 галочки пробитого именно а товарищ проба это вы о том что и нам может быть любого типа ты можешь сделать лонгов и нам байтов

    00:18:18 - 00:19:33

  • Мне кажется Михаил я об этом то есть не от Инта 6 хватит потому что большом проекте типа через два года придет другой разработчик и скажет что за это сделал скажу пять копеек ставлю Microsoft на своем получается как сайт называется ну по сути они над и нам делают обертку и называют ее и номера еще когда к нам добавляет description то есть описательную какую-то часть и может еще что захочет разработчик то есть они и так в принципе сделали обертку Сейчас они делают обертку когда тебе нужно русский язык

    00:19:13 - 00:20:37

  • это человек который будет недоволен тем что нам она наследуется от байта А мне вот интересно что за кейс такой где у тебя и нам можно содержать больше чем 254 значения По рукам Почему как бы этот справочник лежит нигде туда в какой-то БДСМ содержит сколько тысячами [музыка] потому что они со мной такие большие объемы данных они постоянно все-таки подвержены редактированию и поэтому тут уже должно быть какое-то хранилище типа ну а-ля там базы данных или какой-нибудь там ну на крайняк там может какой-нибудь

    00:20:33 - 00:21:43

  • radis там не знаю что-нибудь такое Потому что если там их уже больше сотни они будут редактироваться Они будут меняться там скорее всего меняются Ну типа это Например могут быть или ещё какие-то типы каких-то элементов которых Ну может быть много Ну то есть это прям из практики такое есть такое бывает Окей у нас можно было можно в него кидать с этим можно было в нём голосовое запустить может в следующий раз там запускаем OK Миш который который у нас подсосом Ну смотри тут ещё вопрос про интерфейсы

    00:21:21 - 00:22:35

  • я поняла Если бы я спрашивал Ну расскажи что это такое зачем они твоё видение он есть механизм наследования про это пару слов То что может наследоваться от класса и наследование может быть только от одного класса вот и есть у нас интерфейс интерфейс это по сути является описательной частью какую функциональность должен обеспечивать твой класс если ты на следующий интерфейсы интерфейса нет последних добавили в других языках нет возможности реализовывать методы но теперь найти есть да да но теперь добавили там кто-то

    00:22:02 - 00:23:28

  • наплакался собственно интерфейсы мы можем у своего класса несколько быть любое количество ты говоришь о множественном наследованием то что и все шарпе в интерфейсов убрано множество наследования Потому что есть проблема ромба в других языках некоторых есть в плюсах же есть да а вот Sharp и убрали как раз для удобства что там не косячили программисты и поэтому и всем расследование делаем Мы через интерфейс наследуемся от них то есть интерфейса мы можем сделать множеством расследование одновременно хорошо получилось

    00:22:50 - 00:24:04

  • интерфейсами они наследованиями [музыка] такой вид абстракции то чего мы наследуемся смотри ну обычно стандартная опять же вопрос на собеседование это расскажет Расскажите про абстрактные классы интерфейсы чем они общие что у них общие что у них разные и в условиях в процессе Может там делать реализацию методов Ну собственно абстрактного класса могут быть реализованы реализована какая-то часть Вот и какую-то можно пометить как абстрактно которую Наследники должны переопределить то есть для такого класса который

    00:23:26 - 00:24:57

  • наследует надо реализацию Вот получается что абстрактный класс уже дает какую-то но если необходимо задать какой-то минимальную или необходимую поведение для класса то мы делаем через абстрактный класс А если мы хотим просто описать интерфейс Но это по сути как какая нам вилка нужна для розетки между нашими системами или классами по сути между классами то мы используем интерфейс Когда в интерфейсах можно реализовывать то они вообще-то это полностью однотипное как бы вообще к сожалению еще ни разу не увидел нормальный кейс где

    00:24:21 - 00:25:41

  • интерфейс через реализацию ходит но возможно я знаю объект создать можно объект абстрактного класса или интерфейса интерфейса объекты я не могу создать абсолютно класса Да могу тоже нельзя создать тоже нельзя потому что у него там некоторые методы не реализовано как-то создашь просто абстракция Да все отлично Окей давайте все тогда что Ну ставим подожди ты даже хорошо все рассказал Хотя ты говоришь что у тебя нет опыта ты типа не был разработчики Точнее не пишешь но ты все хорошо рассказал на самом деле Ну

    00:25:08 - 00:26:22

  • наверное давай хотя бы ты вот так поставим да то есть то что ты говоришь неоднократно не применял как бы да хотя ты всё чётко вообще всё рассказал без всяких там ну я тебе даже 0,8 Давай поставим 0,8 то есть Давай тогда мы сейчас сюда включим Ты просто уже говорил про переопределение Давай мы сюда пропалимо Давайте шагнем просто принципы опыт я это не вижу Где принципы оп Вот они только здесь да Давай мы сейчас посмотрим Пару слов про вот третий тип памяти это где-то в последних появилось Ой я тоже там у него короче Два кейса

    00:25:51 - 00:27:06

  • почему она удобная и что какие у него плюсы плюшки Хмм сейчас не расскажу Я уже тоже не помню это надо просто 2 секунды я думаю 2 секунды Так давай расскажи пожалуйста наследование полиморфизм и простой наследование это уже третий это второй первый капсуляция Еще бы два я вообще как бы 34 абстракция типа того меня сейчас будет спутанная но Окей подразумевать что мы скрываем детали реализации это просто то что мы работаем с некими капсулами некоторые некие объекты которые класса то что внутри него у нас даже не проскрытие

    00:26:37 - 00:28:18

  • просто То что у него это то есть какая-то некая капсуловка внутри которой есть методы и поля как объект у нас уже какие-то объектики то есть и речь это про объект на ориентирован то что мы с объектами работаем потому что в других языках Нет есть языки в которых вообще нет объектов то есть смысл такой раскрытие там приватную приватности всё такое Это уже как бы это на самом деле Ну в моём понимании это немного другое То есть просто то что инкапсуляция то что мы работаем вот с некими капсулами это уже и внутри него есть методы внутри

    00:27:50 - 00:28:44

  • него есть поля как бы это уже как бы намного это нам громадный плюс и это очень круто что мы с этим можем работать инкапсуляция потом идёт наследование наследование это то есть интерфейсы короче они могут наследовать функциональность базу Ну какого-то базового класса от наследующих от него мы получаем вот и что-то дописываем получается что какая-то новое поведение на основе текущего который нам даже может неизвестно потому что мы с черными коробками вот этим работаем и классно но его почему-то Я тоже я там с восьмого

    00:28:17 - 00:29:28

  • класса когда учил там c++ меня там прямо училка гоняла вот эти принципы То есть как бы я тогда уже зубрил и знал то есть я в восьмом классе знал принципы Опа не знаю как все остальные это было как Ну мне это короче полиморфизм а-а Что это такое какие есть и виды полиморфизма и расскажи про него пожалуйста так полиморфизм он переопределение и перетирание все шарпе перепределение как реализуются Virtual да то есть мы в классе родителя указываем слово виртул Наследники перетяжение то по моему через неё это мы

    00:29:03 - 00:30:13

  • делаем поэтому там возникают особенности при работе с объектами мы можем положить в наследника родителя Да и вызвать метод какой метод там вызовется я вот эти игры за которые наверное по рукам бьют Но я их не особо я понимаю приблизительно Как работает но взять и сделать и потыкать и отлаживать или там все это ровно 10 минут написать три класса занаследовать один от другого И у одного сделать другого сделать а по сути мы просто выдаем там одно За другое там выдаем единицу за двойку за единицу через забирает короче по сути

    00:29:58 - 00:31:19

  • просто подмена понятий простым языком родительский кросс кастуем и у нас получается не наш дочерней не метод дочернего класса родительского как раз таки А и про соли Ты знаешь что они проходят постановка принцип из солида буковка л Лизка Вот как раз что мы завязываемся на интерфейсы а не на конкретную реализацию говорит о том что если мы в приложении подставим но там как раз таки то есть в приложении мы объекты родительские которые у нас есть объекты классов родителя подставим объекты класса наследника наше предложение должно также

    00:30:41 - 00:32:16

  • не должно функционировать поведение этого понял что как раз таки не нужно там слишком полиморфизничать и всякой и там что-то сложно переопределять потому что иначе если мы поставим дочерние Да это как раз таки чтобы не нарушать соль это И вот третий принцип именно солида как раз таки это речь о том чтобы не сильно заигрываться с полиморфизмом О'кей отлично Ты вообще отлично как будто ты там ну ты просто ботанил хорошо Я тебя полно точно ставлю 08 хотя одну практику ты говоришь у тебя не сильно практика Но ты рассказал Все отлично как

    00:31:43 - 00:32:56

  • бы у тех людей что я не знаю я помню что я 45 лет 7 уже прописал там на дунете и я про полиморфизм Допустим или про память вообще ничего не рассказал потому что это просто как бы вопросы из теории которые в реальной практике но они вообще никак не применяются но в моем почему-то опыте и примерах Хотя ей на плюсах много писал Ладно погнали дальше всё это болтовня Так что такое name Space Space это области программы при написании программы чтобы разделять наши модули dlk и прочие на разные области Все отлично Все

    00:32:20 - 00:33:33

  • правильно но народ чтобы конечно ну смысле там стандартный иерархия там обычная Так ну методы свойства наверное уже смысла нет спрашивать все про это рассказал индексаторы сталкивался ли ты с индексаторами а вот не знаю тут вопрос индексатор и итераторы Ну давай начнем с операторов оператора Помнишь там какой-то слово ключевой такой волшебное есть Ну а иному работают такое слово аил Да не до конца понял то что Ну все что я провел то что он выдает коллекцию Ну по одной штуке есть такая вот хрень называется через

    00:32:57 - 00:34:30

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

    00:33:50 - 00:34:47

  • индексаторы есть примеры мы можем император как раз но типа лист типа сложный объект у него вот есть индексаторы итератор есть так итератор Смотрим итератор итерации по коллекциям просто итерация по коллекциям итераторы и операторы [музыка] которая То есть тут какой-то цикл и он и элемент массива возвращает Да здесь все-таки элемент в этом случае хотя мы просто подсовываем типа наш какой-то про то что Яну Мирей был как-то относится к и номератору это правда потому что собственно интерфейский номер был

    00:34:19 - 00:35:41

  • определяет по-моему единственный метод короче ну и трат ну типа термин если правильно помню шарковой это не нумератор правильный почему там итератор не очень понятно кажется нумератор это короче и нумератор он здесь называется его наверное перевели так Ну да литерату английского А вот тут гет и нумератор Мета его и получаешь по факту то есть объект который сама конструкция и вот этой итератор а возвращаем какой-то номератор какой-то коллекции Покажите блок кода который использует Ну собственно вот просто термин короче

    00:35:19 - 00:36:52

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

    00:36:22 - 00:37:52

  • все шар именно просто и номер Объект который позволяет там проходить по коллекции все шарпе это как раз таки и номераторы тоже просто обертка синтаксический сахар Но если брать аналоги лесах там каждый коллекции Да есть объект который там есть методы следующий объект также император это именно мы пришли Что да Что итератор это вот что и нумераторы итератор это просто одно просто названная и что Да у него под капотом лют и смысл в том что он возвращает по запросу следующий элемент собственно Денис говорит что там еще

    00:37:26 - 00:38:54

  • раскладывается типа на это тоже как бы сахар который откладывается на Некст и на что-то еще наверно скорее всего так и есть Это наверное информация Нет ну наверное как бы все-таки не самая Крайняя это наверное всё-таки на Microsoft надо ковыряться Так давайте мы можем найти куда у него типа Get Next типа хз Next там ну короче тоже интерфейс определяющий набор методов Он правильно говорит [музыка] технически технический [музыка] посмотреть что здесь индекс вот а именно котором говорил как раз лишь интерфейс у него там и правда есть

    00:38:19 - 00:39:41

  • сам интерфейс посмотреть должно быть типа Get next и знает что такое там получить следующие проверить что еще не закончился и freech Ну да поэтому поэтому перебор коллекции каждый раз проходит Ну каждый раз проходит перебор коллекции с этим есть проблемы То что это не окей Ну да здесь нет ну окей Да короче вот каждому домашнее задание кому интересно спокойно потратить полчасика поковырять разобрать погрузиться почитать про итераторы и найти Возможно там правильно Так он раскладывается где там действительно это его внутренние

    00:39:14 - 00:40:30

  • внутрянку полезно Это тоже посмотреть разобрать Окей Поехали дальше индексаторы индексаторы тут отдельная штука позволяет индексировать объекты обращаться к данным по индексу фактически А тут короче класс И вот именно и типа вот так выглядит индексатор то есть для класса Person можно настроить отдельный индексатор который вот через конструкцию This тут Index И вот короче гетеросетор Короче для каждого индекса Вот такая штука это получается то есть для объекта для вложенных классов массивов Нет ты только потом что угодно будешь

    00:39:56 - 00:41:23

  • реализовать по факту Ну например словарь также реализованы многие создаешь допустим объект компании которая выдается именно какой-то персонал который можешь по факту тут можешь не знаю просто строку может всегда одно и тоже возвращать вообще Ну что угодно может под капотом сделать здесь какой-то логичный пример про массивчик под капотом проговорили про индексаторы короче вот такие страсти есть по крайней хотя бы мы вспомнили что вот они есть что такая штука есть Окей Идем дальше что ставим Миша тебе ставим здесь Давай

    00:40:44 - 00:42:08

  • ты что-то слышал да не рассказал нам про это Но теперь ты уже знаешь теперь тоже все расскажешь Давайте 06 теперь это уже уже теперь раз расскажешь мы все проговорили и спокойно Ну 06 Поставим на первое этапе так сборщик мусора расскажи все что ты знаешь про сборщик мусора и рассказывает Так ну вот найти сборщик мусора там нет прямого указания дисполз очистить память от наших классов и прочее мы это отдаем на поколение сначала Ну есть три поколения у сборщика мусора У меня кстати задавали вопрос почему три

    00:41:38 - 00:43:09

  • Почему три мне не ответили я услышал только единственное идею что написали что товарищи из Microsoft проводили исследование и у них получилось что если три три самые самые удобные для работы сложилось и было Что сделать старые которые всегда живут и новые которые всегда надо удалять Но пока реализовывали но там разные штуки крутили получилось что нужно еще промежуточный этап иногда типа и на него забегать получалось не очень эффективно если всего два уровня изначально планировали поэтому и была с двумя

    00:42:30 - 00:43:54

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

    00:43:15 - 00:44:42

  • но сначала точно проходит по новым объектам и нулевым А первый вторые не трогают их и у него еще есть Вот такая штука Как дефрагментация получается памяти тоже некоторые время Поэтому большие объекты Он по моему никуда не перемещает но там в общем какие-то алгоритмы хитрый собственно Вот это про сборщик мусора точно Ну про большие Да правильно Они вроде не шевелятся в памяти вообще очень хорошо все сказал по делу то есть ради фрагментацию про поколение там под капотом какой-то очень крутая магия там

    00:43:59 - 00:45:23

  • графы под капотом которым Граф вот этих объектов То есть он не пробегает по моему всю память полностью у него есть подготовленное и он с этим работает и что-то еще важное с какой-то версии уже очень давно больше мусора синхронный и он синхронно не останавливает синхронный Да это был жёстко он ему нужно время он немного стопает На старт он где-то чуть вперед нами есть подробный прям картиночки там и потом где-то синхронно выполняется вот а про уровни вроде все да да да Круто все равно хороший развернутый ответ и между этими тоже еще

    00:44:46 - 00:46:15

  • больше знаешь Да нет конечно нравится тут еще бывает хитрый вопрос наверное сборщик мусора это можно найти сделать неудаляемой Ну да Ну там система подписок когда мы делаем есть вариант что у нас будет утечка памяти Ну то есть найти объекты которые подписались а другого объекта не используется если у тебя типа объекты которые на которые ссылки-то теряешь но через издателя подписчика можно сделать постоянно подписываешься заново на кого-то а потом ссылки теряют что они там остаются где-то потому что их на

    00:46:35 - 00:48:03

  • самом деле кто-то смотрит и есть прям кейсы Да ну отлично что все еще круто Я даже единственная поставил бы но так как Миша говорит что нет опыта практического но хороший теоретические знания Да давай 08 Да я же Окей дженерики что-то Расскажешь про дженерики дженерики это как они нас переведены обобщенные типа когда мы не пишем реализацию методов допустим для каждого типа объявляем группу типов через T и типизируем у нас получается обобщение вот эти обобщения скобки и параметром является другой тип

    00:47:25 - 00:49:11

  • да то есть как бы у нас какой-то тип либо какое-то поведение оно типа может там интерфейс Окей отлично восьмерки единицу не буду ставить просто ты меня напугал что тебя как бы опыт они хотя вроде ты дальше на единицу рассказываешь что-то расскажет про делегата делегаты это объект ссылка на делегата экшена но принципе да и функции делегаты это класс который является сигнатурой ссылкой на любой другой класс или их коллекцию не пишу через делегаты пишут либо через интерфейс либо через легаты Вот они

    00:48:25 - 00:49:49

  • страны обошли но по сути это уже это не то это метод у которого параметром является другой метод Нет это ты про метод второго уровня говоришь методы высшего порядка делегат Это ссылка на метод ссылка на то есть определяет какой-то Тип который представляет ссылки на методы коллекция ссылок такой вот специфичный на самом деле потом кажется тоже классно Вот но да но на Верхнем уровне абстракции реально представление буквально Окей Это ссылка на метод который сигнатурный то есть заранее известен принимаемые значения и возвращаем

    00:49:38 - 00:51:17

  • значение типа принимаем и возвращаем значение OK только не очень небольшая практика с делегатами надо поиграться так там можно вызывать их они собираются коллекция то есть несколько опять же подписка Ну вот все понимаю но что-то расскажет это анонимные анонимные методы что про них еще Ну наверно достаточно делегат или что Ну то есть превратится делегат просто форма за короткая форма записи метода Примерно метр нити очень хороший там видно что обычный метод Вот вот определяется как ну просто через Но

    00:50:37 - 00:52:09

  • это просто нет то есть но можно где-то отдельно должно быть А вот прям слева в менюшке есть лямбда может вот прям напротив слева короче 3 сверху прям до меня а она немного все-таки анонимных методов а можем не присваивать но когда вот эти пустые скобки давно анонимно либо как Hello когда мы задали и мы в него получается но тут речь просто про то что вот hello это то что получилось в результате А вот здесь после равно как раз таки здесь по хорошему должен был быть какой-то другая функция которая

    00:51:45 - 00:52:58

  • как-то бы называлась и мы бы в Хеллоу эту функцию присобачили то есть мы положили бы в него то есть метод а получается мы здесь это имя какой-то этой вот этой же функции мы его у нас его нет поэтому анонимный и просто то есть какой-то здесь мы какой-то какой-то закладываем функционал который вот здесь ну обычно это несколько строчек и тут через фигурные скобки Да идёт и получается то есть вот эта функция Ну как бы вот это вот этот уже метод который из нескольких там ну каких-то там по сути да это синтаксический сахар если

    00:52:41 - 00:53:42

  • мы дадим э Уил код посмотрим то среданом сгенерирует здесь э Хоть она не анонимный он задаст ей имя просто мы его не видим и обратиться к ним и обратиться к нему не можем вот получается да это будет делегатно то что даже в крышке книжки писал то что перед этими скобками довольными там слово делегат выделялось то есть деликат потом две скобочки отстрелочка Не забывайте проверять делегату потому что делегат которым кто-то пришлет может быть пустым и там лучше его через знак вопроса типа можно вот не hellow

    00:53:11 - 00:54:15

  • скобочки а Hello знак вопроса и это более но здесь понятно что сам задался вызвал но глобально проверить на Ну вот да то есть можно вызвать просто через скобочки Hello так красиво можно Ну проверить знаком вопроса на Ну и вызвать через точкой Потому это объект у него есть метод который приведет к выполнению собственно делегата Но таким образом проверить и не взорвать программу ну вот видите отлично супер только извините да Я уж тоже я это не понял так отлично Миш ну ты теперь на восьмерку знаешь или на шестерку

    00:53:46 - 00:55:07

  • Я не знаю Ну да Ну это же цифры это все такое Нет потом подожди через год проведем еще разок и тут я думаю будет все один и два там или тут уже инвок он уже не нужен он тоже народ еще помнит товарищи новые вообще зачем нужен его уже нигде нет Ну понятно что под капотом есть вопрос отдельно как события это экшена да то есть они как отдельный выделен Что расскажешь проект так Это по моему анонимные делегаты которые у нас заданы самой средой товарищи из Microsoft выделили нам целую кучу экшенов с до 16 параметров на вход

    00:54:34 - 00:55:59

  • и функции Мы же можем подписываться да да не события Это же ивента не Action и function другая история на самом деле ивент это группа методов типа ивент это гетеро для делегата вот ну собственно типа он отличается от делегатов всем Потому что делегат это объект и там типа у ивента переопределено плюс минус вот это вот что-то короче но подписка данная подписка А мы про ивенты типа события этой ивент Ага так и вон ты уровень Там ключевое слово это начало Примерно через неделю Да ниже будет пример через венцы скорее всего

    00:55:22 - 00:56:59

  • обычно тут так это вот прям с горой а вот выбе уже не хотят [музыка] Ну в большинстве случаев у меня так было объявляется в центре класса с помощью ключевого слова Event levant после которого оказывается тип делегаты которые представляют просто тут получается событие оно внутри системы то есть внутри программы А сейчас пишет более распределенные программы там ходят уже через интерфейсы и прочие дела По моему ивенты нет так сильно видимо используется я могу ошибаться опять же машину закинул и подписываешься на

    00:56:37 - 00:57:54

  • события сейчас машина уже даже Ok ok ну тоже и так кстати я тоже энное количество раз работал с таким кодом который тоже разработчики написали в таком стиле как бы он просто само собой он становится более чуть сложнее В понимании чуть сложнее В работе с ним и практически невозможно в доработке главное отличие от делегатов в том что Да вот а вот здесь идеально расписывается чуть выше код что ивент на самом деле два метода типа Гетеры это не классный объект Это просто Ну пара методов Вот это главное

    00:57:32 - 00:58:50

  • типа вообще дату делегат это вот то что мы обсудили там буквально объект Ну там ссылка на метод А ивент это именно группа методов для работы с делегатами Вот такая вот другая история очень близкие слова используются но по сути разные вещи Да там не очень коллекции наверное здесь вообще про все коллекции Да расскажи про коллекции которые ты знаешь начнем от простых пойдем каток безопасным Да ну самые простые это арея массив потом у нас есть лист это автоматически расширяемо скажем так обертка над а Rain

    00:58:30 - 01:00:04

  • так потом у нас есть это поиск по ключу ключ значение так потом нам целую кучу насыпали с локами которые могут работать вот у нас есть стек А ну вот тут уже подсказал получается я забыл про них стек и очередь вот стек Это первый зашел первый вышел очередь а нет это очередь первый вошел первый шаг это последним зашёл нет нет спрашивать про них блокинг Конг Карен диксоне книжечка недавно выходила колесо или куницы про как раз про конкурент всякие и вот там были расписаны В чем разница Но все-таки это какой-то Батл

    00:59:36 - 01:01:14

  • нег или еще что-то ты будешь писать И это все так чтобы тащить я не нашелся потому что в них там блокировки проработаны для многопоточной работы да Ну да там опять же они вот это ганкаренс и А есть еще более легкие не помню как недавно тоже завезли сейчас не найду точно то же самое только еще более упростили там А вот спину спину спины Вот они внизу расписаны Так они там используют синхронизации различные Ну там prodiction или опять же любят все там расспрашивать три раза меня мучили А у меня нет прям

    01:00:51 - 01:02:21

  • громадный опыт почему-то почему-то Я через них мало что писала и мало что работал вот продюсер что-то про них расскажешь но он работает ключ значения по сути там используется какая-то структура называется дерево Да дерево для быстрого поиска то есть там поиск Антон дерево это плюсах но при этом в плюсах тоже есть мапа но дефолтное дерево использует дерево будет за единицу не дает поэтому здесь как бы не дает маркировку но надо под капотом Поэтому до поезда единицу Ну на самом деле кстати поиск а вставка За сколько

    01:01:56 - 01:03:25

  • [музыка] там короче прикол ставкой тут терминологию просто потому что скорость алгоритма часто подразумевается алгоритма максимальная и сложность вставки словаря В общем случае за отель но эффективном случае за единицу Почему Потому что ну ты в кошмаку вставляешь вообще говоря за единицу данные Но если у тебя кошмака переполнилась тебе нужно полностью перестроить Это займет и грубо говоря раз хрен сколько случаев и скорость ставки будешь получать вместо вот чтение всегда вот единицы Ой мы тут сложности Ну короче смотрите

    01:02:45 - 01:04:09

  • сложность это значит типа порядка но N Это количество айтимов некоторые абстрактное О это значит Ну вот такого порядка N здесь подразумевается количество элементов в словаре на данный момент Потому что если словарь переполнился и тебе нужно ставить еще один то тебе придется пересчитать таблицу заново выделить всю памяти скопировать туда эти данные и типа это займет стойкой время будет зависеть от количества Акимов Мне кажется тут еще могут спросить про интерфейс коллекции потому что вот эти которые было и Collection я сам честно

    01:03:34 - 01:04:50

  • говоря тоже не вспомню подробно чем там Айдон ли Collection но есть еще почитать в случае в шарпах очень крутая иерархия вот этих вот интерфейсов и Блин очень тяжело без них жить потому что все коллекции шарпах по сути ну почти все они следуют и с этим очень клёво жить и вот мы сейчас перейдем очень клёво с этим работает А в Джаве жалкая пародия стрима пи и она вообще не крутая своей болью поделился [музыка] в данный момент записываю об этом и потом это будет видосик я выложу на ютубчик и закину по чатиком

    01:04:18 - 01:05:48

  • мы записываемся я говорил Всем в начале кто-то вдруг боится там что-то что его запишет и будет показывать на YouTube отлично круто что про коллекции что ставим Миш то ушел там же 50 на 50 уже Теперь знаешь вопросы со зона про коллекции я послушаю конечно какие они просто расскажи что знаешь я там ну я что-то рассказывал но видишь я даже наверное про сложность не рассказал Я знал про хэштей был там что-то она под капотом там используется что-то рассказал то что ну там процесс-то сложно просто просто у

    01:05:02 - 01:06:20

  • меня с ними опыта вообще никакого Я просто с ними не работаю Я просто как бы в это даже я я бы рассказывал это понятно дело там 2 минуты как бы разобраться и рассказать всё это и вот ну повторить Ну а я просто и причём у меня несколько развесили Я бы три раза по-моему Я залез в вазон в разные года Да вот последний раз где-то Месяца три назад или четыре и опять они спрашивают про этих хэштейн был а я про них как бы я изначально говорю Просто я на них не писал как бы у меня они просто рис у них на них построены прямо вот все выборки

    01:05:45 - 01:06:39

  • там у них много чего на них построено наверное просто понятие дикшнери как раз таки подразумевает что diction или наверное это та штука которая не должна изменяться это всё-таки некий статические данные которые разово загружаются Да и потом с ними работать то есть как бы ну и слово дикшнари как бы это же как бы справочник он как бы наверное то есть это не та штука которая должна быть динамическая у них на этом построены там все выборки и у них периодические падает там всё ничего не работает именно наверное по этой причине

    01:06:11 - 01:07:07

  • Ну то есть тоже Ну то что я вот знаю как бы про про Озон Хотя они там вроде там мужики умные неплохие зарплата там хорошие они в москва-сити находятся но сейчас тоже на удалёнке все и у них там ну как бы там писал там отражении Ну не знаю пока До того как склад сгорел то есть точно и они как бы там у них хорошие как бы коллектив и крутые чувачки умные но Вот потому что вот что-то меня постоянно по ним гоняли и на этом я просто постоянно заряжали Хотя опыт у меня вроде нормально Я знаю Я знаю почему у тебя зарезали небольшая

    01:06:39 - 01:07:42

  • шуточка и небольшая поправочка нельзя quid называть Q называешь куе-уве читается просто Q Я Слав программирование разработчик начинающий на английском я разрабы говорят забудь просто первая буква все остальное немного Используйте словари это очень хорошая вещь на этом живет весь мир они вам нужны даже если вам кажется что это не так у меня есть но лично несколько кейсов когда там драматически уменьшалось время ответа при использовании словарей они прям улучшают жизнь иметь это ввиду всегда хорошо

    01:07:10 - 01:08:23

  • если это долго работает правильно использовать в определенных кейсах с опытом на самом деле кажется что словари это самая основное решение любых простых жизненных алгоритмических задач когда тебе реально напротив сталкиваешься задачки что нужно что-то там большие данные куда-то преобразовать посчитать Очень вероятно что тебе там хватит словаря тебе там никакие вот из алгоритмических секций Там всякие два указателя какая-то там дальнейшая магии ничего не понадобится вот словарь тебя спасет большинстве случаев

    01:08:34 - 01:09:43

  • Так что имейте ввиду то есть читать словаря за единицу а не проходить полный список элементов часто уменьшает квадрата до линейной скорости и это прекрасно у меня огромное количество примеров проектов где я там занимался абсолютно разные автоматизацией в том числе огромное количество интернет-магазинов и там вообще нигде дикшнере Ну просто они нигде не используются и без них прекрасно всё равно Все упирается оптимизацию Все равно все при нормальном бэкенде все то есть без логика на сильно не должна быть

    01:09:15 - 01:10:19

  • размазана И вообще Она не должна быть вообще как таковая то есть всё равно это какие-то то есть правильный проект Наверное это какие-то аккуратные тонкие крутые в правильную структуру данных не сильно сложенную потому что чем сложнее там оно всё медленнее хуже и всё как бы то есть это задача бизнеса они покрываются на 100%. А вот когда что-то начинает там типа считать почему-то У меня такое может быть она само собой скорее всего она неправильное но когда начинает там на бэке что-то Вот именно гонять через diction или что-то

    01:09:47 - 01:10:46

  • высчитывать и что-то там какие-то там делать расчёты то обычно это как бы значит скорее всего неправильно поняли задачи они правильно реализуются У меня такое почему-то либо ты не сталкивался последний проект Ну вот тоже последнее мне пригодилось Это был расчёт фичей для формулы ранжирования Ну там хитрые фичи и там ну типа у тебя вложенные списки и там их особо Ну ты никак не обойдешь больше тебе нужно перейти там огромное количество лайков определенным образом данных он же там прекрасен там опять же

    01:10:17 - 01:11:30

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

    01:10:56 - 01:12:08

  • памяти своего процесса Вот и типа из-за того что это прям реальный случай из практики вот там две недели назад это опять же это ранжирование Это возле мыльная штука то есть Может быть не всем и ну на реально больших данных большой но в жизни вполне можете встретить парни в зоне допустим они прямо обожают и прямо у них там все на них построено к примеру как-то неплохо работает но просто они там тоже Стопудово очень ранжирует по-любому там же наверняка с тем рекомендации товаров и полюбасу я этот же компания которая на

    01:11:36 - 01:12:58

  • савёловской майнт что-то там майнд тех какая-то там по-моему да которые тоже вот именно у них крупный сервис и рекомендации для всех интернет-магазинов Вот они фигачит Просто я там сам несколько раз говорил что они там какие-то мне пришёл собесе семь человек Ну как-то так что за и семь человек которого ничего не знают вы тут знаете я думаю один хуёво пришли думаю все татуировках такие знаешь слишком крутой до пришли вместе все эти и в татухах и они что-то пришли мне собеседовать и что это был самый смешной

    01:12:26 - 01:13:31

  • Собес моей жизни но они как у них сервис рекомендации как раз для других магазинов они как услугу продают они встраиваются в другие магазины и там типа правильно алгоритм рекомендации окей да погнали дальше Давай Миш Так у нас Там же есть еще отсортированные коллекции сорта 300 по ним тоже иногда спрашивают на собесах был Ну вот как раз таки как Михаил Да сказал там получается используется дерево уже Я просто говорю посмотрели что у меня вот спрашивали именно это получается у нас в System Collection

    01:13:13 - 01:14:35

  • мы можем Давайте в него зайдем можем просто спокойно зайти в него посмотреть что у нас есть в системе Collection Да просто и тут у нас есть релиз биттер и кейс инсенситив провайдер Collection Base хэштей был Круг сторону есть структура Dictionary entry и есть но есть набор интерфейсов так Ну ты наверное говорил про неё Да там другая этот не секс этим конечно же а там уже другой правда но это правда там отдельно у нас лежат в System Collection concorent давайте сейчас еще раз если про сорт спрашивает Да надо

    01:14:00 - 01:15:31

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

    01:15:30 - 01:16:53

  • наверное не видел это наверное даже какой-то свежак на направленный список это в основном Яндекс направленный список можно направленность Ну на ленте листья собирать листа указатель И следующий ссылка на следующий элемент очередь так можно стек Но это использование структуры А вот именно есть какие-то хитрые системы где вот именно linked лист решает одно направлены направленный список Там же получается поискать долги Но вот у него есть это авто у него есть befo понятно что у него есть указатели Он от

    01:16:30 - 01:18:03

  • этого указатели вперед назад может какие-то действия делать но не больше подозреваем Давайте добавлю Это я вбросил там вся суть вопроса была в том как они хранятся в памяти в итоге нужно было Вот это различие назвать давай рассказывай Ну Вся фишка в том что лист хранится как массив если очень Вообще список двунаправленный или однонаправленный имеет элемент указатель на следующий элемент свой вот в этом вся суть Просто если да если слинг листом не сталкиваться то можно мне кажется ступор Ну да у листаж получается под капотом

    01:17:31 - 01:18:51

  • направленная область у него указатели на следующий и на обычный лист он у нас однонаправленный не он не направлен смотрите есть во-первых связанный список термин из общей структуры и двух связанный список это абстракции типа связанный список это просто список которым Каждый элемент хранит ссылку на следующий связанный это который в обе стороны А есть ли ты лист из шортов и они вообще так не связаны как вот первые два которые сказал лист совсем нам известный обычный такой динамический массив И он просто он вообще отношение

    01:18:20 - 01:19:41

  • здесь linkit лист как структура это связанный список реализации одна связанного списка нет ее Прям вообще или мы Исхода не нашли просто сейчас по поводу листа То что лист получается элементов лист тоже можно по индексатору сейчас конечно номера был у него нет индексатора нет то есть он только ходит или нет Да вот это поэтому лист более есть айлист интерфейс еще который я видел реализацию например тот пример который я упоминал про большие объекты ребята ну или свою коллекцию [музыка] а использование интерфейса

    01:19:03 - 01:20:50

  • по возможности интерфейсов вместо реализации это солидовская типа ну иногда это бывает удобно Вот они Дайте все интерфейсы они все складываются в хитрую иерархию Да это как раз Ну я рассмотрю этот наш пространство linked лист даже не касались и соответственно тут структура есть опять же Dictionary diction оказывается структура да а это так как кто-то Может все-таки подсказать чем linked лист лучше других коллекций которые не являются он под задачку например они вот я не знаю построение маршрута там вот эта штука

    01:20:36 - 01:22:02

  • решает но нет befo Скорее всего в обычном листе их Нет скорее всего и то есть ты можешь вставлять перед каким-то элементом что угодно и после какого-то элемента То есть наверное для удобства вставки Ну да ты переписываешь ссылку где ссылки то есть новый элемент у того предыдущий элемент ссылку предыдущую меняешь происходит потому что может там какие-то косяки быть лютые но ну типа вот эдаф-то и отбив А вот эти вот методы Ради них все это наверное происходит вся эта штука Окей шагаем дальше наверное есть проблемы

    01:21:36 - 01:22:58

  • списка Но домашнее задание в чатик потом сбрасывайте что накопаете и разберете да с хорошим пониманием или там следующий следующие выходные делать уже будем готовы так Окей Миш давай поехали дальше Линк Расскажи про линд пожалуйста все что знаешь от начала что это такое как его использовать Link Ну по сути как это расшифровывается Я уже не вспомню а Да хорош по сути вот из вот этих анонимных делегатов которые были из предыдущих они создали типа функционального по сути это описательный язык который

    01:22:36 - 01:24:05

  • как это сказать с помощью данной коллекции которые анонимных делегатов которые под капотом превращается иногда этот я всегда Рассказываю что у нас во-первых есть две интерпретации Link языка у нас есть язык встроенных запросов он похож как на там прямо это Не лямбда выражение это именно язык строения запросов это первое как бы синтаксис и второе у нас есть получается наш лямбда выражение то есть как-то так обычно с этого начинают уже рассказ и соответственно по работе с коллекциями да то есть что он получается изначально

    01:23:40 - 01:24:54

  • для работы с коллекциями создан и соответственно есть у нас там в основном мы используем для работы с данными там из базы да так Ну наверное что Ну наверное этого достаточно наверно да То есть можно какие-то кэш про там какие-то там слова ключевые в какой-нибудь Турист рассказать что-нибудь такое или там First of default НОК Да давай тоже частный там реализации так Ну да хорошо Что отлично всё рассказал супер идём дальше до понедельника отлично потихонечку проговариваем да только то что добавить Полина полинку

    01:24:17 - 01:25:37

  • Антон ты у нас кладезь знаний сегодня без конкретных вопросов рассказывает да типа технология позволяющая эффективно работать с коллекциями Ну вообще преобразовывать по разному можно сказать да Там типа iquery был да это интересно именно предназначенная часть для работы с BD то есть они но то есть причем довольно забавный момент если ты будешь мобить объекты EF и нумера был они в квебе был где-нибудь то можно встретить себе ногу очень серьезно и заставить выполнить Сколь запросы не на стороне базе данных

    01:24:59 - 01:26:14

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

    01:25:44 - 01:27:08

  • выполнять всю эту структуру и может привести к поведению которое ты сильно не ожидал увидеть это важно но иногда гораздо выгоднее нести именно Южное выражение до какого-то нужного места но желательно понимать что ты делаешь Ну кстати я как-то писал бенчмарк который замеряет работу Париж [музыка] Разумеется выигрывает по скорости Пусть и не сильно но если где-то в тяжелых приложениях требуется момент оптимизации можно как бы применять для меня но прикольный типа ну под капотом for и Че в линке на самом деле живет Тот же

    01:26:30 - 01:27:55

  • gett есть проблема с тем что возможно создается новый лист новая коллекция с которой работают Вот и если есть но надо еще учитывать что лучше использовать массивы там где не нужно добавлять допустим элементы где не требуется это необходимость вот Ну да это хорошая другая скорость небольших цифрах Но наверно больших операциях Долгих длинных это в пользу в пользу вас если будет использоваться довольно забавно интересно могу помочь скинуть кому интересно Да можно будет это когда мы то что вообще Ну да не очевидное

    01:27:20 - 01:29:04

  • поведение в этом плане это когда он заново Каждый раз при каждом проходит коллекцию да Наверное я просто он в этом прикол что последовательная цепочка Ленка не проходит коллекция каждый раз подряд то есть цепочку написал там в России что-то еще подряд то они каждый следующий не пробегает еще раз коллекцию они это делают одновременно еще раз что-то пройти поэтому результату выражения то он еще раз запустится Ну как с ним пооперировать именно цепочка цепочка складывается она один раз проходит это важная

    01:28:19 - 01:29:33

  • особенность иначе все было бы не рабочим Вот но интересно так Окей что шагаем дальше Да Давайте все окей Миш Ставлю тебя половинку 08 Ты даже если там что-то А подожди я тебе уже этом уже в исключение шагнул ноки Так давай дальше все поехали исключение Что значит приключение вываливаются Когда у нас что-то пошло не так программе так они мы можем писать свои исключения так на следуя их от Exception Ну да так это вот если по базу как мы их отлавливаем Давайте простого как мы их отлавливаем и если мы хотим там отловить

    01:28:59 - 01:30:39

  • разные исключения разного типа что мы Для этого делаем помещаем код а если мы хотим именно конкретно тип там или разделить что там допустим Ну по одному какой-нибудь и указываем какой именно исключением и в конце для общих потому что они будут перехватываться Но кто первый раз хватит понятно что за исключением не особо нашел литературку как их правильно писать если большой развесистое приложение то мы хотим Но я встречал такое Утверждение что мы пишем свои исключения чтобы все свои чтобы когда наши исключения

    01:29:59 - 01:31:19

  • выскакивали это типа хорошо вот как написать определяешь на следующий сеток для своего приложения который будет исключительные ситуации вообще В глобальном мире просто можешь отрабатывать Или допустим если вот такую такой кей сделали когда ты работаешь шины например и в некоторых исключительных ситуациях тебе надо повторить обработку сообщения вот ты можешь допустим исключение и бросить свое исключение типа допустим репит процесс подстроить что на Вот это исключение делать повторные отправку сообщения

    01:30:55 - 01:32:40

  • ты можешь Тем самым гарантировать увеличить шансы на доставку сообщения в случае если там на той стороне допустим это какой-то внешний сервис Он периодично тебе Exception накидает потому что такие вот есть отлично проговорили Все супер давай я оставлю тебя 08 так тут на единицу можно было всё рассказал так шагаем дальше многопоточность параллелизм асинхронное программирование идет ниже пунктом давай до понедельника да да А уже хочется и в туалет и кушать Ну давай быстренько попробуем Ну многопоточность это начало у нас были

    01:32:11 - 01:33:32

  • трейды то есть мы можем поднимать собственный тренд хотя за это наверное По шапке дают вот потом трудом пришел это отдельный поток это поток процессов у нас какое-то количество и эти потоки через оркестратор или как-то по-другому называется приходят на процессы процессов у нас какое-то количество стоит вот и собственно они выполняются так там огромная хитрая схема как они выполняются вот так так так потом нас есть если быстро этот пул то есть мы не создаем потоки они у нас уже созданы какое-то количество и нам выделяется Ну если мы

    01:33:00 - 01:34:43

  • сами создаем то мы можем брать сами Ну из этого потоки они какое-то ограничение по количеству потоков на процесс и на приложение есть нет здесь не вспомню кто поколеть по количество потоков на приложение я вот что Вспоминаю то что из если необходим новый надо расширить пул то система выдает новый и потом ставит этот временной лак такой то есть они выделяются но не так быстро это опять же реализация как-то Так ну как как-то так из моих теста разные были давно тоже Окей Ну да чудо все даже в общем-то

    01:33:54 - 01:35:31

  • рассказал о параллелизм параллелизм но у меня приходят только библиотека наверное отдельно библиотека которая под собственно под линком параллельно под капотом обрабатывает наши данные Ну все математические всякие штуки писал Ну да работает что-то теперь а ну еще Да тут уже получается сказали то что про тоски Но то что мы собственно оттаскивает уже наверное Ну да почему-то он то есть в параллельном программировании по крайней метонит он сразу же выходит протаскивать то есть теперь то что мы не менеджер уже потоки а

    01:35:00 - 01:36:35

  • ставим задачки получается с процессором с архитектурой OK так Антох Надежда тебя Что расскажешь что про тоске Ох там пока берем мы говорим про многопоточность Как таковой и параллелизм Пока без асинхронного прасинхронного не трогаем не знаю добавить Ну может там есть куча на самом деле по механизмов работы с потоками которые создаются их можно тоже за менеджер ручками там запустить данный обмениваться не знаю что дополнить основные вопросы возникают в том как синхронизировать данные между ними вот Ну это наверное примите у

    01:36:08 - 01:37:51

  • синхронизации тоже Что добавить интересного наверное у меня нет каких-то интересных прикольных знаний Ну норм Давайте шагаем дальше все круто Так кто ничего не добавит я могу добавить касаемо потоков то что тренд вроде бы устаревшая как говорят но с помощью треда мы можем установить свойства там Если не ошибаюсь из background мы можем установить поток как фоновый Почему Потому что в остальных случаях насколько я знаю они идут как основные отличия основного потока от фонового это в том плане что если у нас основной

    01:37:18 - 01:38:32

  • поток приложения Ну как моим который я имею заходит закончить свое скажем исполнение то программа завершится если остальные потоки будут работать как фоновые Но если другие потоки будут тоже как бы там не фоновые там как главными или как то в этом случае программа не будет завершаться пока не выполнится все основные потоки то есть вот такое отличие то есть в каких случаях трат все-таки нужно создавать руками я точно создавал когда у меня Windows форм приложения и у меня получается был запрос приложение которое делал Запрос к

    01:37:55 - 01:39:14

  • серверу получал задание и там вот я делал сервис там по лайкам репостам и получается пареньку она обращалась серверу получал задание его начала выполнять репостить потому что просто если пока Запрос к серверу происходит если пока я не вынесу в отдельный тренд и как он тоже красивый бэкграунд Это был ну ключевое слово не помню там у меня исходники валяются где-то 3 года назад перестал пилить Я просто быстренько напилил получается пока в другой поток я не бросил То есть у меня зависало это приложение она даже

    01:38:34 - 01:39:39

  • вплоть то что она по-моему внедрилась по рабочему столу и мне пришлось в отдельный просто вот положить к серверу получение там еще не было в асинхронного никого получается обращения и тогда получается у меня ничего не зависало и спокойно можно было двигать это время пока она там делал запрос вот какая-то у меня такой опыт именно с трендом и вот через Кварц это вот этот раз значит доллар там по моему тоже были раньше треды сейчас там по-моему на ТАЗ как сделано по-моему до этого он был на трядах сделан такой как-то там вот с ним

    01:39:08 - 01:40:13

  • вот у меня был это мой практический опыт как где это применял и работал где-то вот в кварце оно мелькала и вот ну то что с Windows Pro приложение такие дела Окей так кто-то что-то добавить ещё так шагаем дальше так ничего ставим тебя 08 Ты все уже и рассказал в общем-то даже это и про prink рассказал и про параллельную библиотеку Ну практики наверное просто видишь как будто что ты просто хорошо рассказал Наверное это либо ну давай ну либо Ну 0,8 меньше намного так примите вы синхронизации У нас есть

    01:39:40 - 01:40:53

  • Ну собственно мы можем к ресурсу с двух разных источников обращаться И у нас есть некоторые разделяемые ресурсы запись таблиц или еще что-то и там есть момент что называется эта система когда один ютекс это семафор и Лог и так написано [музыка] но Лог это просто объект обжиг который ставится перед разделяемым ресурсом Ну то есть оборачивается если происходит запись там и записи чтения это они потом уже начинают разделять записи чтения то получается что другой никакой ресурс не учитывал так семафор объект экранизации то что

    01:40:26 - 01:42:23

  • позволяет менеджер эти там два или три сделать Возвращение да И тут Наверное это не очень очень семафор да я помню 23 можно выставить ему семаформить количество потоков семафор и спин-лок 2 [музыка] это новый это Нет я спутал с этим [музыка] читает входит место ждать когда освободится место Короче надо заново перенес читать и привести там вроде было что лучше использовать сейчас Spin Локи и прочее я выкинул общем ладно я пока контекстам Да не очень не писал обычно какие-нибудь тоже Battle nekiex синхронизации обычно локам

    01:41:33 - 01:43:23

  • оборачиваешь да и все но надо хитрее нужно спин Лог использует по моему процессорную какую-то хитрую штуку и быстрее работает а так мы ждем лишний какие-то вещи Да надо из той книжки привести будет примеры притащить общий чатик OK OK это все про наш удобный фреймворк и тут у нас хор возможно все же другому в общем да я плохо знаю контекст синхронизации Окей мютекс Я читал Я уже не помню без этого без практики вылетается ресурсом так Окей хорошо давайте Ну что мы оставим это как в следующую субботу

    01:43:23 - 01:44:52

  • будем лучше разбирать и проговорить Я просто А я тоже не расскажу про mitex ни хренам просто семафор который залочен один поток Одиночный самовар я не скажу тоже не могу найти пример Ну отличи возможно отличие Вок в асинхронке нельзя использовать в асинхронном методе А вот семафором вроде бы можно Да часто вопрос на собесах Можно ли использовать внутри Локо вейп или нет приват Статик мьютекс мьют и не убьютекс и он только как с этим утром что происходит работа не вижу налог получается в кино и готово А mitex

    01:45:08 - 01:46:38

  • у него больше видимо этих релиз то что отпустить обязательным условием использования семаформитекса является то что его всегда нужно высвобождать вот этот релиз сделать и типа его в тракечь нужно оборачивать острый файли всё и А вот мьюта релизмьютекс да шагаем дальше Поехали что ставим что-то слышал да да там все плохо давай асинхронное программирование наша таски есть синквейты что это для чего [музыка] Но это синтаксический сахар над где по сути у нас там разворачивается стоит машина на код до

    01:46:06 - 01:47:36

  • какой-то секции которая очень долго которые не в дуднете обращение к базе данных какие-нибудь физические к физическим носителям которые дольше по времени за это время мы используем процесс наверное время для других задач текущую задачу Ставим на ожидании когда выполнится вот единицы выполнения нас является тоска по сути обертка которая возвращает [музыка] тоска может возвращать Войт либо какой-нибудь объект вот то что вы возвращаете мне хорошо что еще Ну не знаю каким наводящие вопросы потому что в принципе хорошо будет

    01:47:11 - 01:49:06

  • возвращать каких случаях войн возвращаем от каких-то да я помню Хороший вопрос но я не помню вот мы возвращаем в тех случаях когда мы хотим запустить метод и забыть о нем и дальше идти то есть без вейта на вызывающем методе а Task это тогда когда мы ничего не планируем возвращать но мы хотим дождаться асинхронку то есть поток номер один это первая женщина контролировать его по сути это Big Ground поток этот самый про который говорили ранее подсказка может прятаться живой поток на самом деле в зависимости от ситуации

    01:48:18 - 01:49:32

  • тогда возвращается тогда мы можем ждать этот поток А если без тоска просто воет возвращаем то в этом случае мы не будем ничего ждать его можно вернуть ТАСС например мы не ждем его например но хотим просто статус узнать тоже еще не такой вариант поэтому товарищ сказал что плохо возвращать если возвращаешь свой ты Понятия не имеешь будет происходить я для убийства там отдельная история есть с этими примера свой дом нет интересный а вопрос Зачем убивать Task если вроде бы сборщик мусора по идее должен собрать

    01:49:11 - 01:50:32

  • его если мы не используем ответьте пожалуйста чтобы его не ждать ты допустим делаешь Ну был такой пример ты делаешь обращение к трем трем базам данных три сервиса и они разных производителей и тебе не важно кто ответят первый тебе нужно получить быстро информацию Вот ты получаешь информацию и два потока следующий Ты можешь убить потому что тебе нужно информацию в этом случае Так ну что окей шагаем дальше Да самые одни самых наверно больше надо начинать Так Миша ставим Ну ты вроде рассказал и как рыба

    01:50:12 - 01:51:26

  • не очень у меня сосинка в этом наверное но я умею переводить просто Чем занимается обычно это переводишь обычные методы 8 а потом переписываешься тесты Ну и всё же подожди ты говорил про потоки про потоков и потоковое голодания про то что освобождается поток ты говорил да то есть он возвращается то есть Может у нас некое потоковое голодание возникнуть про который там тоже нет это рассказывает а так мы освобождаем долг и он возвращается в пол потоков возвращается другие задачи Окей что ну 06 хорошо так

    01:50:58 - 01:52:11

  • unit-тестирование так Ну дальше на самом деле все пошло как бы такое уже просто обзорное там то есть не сильно по разработке тут Наверное что ооп ты вроде бы все отлично рассказал и то есть ну сейчас ты уже точно тоже всё хорошо знаешь наверное как-то так да то есть уже расскажешь там и все три пункта Опа Ну и четыре там абстракция которая просолит Давай поговорим про Солид Давайте с английским с русским названием собеседование Поэтому нужно Даже зубрить я сам с трудом зазубрил с это сингл принцип Принцип ответственности То есть

    01:51:41 - 01:53:13

  • когда твой класс выполняет какую-то одну работу не является запасом вот и опять же методы какой-то одну работу методы у класса также выполняют какую-то одну единую работу Ну то есть одну единицу так потом это потом о я не помню типа открыт для расширения закрыт Open Close pinter не надо закрыть а так все почитаю Я не смотрю на меня сразу поверить Мне прям реально Закрыть надо я же учил все-таки в каком-то принципала то что мы тренировались то он у меня тепликов рядом лежит тоже ничего страшного

    01:52:33 - 01:54:11

  • то что у вас наш наш класс наш объект должен быть открыт для должен быть закрыт для изменения открыт для Да плохо все получится помогайте Он закрыт для изменения и открыт для расширения а для расширения Да ну то есть мы ничего не должны но по сути для чего это сделала это когда мы наследуемся или дописываем именно мы должны дописывать по сути Ну грубо говоря классы чтобы у нас та система которая уже работает с этим классом ничего там не крашнулось кто мешает нам просто в класс добавить новые методы новые методы по идее Не

    01:53:44 - 01:55:06

  • испортят никакой функциональность а только вы получается то есть зачем нам нужно наследоваться и расширить класс иногда бывает что библиотеку нельзя перекомпилировать она приходит Как какой-то такой ресурс вот или какие-то политики Ну вот я такой таки иногда кейсы слышал медиатор крутишь еще что-то Ну да если мы типа хотим изменить какой-то метод в классе то соответственно как бы его если изменять то только мы должны занаследовать и переопределить на это уже какой-то полиморфизм да да чтобы предыдущие все также осталось Ну как

    01:54:38 - 01:55:53

  • тогда модификации и открыт для расширения то есть Окей Так подождите А почему через наследование Извините можешь расширяющие методы для чего статические расширяющие да да который через Статик этот и все таки принцип через через Мне кажется это хитрая хитрая Уловка в дотнетте в самом потому что для всех языков и она убегает на самом деле от солида и его пышные темы когда у тебя кусок классов внезапно оказался хрен знает где это не очень красивая история надо это бывает очень удобно местами вообще типа я все время очень впечатлил

    01:55:18 - 01:56:58

  • эта фишка но с точки зрения соли не очень хорошо потому что отдельно движется окей Да если есть один важный момент эта фишка сработает если класс запечатанный и вы не можете от него наследоваться Но вам нужно добавить что-то что ты можешь не запечатанные методы у тебя сам метод класса Ну а ты имеешь ввиду что есть возможность То есть ты его не можешь отслеживать если допустим у вас сил ты не можешь от него наследоваться и то есть ты как бы не можешь в следующем классе Дописать свой метод в этом случае

    01:56:08 - 01:57:27

  • Тогда как раз расширяемый метод решает этот проблему глобально Да Типа она удобно некоторых случаях но еще интересная мысль что если ты не уверен то композиции лучше наследования и возможно если он прям запечатан Возможно стоит через композицию решить когда ты это когда ты ну грубо говоря когда ты все просто берешь объект поле складываешь и с ним работаешь пишешь все новый класса не сильно собрать еще раз просто поле получать этого класса Да ты его просто себя забираешь объект во внутрь и дополнительно записываешь ты пишешь

    01:56:59 - 01:58:19

  • сверху Ну то есть вот extensional Лёша подсказал и получается и ты Алекс Это Александр или Алексей Алексей спасибо никогда вот мы разобрали Окей пошли дальше третий принцип не подожди буковкой Лесков это то что у нас принцип постановки Лесков то что Наследники не должны крошить функциональность если мы поведение родителя родительских если наследников у нас должно сохраниться дети нас да да ковариантность совмещение потом и inversal Control это инверсия зависимости и это немного другое из п а это вот я читаю

    01:57:50 - 01:59:45

  • интерфейса segreation Prince по сути то что у нас не должно быть супер интерфейса мы делим на более мелкие каждый отдельный интерфейс под отдельного клиента под отдельную задачу и лучше чем Наверное я кстати вот не встречал еще в своей практике но плохого Плохого реализации То есть когда интерфейс у нас слишком много четыре пять входящие модели исходящие Бывает такое А да это когда приложение когда больших Ну вот в общем-то мы стараемся наверное автоматически в некоторых приложениях наверное его нарушали так Окей Поехали

    01:59:05 - 02:00:25

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

    01:59:59 - 02:01:36

  • Ну да и по сути У нас есть Ну да интерфейсы мы там вызываем от какой-то реализации и мы можем заменить реализацию на что-то другое ну который наследует того же самого интерфейса когда учил это было проще мы просто в конструкторы пробрасываем не классы а интерфейс я понимаю в общем в общем плане сказать то что да мы по сути вызываем через конструктор есть еще через метод варианты Но в основном через конструктор и уже от этой зависимости вызываем методы которые были определены в интерфейсе вроде Разобрали все отлично Поехали

    02:01:05 - 02:02:39

  • Давай да солит что ставим Ну ты в общем-то даже все рассказал Там да все вспомнил вспомнил Ну что 6 ставим 68 я восьмерку поставил на Окей давай чуть меньше чтобы было куда расти Окей Di и его контейнер индекшен и расскажи что знаешь контейнер это вот как раз система реализована наших зависимостей вот этот трензер она входит влог или нет но у нас есть регистрация синглтон это когда на всю систему ну да на весь Application вот потом есть трендзент это когда это с каждым запросом у нас новая зависимость

    02:02:02 - 02:03:50

  • данного объект создается когда насколько это понятно какая-то вместе через задачу по сути для обещали все упразднить по-моему все эти виды эти дальности регистрации в последнем док-наде оно по-моему как-то к ним бразили но получается Мне всегда казалось что регистрация зависимости лайф-тайм Это где относится ее контейнер это просто контейнер в котором есть все зависимости которые нужны для его инициализации все А я уже управляет временем жизни Я всегда так думал вот да вот тут получается и окна как бы

    02:03:05 - 02:04:30

  • как какой-то абстракция синглтон контекстной базы данных большие нагрузки Я думаю сейчас можно когда-нибудь прекрасно всё работает переподключение прочее это время не терять поэтому создается [музыка] Юнити автофакт нижект Пока что пока что Мне хватает этого раньше там придумали что-то Microsoft он сам сделал Сейчас наверное нет Да уже я что-то даже не вижу их много контейнер через конструктор не через метод еще 3 через метод очень хитрая штука Я все ЮС кейс никак не могу найти где его хорошо себе раскрывал но говорят что не совсем

    02:04:02 - 02:05:27

  • Здорово потому что один метод начинает тащить себя зависимости от вас нет только что позавчера в основном через конструктор можно еще вопрос это же время жизни на контекст запроса То есть когда у нас грубо говоря приходят запрос если очень сильно абстрагироваться приложения то до момента когда что еще запроса грубо говоря если абстрагироваться пока он не выполнится у нас будет существовать этот скол и в рамках жизни этой сессии у нас будет подставляться одна и та же реализация при каждом обращении будет новая

    02:05:42 - 02:07:02

  • реализация создаваться Ну да просто вот как в какой момент она вот скоб будет помирать через полчаса по времени по таймингу либо логаутом лагал не происходит но у тебя есть у запроса есть цикл жизни То есть он попал в приложение там прошел через мидовары потом попал само приложение точно также помидорам вышел и в какой-то из этих моментов уничтожается Оскол а так ну хорошо Да ну прям получается это все равно это получается в рамках одного запроса получается да то есть запрос пришел пока он идет типа и вышел и как бы этот

    02:06:49 - 02:08:09

  • момент это получается Он является типа сколп трендзинг это просто на каждой отдельный запрос как бы все Независимо да Ну да получается так Может это поправит или надо быть я действительно в разных проектах Я видел разные Кто как не регистрирует одни через синглтона другие через коп через 3 через тренде я ни разу не наталкивался на то что перемешиваются данные то есть какой-то там конфликт возникает то есть понимание что это не это же не сами запросы которые базе данных Да и там это просто именно получается эта

    02:07:35 - 02:08:49

  • сущность которая сущность объекта который контекста а запрос Все равно все независимые они и того как мы зарегистрируем Разница вообще по-моему никакой потому что не по памяти утечек того что мы там как-то зарегистрировали не так то есть короче так короче Да все отлично проговорили вроде все окей и пройдя и Ок есть внимание тут смотрите тут синхронно взаимодействия Нет давайте мы наверное Давайте 15 минут по только я наверное отключу микрофон отойду потому что там курьер пришел паттерны проектирование

    02:08:12 - 02:09:29

  • расскажи пожалуйста про паттерны проектирование то есть только там ты сказал 23 был их 23 да то есть это все наша есть такие четыре человека как гофф Гонконг фо Да и они соответственно а паттерны проектирование сформировал по моему [музыка] то ли Мартин то ли кто-то сформировал Так у нас они получается делятся на 3 раздела порождающие поведенческие и и структурные и просто есть красивая картинка по ним сейчас там секунду Я когда я всегда вижу сюда вот они Да это 23 23 раз два три пять шесть семь восемь

    02:08:54 - 02:10:33

  • 17 19 20 картинка полна 23 вот эти три собственно эта картинка как бы она и про все паттерны и рассказывает Так ну что расскажешь сейчас некоторые да давай поехали порождающие поведенческие можно по каждому два слова ставить Давайте Я только отошел буду через 3 минуты Так ну Фабричный метод так я их путаю так Фабричный метод это когда мы закрываем реализации когда мы закрываем конструктор Private и выставляем наружу открываем метод Билд который [музыка] создает нам экземпляр данного класса но создает экземпляр класса

    02:09:52 - 02:11:42

  • нужен чтобы правильно чтобы наш объект был правильно создан и правильно Если есть кому дополнить какие-то знаю какие-то нет рассказывай продолжай чтобы интерфейс хочу было завязан что ты можешь я разные фабрики может могут фабрика может нескольких типов это не к абстрактно фабрике скорее всего абстрактная фабрика вот Фабричный метод это когда ты закрываешь как этот конструктор вправок выставляешь этот метод Билд Ну понятно что статический класс Ну как это делал и в билде у тебя какой-то набор параметров которые тебе

    02:11:00 - 02:12:33

  • обязательно необходимо на входные данные и по сути и на выходе как возвращаем значение экземпляр класса для этого нужен Фабричный метод чтобы получать правильно инициализировать абстрактная фабрика это когда нам точно так же так Когда нам необходимо создать класс Точно также и получить какие-то параметры причем эти параметры опциональны мы делаем либо конвейер либо также через и который заканчивается методом Билд и возвращает нам правильно собранный объект наверное все еще к фабричному методу Фабрика Про немножко другое когда у тебя

    02:12:01 - 02:13:34

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

    02:13:03 - 02:14:12

  • это стратегия а это для меня ну в общем Видимо да я получается Ну вот то что сейчас здесь открыто просто в глубине и типа Фабричный метод это про как раз про то что объект Но типа есть абстрактный создатель и конкретные разные создатели генерят разные классы То есть это же открыть внутри то есть делегируется разному фабрикам создание разных объектов абстрактная фабрика здесь говорит что типа Просто набор взаимосвязанных объектов генерится и там типа набор абстрактных результатов хорошая книжка это паттерны типа

    02:13:37 - 02:15:18

  • там их 16 какие-то простые я получается прочитал строение Строителя когда мы через статические похоже ему можно еще докинуть разных этих элементов Да причем опционально можно там строится либо цепочка либо просто они как опции цепочка нужна Когда нам нужно прям все параметры и там через точечную нотацию и которая заканчивается методом Билд но там тогда цель либо куча интерфейсов потому что цепочка должна правильно пройти для этого все правильные последовательности расписано в принципе интересно фабрика

    02:14:38 - 02:16:09

  • да это разные фабрики генерит разные конкретные реализации абстрактного одного одного объекта да то есть разные реализации но не встречалась надо будет еще Ну вот тут в одиночка но одиночка все понятно через мы проверяем если если нет возвращаем Тот Объект который уже создавали где он нам нужен вот только этот singleton наверное больше ты видел еще но у меня не было по сути у нас на все на весь Application только один объект как структура только по сути класс поэтому делаем проверку и возвращаем его этот объект Если мы

    02:15:28 - 02:16:58

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

    02:16:34 - 02:17:55

  • объект может быть когда тебе нужно держать Connection там одним объектом какие-то ресурсы короче которым Но у тебя только один объект должен одновременно из программы иметь доступ и тебе не хочется чтобы у тебя второй экземпляр попытался Что такое может быть до брокера например как вариант ты хочешь чтобы тебя соединение кто-то но один класс держал и не породилась и нескольких которые параллельно хотят меня больше нет ну Прототип Прототип я не расскажу не использовал просто и не представляю кто-то подскажет

    02:17:19 - 02:18:45

  • стратегия мы реализовывали как-то раз но я не понял зачем она нужна Да мы можем в зависимости от входных параметров создавать поведение получается абстрактная фабрика тут все очень Короче не очень у меня очень базовый простой Просто у тебя два класса по разному ведут Сервер это обычно наблюдатель и более крутая версия издатель Подписчик наверное вот этого Когда у нас регистрируется но до регистрации команда тут прям очень тяжело у меня на собесах никогда не спрашивали про конкретные паттерны у меня было

    02:18:24 - 02:19:58

  • скорее по-другому Расскажи про типы типа вот сколько типов есть что из каждых типов представляет и по паттерну из каждого типа что использовал Что можешь рассказать можно тоже сейчас и также пройтись Ну шаблоны по сути мы так как он был реализован сейчас но у нас есть на абстрактном абстрактная какая-то реализация реализованные последовательность действий типа что у тебя на базовый класс сам решит но то есть я Наследник должен определить конкретное действие А вот как составить типа определить базовый класс

    02:19:40 - 02:21:06

  • из Ну типа после Нового из того что в атомных поведении Мы прям сегодня разобрали итератор Кстати итератор они там зашиты Он полностью реализован поэтому паттерном полностью можно его рассказывать шаблонный метод у меня уже вылетелась башки Да тут Я короче не очень а структурных паттернов пример приведешь Расскажешь про что-нибудь но Бридж Ну я так понимаю между двумя какими-то классами мы пишем еще третий класс который собственно служит мостом который парсит или как-то интерпретирует данные для входных для второго класса

    02:20:52 - 02:22:34

  • вроде так я не реализовал это в основном связать [музыка] это наверное больше подходит к адаптеру Да наверное получается больше порождающих до новой системы пишешь да они еще появляются поведенческие каких-то больших системах опять же надо структурной структурные все остальное не очень а кто скажем так работал именно четко по паттерном можете перечислить какие но чаще всего вы использовали вот этих данных Мне кажется это только на собесах эти паттерны нужны Я сколько собеса проходил По факту приходишь в компанию

    02:22:16 - 02:23:42

  • там из паттернов Одно только название у меня был Собес вообще по DD и по факту там внутри просто все экшены контроллеров обмазаны этим медиатором это называют поэтому мне кажется паттернами примерно такая же конструкция что делай проще Не переусложняй и все максимально там насовывают говнички какого-то проекта обычно Ну да вы чего ddcuries не разбирали можно чуть-чуть вот это вот как раз есть еще не помер там это Народ уже отвалился половина расскажешь Чем вы так вы паттерны Разобрали все проговорили я их очень плохо знаю

    02:23:38 - 02:25:22

  • получилось Я максимум это Строитель одиночка пости Господи Фабричный метод используется где-то Фронтовая история адаптеры постоянно там используются вот от чем отличие от моста вот я тут рассказал потом понял что рассказал про адаптер мост Ну что-то типа похоже наверно состояние стоит машина Я так понимаю что похоже Когда у нас есть кейс или развернут вроде все ну я больше в кодек еще но вот Максимум что я нашел этот Фабричный метод строительства Или товарищи пишут через него команда это из доспех или что-нибудь

    02:24:34 - 02:26:07

  • такое система Так ну ты хочешь тогда так я не буду сейчас тебе помогать И подсказывать что-то и разбирать просто мы проговорили потому что еще надо просто Давай еще раз просто у нас есть мы же все-таки видос записываем чтобы это был кому-то полезно и сами лишний раз проговариваем то есть у нас есть порождающий паттерны Фабричный метод абстрактная фабрика одиночка синглтон наш прототип и Билдер Да есть паттерны поведения это вот стратегия наблюдатель команда шаблонный метод итератор состояния цепочка

    02:25:32 - 02:26:31

  • обязанностей интерпретатор посредник Хранитель и Посетитель и есть структурный паттерны это декоратор адаптер фасад компоновщик заместитель мост и приспособление так Ну наверное это уже достаточно каждый еще раз разобрать красавчик чтобы разобрали что-то ты не знаешь когда мы когда мы на каком-то личном Сабит каждом собеседовании что-то нам говорят чего мы не знаем это как раз таки нам помогает Ну то есть вскрывают наши какие-то там слабые стороны и есть что значит есть что разобрать есть важно

    02:26:13 - 02:27:14

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

    02:26:44 - 02:27:45

  • с кодом а но вот прям на метанете Тут прям с примерами код на Шарпа все вот сюда мы зашли в цепочку и там прям смотри там же Прям вообще даже прям тут на шарпах все написано Да тут все прекрасно и вот из какая-то структура данных то есть указанный через хендеры они фигачит Да но хендлер хендрики конкретные клиенты и вот тут какая-то реализация квест что-то происходит так Давай Да но этот опять же оставляем домашнее задание всем спокойно Пройдите разобраться Кому как бы глубже это глубже надо все знать

    02:27:16 - 02:28:32

  • наверное следующие выходные мы Прям вообще спокойно по всем паттернам и пройдемся и более глубже каждый год просмотрим но у нас было просто вот базовое базовая собеседование и базовая информация супер да диетический раз Чем меньше тебя или же разбегаемся по домам еще раз расскажет что-то Да можно Давай посмотрим смогу нет древний дизайн собственно Когда у нас есть доменная модель в середине у нас Core куда мы складываем модельки которые можно поделить на энтити и вылью обжиты так потом у нас следующий слой это

    02:28:19 - 02:29:48

  • Application layer приложение там у нас Так что мы туда кладем А ну там мы кладем бизнес логику бизнес логика так и у нас снаружи интерфейс называется наружный слой Боже мой интерфейс номер я сейчас не вспомню так значит внутри в Коры мы описываем модельку У нас есть варианты описать ричмодель и и не речь моделей по сути в модели мы складываем логику поведения либо не кладем есть сейчас еще такое разделение моделей на entity и naily разница между ними что у entity моделей вот этот Здесь на картинке

    02:29:08 - 02:31:08

  • я что-то не сильно соображу тоже тут антигит твой какой-то интерактор тоже я смотрю получается представлена фабрика статейка поди и она какая-то такая я не пойму конструкторы чего не отличаются но в моем понимании ddd Как таковой тоже я наверно встречал разные какие-то реализации То есть когда у нас просто в проекте сущности разделены на некоторые логические логистические наверное но то есть на разные сущности те самые домены то есть поддоменным подразумевает какой-то набор сущностей чем-то связанных какие-то

    02:30:35 - 02:31:51

  • функциональные области наверное как-то так да и получается то есть ну и соответственно Там все в каждом домене лежит все как бы там свое полностью там какая-то как в общем-то отдельная то что домен можно легко выделить там в отдельном сервис или микросервис Ну домены тогда получается сущности можно собрать несколько контекстов и у нас это получается там там Окей по-простому значит Да есть кор это с модельками это базовые с поведением или без если это речь модель или не помню как не речь модель потом Application layer куда мы кладем

    02:31:27 - 02:33:05

  • бизнес логику по сути как все ну да вся логика работы и есть внешний слой разделение ты говоришь там какие-то ну то что мне кажется на советских и не надо так глубоко погружаться там достаточно общих подходов Что такое DD И зачем говорят вот она презентайн инфраструктура и типа базы данных по сути дома там базы данных на фронт то что отдаем это внешний уже система запрашиваем информацию так это потом securies Так ну я его еще только стал возможно мое понимание будет немножко разрез с тем которые необходимо это

    02:32:17 - 02:34:00

  • commond query разделение но команды говоря мы до создаем Но это по сути Мы в нашей архитектуре разделяем запросы и чтение потому что команды то есть команды есть запросы команды это меняет состояние нашей системы это записать удалить или апдейтить вот и есть запросы это Рит мы читаем это из базы данных Да это коре то есть мы прям создаем Ну как если как я делал создаем прям отдельные нам спейсы для командов и quare и кладем разные модельки в том числе Ну там смотря насколько глубоко вот [музыка]

    02:33:23 - 02:35:06

  • окей Наверное этого достаточно да то есть так все супер короче давайте наверное потихонечку завершать мы много чего проговорили наш видос на работу очень полезным для джунов которые там вообще когда просто нет лишний раз мы проговорили и солит и там асинхронность поговорили и просто хотя бы джины увидят список вопросов которые реально задают на собеседование и какой-то примерное что-то чем поговорить в чем разобраться Отлично что давайте я предлагаю завершать для первого дня этого отлично поболтали Да спасибо поковыряли да меч

    02:34:27 - 02:35:37

  • тоже Тебе спасибо большое Парни всем спасибо Антоха ты вообще красавчик тоже помогала вытягивал Спасибо большое видосик Я тоже в эти часики закинул Всё Давайте Хорошего вечера

    02:35:03 - 02:35:28

Менторы

Специалисты своей области, которые смогут помочь вам

  • Нигма Нурия
    Нигма Нурия

    Middle .Net Developer

  • Сущенко Татьяна
    Сущенко Татьяна

    Senior Product Manager

  • Гудков Денис
    Гудков Денис

    Middle Python Developer

  • Курочкин Константин
    Курочкин Константин

    Ведущий программист

  • Гудман Макс
    Гудман Макс

    Backend Software Engineer (PHP)

  • Гребенкин Антон
    Гребенкин Антон

    Senior .NET/C# developer

  • Ахназаров Фёдор
    Ахназаров Фёдор

    Middle DevOps Engineer | Tbilisi, Georgia

  • Шорохов Дмитрий
    Шорохов Дмитрий

    Middle C# .NET

  • Жуков Александр
    Жуков Александр

    Senior PHP-разработчик

  • Мазикин Павел
    Мазикин Павел

    Middle python developer

© 2024 HireGuru. Сделано в Санкт-Петербурге с hireguru.ru