Подготовка к собеседованию на C# Developer
Менторы
Специалисты своей области, которые смогут помочь вам
Middle .Net Developer
Senior Product Manager
Middle Python Developer
Ведущий программист
Backend Software Engineer (PHP)
Senior .NET/C# developer
Middle DevOps Engineer | Tbilisi, Georgia
Middle C# .NET
Senior PHP-разработчик
Middle python developer
Каналы
Полезные Telegram каналы и чаты
Транскрипция видео:
Всем привет С вами сегодня у нас интервью на непонятно какую позицию то ли джун то ли Мидл с нами сегодня Илья привет Вот мы начнём с интересной истории от Ильи Я думаю он про себя расскажет про то как он вообще залетел в ашку а дальше мы начнём СС Илья тебе слово да всем привет моя история такова что год назад Я покинул страну с известными с известной ситуацией и оказался без работы Вот понял что хочу освоить профессию удалённую и начал как раз таки [музыка] вотча вот корот и я обучению уделял по 89 часов в день
00:00:12 - 00:01:58
иногда когда чувствовал что уже информация не лезть я давал себе выходные вот и через месяца четы Начал уже искать Первую работу Слушай а можно сразу вопрос а вот ты самостоятельно получается Всё изучал или какие-то курсы Может там не знаю менторство или какие-то друзья помогли как у тебя [музыка] это Сень тоже в Доне вот он дал курсы и иногда сам немного помогал вот курсы не знаю будет ли реклама или нет это itn украинская компания по-моему вот у них курс проходил бесплатные видеоуроки которые да у них да да Где из
00:01:05 - 00:02:36
itn Шевчук Да очень очень грамотный преподаватель врем вот ну и плюс ресурсы типа стека или ы Это кто у нас там сил код Вот то есть всё в совокупности Ну Сид наверно больше даёт такой базовый синтаксис Да но мне поначалу То есть я гово год назад вони что это та есть професия бы во свя вообще в другом если не секрет по профессии Кем был строите А в строительстве неплохо Так а что строилось не секрет отделка в основном То есть были свои бригады было сво Ну короче внутренняя отделка в основном да да Хорошо понял Ну вот ты приехал
00:01:51 - 00:03:52
куда-то в какую-то с товарищем и так [музыка] далее по практике мы начали он сказал ты эксперт в своей предметной области Давай пилить простое приложение по созданию смет у и сказал что тебе какие-то старые технологии Взяли до 6 Blazer Север Сай и начали писать вот там всё и сразу сказал Ну немного коснулись там он сразу сказал изучай с базой немного то есть и SQL тоже itvdn прошёл и потихоньку начали набрасывать такое простенькое приложение Угу а работодателю первому ты его показывал это приложение оно ему было неинтересно Оно
00:02:55 - 00:04:35
хоть оно и выложено у меня в гитхабе Но скажу Так сколько собеседований я не проходил оно никому было не интересно у То есть никто не просил а он есть в резюме вообще да он есть там есть даже тестовые задания от некоторых компаний Я выкладывал Вот сам что-то делал на юбе вот мне было [музыка] интересно я повторял параллельно это вот недавно кстати много технологий затрагивал и я как бы старался что-то подобное делать было интересно но никто вот я сколько собеседований не проходил вообще никто не
00:03:46 - 00:04:57
смотрит вы-то приложение через 4 месяца я правильно понял ты начал искать работу да написали резюме добавили год опыта которого не было вот начал ходить на собеседование первые собеседования были из разряда коне чуть в сторону я посыпался Вот то есть то есть меня основное обучение шло Первое это как бы бесе была такая по рельсам наката если интервьюер немножко уходит в сторону я пря уже терялся Вот и понял что учить только вопрос собеседования это может быть и хорошо но не столь эффективно то есть надо
00:04:24 - 00:05:58
понимать суть того что спрашивает а не просто знать ответ я недавно общался с человеком который вот [музыка] знаний Да вот теоретических Таких вот скорее важно сколько у тебя опыта решения задач проблем ты можешь рассказать как ты её решал соответственно Ты даже если тебя интервью спросит какую-то технологию ты скажешь типа вот я решал такую-то проблему при помощи этой технологии вот и он уже у тебя с потому что очень важно иметь именно опыт какой-то полезный релевантный качественный нежели там не знаю
00:05:16 - 00:06:45
теоретические знания из учебников конечно теоретические знания из учебников это полезно и прокатит в некоторых ситуациях Но если чуть в сторону копнуть и спросить что-то связанное более приземлённые частично Окей хорошо получается первый Собес у тебя ком я так понимаю был Да и не только первый их было несколько это где-то и стажировка и ещё какие-то вот и уже устроиться на первую работу у меня получилось спустя полгода то есть 2 месяца я искал работу учися прочи потом компанию [музыка] ВНО части ещё и frontend То есть если
00:06:08 - 00:07:43
разделять это наверное 60 на 40 там был JavaScript jquery немножко устаревшие технологии и плюс я попал в ту среду где вообще не было никаких тикетов постановок задач там тестирования вот этого всего не было Просто был один человек который давал абстрактную задачу и требовало решения так как у меня опыта вообще в работе не было Я думал что это Это норм но когда Устроился на вторую работу где уже было Всё по-другому я понял что слава Богу я то есть то тот был просто хороший опыт Я не могу не вправе ругать ту компанию
00:07:02 - 00:08:23
за то что у них такой подход к работе но я понял что мне это было не очень удобно сейчас вот в той компании где я работаю есть и тикеты очень грамотно оформленные и отдел тестирования то есть намного приятнее работать скорее всего попал в более крупную компанию где больше сотрудников а текущая работа Да не на самом деле Она небольшая 30 человек всего Ну в команде да Или в компании в компании всего 303 0 Угу Ну и они все разработкой занимаются нет такого что кто-то там не знаю курьер кто-то там Не ну то есть другие какие-то
00:07:42 - 00:09:03
отдалённые от it профессии Нет чисто вот аналитика поддержка фронт тестировани Ну тогда это уже не очень маленькая в первой компании Сколько было в it отделе сотрудников честно сказать я даже не знаю То есть там вот как нам просто Ну мы оформились намм дали сказали вот это ваш руководитель И вот он давал какие-то задачи просто вот СМСками Да делай то-то Тото То есть даже команды грубо говоря не было да Ну мы знали там руководителя с которым договор подписывали скорее какой-то тин подряд может быть може ме
00:08:23 - 00:09:36
поэтому я сказать точно не могу Угу Окей хорошо а есть информация сколько вообще откликов примерно отправлял сколько на об звали Вот такая вот статистика очень интересная Я её и сам анализировал как анализ рынка если брать 100 моих откликов мне приходит ответ Так я сказал же только удалённо мне было это Интере на 100 откликов мне приходит не больше шений из них вос требуют тестовые задания были тестовые задания такие что я вот просил вот этого синьора моего друга писать он говорит Нифига себе его
00:09:00 - 00:10:17
говорит делать тут Ну во-первых не совсем дновская либо его писать тут неделю можно Ну я с такими тоже встречался на самом деле ко мне приходили на менторство ребята которые просили помочь Им сделать тестовое и оно Ну действительно не такое тривиальное То есть я бы потратил на него Ну часов пять 56 а тот кто начинающий спокойно 2-3 дня может потратить на это причём вот одно тестовое было там чуть ли не реализовать шахматы на сокетах чтобы несколько пользователей участвовало всё это с фронтом ском с базой данных он когда это
00:09:39 - 00:10:52
посмотрел говорит не чувак даже не су туда Но когда я был дном и у меня было Ну слож было ме Компани при какой-то сделать игру Шарики какую-то такое ну я его даже не делал Я по-моему вообще никогда тестовое задание не делал если только помогал кому-то делать Вот как-то так повезло обошло меня стороной это ну вот я говорю из десяти компаний которые мне отклика на мою вакансию вот восемь требовалось тестовые задания Угу а вообще в целом потом если какие-то я делаю из них остаётся там две-три и там уже на собеседовании либо я
00:10:15 - 00:11:40
отваливаются Либо они выясняют что я в другой стране они могут работать только с теми кто проживает в России то есть вот этот фильтр вот эта воронка она сжалась сжалась сжалась причём не только уже от технических знаний А ещё какие-то бюрократические моменты Угу А какой часовой поезд у тебя плюс д псд а от Москвы плюс Д или от Москвы а всё понял окей хорошо а вот ты нашёл получается Первую работу да месяц проработал и потом как ты вообще на вторую работу нашёл Ну то есть мы даже можно так сказать что меня попросили потому что
00:11:00 - 00:12:20
поняли что поняли что я то ли не справляюсь объём маленький выполняю вот ну мы разошлись вот нашёл вторую работу также по собеседования там было Ну простенькое тестовое задание надо было написать но я думаю это много Где используется там типа магазин Продукты вот эту связь показать там по данных и выводить их Ну типа шоп продукт вот такое тестовое Ну простенькое и причём требовало только БК без фронта чисто там Сва Да в Сваг только вот Выведи им и всё Ну это хороше тестовая нельзя было поломать и вот у них чисто БК потом по
00:11:40 - 00:12:54
этому заданию меня на собеседовании только по этому заданию поспрашиваю чтобы понять что это точно я делал вот сказали если вот тут будет ошибка как-то так поступишь если тут будет как так поступишь вот и как бы взяли на испытательный срок на 3 месяца Ну и как обычно бывает наверное всех начинающих там на закидывают на баги там 6 чисто пи всё база данных пог работать одно удовольствие там мне каже Да мне кажется даже не то что начинающих в программирование а новых сотрудников закидывают на баги обычно потому
00:12:17 - 00:13:41
что Но вот он тоже в основном первое время баги чинил просто потому что во-первых их много а во-вторых так быстрее знакомишься с продуктом просто чтоб вкатиться не то что там кто-то там просто хуже А кто-то лучше а в том то что это продуктивно получается Ну да да вот Окей хорошо А сейчас что не устраивает кущей работе пока устраивает просто проверить свой уровень на каком я нахожусь именно в плане знаний вот а так устраивает всё и команда хорошая и технологии старых технологий вообще нету вот Единственное то что они его
00:12:58 - 00:14:32
переносили с net 31 на dnet 6 и переносили его так быстро потому что это продукт что где-то остались пятна которые нужно почиа Ну с 31 на не так страшно пережать реворка Ну они видимо вот как-то быстренько переехали Ну там мелочи на самом деле Ну вообще есть мигра которые перевозят там с 31 досто седьмого Возможно они даже этим митом перенесли а потом просто ручками поправили что там сломалось Может быть я не знаю точно хорошо Ой давайс у тебя спта из там стоит год ише а реального полгода Да реального полгода
00:13:45 - 00:15:31
Да Окей хорошо давай тогда начнём потихонечку переходить к резюме ой к собеседование Да я начну как обычно с таких банальных вопросов и потом уже Может быть чуть-чуть углубляться буду что Дамир Хотел бы уточнить по поводу ответов есть задашь вопрос мне коротко отвечать или насколько глубоко Я знаю смотри отвечай коротко а я буду если что дополнительные вопросы задавать всё понял вот Хорошо давай начнём тогда с типизации dnet Что такое вообще Какие типы бывают что это такое в принципе какая типизация в си шарпе Вот
00:14:38 - 00:16:06
давай этот вопрос я ещё не задавал строгая почему Ну что такое строго типизация Ну это что язык является компилируемый и мы на этапе компиляции должны знать какого типа будет должна быть наша переменная и мы не можем в неё помещать число или строку это связано с безопасностью Угу А знаешь что такое ай а знаю поверхностно но знаю что через Save и Fix можно изменять строки Ну вот через Тут же можно различные типы использовать Аля ипт и прочее Ну это уже выход по-моему за предел дот нета дада да Ну скорее там
00:15:22 - 00:17:06
когда с маршелин работаешь или чем-то таким приходится Да я я конечно не думаю что за полгода тебе получилось поработать с маршелин и не было не было Я чисто Нани Когда читал вопрос для себя как строки можно изменить в C шарпе А что значит изменить строку когда ну ну например Мы создали строку и пытаемся любым методом который работает со строкой например А ну или ладно просто развернуть строку в цикле Да например если мы попробуем это сделать Просто у нас компилятор ругается потому что мы не можем изменить строку в рамках C Шарпа А
00:16:15 - 00:17:37
ты имеешь в виду когда мы пытаемся сделать из стринга массив чаров мы не можем исправить этот массив чаров или что да Дада вот это там создание скажем чарак Темп Ну временный куда мы будем помещать потом менять местами последний с первым и у нас компилятор ругается но если мы это Напишем через как раз там есть такая лазейка А почему мы строку не можем менять Ну это вот тоже Сделано во-первых для безопасности во-вторых для оптимизации То есть у нас же есть пул интернированы строк где Куда записываются литералы Угу
00:16:57 - 00:18:18
Вот и с целями оптимизации мы можем создать когда мы создали скажем строку через Литерал у нас она заносится в этот пул и в дальнейшем если мы создадим переменную в рамках приложения работы приложения то он не будет выделять память а просто возьмёт с Пула Да это я понимаю но мне кажется скорее наоборот добавили полу интернированы строк благодаря тому что тип иммутабельность [музыка] [музыка] [музыка] иммутабельность компилятор уже на этапе объявления будет знать сколько ему нужно памяти выделить
00:17:40 - 00:19:03
Нет неправда он будет на этапе ранта инициализации он в ран тайме только узнает сколько ему памяти нужно выделить да да ну не суть Я сам что-то не понял к чему это говорю ну О'кей вот строки Это хорошо А давай вот а ну давай вернёмся к типам строки - Это какой значимый или ссылочный тип Это ссылочный тип но с некоторыми оговорками какими Ну первый это Мы уже обсудили это иммутабельность второе у него ирование мы обсудили Да у него переодел внутри он сравнивает по значению Вот ты по-моему третий или
00:18:56 - 00:20:26
четвёртый мне примерно одинаково отвечает да Вот у него equ да когда мы сравниваем оператором равно равно разве переопределить на это в си шарпе равно равно будет сравнивать тоже по значению строки почему это вот особенность такая не совсем там нет никакой магии там [музыка] Не потому что он ссылается насто как бы запомнил для себя да А так ради прикола А вот когда ты говоришь то что он сравнивает по значению Что это значит Ну вот как он сравнивает именно я понимаю что по содержимому А что именно он
00:19:42 - 00:21:14
делает Ну вот ты сравнил две строки вот если одна ра H ра H у нас если мы будем сравнивать эти две строки у нас True вернёт это понятно А как бы ты сравнил эти две строки Вот у тебя есть задача Да у тебя есть объект например да и там пять переменных Ну вот класс ты создал и в нём пять переменных Да и тебе в одной там написано Ну и каждой переменная типа Чар например да понимаешь и в каждой по одной буков записано тебе нужно сравнить объекты типа объект а равно рано объект B но тебе надо не ссылки сравнивать а
00:20:47 - 00:22:13
значение как бы ты поступил [музыка] переопределить это свойствами класса Да наверно с это есть свойство Да вот Сложи эти свойства обычно конкатенации и Сравни с тем объектом который там тебе придёт иже он работает он сравнивает он параметры принимает и Сравни его с тем что тебе придёт А то есть разу строку и сравнишь Ну да Окей хорошо А если два разных размера строки он будет проверять содержимое или нет сравнивать содержимое Если два разных размера Да например одна переменная а вторая их строки Будет ли он сравнивать
00:21:31 - 00:23:04
содержимое именно я понял к чему вопрос то Есть возможно стоит ли первичном сравнение просто по длине чтобы не сравнивать вообще в принципе символ типа того да слишком такой интересно я не знаю на него ответ но смею предположить что было бы оптимально сни сну если не надо то вообще не иди Даше лю упросить алгоритм сравнения да конечно Ну просто это самое банальное что можно сделать для оптимизации Ну да логично поэтому как бы разработчики си Шарпа додумались это сделать к счастью понял Понял Вот потому что было бы
00:22:30 - 00:23:51
прикольно если бы строки две одинаковые Да они там по 1.000 символов У первой 1000 а во второй 1 О И ты пошли 1000 итерации 000 итераций сравнил они одинаковые а у ВТО у второго ещё ты первый символ они Ока ны дадада вот Окей хорошо вот мы поговорили про ссылочные типы Давай немножко про значимые типы поговорим что это [музыка] такое значимые типы - это те которые содержат в себе не ссылку на участок памяти в куча а непосредственно само [музыка] значение Вот но сказать что они хранятся в стеке тоже не будет совсем верным
00:23:14 - 00:24:42
скорее там где они определяются То есть если это локальная переменная метода она Да она будет храниться в стеке Если же это часть класса то она будет лежать в куче а ссылочные ти Где хранятся ссылочные типы хранятся в куче если мы не начнём баловаться там массив К сну приводить и что-то подобное массив к спа мощно Ну да там есть же вот этот оптимизатор работы со спам Спан это структура вот мы пытаемся объект с кучей затянуть на стек Угу А для чего это делают да Опять же вот с точки зрения наверное оптимизации потому что
00:23:57 - 00:25:33
структуру с одной стороны её проще передать Ну создать структуру там не будет выделено памяти и передать вме Да например ноли структура будет состоять скажем там из кучи примитивных полей то наступит момент когда вот это копирование в метод оно будет тоже дорогостоящее Угу О'кей хорошо Мы немножко поговорили про стек кучу Я не вижу смысла глубже идти по Рихтер Давай немножко пойдём лучше по вот мне понравилось ссылочные типы значимые тип вот поговорим проу что это такое реф то есть мы можем указать реф к параметру который передаём
00:24:45 - 00:26:21
в метод и соответственно если реф указывается перед значимым типом Мы работаем так же как как будто мы бы его передавали по ссылке если мы изменим значение внутри метода с этим правильно сказать модификатор или модификатор Да ключевое слово я буду называть ключевым словом рев то она изменится и снаружи Вот как а если рев мы используем с ссылочными типами то тут нужно быть аккуратным потому что мы как бы работаем по ссылке со ссылочный типом Да и мы можем внутри метода если мы присвоили вдруг нал то
00:25:40 - 00:27:02
этот нал присвоить и уне тоже Зачем вообще сделали фу для ссылочных типов Как ты думаешь очень хороший вопрос Причём я встречал его у нас иногда классы передавались Ну вам Понятно Потому что мы через модификатор можем в принципе инициализировать переменную вот у нас в основном используется то есть мы где-то перед мы просто как бы содам без выделения памяти без потом вызываем передам парам там внутри методы её обязан проинициализировать угу вот с рефом Ну у меня только в голове один сценарий потому что именно мы где-то
00:26:20 - 00:27:47
сможем за Ну нал присвоить потому что другие все действия они Возможно повлияют на ссылочный тип так же как и без этого ключевого слова Угу Ну О'кей А про боксинг анбоксинг что скажешь что это такое бокси а боксинг - это мы упаковываем То есть если как раз-таки а боксинг - это упаковка значимых типов например это может произойти когда мы структуру приведём к интерфейсу или любой примитивный тип приведём к типу object угу вот а распаковка - это обратный процесс Ну и то-то другое они достаточно Ну опять же сказать
00:27:07 - 00:28:36
трудоёмкая а что ты имеешь в виду под накладными расходами Ну то есть системе потребуются ресурсы для таких операций для преоб для бо да для боксинг анбоксинг Угу Ну ты имеешь в виду А локацию я так понимаю Ну да да отделение памяти О'кей хорошо А чем отличается вообще фут от боксинг анбоксинг Угу Ну Фу - это ключевые слова которые в основном мы используем именно с параметрами метод вот а Box Box unbox мы можем без этих ключевых слов Угу А хорошо а так что-то хотел спросить а ещё что-нибудь есть какая-нибудь
00:27:57 - 00:29:31
разница между ключевыми словами фу и боксом ан боксом Ну да не то что ключевыми словами между вот этими двумя способами как бы передать значение посылки между реф и аут Ну между рефт и боксинг как бы а ты подразумеваешь мы могли бы Например просто запаковать значимый тип до вызова метода передать уже упакованный его без использование рев Да какая в это разница Ну да затрудняюсь ответить Угу хорошо Тогда наводящий вопрос при футе выделяется память в кучу или нет Так ну если мы работаем вопрос наверно к значимым типом Если вот мы
00:28:53 - 00:30:27
работаем со значимым типом передаём по ссылке Мы в стеке записываем ссылку Я думаю что да то есть у нас при упаковка будет происходить не будет не Да в этом есть основная разница и боксинг аксин потому что боксинг он предполагает что мы выделяем память для значимой для переменной которая хранилась в стеке переносим его в кучу груб вот передали куда-нибудь метод и она уже как бы не в стеке а в куче находится А с фами это работат не так вот то есть он не становится ссылочный типом о не становится точнее
00:29:47 - 00:31:22
Ну это тоже може частично правильно он не становится не появляется в куче мы продам ссылку на него [музыка] да ческий сахар элементарный в том плане что мы его как бы передаём через фау он разворачивается возвращаемый параметр но я не уверен точно не помню Угу Вот такие дела хорошо А давай пойдём дальше Вот я на последнем собесе который ещё не вышел спрашивал такой элементарный вопрос который наверное все слышали Это разница абстрактных классов и интерфейсов какая разница наследоваться Мы можем
00:30:42 - 00:32:14
реализовывать интерфейс мы можем сколько угодно больше одного наследоваться от абстрактного класса только от одного это первое подожди подожди подожди у тебя есть класс Да не абстрактный просто класс А ты можешь указать два интерфейса имее Виты можеть два интерфейса но не можешь указать два абстракт класса правильно то есть множест оно к абстрактным классам можем только от одного абстрактного класса наследоваться а реализовывать интерфейс можем больше одного Окей хорошо ещё что-то второе - это наличие приватных методов внутри
00:31:32 - 00:32:53
абстрактного класса в интерфейсе все методы должны быть публичные неплохо ещё самый частый банальный ответ по поводу реализации си шар закатили в интерфейсе Так что это уже не прокатит как ответ Угу Так и ещё это то что в абстрактном классе могут быть поля Угу неплохо ну и соответственно делегаты да делегаты Хорошо давай по-другому вопрос задам А так у нас есть да са а ну дополню что ещё на концептуальном как бы уровня между ними Есть разница что интерфейс он просто как бы говорит о том что тот кто его
00:32:12 - 00:33:51
реализует может делать такие-то действия при этом Например если мы говорим греть то греть может и батарея греть может и солнце Между ними ничего общего нет но они могут Грез А абстрактный класс это скажем такой Класс вот ты унаследует ты какв его производ есть знаешь я вот то же самое на последнем интервью объяснял человеку который ещё не вышло ну и в этом заключался вопрос который я не задал Окей А хорошо я на него ответил да да а так всё очень интересно и просто давай к делегата перейдём что это такое вообще
00:33:04 - 00:34:22
зачем они нужны ну это переменная которая позволяет хранить себе ссылку на метод нужен он для для того чтобы мы могли ну я с событиями мало работал я опять же их изучал больше чисто теоретически Да но я знаю что на основе делегатов создаются события вот а с делегатами их удобно передавать как параметр метода то есть на этом всё линки устроится то есть мы просто закидываем туда анонимный метод и работаем с ним я не очень понял что значит на основе делегатов реализованы события Ну не столько наве не совсем
00:33:45 - 00:35:07
правильно а события в себе базируются на делегата То есть ты хочешь сказать что ивенты под капотом это делегаты или я неправильно понимаю Тут я наверно не смогу точно ответить потому что я с ивента на работе ниде не связывался Но вот Нако просто теорию у а они работают Как делегаты только они безопасны много поточной среде Ну это да да это да А вот но по сути это какое-то событие То есть у меня был момент это вот когда там Button Click вот этот там Sender object и это события по нажатию на кнопку
00:34:26 - 00:35:56
обработчика то есть по сути Как как делегат но в то же время немножко другая структура Ну подробно не смогу больше объяснить О'кей знаешь что такое мультикас делегат нет А может быть это тот которому мы же можем добавлять через оператор плюс плюс равно дополнительные методы Угу Вот и когда мы на добавляли несколько методов получается вот такой делегат это предположение хорошо а вот Т - это некий такой базовый базовый тип если можно так сказать вот на основе него есть ещ конкретные делегаты так сказать если их можно так
00:35:19 - 00:36:48
[музыка] назвать Окей с что-нибудь про предикаты Ну я хотел е назвать Но это булевый да булевый фанго Можно но в тоже врем то же самый фанк который с левым значением работает Угу Вот мы потихоньку переходим к вот этим вот всяким предикатом фанкам Да агу я так понимаю у тебя есть опыт работы с ефом да слышал что такое экспрешены Да это если мы говорим о iqu не совсем Мы скорее говорим про тип Expression в нём может быть всё что угодно в том числе предикат Угу Так а немножко этот вопрос не совсем
00:36:06 - 00:37:59
понял тогда давай по-другому А знаешь что такое деревье выражений Да как раз-таки Вот почему я спросил про то что он работает в себе когда мы там указываем он строит дерево выражение Вот это ну по сути Expression никак не связан с скорее Да он на НМ на нём работает Угу Да А знаешь для чего ещё используются экспрешены Вот пока только встречал Ну вообще по-моему в осах Давай давай по-другому вот у нас есть Expression что это такое Что он делает Для чего е Ну давай вот что что это такое вообще Expression что он из себя
00:37:11 - 00:38:42
представляет Так ну это по-моему дженериков класс Ну дженерики у него есть Да Ну то есть мы указываем Expression потом в треугольных на скобках Н И там дальше уже вот но развернуть не смогу сейчас конкретно про него угу ну Давай немножко подскажу при помощи экспрешн Ну вот мы начали с чего с деревьев выражений Да expr - это выражение при помощи вот этих вот выражений строятся деревья в том числе при помощи экспрешены свои там различные операции вот те же самые наши фильтры Да вот мы можем использовать мы можем
00:38:02 - 00:39:33
писать лямбды Сами А можем их создавать в ран тайме при помощи экспрес Угу дела когда-нибудь такое Нет Нет в основном только вот через лямбду Угу Окей хорошо Так давай тогда про I что это такое как он в работает а он начну наверное с того что если мы применяем методы расширение К объекту dbs то по умолчанию его возвращаем типом будет Вот как он работает то есть там есть провайдер который будет обращаться к конкретной базе как раз таки для разных баз данных Вот это Наследник поэтому Ино Можно когда
00:38:51 - 00:40:57
мы какой-то конкретный пример мы выгружаем какую-то сущность из базы и зачастую пишем War какая-то переменная равно и пошли там что-то из базы там какая-то небольшая фильтрация и если не посмотреть на тип там можно либо лист вызвать и в итоге это будет под капотом будет и мы вытянем всё из базы данных вот а на основе мы можем как бы работать вот с этим quy и применять к нему различные А вот эти методы расширений которые работают и с они работают с ible на по одному через tion а чере с ible они работают именно через
00:39:55 - 00:41:33
лямбды и вот мы можем как бы нанизывать вот эти условия а в конце когда нам нужно когда мы поняли что уже там объект будет не совсем большой мы приводим это к enumerable и там либо to list to через получа То есть это некий интерфейс позволяет нам отсрочить выполнение чего-либо правильно Да но это если вот именно в контексте нук базе А где ещё у нас I используется вот он используется там но отсроченное просто оно ведь есть е по-моему в контексте Даже если мы работаем с мы используем методы расширения
00:40:44 - 00:42:01
которые работают с те же самые там Select но не будем вызывать агрегированные функции либо у нас тоже будет отложено всё это разница получается только в контексте того где выполняются действия Да фильтрация будет работать ОМТ уже готовый то есть вот мы создаём создаём вот написали War quy какой-то запрос потом к этому кри применили ещё фильтрацию потом к этому кри ещё фильтрацию И вот потом уже в конце он соберёт всё это в Единый запрос выполнит его в базе данных и вернёт нам готовый результат Угу отлично
00:41:31 - 00:42:59
А джоны как работает джоны сейчас мы говорим про ecore или про SQL вот недавно я столкнулся в что не так уж и просто оказалось написать там через [музыка] груть потому что обычный который там принимает параметры вот этот делает анонимный объект на выходе он работает [музыка] как SQL Ты просто пишешь Le Join или просто Join А тут приходится немножко изори Угу О'кей хорошо да а приходилось оптимизировать запросы А был момент да который мы сейчас тоже про екор Да да мы в рамках ев кора Пока да там вот как раз-таки с АК была работа
00:42:17 - 00:44:17
и было обращение ко многим таблицам скажем так через дны через где-то даже через include и Я вызывал там я не помню как метод называется по-моему Мет расширение там можно SQL или From SQL он тебе сгенерирует стригой код который ты можешь выполнить БД навесить на него по-моему там есть метод который Как профилировщик работает и посмотреть как вообще твой запрос выполняется использует ли он индексы Вот и в соответствие с этого посмотреть где узкое место и как его можно оптимизировать А вообще приходилось
00:43:23 - 00:44:39
делать такое что у тебя например есть таблица и к ней много Джов как ты оптимизировать эту ситуацию много Джов к одной таблице Да тебе нужно изб достать сущность но при этом к ней приони много других сущностей и соответственно изго будет огромен запрос и Ну просто они тамкар будут подгружать всё это что уже не требуется а по-моему он работает по [музыка] умному то есть о е Ну то есть если он какую-то связанную сущность уже до этого загрузил он её повторно не будет тратить ресурс на её [музыка] загрузку ты имее в виду Закан сущности
00:44:02 - 00:45:32
будет подставлять из говоря кэша М не могу ответить как это точно реализовано О'кей давай по-другому вопрос задам слышал что-нибудь про метод а spit quy нет Угу Это такой метод который разделяет твой запрос на несколько маленьких запросов грубо говоря тем самым ему тебе не приходится Джой неть то что не нужно лишнее короче угу он твои джойн за Сплит на разные запросы и вернёт результат в один например смотри какая ситуация у тебя например 1000 сущностей ты хочешь достать из базы Да и к ней там не знаю 10 джоно
00:44:54 - 00:46:15
справочников Да эти справочники там по пять значений например да но из-за того что у тебя Тысяча записей тебе приходится в эту таблицу ходить 1.000 раз Угу при джоне вот а так ты один раз е загрузил и потом уже подставляешь из неё Если ты будешь использовать там есть свои нюансы конечно которые я уже не скажу сейчас то есть в некоторых ситуациях это те ного может выстрелить Но как правило это помогает в случаях если нужно кучу идов сделать о пово индексов в бае Ну редко очень редко B3 индекс был То есть как раз тоже Какая база
00:45:38 - 00:47:37
давай начнём с того какая база пог Ага в основном с пос работал да ну приходилось сталкиваться с M SQL Угу Но большую часть на с пос Окей приходилось как-то тюнинговать пос что-нибудь такое смотря что имеется в виду ну количество подключений только вот один раз пришлось изменить чтобы не падало А что бывает когда количество подключения не хватает ну он там вот ошибку кидал и мы и не могли подключиться А вы разбирались почему так произошло вообще что у вас забиты все коннекты ну потому что база была на
00:46:38 - 00:48:01
одном пользователе Я имею в виду вот смотри например у тебя 100 коннекшн Да выделено Угу А у тебя как должно выполняться всё это дело запрос выполнен коннекшн закрылся но он там по-моему есть пул тоже [музыка] о то есть конек Я я знаю что некий пул есть в в питоне в Джанг по-моему он резервирует коннекшн под себя у вас мнете нету Ну я не встречал Возможно есть я не замечал такого что он резервирует Кокше под себя вот бывали кейсы когда у тебя например какой-то долгий запрос выполняется очень долгий и из-за того что он долго
00:47:22 - 00:48:59
выполнялся открывались новые новые новые новые коннекшн и у тебя пол забивался коннекшн такие ситуации нередко было шено по-моему по другой причине что реально количество обращений превысило то есть не заного запроса который долги количество пользователей вку в единицу времени скажем всё понял Понял хорошо окей давай по чуть-чуть перейдём к самому Ату именно не к фреймворк 5 давам ь что это такое Угу Ну это как скажем конвейер У нас есть запрос поступающий и мы его обрабатываем скажем у нас есть некие
00:48:14 - 00:50:04
уровни Или как это правильно назвать то есть нас запрос проходит назову это абстрактно комнат обработки и этих комнат может быть несколько И вот он когда чере эти ком и Когда возвращается обратно он проходит также через них в обратном порядке и получается такой конвейер обработки запроса и соответственно у нас может быть там аутентификация авторизация и плюс мы можем даже какие-то свои написать А тебе приходилось писать свои да то есть мы вешали Я как раз занимался профилировщик время на запрос
00:49:13 - 00:50:40
смотреть Ну и вот вст то есть там он строится на основе по-моему СТ делегат получает htp контекст как параметр То есть ты выполняешь какие-то действия и затем если в конве чтото нуты вызываешь метод То есть ты указываешь Это следующий и вызываешь если корот азна Ну и са глобальная обработка исключения я забыл А знаешь что такое экшн фильтры слышал но не сталкивался Ой а как можно не используя делегаты выполнить какое-то ой делегаты говорю видо авари выполнить какое-то действие перед обработкой самого запроса
00:50:05 - 00:51:48
и после обработки самого запроса там есть ивенты такие если их можно так назвать [музыка] не этот вопрос задали единожды на собе это было в девятнадцатом году по-моему я вот думаю это то есть нужно ли под это писать отдельный класс или же это можно в программе всё написать это можно реализовать интерфейс по-моему а то есть оже предоставляет там есть него пому пом изменилось это в седьмом там может быть что-то поменялось я сам это никогда не использовал вот просто спросили Поня Ну я вот не сталкивался
00:51:10 - 00:52:41
Окей хорошо таква окей Так давай по поводу что это такое вте какой там используется как правило Какие сам знае использовал контейнеры давам с концепции а потом к частным случая Ну концепция основная такая что в Есть несколько вариантов внедрения зависимости то есть мы можем внедрять через конструктор что в основном используется через метод и через свойства Мы остановимся на конструкторе то есть у нас какой-то класс может зависеть от скажем так другого класса [музыка] ти можем в принципе конечно написать
00:52:08 - 00:53:46
внутри класса через New вызвать там Создать экземпляр класса Вот Но лучше всего использовать как раз-таки вот этот Di контейнер во-первых мы абстрагируйся от конкретной реализации работаем на интерфейсе что потом у просит тестирование и в принципе ну гибче а во-вторых [музыка] то есть нам не если нам не придётся то есть проще в использовании то есть мы просто пишем в в конструкторе в параметрах мы пишем тип обычно это виде интерфейса и переменную и Di контейнер нам это выдаёт Потому что если например у нас если мы
00:52:57 - 00:54:35
не будем его использовать Конечно можно это сделать это мы будем Например у нас есть какой-то сервис Он зависит от репозитория репозиторий зависит от контекста и вот мы будем всё это и потом это обслуживать будет тяжело может быть это работает сколько-то быстрее нуно минусов Я думаю больше чем плюсов А знаешь что такое связанность и связанность Ну вот как раз таки если мы используем работаем на интерфейсах мы уменьшаем связанность вот то есть мы должны стремиться к низкой связанности и высокой То есть связанность - это чтобы наш
00:53:47 - 00:55:12
модуль внутри себя был самодостаточен А связанность - это как раз-таки отношени между между модулями под модулями Я подразумеваю как раз таки вот класс когда один класс зависит от другого это вот связанность и когда мы работаем через интерфейсы мы уменьшаем её Ну вот связанность ну Каплин Ох или как он там читается я не помню Да да Low по дадада Окей хорошо Пока ВС отлично Слушай давай тогда я те даже поту не буду мучить там по всяким стам и прочее сработал там см вот этими всякими технологиями
00:54:28 - 00:55:55
брокерами кэми и так далее можеть [музыка] пользу и соответственно большая часть часто запрашиваемых элементов у нас хранится в кэше ну у нас есть реализация через словарь а то есть вы используете сделали реализацию какой-то Да и через него обращайтесь Да мы там расширили методы то есть какс обв кот запрос с клиента Мы лезем в кэш если в к нет лезем в получаем записываем в кэш возвращаем Если же мы что-то сохраняем мы или обновляем Да намер мы запишем ВД обновим кэш То есть он работает так когда нужно получить лезем
00:55:11 - 00:57:07
в кэш не нашл иди в ба наступил Угу работая с редисом потому что база данных она одна на всех а кэш он у меня локально мой а на проде он другой А база одна и поэтому иногда я как раз сталкивался с тем что вроде ожидаю у меня-то в кэше обновилось А пытаюсь через прод например запустить там кэш не обновился аш сервера раз да то есть там на машине он ну он же в оперативке он свой он distributed кэш Ну распределённый то есть отдельно находится как и база ну имеется в виду что у меня локально свой кэш там свой да
00:56:17 - 00:57:47
Угу Ну это проблема решается тем что подключаешься не к локальной а к а там наверное он закрыт Да наружу не торчит ре А ну так как у меня вся работа с сладкой на локальном компьютере то Ну это я уже привык плюс у нас есть скажем так некоторые эндпоинты которые позволяют не всю не весь кэш грохнуть а нужные сущности то можно через это пишка быстро обновить там нужную и получить то что нужно Он погрузит с базы уже то что я локально изменил в базе в своём кэше вызвал либо это либо там ещё какими-то
00:57:11 - 00:58:26
методами обновил кэш уже там А почему используете R для этих целей а не in Memory Cash Ну насколько я знаю в целом in Memory он по-моему тут тут я сказать почему выбор У руководства и компании встал на него я не могу сказать но подразумевает что emory он же работает в рамках работы то есть выключили приложение всё всё ушло АС Он позволяет хранить то есть этоже базе данных просто я я я к чему говорю потому что то что ты описал кэш используется для Как назвать level кэш что ли Это называется или как ну типа когда у тебя есть запрос
00:57:49 - 00:59:11
в БД А если он выполнялся не так давно то мы возвращаем результат правильно я тебя понимаю результат из кэша если он есть в кэше если его нет в кэше то мы лезим в базу и записываем в кэш и возвращаем результат там даже вот этих временных нету то есть то есть всё равно влезем в кэш то есть есть скажем так сущности которым в принципе со стороны клиента идёт частое обращение Угу А как боретесь с проблемами с некон систентки и БД Ну я имею в виду то что данные в БД и в кэше отличаются обязательно после того как
00:58:36 - 01:00:10
например мы сохраняем или изменяем То есть если говорить языком secs да то есть когда Мы выполняем команды то мы обязательно обновляем кэш А вы как кэш обнов вы сущность обновляется или как либо там есть то есть у нас есть метод обновления есть метод вообще то есть в принципе это можно сделать через Remove То есть ты просто удалишь записи потом когда клиент запросит он по этому ключу он ничего не получит поэто полезет в базу либо есть этот там называется который именно обновляет то есть мы вот эту сущность которую
00:59:24 - 01:00:36
сохранили если SA changes всё успешно там без ошибок то помещаем его в кэш А это на ответственность разработчика или это как-то автоматизировано и связано см это всё в коде То есть вы ручками всегда вызываете обновление кэша Да да да Окей хорошо давай тогда перейдём к брокерам С какими брокерами приходилось работать сообщений а rit MQ но очень мало Угу То есть как такового опыта у меня по нему Нет ну если про роутинг начнут спрашивать не ответишь я так понимаю думаю что нет Ну а вообще какие базовые сущности
01:00:00 - 01:01:23
ребит сможешь ответить ты знаешь мм Нет наверное Я по нему мало что смогу я имею в виду Чейн кхи Q имеется в виду очередь Да у нас он скажем так просто настроен и мы просто вот если нужно какую-то команду То есть у нас скажем так приложение-то монолитное в целом но есть какие-то фоновые процессы которые желательно выполнять не сейчас а когда отложено чуть-чуть мы как бы вызываем Вот как раз-таки вот через Q помещаем скажем эту команду то есть сначала формируем команду с данными потом через Q помещаем её именно
01:00:47 - 01:02:16
вот в rit MQ и он там Спустя какое-то время обычно сразу же потому что там очередь редко когда заполняется сразу ну её выполняет То есть у нас скажем так вся реализация написана Остаётся только воспользоваться готовым поэтому я под капот его не лазил Угу Ну и не приходилось настраивать Да именном О'кей так а фоновые джобы получается вот если вам нужно рекуррентную задачу запланировать что используете или у вас нет рекуррентных задачи Не совсем понимаю что это например раз в 3 часа нужно что-то сделать У нас нет
01:01:35 - 01:02:58
таких Угу то есть мы просто фон - это у нас такое что не затрачивая ресурс сейчас она не так горит отпра е в очередь он когда-то выполнил скажем так у нас а вообще работал с этими вот рекуррентными задачами что использовал может сам реализовал Нет нет не [музыка] работал есть у нас Я [музыка] спрашиваю Ну если конкретный пример привести но опять же у нас все классы для работы с ним скажем так уже настроены и ну на них Видимо какие-то обвязки да уже Ну да то есть обернули сказали вот заполни поля этого
01:02:16 - 01:03:42
класса и отдай Вот я как бы формирую данные то есть одна из задач например Это генерация превью для какого-то документа и вот он ты помещает загрузил файл отдаёшь фаеру он там уже через команду когда-то выполнит обратится к сервису который либо там ри офис или ещё какой-то создаст сгенерирует превью и сам поместить всё куда надо Угу Понял хорошо вообще с точки зрения архитектуры как себя оцениваешь приходилось какие-то сервисы на работе проектировать с нуля там или какие-то крупные задачки решения
01:03:08 - 01:04:34
искать Ну вот приходилось делать Ну скажем так у нас были некоторые моменты которые решались прямо в контроллерах и приходилось выделить например сервис для работы с какой-то областью Я просто не буду конкретику приводить понятно понятно вот и скажем нужно было выделить класс сервиса куда контроллер отдаёт данные и тут уже внутри себя работает там с базой данных ещ то есть вся бизнес логика выпиливать с контроллера в сервис А ну это некий этап рефакторинга Ну дадада Угу то есть ну и в целом сам изучаю этот вопрос именно
01:03:53 - 01:05:23
вот чисто архитектуры как это всё устроено Угу но пока так сказать крупных именно не то что бизнесов Ну да скорее всего бизнесов каких-то крупных задач не приходилось решать то есть какие-то крупные проблемы продукта там или крупное расширение какой-то функционал крупный там не знаю отдельный сервис проектировать решать проблему эту Ну скажем так вот э у нас есть модули у продукта и пришлось сделать дополнительный модуль и просто я на огляд то как реализованы соседние модули пишу контроллер с ротами потом
01:04:37 - 01:06:09
У нас есть просто один такой скажем огромный Суперкласс который в себе там и кэши и всё хранит Вот его получаю его потом создаю сервис для работы этого модуля и там внутри всё как я уже рассказывал обращаюсь к контексту или там ещё к чему-то кшу Вот но что-то то есть это этот модуль просто новый модуль внутри системы но он работает я его смотря на соседние модули проектировал это Угу Да я понял О'кей хорошо а с микросервисной архитектура приходилось работать м нет то то есть и обе работы были монолитными
01:05:25 - 01:06:42
и сами проекты писали тоже монолитные на блейзеры которые Угу а аутентификация Как у вас там происходит при помощи каких инструментов там своя может какая-нибудь самописная или что-то ещё так ну у нас по-моему [музыка] используется Угу домен да Угу Вот и также как продукт блин не хочется говорить конкретные вещи специфику да дадада Ну скажем так есть по телефонному номеру где эсэмэска придёт если это Это как основная или как двухфакторка И как основная в том числе и плюс компаниям которые продукт
01:06:04 - 01:07:42
поставляем у них есть скажем свой актив Direct погрузка через да да то есть чтобы они через используя учётные данные своего продукта могли заходить в наш то есть мы как сквозняком так работаем а вас ваш продукт мульти Нант получается да термин незнаком но [музыка] нус Компани но через ваши сервера Да и друг с другом они никак не этот не взаимодействуют не конфликтуют вот кажд эта компания это тенант своих юзеров Там и так далее Всё хорошо я понял так так так так в принципе Давай наверно заканчивать меня прямо таковых
01:06:51 - 01:08:30
вопросов Давай подытожим чувствуется что есть понимание того что ты говоришь я бы не сказал что видно что у тебя мало опыта прямо действительно Да а понятное дело если сейчас начинать разбирать там какие-то кейсы проблемы Ну то есть если я у меня просто на работе есть одна архитектурная Задачка Да ну которую мы сеньора даём вот понятное дело если Скорее всего я предполагаю если я тебе её дам у тебя будут трудности она ээ если абстрактно она предполагает что тебе нужно спроектировать сервис который будет
01:07:49 - 01:09:06
принимать огромное количество транзакций и нужно там распределять эти транзакции грамотно чтобы там были определённые условия выполнялись короче Задачка на самом деле не очень сложная но во-первых она долгая поэтому я не даю никому во-вторых не хочется еть поэтому принципе по тери так-то всё ой по ту немножко поработай потий посмотри что такое на есть прекрасные там три статьи по-моему по ту они Элементарные Что такое Т там что такое там у тебя как он из там короче Почитай Вот про это как ми не считал это нужным просто потому что
01:08:29 - 01:10:11
как будто бы у тебя они есть по моему ощущению вот в принципе я не вижу таких прям нюансов с точки зрения теоретических знаний которые не позволяют тебе там ну тоже там п midle минус иметь да единственное в чём проблема и сложность этого всего в том то что как правило пми там Сень какой-то Там и так далее Это скорее опыт про то Какие задачи тебе приходилось решать то есть проблема Почему я про это и спрашиваю про крупные сервисы решение масштабных задач и так далее Потому что если тебе придёт большая задача у тебя
01:09:26 - 01:10:55
скорее всего будет проблема как к ней подойти вот согласен да то есть как не по сни что было тея был какой-то сервис который ты делал Да по сметам каким-то да вот ты его каким-то образом спроектировал Старайся побольше Вот если у тебя спрашивают такое Да и ты знаешь что ты на работе ничего такого не делал ты Говори типа вот у меня есть я делал пед проекты я вот там тем-то Занимался раньше и мне в кастек зате сделать вот такой вот проек смету Каю что говорил вот а говорит что вот я тут тут то сделал тут это спроектировал
01:10:10 - 01:11:42
потому-то Потому и так сразу тебе больше Доверие будет типа человек понимает что он говорит и действительно сам это всё сделал значит у него Опыт есть хоть и не коммерческий угу вот ну и сам старайся на текущей работе Если тебе нравится продукт Старайся м быть более амбициозным то есть думать что можно улучшить даже если что-то может глобальное накидывать возможно тебе дадут эти задачи Ну тогда у тебя будет опыт решения каких-то новых сервисов новых проблем Вот и вот при помощи вот этих вот решения проблем Я считаю что и
01:10:59 - 01:12:16
набирается основной опыт То есть то что ты выучил теорию это всё прекрасно я видел столько сеньоров которые теорию плохо знают но как специалист Я не уверен что они плохие вот Тоже самое я видел джинов которые очень хорошо знают но код пишут очень плохо Вот поэтому А вообще как бы помимо опыта который тоже не так просто проверить То есть ты можешь написать например что ты работал год какой-то компании да На самом деле ты там работал 2 месяца написать какие-то технологии которые ты знаешь и как бы
01:11:41 - 01:12:54
это прокатит Да но если углубляться вот если сес творе по что Нано скидывал Я просто хочу посмотреть какие технологии там указаны я бы просто как делал вот мне пришло Я смотрю да последнее время я бы начал спрашивать А я и так спросил Вот про например тот же приходилось работать снами Что делал Ну вот такие вот вещи спрашивал бы а вот Кинул да строительны да там да [музыка] да А тут всё хитро тут нет никаких деталей Ну вообще на собеседовании спрашивают типа чем ты занимался такой-то компанией например
01:12:17 - 01:14:01
могу спросить да спрашиваю Какие задачи выполнял С какими трудностями сталкивался ты это всё уже проработал Слушай на самом деле полгода назад когда Уменя не было реального опыта я говорил такие вещи и оглядываясь на них сейчас я понимаю что блин я такую чушь НС а тест приходилось писать да Но в основном то есть вот новые технологии на я не [музыка] писал да Там же разница не такая большая А в качестве что ипо так как у меня были репозитории то внутри скажем так Ну это ты контекст Да свои ты те писал они знаешь как ну то
01:13:11 - 01:15:00
есть получается вроде как он Юнит [музыка] но это вот да то есть его нельзя назвать чисто юним потому что он несколько себе объединял Вот А простые юниты Ну В тестовых задачах было там Ну на банальные методы то есть метод принимает ты пишешь там Да вот эти условия ждёшь так [музыка] илито Ну вот например есть один метод в нём же часто вызываются другие методы Угу Ну если скажем без я я не писал Но смею предположить если там параметров нет то это не так сложно если с параметрами уже может стоить подумать
01:14:12 - 01:15:54
Да нет я всё веду к мока А как мокать эти методы смотрю какие зависимости наверное там не совсем есть библиотеки которые позволяют тебе мокать мокать объекты сами Ну то есть у теб рефлекси что ли Ну какой инструмент скорее всего Да я честно говоря под капотом не помню как это работает две библиотеки как минимум Я знаю это мо и [музыка] с это чуть больше чем просто моки Ну они в себе в том числе содержат моки вот ну FL Я так понимаю использовал да для ассетов или дефолтные юники использовал ассеты Юнит который там есть
01:15:07 - 01:16:55
вот по-моему [музыка] Окей хорошо Ну да В целом с точки зрения теории те всё хорошо подтянуть Я бы знаешь как поступил Я бы открыл твоё резюме посмотрел бы какие ты технологии там указал и отчи их ещё больше например тот же т где-то я видел на последнем месте по-моему Да посмотрел бы про него в остальном Ну со см всё хорошо с сипом тоже хорошо с знания Гита Да я не знаю Я использую А ну у нас вот всё Ну у вас то есть через C Да я имею в виду у нас репозиторий удалённый это понятно я имею в виду как
01:16:13 - 01:17:58
ты с ним работаешь команды илито нет ме вот а не слышал Да вот поэтому как-то так ну в принципе у меня как тако нечего подметить короче из недостатков основных Ну единственно Вот и так далее вот может сказать [музыка] просить влом наверно нет если вот просто немного по опыту который меня полгода был как чистон Да И вот ты спросил про тесты и я вспоминаю что в основном То есть как мы работаем через инсомнию ну можно любой там другой клиент и вот мы прежде чем отдать задачу на тестирование мы начинаем вот эти
01:17:16 - 01:19:04
дженки кидать сами сами отслеживать с Ну то что ты говоришь Это селк перед сдачей вот да да А я Ну я скорее всего в принципе про тестирование про автотест Ну да я понял Ну кстати вот у нас Можно мне написать автотест Да у нас тестировщики Их используют я я вручную чисто потому что не стоит такой задачи теб зада новая написать будет а они скорее всего регресс проводят при помощи цм то есть проверяют что ничего не сломалось вот а так Вопросов нет в принципе было вообще интересно узнать что есть какие-то всё равно белые пятна
01:18:15 - 01:19:48
которые надо также изучать Ну вот из основного это про тестирование Почитай там вот про Попробуй использовать порный Отт я других не слы вообще Почти никто не использует в основном все моки используют вот поэтому мо Это где Да да я видел её там в этом в нах Да Попробуй мо посмотреть что это такое Попробуй Ну посмотри что такое наха статья если напомнишь мне я тебе е скину Она легко лится там Иво Я сейчас тебе скину её Угу спасибо Вот А в принципе всё отлично если тебя устраивает текущее место то работай в
01:19:10 - 01:20:48
нём А так если хочешь расти в разных сферах и так далее больше опыта то Ну вот как я поступал я очень часто менял работу на первых порах когда я набрался уже там ну около сеньор сеньор ского опыта Я уже подольше начал задерживаться вот в предыдущей компании Я сколько там в районе двух лет Отработал и в этой где-то 2 с поно наверное уже отработал Ну и уходить никуда не собираюсь вот поэтому Угу Да поэтому как-то так то есть у меня был Ну было понимание того что чем больше компаний Я на старта Ну на старте сменю
01:20:03 - 01:21:26
тем больше опыта я смогу перенять от них вот поэтому когда я вижу резюме г там человека ю 12 лет суммарного опыта он проработал в двух компаниях в одной из них 10 То есть я примерно понимаю что чело Гия Да я примерно понимаю что у человека 12 лет опыта но по факту Скорее всего он не так хорош как тот же человек у которого 67 лет опыта но он работал в пяти компаниях там тоже надо какие компании что они делали обсуждать сшивать в той компании где он 10 лет работал был там не знаю аутсорс и он постоянно менял проекты Вот то есть ну
01:20:44 - 01:22:12
всякие ситуации бывают Просто я я считаю более продуктивным когда ты на старте меняешь работы а ну а потом как бы Когда ты уже достиг определённого уровня желаемого Вот и как желаемого уровня зарплаты там не знаю желаемого уровня позиции твоей ты уже и когда ты уже понимаешь что тебе сложно расти просто перейдя в другую компанию Вот например ты сейчас являешься там не знаю сеньором Да и тебе хочется стать либо тимлидом либо техдом к сожалению тех лидов и тем ледов как правило без опыта вообще не берут поэтому очень
01:21:29 - 01:22:51
сложно стать тимлидом со стороны Ну если только ты да Если ты только не какой-то именитый чувак на конференциях выступаешь но по каким-то причинам ты е сих поста хммм кажется исключительный случай как правило люди тем лидами тех лидами становятся в своих компаниях где они проработали там лет и потом уже переходит другую компанию тоже на тех Леда или тимлида Угу Вот потому что там уже просят типа там не знаю полгода минимум полгода опыта тем листва или тех листва и так далее вот если Всё нравится я бы оставался
01:22:09 - 01:23:26
наверно просто пытался х расти то есть пытаться брать больше ответственности пытаться решать более сложные задачи просить эти более сложные задачи если ты понимаешь что ты застрял в одном и том же моменте разговаривать просить договариваться как-то Ну то есть если ты видишь конечно Ну вот смотри как Если ты видишь какую-то необходимость или возможность вырасти своей позиции то есть повысить например ты там А у тебя есть какие-то грейды в компании есть какие-то м туваны или какие-то проверки твоих грейдов
01:22:48 - 01:24:15
повышение грейда вот их отсутствие как раз-таки поспособствовало что я к тебе обратился а вообще сколько разработчиков у вас работает именно программистов C А ну так как у нас на си шарпе только БК там по-моему фронт у нас ang Вот то три разработчика и один старший ведущий который там больше 10 лет уже тоже именно на этом проекте Угу И вот и по грейдам вы никак не поднимаетесь у вас нет какого-то ну двое ребят которые со мной работают они чуть больше года работают И как я понимаю он здесь такой
01:23:33 - 01:25:03
размазан и скорее всего ЗП зависит от опыта работы в этой компании то есть когда погружён в продукт хорошо его изучил вот Исходя из этого и уже вторично идёт то что ты в принципе наработал опыт как грейд и уже на основании этого идёт повышение То есть у тебя нет такого что ты например знаешь что ты сейчас вот выучишь такие такие-то технологии поработаешь с тем С тем ты и сможешь рассчитывать на повышение какое-то Да да я думаю нет такого Ну на самом деле такое бывает обычно в крупных компаниях каких-то вот небольших
01:24:17 - 01:25:36
компаниях такое редкость но и в небольших компаниях редкость что ты можешь вырасти сложно очень вырасти в маленьких компаниях когда там у тебя Вот например Моя ситуация Да у нас там ну у нас совсем маленькая компания компания Ну с точки зрения it разработки там насколько ну может быть человек разработчиков два тестировщика Ну и так далее вот а из дот нета вообще это я ещё один человек вот и соответственно у меня нет возможности вырасти выше чем типичный дефолтный Синьор там до Леда какого-то просто потому что не над кем
01:24:57 - 01:26:21
так сказать шефствовать Вот и скорее всего ты рано или поздно тоже точно также упрётся в потолок вот и тебе придётся думать как Как из этой ситуации выкарабкаться поэтому Ну да Даг Ну пока Об этом можно не думать Пока можно расти пока есть куда расти поэтому я думаю пока надо искать возможности как это сделать Ну скорее всего на твоём месте я бы к твоему То есть ты бы лучше схо к своему руководителю сказал бы типа вот мне очень хочется что-нибудь новое порть там смот какие у тебя отношения с ним вот
01:25:38 - 01:27:01
что-нибудь новое порть потрогать там есть какие-нибудь интересные задачки которые там было бы полезно сделать в том числе чтобы была интересна сама задача Ну то есть опыт новый получить Ну вот Одна из таких как раз-таки сейчас можно сказать что не я попросил А мне дали да это реализация поиска на портале Сфинкс эластик просто тексто SQL есть использу вот эти операторы табличку которая отдельно отвечает куда который там колонка скапливается себя огромную строку которая ассоциируется или содержат вот эти
01:26:20 - 01:27:46
поисковые запросы скажем так и вот с ней работа Ну да хороший опыт в принципе Окей давай тогда потихоньку закругляться Мы уже на полтора часа [музыка] наговорили всем пока-пока Да спасибо спасибо Дамир тебе тоже
01:27:04 - 01:27:45