Тестовое собеседование C# ASP.NET Core | Junior .NET Developer

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

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

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

    00:00:00 - 00:01:11

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

    00:00:35 - 00:02:17

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

    00:01:29 - 00:02:48

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

    00:02:11 - 00:03:37

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

    00:02:59 - 00:04:34

  • допустим Go - это оп язык но там нет класса А он держится на четырёх столпах это абстракция инкапсуляция полиморфизм и ну наследование Само собой Давай немножко про инкапсуляции что такое инкапсуляция инкапсуляция - Это когда мы в классе или структуре ограничиваем доступ к полю Ну или методу из от доступа Извне то есть из других классов и других проектов и всего в этом духе то есть мы можем там установить па STA Inter и далее Вот про Статик мне интересно что такое не Статик это я не то нем сказал Статик - это ключевое

    00:03:47 - 00:05:19

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

    00:04:32 - 00:06:08

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

    00:05:20 - 00:06:44

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

    00:06:12 - 00:07:34

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

    00:07:26 - 00:08:58

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

    00:08:12 - 00:09:36

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

    00:08:54 - 00:10:12

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

    00:09:42 - 00:11:16

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

    00:10:30 - 00:12:11

  • принципы которые говорят Как писать код чтобы он был наджм сформирован Робертом мартином в 2000 году как всё серьёзно да потом название поменяли в 2004 потому что ему там написали на име сказали то что вот если вот так вот сделать поменять буквы то у тебя сложится Sol с англиского [музыка] надёжный интерес приятный акроним да да Хорошо давай по каждой буков пройдёмся просто название хотя бы скажи ум какой-нибудь конт хоро первая буква принцип единственной ответственности или правильнее даже будет возможно сказать

    00:11:20 - 00:13:02

  • принцип единственного изменения дальше Open принцип закрытости дальше принцип постановки Барбара лисков принцип разделения интерфейсов и принцип инверсии зависимо Да можешь немножко рассказать про принцип подстановки барбера лисков На самом деле очень простой принцип намного проще чем самый первый Single responsibility он по сути отвечает за то что мы должны в объект передавать не реализацию а абстракцию то есть либо абстрактный класс либо интерфейс в случае США чтобы мы могли задавать другие реализации и ничего не путаешь в случае

    00:12:13 - 00:13:49

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

    00:13:01 - 00:14:31

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

    00:13:53 - 00:15:11

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

    00:14:33 - 00:15:49

  • что из этого абстракция квадрат Почему Квадрат это конкретный прямоугольник абстракция друго реализация Да фигура была бы как раз-таки про это в барбаре лисков а не про то что мы должны использовать абстракции а не имплементации передавать то что ты говоришь это всё про связанность связанность объектов и прочее это всё относится к больше относится к де inversion котором я и хочу перейти Вот давай про dependency inversion поговорим Что такое dependency inversion Это когда мы должны максимально обезопасить себя

    00:15:12 - 00:16:33

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

    00:15:57 - 00:17:41

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

    00:16:49 - 00:18:09

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

    00:17:30 - 00:18:55

  • структур мы можем явно присвоить объекту какое-то значение например для 5 [музыка] для просто имплементация с помощью ключевого слова New и там вызвать конструктор м ты говоришь то что у нас типы делятся на класс и структуры правильно они не делятся это просто я просто хочу узнать от тебя на какие Поти Ну вот у нас есть типы данных на что они делятся на Какие классификации на Какие классификации ты можешь их поделить на класс на структуру пони а в ЧМ их отличие то что у классов создаётся экземпляр класса у структур не создаётся

    00:18:13 - 00:19:49

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

    00:19:09 - 00:21:03

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

    00:20:07 - 00:21:32

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

    00:20:55 - 00:22:27

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

    00:21:43 - 00:23:30

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

    00:22:41 - 00:24:12

  • что А может быть такое что у нас есть две строки с одинаковым содержимым Да И вот ты написал например ра AB ра сколько [музыка] объектов или о объектов пройдено создано создано Да объектов один объект Почему Потому что у нас уже есть такая строка в куче Ну если мы класс создадим два раза New напишем то тоже тоже будет уже первый объект кучу он создаст новый тем не менее так просто проще жировать ресу экономить памя нет смотри у тебя есть например класс Да вот строка - это класс да это класс да у тебя есть ещё например

    00:23:40 - 00:25:19

  • ты создал свой класс собака дог Да написал War равно New Dog warb ра New Dog просто пустые классы Они же одинаковые они одинаковые но они не равны по сум Ну со стригой тоже самое два объекта со стригой тоже самы там типа создаётся два объекта но они ссылаются на один экземпляр а-а в самой строке почему то есть классы тоже ссылаются на один экземпляр нет классы ссылаются на разные экземпляры По ссылкам как мы их создали и string ссылается на два разных экземпляра но под капотом у стринги там идёт ссылка на одну и ту же строку Я не

    00:24:35 - 00:26:06

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

    00:25:21 - 00:26:58

  • что у нас два объекта в куча Нет два объекта но ссылка идёт на один Литерал я [музыка] это и мне сказал Сначала ты сказал один я спросил почему потом ты сказал два Вот Потом я тебе объяснил про интернирование и ты сказал один он читается самим экземпляром [музыка] класса что читается самим экземпляром класса или нени как бы ну вот в нашем случае это строка есть Эля класса Ну вот как экземпляр класса связанная с литерами Ну то есть ну да Ты создаёшь объект при повторном создании объекта он проверит

    00:26:14 - 00:27:52

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

    00:27:11 - 00:28:30

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

    00:27:50 - 00:29:23

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

    00:28:41 - 00:30:18

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

    00:29:29 - 00:31:05

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

    00:30:21 - 00:32:12

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

    00:31:21 - 00:32:58

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

    00:32:14 - 00:33:37

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

    00:32:54 - 00:34:16

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

    00:33:36 - 00:35:04

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

    00:34:20 - 00:35:44

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

    00:35:02 - 00:36:07

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

    00:35:34 - 00:36:56

  • что абстрактный класс Мы можем наследоваться только единожды а интерфейс много реализации может иметь себе правильно вот И теперь мы пытаемся понять вот Почему именно в Base ти ты используешь абстрактный класс а не интерфейс потому что и там и там можно сделать одинаково Но почему именно Base ты выбрал как абстрактный класс а не как интерфейс Вот вот чтом Это правильно с точки зрения архитектуры Что значит с точки зрения архитектуры правильно вот почему почему с точки зрения более правильный вариант следование У ти которые

    00:36:15 - 00:37:39

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

    00:36:59 - 00:38:27

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

    00:37:49 - 00:39:09

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

    00:38:29 - 00:40:02

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

    00:39:15 - 00:41:04

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

    00:40:17 - 00:42:00

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

    00:41:13 - 00:42:23

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

    00:41:47 - 00:43:00

  • вот эти интерфейсы I ID I cre и так далее и сделал бы базовый класс не абстрактный Base entity он бы не абстрактный и в этом базовом классе реализовал например эти интерфейсы в этом в этом базовом классе обычно были бы те интерфейсы реализованы которые во всех полях есть а потом уже в конкретных реализациях сущностей я бы накидывает например в виде created created Date То есть у тебя базовый класс реализует интерфейс iid потому что все у нас реализуют iid и дальше уже классы Наследники могут реализовать

    00:42:23 - 00:43:46

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

    00:43:06 - 00:44:25

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

    00:43:45 - 00:45:12

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

    00:44:29 - 00:45:59

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

    00:45:15 - 00:46:30

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

    00:45:55 - 00:47:19

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

    00:46:46 - 00:48:17

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

    00:47:35 - 00:49:14

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

    00:48:26 - 00:49:57

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

    00:49:15 - 00:50:47

  • другое но нет рассказать про это не могу просто знаю что она разворачивается и Толи опрашивает завершился ли получили результат или нет восьмой dotnet 8 а версия языка по-моему Тринадцатая или двенадцатая Да вот ты когда говорил про CP 8 или CP де Что ты имел в виду я имел в виду версию dnet А dn8 да Ага а как N8 связан советами то что там обновление будет на них не совсем эти обновления связаны с а не с технологией Ну просто они поставляются вместе с версией библиотеки Ну то есть вместе с версией

    00:50:11 - 00:51:53

  • реворка А можешь ли ты на dnet 6 писать на CP 12 можно это включить Да ну то есть они могут и не связаны быть получается так Окей хорошо Давай пойдём дальше про многопоточность в принципе давай про конкурентные коллекции можешь рассказать что-нибудь Нет не приходи Это типа Di I Нет это Dictionary - это конкурентная коллекция ой неконкурентные коллекции concurrent concurrent Dictionary вот это вот нет не знаю про это Ага а про Локи что-нибудь знаешь да то что они используются в Ну когда мы параллелям наши

    00:51:04 - 00:52:45

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

    00:51:54 - 00:53:22

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

    00:52:39 - 00:54:15

  • spn Ну давай я его спрошу ради интереса вот у нас есть да у нас есть боксинг анбоксинг В чём их Разница в том что когда мы посылке передаём Да по сути Мне кажется больше даже ни в чём это синтетический сахар ксин анбоксинг это когда мы структуру какую-то Ну или обк можно закину в другой объект поместить в кучу там останется До лучших времён а ref in ref out - это когда мы берём структуру и передаём её по ссылке то есть мы закидываем её в кучу потом достаём ссылку на эту структуру непра и както Угу

    00:53:28 - 00:54:56

  • ref не хранится в куче ref хранится в стеке Ну да если у нас он хранился в стеке то он будет храниться в стеке да А если мы говорим про боксинг анбоксинг он поместится в кучу вот в чём их [музыка] разница так я записываю просто так О'кей быстрый вопрос быстрый ответ очень хорошо давай потихонечку перейдём к кнету Что такое midle Way это какой-то промежуточный слой по который будет выполняться а перед того как мы посылаем Ну то есть нет не перед просто мы можем послать запрос у нас допустим midle на авторизацию и мы в

    00:54:14 - 00:55:55

  • этом idle Вере можем проверить авторизован ли пользователь то есть хранит ли он что-то там в http контексте Или можем тоже обрабатывать EX глобально с помощью л Веров Что такое конвейер обработки запросов это когда idle вызывают друг друга в Ас только лва есть что-то помимо обработки [музыка] запросов не знаю не могу сказать слы что-нибудь про фильтры Нет не понимаю чем-то Action fication Это для того чтобы повешать атрибут на контроллер например или нет блин кто-то такое меня уже спрашивал вот я не понимаю что такое

    00:55:06 - 00:56:45

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

    00:56:05 - 00:57:24

  • допустим у нас хранятся м хранится токен а ACS в htp Оли ке можем его достать оттуда и положить в Я предполагаю нет смотри у тебя есть Эш фильтр Да в экшн фильтре есть два метода что это за методы я не знаю я не пол exec что это такое может слышал ну exec это чтобы это э выполнился дест на [музыка] зам попытка неплохая о Action executing выполнится во время выполнения во время обработки запросов этот метод выполнится а Action executed после обработки запросов понял Да я это и хотел сказать Ну до и после Нет во время и

    00:56:45 - 00:58:52

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

    00:57:49 - 00:59:32

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

    00:59:02 - 01:00:53

  • полезно будет потому что у меня на у меня это спрашивали последний раз в девятнадцатом году по-моему вот ну это тогда я собеседовать на там на МИД наверное да понял почитаю Окей давай дальше пойдём см работал да [музыка] работал про миграции можешь рассказать как как можно как делаются миграция нам нужно обозначить наш домен Ну или просто модельки простыми словами затем создать контекст для нашей базы данных насле закинуть туда наши сущности и затем с помощью cli предварительно установив ecore Tools выполнить команду по

    01:00:06 - 01:02:04

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

    01:01:06 - 01:02:44

  • которая по сути будет представлять слепок наших моделей и класса как-то по-другому если он назн то есть она тогда поднимется с нуля инициализируется база данных а не знаешь термин Как называется вот под ко в контекст модели orm object relation mpp нет когда мы создаём когда мы мигрирует Друк ру в виде классов А это реве Ирин когда мы ты db да это это ревер иринг но есть термин конкретный не слышал scolding да scolding да О'кей потому что там даже команда DNF db Contex scaffold а но я через C это не

    01:02:00 - 01:03:56

  • использовал А ну не помню я помню делаем мы пишем dnet db Contex C Ну там дальше указан там Connection string так или иначе вот Окей хорошо по поводу е кора э Смотри я сейчас тебе короткую штуку напишу products то XX ID = 1 Вот смотри видишь чат же да где здесь Да там чатик вот продукт - это dbs да Сейчас секунду напишу продук вот так вот то есть это про из Вот и мы хотим выполнить вот такой вот запрос Да вот пишем сколько запросов сформируются и отправятся в базу данных не уверен насчёт количество Я не знаю как это под капотом

    01:03:05 - 01:05:11

  • но по-моему у нас р будет во-первых не суть да да сколько запросов выполнится А Или ты ответил что один на трекинг возможно и Ну чтобы транзакцию чтобы транзакцию записывать и второе на получение Подожди а а что значит запрос на трекинг это какой-то Селект или что это Это что-то вроде селек чтобы получить слепок и в будущем мы могли типа быстрее получать эти данные или а отменить транзакцию Ну когда мы просто не пишем Database Save нет выполнится Ноль запросов BD О'кей второй момент сейчас подожди

    01:04:14 - 01:05:53

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

    01:05:08 - 01:07:04

  • а потому что точнее ienumerable of product Угу а первая какой тип будет Вот это вот самая первая которая выше Да которая products ID Да я сказал уже IQ variable of product А почему некоторые методы Link причём они одинаковые вроде как на первый взгляд возвращают iqu а вторые одни методы которые они методы самого C а I они методы ба данных потому что они нужны для того чтобы создавать запросы Ну то есть это разные методы Да а как сделали таким образом они оба и они оба принимают лямбду в данном случае

    01:06:20 - 01:07:49

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

    01:07:07 - 01:08:36

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

    01:07:51 - 01:09:20

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

    01:08:47 - 01:10:03

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

    01:09:25 - 01:11:18

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

    01:10:27 - 01:11:43

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

    01:11:05 - 01:12:33

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

    01:11:49 - 01:13:20

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

    01:12:36 - 01:13:54

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

    01:13:16 - 01:15:01

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

    01:14:11 - 01:15:35

  • типа пользователь то есть получатель уведомлений как ты отправишь Как отправить сообщение в нужную тебе очередь через rpc протоколы скорее всего Какие протоколы rpc типа jpc нет нес у них свой протокол rqp помоему называется Если не ошибаюсь rqp Ну это что-то похожее нет на rpc нет а amqp извиняюсь amqp jpc - Это вообще rcp протокол используется в jpc Ну да Вот хорошо так с планировщика работал Нет не работал только слышал с Шами работал типа редиса тоже нет Типа Диш Ну если я начну спрашивать диша сможешь

    01:14:59 - 01:17:10

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

    01:16:15 - 01:18:05

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

    01:17:11 - 01:18:50

  • jpc говорил ты с jpc работал я не работал а просто слышал да про него да слышал кто-нибудь B directional streaming grpc Ой нет не знаю Слышал А хорошо тогда другой вопрос слышал что-нибудь про сир Да это протокол вызва удалённых то есть нет даже не так это не то что протокол это больше технология библиотека на которая работает по ТМ протоколам этон и то чтото в этом Ду какое-то время опрашиваем сервер Я так понимаю типа Изменилось ли там что-то или нет А чем шорт пулинг от н пунга отличается возможно временем не

    01:18:06 - 01:19:39

  • уверен а веб сокеты Что такое websocket - Это когда мы посылаем м по какому-то вроде уровню ниже чем http Ну тоже не уверен Аа поток Ну типа не поток а просто м события и у нас и клиент и сервер могут туда ложить что-то Клиент будет это получать сервер будет отправлять Ну и клиент тоже может отправить это в websocket Ну не совсем конечно ну суть суть правильная наверно ну нет Нет я ещё знаю то что он разворачивает у себя там rpc Протоколы которые Ну нужны для общения клиента и сервера типа что-то вроде прокси

    01:19:01 - 01:20:48

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

    01:19:55 - 01:21:28

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

    01:20:46 - 01:22:14

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

    01:21:30 - 01:22:38

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

    01:22:04 - 01:23:27

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

    01:22:45 - 01:23:33