0: Максим, добрый день. Как слышно? Добрый день. Хорошо слышно. А меня? Да, все замечательно. Коллеги, прям с минуты на минуту к нам подключатся. Максим, напомню, что видеовстреча у нас сегодня по формату, Виталий.
1: Добрый день, Михаил. Добрый день.
2: А я не слышу.
3: Алло, меня слышно? Нет, Михаил, добрый день. Слышно, как меня?
4: Вас слышно? Мишу тоже слышно? Максима не слышно. Алло. Алло. Максима слышно, но не видно, не видно. Вот у меня пишет, что видео загружается. Давайте я отключу, включу.
5: Так, не видно, Максим, не видно. Пишет, что видео загружается, но не появляется. Меня чело этот самый с Острова пасхи кидали. Все так.
6: Давайте, Максим, перезайду. Да, можно попробовать, может быть, нормализуется.
7: Вот, Максим, все замечательно. Видим, коллеги, желаю вам продуктивной встречи. Буду присутствовать в фоновом режиме. Да, хорошо. Спасибо большое. Добрый день, Максим. Меня зовут Виталий Загоровский, я руководитель отдела разработки компании и с нами сегодня Михаил декан.
8: Ведущий разработчик бэкэнд и тимлид на проекте, куда мы набираем сейчас людей. Вот скажите, пожалуйста, вы готовы? То есть сейчас у нас таким образом будет, мы расскажем о компании. Вот вы сможете поза,
9: Задавать вопросы. Расскажем о проекте, о том, как работаем. Вот вы сможете позадавать вопросы. Далее вы расскажете о себе. Михаил позадает вам вопросы, ну, небольшие там, технические, чтобы понять уро.
10: Вот, и если после успешного прохо, ну, как бы, прохождения сегодняшнего интервью, следующий этап, это тестовое задание, вы готовы выполнить тестовое задание? Ну, там, небольшое, да, часа 3, 4 потребуется, чтобы показать уровень владения. Готовы, да, хоро?
11: Ну, давайте тогда как бы начнём. Компания гит на рынке 15 лет занимается информационными системами, хотя компания расшифровывается как институт географических, информационных систем, но занимаемся мы не толь.
12: Географии. Вот занимаемся различными системами, разработкой для корпоративных пользователей. То есть, ну, у нас то, что называется b2b, да, то есть мы разрабатываем системы, которые используются где-то там, в корпорациях, глубоко внутри
13: К сожалению, это 1 из плюс и другой минус, что это никто не видит, как бы показать какие-то интерфейсы или там решения, да, где их можно посмотреть. К сожалению, нет, потому что они
14: Все находятся там, внутри корпорации. Вот, ну, я вкратце расскажу, как бы, какие там проекты последние. Мы сейчас занимаемся, какими работаем, чтобы вы понимали, какие проекты у нас есть и с кем мы работаем, где там можно, я буду называть компании, где компа.
15: Называть нельзя, как бы, ну, буду называть, чем они занимаются. Вот. Соответственно, компания гид, основной офис в Санкт-Петербурге. 2 офис в Москве 2 центра.
16: Вот дирекция и руководство все находится в петербурге, в Москве, там офис, рабочий, в офис мало кто ходит в Санкт-Петербурге. Ну, там обычно директора, бухгалтера и руководящий.
17: Эти разработчики все у нас работают удалённо. Вот если есть необходимость, можно приходить в офис в Санкт-Петербурге или в Москве, если есть такая необходимость, вот занимаемся мы
18: Московский офис в большей части специализируется на геоинформационных системах, питерский на информационных системах вот я тут представитель.
19: Большей части Московского офиса мы перешли в компанию гид. 3, 2 года назад была такая американская компания называется, если вот и дочка её была российская, соответственно, мы разрабатывали и прода
20: Продвигали американское программное обеспечение, которое называется аргиз. Вот. Соответственно, у нас довольно большая команда, которая и опытная, которая занимается информационными технологиями уникальными. Вот, ну, после 22 года, понятно, ситуация
21: Менялось. И теперь мы уже не работаем не на американском программном обеспечении. Вот, а разрабатываем своё отечественное и также его у клиентов наших внедряем.
22: Ну, расскажу для чего, что делает. И как. То есть, ну, например, у нас из наших таких долгих проектов. То есть мы давно уже работаем, поддерживаем компания лента, вот это геомаркетинг.
23: Размещение супермаркетов, гипермаркетов и их вычисление их параметров, то есть есть карта, на которой там распола, то есть похожа на google, на яндекс карту, там нанесены всякие объекты, но ещё умеет считать всякие интересные показатели.
24: То есть, где тут оптимально открыть магазин, сколько людей там в окрестностях живёт, там 5, 10 минут ходьбы. Если это формат магазина дома, если супермаркет, гипермаркет, соответственно, сколько там за 5, 10 минут, мож.
25: Может приехать людей на машине. Соответственно, они ищут, подыскивают объекты недвижимости. Вот рассчитывают, какого формата. Магазин можно открыть, смотрят на конкурентов, смотрят на свои магазины и рассчитывают там выгодность.
26: Магазина в той или иной точке также ещё планируют всякие там рекламные акции, охват там, ну, в общем, анализируют чеки, где, что люди покупают и делают там какие-то свои выводы. Вот наподобие системы мы
27: Время делали для Сбербанка, для пятёрочки, которые в дальнейшем стали, начали сами развивать и до сих пор развивают. Ну уже там какой-то другой софт, этот софт в ленте. Сейчас пока ещё все работает на аргис.
28: Запланирован перевод в ближайшее время на отечественное оо, вот, то есть те финансы, ну, там, в принципе, у всех обозначились, в своё время разработали системы, с помощью которых люди рассчитывают
29: Лучше им располагать какие-то объекты из природных ресурсов. У нас сейчас активно проект идёт по 1 из нефтяных компаний из топа, добывающих в России, они решают там свои
30: Чисто хозяйственные, да, там нанести все объекты, нанести там скважины, дороги, показать, где ездят машинки, показать, где ходят люди. То есть там у людей есть так называемые умные каски, вот, которые отслеживают
31: Местоположение и в принципе, можно проанализировать, где ходил человек в реальном времени отследить. Если он зашёл там в запретную зону по безопасности, всякие предупреждения генерировать, прокладывать маршрут, анализировать, где что лежит и куда, ну,
32: Можно поехать или приехать, ну, различные задачи, где там может потребоваться карта в задачах разработки месторождения. Вот подобная же система работает на, мы продолжаем рабо.
33: Работать с крупнейшим целлюлозно бумажным заводом в России. Это бывший швейцарский монди, сейчас сыктывкарский целлюлозно бумажный целлюлозно бумажный завод, вот там уже разрабатывается также система, то есть там не только
34: Дороги, склады, ну где там, сколько дерева какого растёт. То есть они не только там бумагу вырабатывают, но ещё и лес рубят. Соответственно, им нужно посчитать, какой участочек можно взять, сколько там, какого типа древесина, где здесь дороги, как провести
35: И как ввести, как потом все это заново восстановить, и там какие сроки аренды у нас проходят. То есть это карты, имущество какое-то, и задачи, которые связаны с непосредственно там деятельностью этих компаний.
36: Это все системы, которые ещё работают на старом, по, на американском. Ну вот уже есть у нас примеры и проекты, которые реализованы на отечественном по, есть такая компания, которая называется перестраховочная компания, она занимается Страхова.
37: Страховых компаний. Единственная в России самая крупная дочка, крупнейшая компания, как в страховом бизнесе, да, вот дочка центробанка, которая занимается тем, что страхует страховщиков. Вот, то есть
38: Если приходит какое-то событие, да, на территории, ну, например, землетрясение или наводнение, то ни 1 страховая компания не сможет выплатить эти убытки, да, там, ни физическим лицам, не говоря уж.
39: Юридическим там где заводы какие-нибудь супер дорогие или или какие-то очень уникальные. Вот соответственно, вот от таких случаев и от разорения собственно страхового бизнеса и собственно, чтобы
40: Восстановить. И предприятия работали, да, специальная компания, которая эти риски страхует. То есть, если произойдёт там глобальная катастрофа, да, чтобы предприятия могли выплатить эти страховки, и они отстроились, там, восстановились, и эконо,
41: Не рухнула в регионе, а как бы восстановилась и работала дальше. Вот, соответственно, мы вот разрабатывали систему, которая позволяет оценить риски и ущербы от наводнений и землетрясений. То есть, ну, во первых, смоделировать
42: События, то есть модели событий, были разработаны российской академией наук. Вот как для наводнений, так и землетрясений, там для землетрясений институт физики земли разрабатывал, вот и сами модели.
43: То есть, как 1 единичное там событие воздействует, да? То есть есть все имущество там на территории России. И мы можем посчитать, что если событие в этой точке произойдёт с такой-то интенсивностью, ну или там вода поднимется на полтора метра, да, то
44: Кого затопит, какие будут убытки, ущербы. И это все можно быстро посчитать. Ну, это не самое интересное. Более интересно вообще вероятность такого события, да, то есть им, они же страховщики, они работают с вероятностями. Надо понимать, где опасно, где не опасно, где
45: Дом нельзя больше 2 этажей строить, да, а где наоборот, как бы можно ничего страшного в этом. И, соответственно, вот такие модели тоже по вероятностям мы разработали, и они сейчас рассчитывают и уже понимают, сколько там должна стоить страховка.
46: И или перестраховка, да, то есть можно страховать это имущество или вообще его страховать нельзя, потому что завтра его смоет, разнесёт землетрясением или ещё че то с ним случится. Вот такая система работает уже почти год. Вот прошло.
47: Как бы очень как бы была воспринята хорошо страховым сообществом и уже работает. Соответственно, сейчас мы разрабатываем, ну, как бы не разрабатываем мы следующий у нас контракт уже по моделированию других.
48: Событий, ну, например, всякого природного, природного толка для сельхозпроизводителей, да, то есть землетрясения, фу, господи, землетрясения, засухи, ледяные дожди, град и все вот такое, то есть какие-то природные событии.
49: Которые могут отразиться на кредитоспособности сельхозпроизводителя, потому что вся сельхоздеятельность у нас на кредитах также, а кредиты все у нас страхуются. Если там вдруг неурожай или ещё чего. Да, ну, надо, чтоб кто-то эти
50: Попытки компенсировать, вот, ну и полностью не разорили там этих сельхозпроизводителей, ну вот такая вот работа тоже у нас, ну это я все рассказал, все, что касается, как бы геоинформации вот, ну у нас ещё есть ряд
51: Проектов, которые связаны с компаниями, которые занимаются газом. Вот, ну, например, такой проект, как трубопроводы высокого давления.
52: Не, здесь тепловые электростанции, где там стоят всякие котлы, агрегаты и тому подобное, которые опутаны просто трубочками, да, так как там интересные условия производства, да, то есть это высокое давление, высокая температура.
53: Вот эти трубочки ведут себя очень необычно, их очень много, и их нужно все время инспектировать, потому что авария, если случится авария, то убытки будут колоссальные. Ну, мало того, что люди там останутся без электричества, да, но ещё и убытки, да.
54: Может именно сейчас конкретнее по нашему проекту, на который берём. Хорошо. Да, я хотел следующий должен быть наш, вот, соответственно, сейчас проект, на который мы набираем людей.
55: Это система удалённого мониторинга и диагностики. То есть вот эти турбины работают, это турбины похожи на турбины, которые стоят в реактивных самолётах. И принцип работы такой же под высоким давлением подаётся газ, который
56: Сгорает, раскручивает турбину, а турбина вырабатывает электричество, и это очень выгодно, лучше, чем сжигать газ и греть там котелок, который, который и пар, который будет раскручивать паровую турбину, хотя там паровые турбины тоже есть.
57: Используется по другому. Так вот, это все такие большие устройства сложные, на которых стоят 1000 датчиков до 10000 датчиков от 5 до 10000 датчиков, которые с различной скоростью вещают все показатели.
58: Этой турбины, вот какие-то в реалтайме вещают там от 1 до 3000 датчиков какие-то в оффлайне то есть там выгрузка. И вот наша задача стоит, чтобы принимать эти все сигналы и мониторить здоровье этой турбины. То есть нам нужно
59: Принять все там показатели вращения, напряжение, температура, давление, сохранить их. Вот. То есть это огромный объём данных, потому что датчики вещают с частотой раз в 100 миллисекунд.
60: Вот, и получаются какие-то за сутки там какие-то гигабайты по 1 турбине. Вот, а этих Турбин 30, вот умножить на 365 получаются числа про настоящие большие пребольшие.
61: Данные, их нужно хранить, обрабатывать и анализировать. Сейчас мы как бы выполнили часть проекта по накоплению этих данных, и Такому простому представлению дальше предстоит более интересная.
62: Работа по представлению данных в виде графиков дашбордов, мнемосхем, то есть такие схемы, где там можно все это показывать. Ну плюс аналитика по этим данным, анализ, отчёты, все остальное. Вот, вот на этот проект мы
63: Сейчас ищем сотрудников, вот увеличиваем штат, который есть на проекте. Сейчас на проекте у нас 4 бэкенд разработчика, наверное, уже 5 фронтенд разработчиков, тестировщик, дизайнер 2.
64: Тестировщика, дизайнер девопс, руководитель проекта 2 аналитика. Ещё сейчас 2 берут системных аналитиков, чтобы помочь аналитикам. Вот бизнес аналитикам. Вот. И вот эта вот вся коман
65: Работает над этим проектом. Вот мы ищем
66: Программиста сишарп, вот то, что у нас про технологии Миша расскажет, да, то есть на сишарпе у нас ядро разработано, вот, и фронт на javascript, вот работаем мы удалённо.
67: На, в принципе, в отделе сейчас разработки порядка у нас там, по моему, 18, не знаю, 19 человек работает. Вот, ну, большая часть отдела работает на этом проекте, который называется суми, куда мы сейчас, собственно, и приглашаем.
68: Наш кандидат так, порядок работы все, работаем удалённо, код в гитлабе, задачи в гитлабе, еженедельное совещание по по проекту.
69: Плюс бывают там совещания, которые рабочие их там назначают по мере необходимости. Вот ищем человека в штат вот с испытательным сроком 3 месяца, то есть на испытательный срок никаких там санкций.
70: Ничего нету. Вот. Но как бы смотрим, мы можем быстро человека уволить, ну или вы можете сами уволиться, если вам че то не понравится.
71: Вот все, наверное, рассказал.
72: Да, тогда я, наверное, или вопросы, если есть какие-то по работе, по проекту, потом я по вопросам, вы говорите задачи в гитлабе, то есть, да.
73: Обычно просто джира используется как, ну, ну, где как придётся, но в гитлабе есть прекрасный и позволяет которых, да, совершенно спокойно все это пишется. Здесь же сразу я в коммитах, связываешь все на Зада.
74: У тебя ссылки есть? Можно посмотреть все без всяких там.
75: Прикольно. Хак собесов, точка ком. Собес станет пустяком, клабом. Я работал просто, ну, обычно мы сейчас как раз хотим сделать наши репозитория, никто не ходит, да, что есть репозиторий нормально. Ну там много ещё чего есть.
76: Ccd есть нормальный, да и управление задачами. Ну, управление задачами, наверное, не сравнится с джирой. Ну, хватает, во всяком случае, пока.
77: Пока вопросов. Так. Угу. Хорошо. Давайте теперь, наверное, вы про себя, что знаете, что умеете? Вот чего хотели бы работать, чем заниматься и тому подобное, чем нравится заниматься. Ну,
78: Меня взяли стажёром в компанию lr, она заказы, она занимается заказной разработкой. Поставили на проект, связанный с документооборотом, были ну.
79: Процессы, которые обрабатывают документы и различные там бизнес логика с договорами, с ещё чем-то там, в основном сразу меня посадили на базу данных, там у них использовался, соответственно, было очень много с ним.
80: Задач. Учитывая, что проект изначально был очень старый, его переписали как раз на тот момент свежий дотнеткор, то там был полный хаос в запросах, приходилось их оптимизировать. Вот.
81: Были ещё там разные задачи, настраивал redis не то что я прям сам настраивал, просто дописывал сервисы и использовал его, то есть кэшировал данные. Вот.
82: Это был монолит, там по команде было 6 бэкэндов тоже, ну, поменьше фронтов, 4, 3 тестировщика, 2 продукт менеджера.
83: 1 системный аналитик, ну и тимлид девопс был отдельный, и архитектор. Вот проработал я на нём 2 года, потом меня отправили на другой проект, там был проект посвящён
84: Фонду инноваций. Какой-то государственный проект там был новый дотнет, по моему, 5 что ли. Изначально они его тоже переписывали, там были микросервисы и там
85: Интересный был подход. То есть там не было бэкендов, не было фронтов, не было тестировщиков, там просто были разработчики, которые могли и в бэкенд, и фронтенд. Соответственно, мне приходилось
86: Делать задачи на ангуляре, в принципе, ангуляр прикольный. Ну, их там не так много было, конечно, было легаси в виде веб формов, но в целом, окей, вот там ещё
87: Был кейс у меня с настройкой jwt токена мы настраивали политики.
88: Вот там тоже у них был энтити фреймворк, в некоторых местах дапер тоже приходилось с этим работать.
89: Микросервисы общались по кролику, вот и mass transit. Потом я ушёл с этой компании и сейчас работаю в компании hybrid там.
90: В целом, ну логика интересная, там программатик, реклама, там есть тоже разные модули ssp, dsp и там тоже используется clickhouse для хранения статистики там тоже.
91: Работает таргетинг, то есть смотрится на, ну, на то, каким людям, где они живут, какие у них там девайсы, там какая угодно может быть статистика и какую рекламу им лучше давать. Там тоже использовались
92: Они говорили о том, что лучше нужно сделать, чтобы там улучшить рекламу условно, вот там на этом проекте, это монолит, он довольно-таки старый, но там использовалась Манга.
93: И кликхаус, там ещё использовались разные бдшки, но я с ними не работал. Что-то вроде друида тарантула, как мне объясняли, целый зоопарк какой-то. Вот было взаимодействие с мангой было.
94: Recore был, получается, постгрес Манга кликхаус это основные бдшки, с которыми я там работал. Там в основном были задачи, не то чтобы связанные прям с какой-то технологией. Зачастую, ну, была задача сделать такую
95: Скрипт, который кидает статистику с продовой бдшки в локальную. Была задача, ну, там разные бизнесовые реализовать, какие-то новые фичи были задачи с
96: Распараллеливанием запросов, то есть не запросов, которые в бд, а в целом, там, допустим, допустим, там, 50 человек, которым нужно отправить письмо, запрос работал 30 секунд после того, как новую фичу допи,
97: Sally все начали ругаться о том, что запрос начал долго работать и приходилось таким образом распараллеливать это все вот было взаимодействие с elastic search, у нас активно оно внедрялось.
98: Вот приходилось переписывать сервисы на elastic search, на другой логгер. Как тебе эластик, серч, эластик, серч, пушка хорош, хорошо оно эластичной. Да, эластич?
99: Да, как раз подходит под название эластично в хороших руках, да, но такой в самом начале использования инструментария не очень удобно продолжать, да, но мы майкрософтовский логгер используем.
100: В целом. Угу. Ну, там у нас просто есть таски, там таски запущены на старых виндовских серверах, они очень старые, и там просто, по сути, консолька, она запускает таски.
101: Фоновые, и оно просто в концо релайн логировалось все, а мы просто это все взяли и переписали на elastic. Сейчас логировалось через эти де, на task windows или че?
102: Да, ну, по сути, просто был консол riteline, до этого просто оно логировалось и было видны логи на компе удалённом. Сейчас оно логируется в эластик, и все это гораздо проще искать и масштабировать. Ну да, да.
103: Потеряется, да?
104: Вот.
105: Ну, да. Ну, по опыту, в целом, все. Угу. А, ну, могу рассказать по команде, по команде. У нас сначала была большая команда, потом мы разделились на 2 поменьше, сейчас в моей команде.
106: 2 бэка, 1 фронт, 2 тестировщика, 2 продукта. Тимлид системный аналитик. Ну, сейчас мы, они хотят добирать в команду. Вот как-то так. Все хорошо, я думаю.
107: Достаточно просто у нас тут полчасика с чем. То есть надо в эти полчаса успеть в приниться. Я сейчас расскажу про проект сам, на который набираем стек. Значит, проект интересный. Ну вот он связан, как Виталий Иванович сказал, с
108: Газотурбинными установками не только на там станции теплоэлектроцентрали, которые, да, вырабатывают энергию, как и повторюсь, много датчиков по 50, 60000. На 1 оборудовании есть станция
109: У станции есть энергоблок, у энергоблока оборудование, значит каждый энергоблок, да по 50 60000 датчиков и это каждый датчик ежесекундно мож.
110: Даже в миллисекундах отправляет сигналы каждого сигнала. С каждого оборудования может идти по, ну, допустим, 3500000 строчек в сутки. Так, среднее значение, что сейчас в голову приходит
111: С чем работают, таких данных очень много. Это телеметрия. Делаем высоконагруженную систему, дотнет 9. Пытаемся в новые технологии не отставать, потому что нам важна производительность и скорость сейчас.
112: У нас кликхаус гринплам от гринплана 7 версии. Пытаемся уйти. Вот прям сейчас недавно в экспериментальных целях накатили пресс плюс статус расширение. Слышал?
113: Расширение для посгр плюс что сайтус си ай пи не слышал расширение, которое позволяет сделать кластер из этих нот. Так?
114: Сегменто. По сути, это как бы видео и задачи с реальных собеседований на сайте хак собесов точка ком. Хватит гадать, что вас ждёт на интервью. Переходите и получите преимущества перед другими кандидатами прямо сейчас. А сайтус у нас позволяя
115: Значит, и там, и там кластер, там единственное различие, что атомарность лучше в гринпламе, но мы будем ещё думать между статусом и яндекс диби. Вот это пока что экспериментируем, но
116: Сейчас основные данные у нас хранятся в кликхаусе, значит работаем, получаем ежедневно архивы с ftp сервера скачиваем на с 3 наш берём данные, обрабатываем каждый архив для каждой электро.
117: Для каждого энергоблока кидаем в кафку. Кафка у нас нужна для синхронного распараллеливания, где консьюмеры уже будут тоже хватать партиции и принимать и обрабатывать. Ну, на другом.
118: Чтобы горизонтально масштабировать в целом, чтобы упростить наши задачи. Итак, это поверхностно, что у нас редис используется для ролевой системы, мы там, да.
119: Роли храним, доступы дёргаем быстро, из кэша быстро данные нас важно. В целом высокая нагрузка. Сейчас у нас вот, да, 1 этап, повторюсь, прошёл данные обрабатываем, получаем
120: Ним следующее идёт, будет идти аггрегирование и визуализация. Вывод, но также баги могут встречаться. Это нужно поддерживать. Нам не хватает рук, что это основное просто вкратце.
121: Сказал честно я на этом проекте с сентября интересно, интересно тем, что новые штучки какие-то подчёркиваю идём в highload это мне лично нравится, заходит те. Давай начнём вот у нас.
122: Мы, я тебя поспрашиваю, представим, что мы в баре пьём Пивко и общаемся, как коллеги на какие-то темы просто обсудить. Прикинь, такая штука есть. Или слышал об этом чисто на расслабоне?
123: Так, ну первые вопросы могут, где-то слышал. Мне интересно, что ты знаешь, что читал просто, да, рассказывай, что просто поделиться своим опытом всегда интересно. 1, наверное, вопрос будет.
124: Скажи, там, знаешь ли, какое отличие сейчас вот с каким дотнетом ты последним работал последней версии 6 или 7? А ты писал резюме, мы переходим на дотнет 8. Сейчас у нас дотнет фреймворк 4.
125: Давно переходите. Ну, почти перешли. У нас уже, я, ну, распиливаем микросервисы. В основном, я работал в новом сервисе, там был до 8, я это спрашиваю, да, потому что вопросы, которые могу задавать, могут.
126: Разница быть от версии дотнета. Ну, 1 вопрос хочу узнать. Расскажи, что ты знаешь про отличие интерфейса и абстрактного класса. Ну, если говорить про новый сишарп, то там в интерфейсах может быть реализации.
127: Если говорить про отличия, то основное отличие в том, что интерфейс поддерживает множественное наследование, то есть он более гибкий, а абстрактный класс не поддерживает. Сейчас, секунду, музычку потише сделаю.
128: Вот абстрактный класс, он в основном используется для какой-то большой бизнес логики. Ну не то что большой, то есть.
129: Вот абстрактный класс используется для чего-то большего, как по мне, interphace это просто реализация, точнее это просто контракт, то есть это контракт, который ты обязательно должен выполнить. Ну в абстрактном классе, там, соответственно, могут быть абстрак.
130: Методы могут быть не абстрактные методы. Ну и свойства тоже. Там есть ещё минорные различия, то что у абстрактного класса могут быть поля, у интерфейса их не может быть. Вот по моему
131: Да, там реализация, да, вот насчёт свойств, возможно, тоже не свойства должны быть множественное наследование. Почему только
132: Интерфейс почему только для интерфейсов?
133: Ну не, ну это вопрос такой больше. Почему, как, почему его нету у класса? Почему его нет? Ну она как бы, почему его нет класса?
134: Почему не знаю, так, сишарп, разработчики решили написать, ну, точнее, основатели. Ну, скорее всего, ну, могу предположить, что, в принципе,
135: Это логично, потому что интерфейсы, они должны быть маленькие, и они должны быть гибкие, а абстрактные классы, они зачастую большие, и, соответственно, нету смысла просто, скорее всего, их пихать куда-то. Ну то есть, ну,
136: Это очень странно будет выглядеть, если 1 класс будет наследовать 2 абстрактных класса, это по ооп и по логике, ну не совсем полидо, я бы так сказал. Да, а сколько классов нас может наследовать ещё раз? Сколько?
137: Классов. Ну, 1 класс. Сколько класс может по итогу наследовать? 1 класс может наследовать, ну, то есть быть наследником 1 класса. 1 класс может быть наследником 1 класса. Ну,
138: Да, ещё обжект всегда object наследует. Ну, это наследование. 1 класс наследует, 1 класс, потом другой класс наследует object как вариант, или они все наследуют обджект, там всегда выделено, они всегда, каждый, каждый наследует.
139: Всегда выделено место. Ну это ладно, это такие мелочи. Давай, расскажи, с какими структурами данных ты вообще работал, какие знаешь?
140: Структуры данных. Ну, базовая это массив лист, хэшсет дикшинари. Ну, есть специфические, типа стека очереди.
141: Ну, есть ещё разные иммутабельные коллекции. Очень Любим на проекте сейчас, где я работаю. Использовать арион ли, коллекшн интерфейс. Это прям база. Вот. Угу. По коллекциям.
142: Как будто, ну, 100% что-то ещё есть, если там фроуз дикшенери, соответственно, как вариант. Угу. Рассказывать про каждые коллекции, как подробнее? Нет, давай сначала про
143: Ридонли, просто расскажи в пару словах и потом к хэшсету хешей перейдём. Ридонли. Ну, по сути, они их можно эти коллекции назначить только при инициализации, а дальше из них только читать. То есть, соответственно, из них нельзя
144: Их нельзя переписывать. Это в целом очень безопасно и это круто, потому что ты положил какие-то данные, а кто-то взял и записал туда что-то другое, и программа поломалась и соответственно
145: Они этого всего позволяют избежать. И, соответственно, скорее всего, там какая-то идёт оптимизация по ресурсам, то есть там они не перезаписываются, да, вот там меньше памяти выделяется. Ну да.
146: Меньше и они быстрее. Согласен с тобой, хэш таблица. Ты упомянул её хэшсет дикшнери. Расскажи мне, что ты знаешь, как работает хэш функция? Знаешь ли ты, как работает хэш?
147: Функция под капотом у дикшинари, например, если я не ошибаюсь, дикшинари он имеет везде от 1, кроме коллизий, коллизии.
148: Они имеют сложность от, но это если там совсем большие данные, то они могут в целом возникнуть
149: В таких случаях рекомендуется переопределять методы от обжекта как раз get hash код иквел. Вот, соответственно, как работает хэш функция. Ну, я точно знаю, что
150: Просто на входе строка, а на выходе тоже строка, но поменянная, и её, по сути, нельзя расшифровать. Вот словарь, если я не ошибаюсь, в новых версиях сишарпа он Коли.
151: Работает уже Отт оо лого Тен, то есть там они как-то оптимизируют это с помощью by three под масси под капотом. Словарь это, по сути, 2 массива.
152: Там, соответственно, у словаря есть ключ и значения. Там есть массив бакетс, это, по моему, просто интовый массив, и там просто, ну, наподобие, что ли, индекса, то есть там, по сути, просто длинненькие числа.
153: А энтрис это тоже массив, и там как раз хранятся данные и хэш. Вот могу ошибаться. Я вот, честно, давно уже не работал с дикшенери, по моему там под массивом, под капотом 2 массива.
154: Ну, про 2 массив, че то не припомню там вообще, ну, не, не может. Ты имеешь ввиду бакеты, которые, как ячейки 1 из массивов. Да, да, да, да, да. Ну и массив энтрис, там, типа, есть объект энтри, и там оно соответст.
155: Хранит сам объект, который мы ложим в value.
156: Ну, если представить, я просто представляю немножко, вот я представляю, как массив, каждая ячейка это, да, как bucket, к которому мы кладём, да, уже наши объекты. Если в 1 Бакет залетит 2 элемента, то это да.
157: Будет коллизия, коллизия, которая one в старых версиях работать в принципе, да. Ну и там ты сказала, хэш функция строк, да, она принимает строку на выходе. Ну, может быть, массив байтов, она возвращает хэш код, не хэш код.
158: Интовое значение. И потом у нас это интовое значение делится на количество ячеек. То есть количество вот этих Бакетов, оно делится и сейчас, по моему, остаток от деления является индексом, в который
159: Bucket мы положим сам объект да, точно я смотрел видос какой-то на YouTube там как раз это расписывалось да там оно как-то математически вычисляется вот честно не помню уже там оно как-то по
160: Высчитывается, а как оно высчитывается, я не помню. Ну вот, да, она делится на количество Бакетов, кладётся в свой нужный Бакет. И когда у нас там все бакеты заполнены, если где-то есть коллизия, то она равномерно.
161: Определяется по новой, по моему, удваивая, как на примере листа удваивает количество, ну, пасти удваивает 2. Угу.
162: Да, да, да. Ну, в принципе, да, в принципе, так и есть. Давай дальше. Это интересная тема, глубокая, классная. Дальше расскажи мне вот разницу между классом и структурой в контексте.
163: Ну, значимых и ссылочных типов.
164: Ну, соответственно, структура хранится в стеке, класс хранится в куче, но не всегда это так. И вообще, в целом стек, он находится в куче, ну, стек, он работает быстрее, соответственно.
165: Поэтому структуры, они меньше памяти занимают, и они в целом работают быстрее. Вот. Но, конечно, с ними можно быть, нужно быть поаккуратнее, потому что когда мы их куда-то передаём, то они, соответственно, передаются.
166: Их копия создаётся, копия и передаётся с этим нужно быть аккуратнее, это как раз про различия, поведенческие различия между структурами и классами вот что ещё more.
167: Нужно рассказать.
168: Как-то дальше пойти ну допустим, классы это соответственно
169: Можно сказать, что за структура это по сути там числа енамы значны, ну да, у bool char.
170: Это классы, делегаты. В каком ещё раз вот есть перечисли случаи конкретные, когда нам стоит использовать структуру, а не класс.
171: Случаи, когда мы не передаём их в метод. Угу. Зачастую. То есть, ну, не очень хорошая практика использовать структуры. И когда нам что-то маленькое нужно хранить за
172: Зачастую именно для этого используется. То есть, если ты создаёшь огромную структуру, то не очень круто это выглядит, скорее всего. Да, да, я не помню, на сколько буит 16 байт занимает вроде.
173: Вроде в байтах, не битах там, да, имеется ввиду, чтобы не передавать методы, чтобы не копировать, потому что копировать тоже это накладные ресурсы. Это время класс у нас, да, если большие объекты.
174: Передадим по ссылке. Ну, у нас только ссылка займёт часа 4. А так давай, отталкиваясь от этих 2, ссылочные, значимые, что хак собесов, точка ком эйчар полюбит.
175: Вас тайком. Ну соответственно, боксинг это процесс упаковки, процесс упаковки значимого типа в ссылочный, то есть там приведением ещё чем-то. А анбоксинг это получается ты
176: Ссылочного, ну, в значимый обратно. Это не очень хорошо, потому что это, ну, довольно-таки ресурсозатратная операция заниматься этим. Ну, соответственно, это бывает, когда мы
177: Используем обжект вместо дженерика, как вариант и могут быть такие проблемы с памятью.
178: Потому что, по сути, ну, это дорогостоящая операция. То есть мы из стека достаём и оборачиваем это в ссылочный тип данных в кучу. Вот, по сути, перекладываем. Да, да, вот оно.
179: Даже анбоксинг чуть полегче, чем боксинг, там, на boxing выделяется память, потом память передаваемого значения, потом плюс память на адрес и че то ещё на что-то, и потом копируется ещё это тяжелее, чем боксинг.
180: Тяжелее, чем он был. Да? Так, давай вот. Ну, ты сказал, данные хранятся, значимые стейки про garbage collector. Что ты слышал? Что знаешь? Применял ли когда-нибудь вот эти?
181: Garbage collector мне применять не приходилось, к счастью, скорее всего. В общем там сборка мусора, автоматическая сборка мусора, там есть 3 поколения, есть разные виды Куч.
182: Есть поколение нулевое, 1, 2 нулевое, там зачастую какие-то локальные переменные, которые сразу же уничтожаются. Там есть различные триггеры, когда вызываются финализаторы у объектов.
183: Вот по моему там при достижении какого-либо порога памяти срабатывает Гербич коллектор и приложение по сути, зависает. Вот есть разные виды Куч там есть
184: Object heap смол обжект хип и Пинт обжект хип ладж обжект хип это большие лардж большие да это большие объекты там по моему точную цифру по моему 85.
185: 85 килобайтов что ли короче объекты которые больше 85 килобайтов они попадают в эту кучу те которые поменьше попадают в small обжект хип Пинт обжект хип пытался на хабре читать статью по ним по ПИН.
186: Хип, оно недавно появилось, по моему в дотнет 5 оно появилось, но че то так. Я не совсем понял, как оно работает. То есть оно какие-то объекты пинит, то есть удерживает на месте, а зачем оно это делает и в каких
187: Обстоятельствах это работает. Я, ну, не помню или не понял. Статичные объекты хранятся, которые не изменяются в размерах памяти. Это что? Ну,
188: По моему, иммутабельные, да, сразу то это недавно относительно появилось, там хранятся неизменяемые объекты, которые не надо перемещать в участках памяти и разрабы.
189: Гарбажколлектора было проще просто отложить их отдельно, чтобы не тратить на них ресурсы. У нас там ещё есть продан какая-то куча. Не помню, че то ещё.
190: Frozen куча. Ну это, ну, там есть новые типы, кучи, да, они появляются тоже когда-нибудь дойдём до этого, да. Так. Ну, в принципе, да, там.
191: Просто этапы, этапы это обработки Прохода по куче перед очисткой. Знаешь, если я не ошибаюсь, там сначала оно помечается, объект.
192: Для удаления помечаются, потом они удаляются, потом происходит дефрагментация, то есть объекты, они в памяти расположены последовательно по ящичкам, какие-то ящички удаляются, и оно чтобы
193: Занимать меньше памяти, оно все в 1 кучу. Ну то есть на место пустого. То есть они меняют свои ссылки в памяти. Вот, по моему, да, такие основные этапы, чтобы меньше все это
194: Памяти занимала в итоге фрагментации чтобы меньше было, чтобы пустых участков памяти не было. Так давай дефолтный вопрос, расскажи про асинхронность. Многопоточность что это?
195: То, с кем его я пробовал, работал ли. Да, конечно, работал, как сейчас, без этого многопоточность это
196: Просто там есть ещё параллельность. Можно сравнить, что многопоточность это, допустим, пример. Приведу бассейн и условно там 1 человек копает бассейн и другой человек копает бассейн. А синхронность это когда
197: Ты пошёл пить кофе там, а другой за тебя кто-то копает бассейн по сути. То есть, ну, многопоточность. Если говорить, то это много потоков. У них бывает борьба за ресурсы, там есть примитивы синхронизации, которые позволяют
198: Все это аккуратно сгладить разные там локи, мьютексы, семафоры, все дела. Если говорить за асинхронность, то там асинкавейт, то есть
199: Как работает это все в основном эвейт используется на какие-то операции, которые не связаны с шарпом, а многопоточность зачастую используется в синхронных каких-то вещах. То есть если мы
200: Допустим, читаем с файла или ходим в бдшку. То есть это не зависит от шарпа. То есть мы выходим за пределы языка программирования. Мы используем асинхронность для того, чтобы не даже чтобы поток не стоял на месте, не дожидался выполнения.
201: Не дожидался выполнения задачи, ну, чтоб не дожидаться выполнения запроса бдшки, а мог выполнять какую-то другую работу. Ну и, соответственно, там можно сказать про контекст синхронизации, то есть
202: Условно вот у нас есть метод, мы по методу идём в потоке номер 1, наткнулись на await, потом наш поток не застаивает, он может делать какую-то другую работу.
203: И мы, допустим, выходим в потоке 5, или мы можем настроить, чтобы выходить в потоке 1 в том же потоке, ну, это, соответственно, там для десктопов работает. Угу. Вот как работает это под капотом тоже.
204: Читал, помню, там получается даже смотрел ил коды где-то там, на каких-то статьях получается это все в машину состоянии происходит. Это все там есть интерфейс ая синг стоит.
205: Машин и получается там оно все разлаживается красиво. То есть каждая переменная это поле, каждый метод это класс, и оно по сути прыгает по состояниям. То есть мы доходим до 1 эвейта, мы меняем состояние, доходим до другого, опять меняем
206: Там есть метод move, вот и какие-то оно там методы вызывается я уже не помню там по моему оно вызывает гетто, вейтер, че то вроде такого.
207: Вот, ну да, да, он под капотом гетавей ер, потом гетре, но эти вещи вручную не советуются, да, использовать.
208: Ну, отлично. Да, в принципе, все понятно. Мне понравилось. Так, следующий вопрос. Паттерны вообще с какими-то работал, применял в жизни, там что-то такое приходило, наити, вот этот паттерн надо.
209: Ну, в жизни много паттернов в Шарпе. Ну, основная база, фабрика, стратегия, иногда в некоторых местах у нас на проекте декоратор. Очень прикольная тема. Мне вкатила ада.
210: Которые иногда приходится использовать. Угу. Ну и, соответственно, база депенденси инжекшн. Вот. Пока из паттернов, там их, конечно, очень много. Там они есть поведенческие.
211: Которые объекты новые создают. И ещё там какая-то категория, я уже не помню. Давай про стратегию. Стратегия. Ну по сути это убирание иф лсов, то есть
212: Ты создаёшь объект, который, не знаю, там что-то делает по какой-то, по какому-то сценарию, и ты в зависимости от каких-то условий инкапсулируешь по сути, блоки кода в класс с методом, и ты их
213: Как-то подставляешь, то есть по сути, подставляется стратегия под, не знаю, там Намик, допустим, то есть нам дду Ван стратеджи, у тебя 1 стратегия работает, то есть ты создаёшь экземпляр
214: Там, соответственно, все эти стратегии наследуются от интерфейса, и метод возвращает интерфейс, и под интерфейсом какая-то конкретная реализация стратегии возвращается, и ты её
215: Выполняешь вот это, как я понимаю. Ну да, в принципе, так-то такое есть, да, понятно. Принципе, да, паттерн нам необходимы. Так, я не помню, ты, по моему, писал, что, а ты
216: Говорил сегодня и в резюме у тебя про Ребик, а с кафкой не помню. Ты вот работал с кафкой. Блин, мне бы очень хотелось поработать, но с кафкой я не работал, я там немножко про неё читал, ознакамливался, знаю.
217: Что там есть какие-то партиции, что эта штука в целом более безопаснее, чем кролик. Она хранит в себе сообщения. То есть, ну какие-то такие отличия больше такую, самую базовую теорию по ним.
218: Знаю. Ну, с кафкой не работал, к сожалению, очень хотелось бы. Ну да, кафка мне местами даже больше нравится. Она посложнее. Я скажу, чем rabbit, там надо книжечку продолжить читать по кафке, потому что
219: Сейчас вопрос, ну, она позволяет нам она не потерять сообщения, она хранит там сообщения в топике, на жёстком диске. И там уже разные стратегии приёма и отдачи данных используем в том плане.
220: Чтобы с дополнительными проверками или нет, это влияет на скорость. Мне нравится кафка, но с ней надо уметь её покорить, потому что там есть свои подводные камни. Так хорошо, ладно.
221: Что ты знаешь про уровни изоляции транзакций?
222: Уровни изоляции транзакций смотря про какую субд мы говорим, если мы говорим про sql сервер, то там рит комитет нет, нет, нет, Рита, комитет, рин, комитет.
223: Beat и сериалайза по моему там есть ещё снепшот какой-то если мы говорим про постгрес, то там нету рит анкомтех коротко про каждой пройдусь рит анкомтех по сути вот идут 2 транзакции.
224: И 1 транзакция может читать данные другой транзакции, которая их ещё не закомитила. И своего рода это феномен грязного чтения. Вот, и это очень плохо, но это
225: Самый быстрый уровень изоляции. То есть транзакция не стопается, она не блочится. Это. Угу. Большой плюс этой изоляции потом есть уровень рит, комитет.
226: Там уже нету феномена грязного чтения, но есть феномен повторяющегося чтения, не помню, если честно, в чем заключается этот феномен, повторяющее феномен.
227: Повторяющегося чтения, но точно знаю, что он фиксится в repeat read repeat read он в принципе более такой уже безопасен безопасный.
228: Ну, самым безопасным считается сериал зебл. То есть там 2 транзакции, они выполняются, по сути, параллельно. То есть они не могут читать данные друг друга, если другая транзакция тронула данные, которые сейчас использует другая.
229: Транзакция, то эта транзакция просто стопается из за этого это самый медленный уровень изоляции, транзакции, но он самый надёжный в каких-то там банковских штуках это маст хэв в целом.
230: Вот у сериала зла нету никаких феноменов.
231: Вот в целом все, что могу рассказать про феномены, я, конечно, подзабыл. Вот, потому что не часто я это использовал. Я читал про это читал, про это знал все феномены, но в работе
232: Последние. Не часто это использовалось, поэтому уже подзабыл. Вот. Угу. Хорошо. В принципе. Ну, я почти все вопросы задал сейчас с редисом. Ты, по моему, сказал, что работал, но не настраивал. Да, да.
233: Ну, с редисом у нас сейчас, в принципе, нет таких конкретных задач, что нужно было. Мы сделали так. Ну, в принципе, у меня все, Виталий Иванович, есть вопросы.
234: Не слышно. Микрофон выключен. Нет у меня вопросов нет. Все. Максим очень хорошо отвечал. Мне понравилось. Видно, что человек разбирается, знает, о чем говорит. Вот если где то что-то, может быть, и не работало. Но, во всяком случае, информированность.
235: Да, видно, что интересуется, не просто интересуется тем, чем занимается. Да, единственное время заканчивается. Про уровни, изоляции, транзакции. Я че то совсем забыл, печально ответил в целом.
236: Да ничего, сейчас у нас время просто заканчивается. Так бы я тебя ещё бы поспрашивал. Вопросы. У нас просто следующее интервью. Так, если ты согласен, то мы, в принципе, можем, да, расходиться.
237: Мне приятно было пообщаться. Если ты согласен продолжить контакты, то есть тестовое задание, мы тебе его отправим на него. Я думаю, можно дать. Ну, недели 2 максимум, потому что мы только начали поиски кандида.
238: Ну, 2 недели это с корой хватит. Да, да, мы ещё рассматриваем просто, ну, рассматриваем других кандидатов. Это, в принципе, и тебе, чтобы, чтобы выходные не тратить на это там.
239: Я думаю, ну прочитаешь, я думаю, там часа 3 максимум хватит. Максимум можно и быстрее. Это зависит, да, от уровня каждого, что я думаю, все.
240: Да, вот сейчас мы общаться, Юля пришлёт вам тестовое задание, и тогда ждём от вас. Чем быстрее, тем лучше. Если хорошо справитесь, мы сильно других ждать не будем. Да, спасибо большое за встречу. Было познавательно.
241: Было приятно общаться. Спасибо. Угу. Взаимно. Все, давай. Удачи. Спасибо большое за встречу. Максим, на связи. Коллеги, увидимся сейчас.