Как пройти СОБЕСЕДОВАНИЕ на C# & .Net РАЗРАБОТЧИКА (3)
Вставка
- Опубліковано 13 чер 2024
- 🤚Привет! Вы на канале IT школы TeachMeSkills. И я ведущий рубрики НАТИВ Илья Рублевский.
🧐Это продолжение должно было состояться.
Наш наставник Паша Львов продолжит давать ответы на каверзные вопросы с собеседований по C# и .Net.
И да - напомню - мы теперь есть и в подкастах на Apple и Яндекс - нас можно не только смотреть, но и слушать.
Погнали к вопросам!
🎥Ролик 1 - • Как пройти СОБЕСЕДОВАН...
🎥Ролик 2 - • Как пройти СОБЕСЕДОВАН...
❗️Курс C#(.Net) разработчик (BY) - clck.ru/38zKmw
❗️Курс C#(.Net) разработчик (RU) - clck.ru/38zKsn
🧔Профайл Паши - / pavel-lvou-328139146
🧔Telegram Ильи (для ваших предложений по контенту) - @ilyarublevsky
Что еще будет в видео👇
0:00 - Интро
1:27 - Готов ли к собесу
1:42 - Ключевое слово yield
5:10 - Enum flags и их использование
10:53 - Разница между constant и readonly
13:43 - Задача
16:28 - Выбор между SQL и NoSQL БД
21:14 - В чем польза индексов
26:28 - Про работу с БД
28:48 - Про тесты и тестирование для разработчика
33:57 - Про покрытие “всего” тестами на проекте
37:24 - Должен ли каждый микросервис обладать своей БД
38:34 - Когда на проекте несколько микросервисов “стучатся” в 1 БД
41:10 - Про REST
43:38 - Про запрос - post, get - что еще?
45:45 - Какую проблему решает Docker
47:22 - Работа с локализацией
51:22 - Числительные и локализация
Круто, давайте такой же интервью с Пашей только по больше мидловых вопросов
Наткнулся на ролик случайно, поскольку готовлюсь сам к собеседованиям и собираюсь менять работу. Павел просто супер специалист, очень легко и понятно объясняет темы. Побольше бы таких видео на ютубе, возможно, тогда и .NET был бы популярнее :)
Как всегда супер! У Павла есть необыкновенный талант объяснять сложные вещи простым языком, при этом делать это так, будто бы он даёт тебе подсказку, или направление движения твоих мыслей и далее ты делаешь выводы сам. Спасибо!
Обожаю дот нет и с#, с удовольствием посмотрю это видео 😊
Круто 👍 ,Спасибо , очень приятно слушать!
Паша - супер. Очень приятно слушать. Спасибо!
Спасибо большое)
Мало, очень мало, надо больше :). Осветили лишь малую долю вопросов. Надеюсь на продолжение.
Вот же голод - шальная штука) сделаем)
Очень крутой! Скорее 4 часть!
Вижу Пашу ставлю лайк! Даже простые вещи объясняет как остросюжетный триллер))
Спасибо)
Классная серия роликов по C#, все смотрел, все полезные
Паша огонь, слушать интересно всегда. Илья, как ведущий, тоже. Не перебивает, не мешает повествованию. В общем и целом контент топчик вообще.
Спасибо большое! Очень приятно понимать, что делаем все не зря) спасибо
Кайф для мозга 🙃 очень внимательно слушал, чтобы не оторваться от цепочки, спасибо вам, как всегда у вас классно.
Спасибо большое!)
Индексы в базах данных основаны не на двоичном дереве, а на B-дереве. Его преимущество заключается в минимизации количества уровней в дереве. Переход между уровнями в B-дереве требует значительных ресурсов, поскольку данные хранятся на жестком диске. Учитывая, что жесткий диск имеет несколько уровней доступа, каждый переход между уровнями в дереве соответствует физическому перемещению данных на жестком диске. Это действие требует значительных ресурсов.
Спасибо. Поскольку уже несколько человек обратили на это внимание, видимо стоит в следующем видео уточнить эту информацию
@@JinOptimist копнул немного после комментария, можно ещё упомянуть про то, что метод индексирования может быть разным и указывается при создании индекса, например в pg sql могут быть такие: btree, hash, gist, spgist, gin и brin. По умолчанию подразумевается метод btree. Причем каждый метод имеет свои сильные и слабые стороны и предназначен для работы со своим типом данных и под свою ситуацию, не всегда идут btree
Ура, третья часть, наконец то
Четкий прогер слушать одно удовольствие
Ура, новое видео про шарп, бегу смотреть, кстати есть вопрос недавно человек управляющий одной it компанией в России, сказал что .Net разрабочики можно сказать сейчас уже не котируются и спрос на них падает, подскажите на сколько это правда и стоит ли менять в таком случае язык
Help 👉🏻👈🏻
Паше лайк не глядя очень харизматичный специалист 👍🏻
Про рынок России сложно сказать. Но от крупных компаний пока видим запрос и на обучение, и на спецов. Мб, все ситуативно
Спасибо за ваш труд, как всегда на высоте).
Не идеально конечно, но, хорошо получилось.
Вот вам идеи которые не разбирались в предыдущих видео и будут интересны вашим подписчикам)
соответствуют позиции juna в нынешних реалиях)
LINQ, кеширование, дерево выражений, Action filters, Виды загрузок (ленивая, явная, жадная),
разобрать виды синхронизации (autoresetevent, manualresetevent), middleware, нормализация бд,
работа с аутентификацией, затронуть (cookies, claims, httpClient, OAuth 2.0, OpenID)
Так же было бы интересно затронуть такие технологии как redis, RabbitMQ, SignalR
Большое спасибо за набор тем. Всегда рады такой рода пожеланиям. От них во многом и отталкиваемся.
И да, к идеалу мы только стремимся ))
Все круто и понятно, сделайте пожалуйста для уровня мидл , такой же цикл и з роликов
О, отлично. Пошел ставить чайник, зная что следующий час будет интересным)
Приятного аппетита )))
Что такое DI и IoC? Можно в следующей части этот вопрос задать
Отлично. Спасибо
И вам спасибо)
У вас на сайте в разделе "Наши преподаватели Курс «C# (.NET) разработчик»" Павел указан два раза.
Один раз как "Software Developer в EPAM 9+ лет опыта коммерческой разработки"
Второй раз как "HiQo Solutions в Tech Lead 10+ лет опыта коммерческой разработки"
Фотографии сделаны в разное время.
Спасибо, поправим! Ранее в Epam работал.
41:11 отсебятина, смысл rest не в том что restful api позволяет больше кешировать, а в том что для работы с ресурсами, предоставляемыми сервером, клиенту необходимо знать только идентификатор корневого ресурса, и дальше он сможет получить методы по работе с этим ресурсом и всеми "связанными" с ним из ответов сервиса, тем самым restful api позволяет писать клиенты, которые сами могут понять, каким образом "поменять аватарку в профиле юзера" не захардкоживая методы для "смены аватарки".
Вторая часть ответа должна была бы быть о том, что по итогу никто никогда не делает restful api - отдельная тема для дальнейшей дискуссии (почему так, и от чего все так носятся с этим рестом, на деле нифига ему не следуя).
вау! круто🎉
Абсолютно согласен на счёт тестов и когда большой опыт человек может debugger провести в голове и не надо тесты точно.
. Весь код работает хорошо если человек из с++ на с шарп вышел... потому что в с++ не чистит мусор автоматически...
Время идет ничего не меняется, начитался душных комментов будто опять на скульру заглянул
Отлично, это очень к месту, уже месяц прохожу собесы, опыт 5 лет, ни одного оффера на мидл, вот что значит собеседования, ни разу не проходил их как все, всегда устраивался по знакомствам (4 места сменил) и вот к чему это привело
да, проходить собеседования и работать это два разных навыка. Сам с этим сталкивался, пусть и в более мягкой форме, чем вы
чет сомнительный у тебя опыт) мидла на изи дают если две буквы алфавита связать можешь
@@Kondratyevv да не в опыте дело, каждая компания спрашивает какие-то глубокие вещи в которых если ты не разбирался - знать не будешь, на последнем собесе в крупном брокере спрашивали во что разворачивается асинк/эвейт на уровне il (подробный ответ про устройство конечного автомата колбеки и промисы не устроил), также например какие подводные камни при использовании финализатора (ответ про вызов финализатора в произвольный момент/работу критикал файналайзера не устроил, говорит есть ещё одна серьезная проблема с ним), еще пример - глубокое знание работы оконных функций в sql, работа с хранимыми процедурами, спрашивают как бы я настраивал репликации в кафке, а откуда мне знать про это, если я просто пишу микросервисы на орлеанс и закрываю бизнес проблемы этим? Или это по вашему должен знать каждый?
И да, примерно минут 40 мы там обсуждали только solid
upd. Отвечаю на свой вопрос - объекты с финализатором живут дольше, это является проблемой т.к они отправляются на очередь финализации, после финализации удаление происходит только на следующей сборке (в некоторых случаях сборка может осуществляться раз в пару дней!), также с .NET 5 и в последующих версиях при завершении программы деструкторы не вызываются, поэтому для принудительного вызова деструктора требуется вызвать GC.Collect.
@@4trvlжесть какая, и это на мидла? Там наверное челик сам недавно прочитавший эти вещи и теперь самоутверждающийся.
@@4trvlТак это стандартная практика некоторых работодателей, им сразу нужен сотрудник с релевантным опытом на их стеке и глубокими познаниями в используемых технологиях, с такими запросами только хантить у конкурентов, а не сгребать всех с hh, но они естественно так не делают т.к. на бабки жадные, вот и ищут минимум по полгода сотрудников.
И да , это не миддловские вопросы - почти всех их мне на выходе со стажировки ( ещё не junior даже) задавали . В целом тут почти всё спрашивают даже на заходе в стажировку в it-конторах Минска.
Время меняется, но вопросы могут совпадать, это нормально. А вот глубина ответов может отличаться)
Вопросы не зависят от грейда, у ЛЮБОГО работодателя простой запрос, должен знать как сеньор, а работать за зарплату джуна, а а "глубина" запроса зависит от срочности закрытия вакансии, жадности и наглости работодателя.
Кстати, Павел, на занятии вы рассказывали о том, что GC.Collect() будет работать достаточно условно, в формате "запусти сборку мусора как будет время)", но майкрософт говрит "Принудительно начинает сборку мусора.". Так все-таки сборка запустится принудительно и сразу?
Хотел бы отметить, что Павел просто прекрасно преподает. Такие сложные абстракции объясняет на каких-то "дельфинчиках") Спасибо!
Фактически, при вызове GC.Collect() сборка мусора может запуститься, но точное время ее запуска и количество собираемого мусора могут зависеть от ряда факторов, включая текущее состояние системы, настройки сборки мусора, объем доступной памяти и т. д. Кроме того, вызов GC.Collect() считается более затратной операцией, так как он прерывает нормальный рабочий процесс программы для выполнения сборки мусора.
Давненько не видел курсов по .NET с Пашей, но зато чаще чем кого-либо вижу на нативе, отпустите человека, у него уже мешки под глазами)))
p.s. ну как всегда интересно слушать его)
Мы его по согласию всегда приглашаем) а по курсам с ним поговорим, наш промах)
Жена говорит, что мешки под глазами это моё естественно состояние :'-)
А в какой компании Паша работает и много ли таких людей, Он просто все четко отвечает. Лучший!
Да, в хорошем смысле слова самородок, очень крутой специалист и классный человек!
Про компанию - оставляю ему право, но в самом начале ролика мы пишем сведения)
Я работаю в компании HiQo Solutions. Ну а преподаю в Teach Me Skills )))
Спасибо за ответы) хчется чтобы был такой ментор и предводитель.
Интересное обсуждение, хотя некоторые простые темы слишком разжевывались, чем создавалось ощущение сложности.
Например, бинарные числа и использование битов в качестве флагов просто базовая тема.
Да, бывает такое. Я часто преподаю на курсах для людей с нуля. Вот и бывает порой, что начинаю объяснять термины, которые большинству программистов и так понятны
часто базой такой пользуетесь?
@@GG-Platform Простите, но я не понял вашего вопроса. Какой "Такой базой"?
@@JinOptimist я писал про бинарное число, он пишет что база...мне и стало интересно)
А как давно Денис Кукояка заинтересовался программированием?
На всех собесах в аутсорс компаниях спрашивают Identity, Auth, JWT, OAuth2, OpenID, Identity server. По моему опыту, я как-то плаваю в этой теме, может вы объяснительную устроите😅
попробуем что-нибудь снять)
очень поверхностные вопросы, уровень знаний индийский джун
Хочу обратить внимание, что это третья часть. В первой мы например разговаривали про асинхронность, про коллекции, про дженерики и т.д.
И да, мы с самого начала, пытались создать серию роликов для Джунов. Если вы считаете, что есть важные вопросы, которые часто задают джунам, поделитесь пожалуйста с нами. Добавим их к вопросам для следующей части
Не очень понятное определение REST . Неужели его определяет лишь одно требование отсутствия состояния на сервере? А остальные 5 принципов? А если я начну что-то хранить , то это автомат отрежет возможность кэширования? Для миддла как-то просто ответили.
И разве индексы могут быть только древовидными? Мне казалась , что суть индекса - предложить самую подходящую структуру данных для хранения части из реляционных данных. А там реализации есть не только древовидные , хоть и они очевидные монополисты.
Ну и про паттерны архитектуры мало вопросов - DDD , CQRS , Modular Monolith
Ждём 4-ую часть)))
REST это дословно REpresentational State Transfer. Или "Передача самоописываемого состояния". Что полагаю вполне можно описать, как отсутствие состояния вне запроса.
Если же вы говорите о 5 ограничениях по Филдингу, то полагаю они избыточны, для описания концепции REST. Так например кэширование, это возможный бонус, а не требования, хотя по Филдингу это пункт номер 3. Или например, пункт 1 указывает, что это должно быть клиент-серверное решение. Но подобный пункт для web-сервера, выглядит просто избыточным. Ну и т.д.
Касательно древовидных индексов, я аж подвис на этом вопрос. Я рассказал, как индексы работают в MSSQL. Если вам известны другие алгоритмы построения индексов в каких либо популярных база данных, поделитесь, буду рад расширить свой кругозор.
И да, вопросы по шаблонам проектирования я осознанно откладываю на отдельное видео :)
DDD это не паттерн архитектуры
@@Kondratyevv А CQRS паттерн )) Но да, говоря о шаблонах проектирования, я подразумевал условное видео об архитектурных решениях. В которые я собираюсь упомянуть и TDD, хотя это процесс разработки а не шаблон или архитектура, и DDD, по шаблона пройтись. Вот благодаря вам, в этот список ещё и "Modular Monolith" добавил. Так что спасибо ))
Интересно, собеседуемый вообще слышал когда-либо слова "реляционная база данных"?
А можете раскрыть свою мысль? А то, я как-то не уловил, к чему вы клоните
Очень слабые ответы. В чем разница между SQL vs NoSQL, кандидат отвечает в неструктурированных данных. Что мешает в SQL базе создать таблицу с двух полей, где первое поле это GUID, а второе Json? Так само неструктированные данные в SQL, можно сделать, так в чем теперь разница? Так вот разница совершенно в другом - это шардирование и репликация. Кандидат ответил, что индекс это бинарное дерево. Грубейшая ошибка. Там не бинарное дерево, а B-tree. Если бы там было бинарное дерево, очень часто была бы перебалансировка, потому что узел может иметь максимум две ноды, так что никакого там binary tree - нет. Тут же по индексам, что некластерный индекс хранит ссылку на кластерный - это так, но не очень точно. Ведь некластерный индекс можно создать без кластерного, соотвественно некластерный индекс не будет иметь ссылок на кластерный, потому что кластерного нет физически. По поводу глаголов в REST, слабый ответ, не очень понятно в чем разница. Разница вся в идемпотентности и автоматических ретраях в браузере на глаголы. Вобщем на джуна, может ответы и ок, но на миддла уже слабовато будет.
Дуууушно
как нагуглить про ретраи?
@@dropsdotcrypto ничего душного, тут даже async-а нет, очень слабо
@@dropsdotcrypto на собесе так же будешь отвечать, когда на ошибку укажут в твоем ответе? Замечания ценные очень
Не все Sql базы поддерживают json, mySql не поддерживает, например, а Postgres поддерживает
А что насчет времени инициализации const и readonly? Батенька идите подготовьтесь получше.
Простите, но не могли бы вы объяснить, какое из моих утверждений вы пытаетесь опровергнуть?
Просто выглядит так, словно у вас есть некоторые знания, которые я не упомянул, и вас это сильно беспокоит.
@@JinOptimist коренное отличие указанных переменных заключается моментом их инициализации. Const значение присваивается при компиляции. А сильно меня беспокоит, глубина знаний учителей.
Неправильно написал enum определение для своей переменной.
Простите, вы о чём?
Вам и правда кажется, что для объяснения, что такое флаги, имеет значения синтаксис? О_о
Очень слабое интервью. Слабые вопросы. Кучу важных тем вообще не затронули.
А не могли бы вы подсказать, какие важные темы, нам следует рассмотреть в следующем видео? Мы всегда рады развиваться.
Добрый день. Вынужден обнародовать как данная организация некрасиво поступает. Я приобрел курс бизнес аналитик. Дата начала занятий 18.04.2024. Организаторы вернулись ко мне 16.04.2024 и сообщили что из за отсутствия преподавателя обучение переносится на конец июня либо можно вернуть деньги. Я решил вернуть деньги и пойти учиться в другую организацию. Но не тут то было. Эта организация возвращает деньги в течение 20 рабочих дней с момента подачи заявки, в моем случае то есть до 20.05.2024. На мои просьбы вернуть деньги как можно скорее - внятного ответа не получил. Месяц они будут крутить мои деньги. Я не понимаю почему я должен кредитовать эту организацию, причем по их вине. Вы зря думаете что к вам идут богачи учится. Очень плохое впечатление о себе оставляете.
Скажите, а вы уверены, что этот комментарий релевантен к данному видео?
Я уже себе представляю собес с западную компанию. Нужно ли все покрывать тестами - "нет, потому что это ничего не дает". Интервьюер - "хм, а как же концепция что тесты это на подобие двойной записи в бухгалтерии, а как же TDD...". Может быть микросервис быть без своей базы - "нет, потому что он может работать вообще без базы". Интервьюер - "хм... вопрос то был не про это а про общую базу"
Вердикт - отказать кандидату потому что любит провоцировать спор, переоценивает значимость своих знаний, не командный игрок.
прям по факту.
Ответы нужно выстраивать более открытые. Ответ формата "да-нет", если нет четкого контекста, независимо от уровня специалиста некорректный, т.к. чтобы однозначные ответы давать нужен конкретный кейс. Хотя и до такого подхода доколупаются при желании, что в решениях неуверен и т.д.
Магия какая-то.
Я в видео говорю, что тесты нужны для кода который описывает бизнес логику, вы от моего лица говорите, что тесты не нужны.
Я в видео говорю, что микросервис имеет права на существование и без базы. Привожу пример сервиса для скейла картинок.
А потом следующей же темой, поднимаем вопрос, нормально ли это, иметь общую базу. Где я говорю, что это плохая практика.
Вы же от моего лица выдаёте предложение которое само себе противоречит. Хорошо если ради комического эффекта, плохо, если вы и правда так восприняли мои ответы.
А в конце вы от имени западной компании заявляете, что я провалил собеседование, при том что все 10+ лет моей профессиональной жизни, я именно, что на западные компании и работаю.
То есть каждое утверждение, что вы делали в своё сообщение, расходиться с реальностью. Это какая-то особая магия вашего восприятия? Или вы начинающий комедиант?
@@JinOptimistНе берите в голову. Я добавил свой комментарий потому что считаю что на собесе надо быть поаккуратнее с формулировками, чтобы это не выглядело как сильно личное мнение или вбрасывание понятно чего на вентилятор.
@@someman34534 Быть более сдержанным на собеседовании, хорошая практика. Но в этой серии видео, я не пытался дать ответ который можно заучить и повторить на собеседовании. Вместо этого, я пытался дать информацию, и некую общую картину. И для этого использую более яркие образы и более простые слова чем в своей профессиональной деятельности.
Так что в целом с вашим советом для людей которые проходят собеседование, я согласен. Просто это видео, немного другого формата.
Константы инлайнятся. В этом ключевое различие. Если скомпилировать свою программу с внешней dll в котороы есть константы, а потом подменить на dll где константы бадкт другими, то таоя программа бедет использовать старые значения констант.
У работчика как будто есть практика, но он не знает теории и все говорит своими словами и так как он это преимает. Очень поверхностно.
В первом утверждении, вы совершенно правы. По крайней мере, то как я смог расшифровать ваше сообщение, для меня звучит правильно :)
Возможно мы забыли уточнить вначале, но сама суть этого видео, в том что бы рассказать о каких-либо понятиях как можно проще.
Это не лекция в университете, где каждое слово выверенно, но от того формулировки громоздки, а каждая тем растягивается на долгие часы.
Если вы ожидаете такого рода информацию, то конечно, это видео будет для вас поверхностным и возможно не даст вам желаемого.
Но для людей, которые впервые сталкиваются с подобными понятиями, такого рода общая информация, будет весьма полезна.
На примере тех же констант, если давать полную теорию, как вы того ожидаете, то нужно рассказать и про то, что представляет из себя dll и про процесс билда, особенного как он проходит с учётом внешних зависимостей, нужно было бы вспомнить про GAC и ещё много всего. Но с таким подходом, нужно не короткие видео по часу на десяток вопросов записывать, а начинать полноценный курс на сотни часов.
Но это видео, всё же другого формата. И хоть вам, как я понял, это не очень нужно, надеюсь будут те, кому оно принесёт пользу
Кстати, если вам не нравиться формат, в котором люди говорят своими словами, что вы ожидали услышать? Цитаты из Рихтера? Я просто не совсем понял, какого рода формат, вам было бы приятно слушать.
@@JinOptimist Мне всегда больно когда вместо ответа на вопрос "что такое x? " отвечают "x это когда" или "если мне надо сделать y то ...".
Да. Я хотел бы формат, после которого у меня несколько открытых вкладок Википедии на что-то интересное из того что я только что услышал. Тут я почти не услышал какие-то общепринятых терминов для большинства из того про что было рассказано. Если бы в вопросе про yield в начале прозвучало "сопрограмма", было бы здорово
@@JinOptimist хотя это не к формату претензии, а к ответам на вопросы.
Очень слабо. Всем плевать на enum flags, а вот ref и val, stack и heap, GC и IDisposable, CAP теорема, нормализация данных, асинхронный код, управление потоками не обсудили. Этот ролик никак не поможет пройти собеседование, никаких вопросов уровня мидл тут нет, даже на джуна этого мало
Просто, что бы уточнить, а вы точно первых два ролика из этой серии смотрели? Просто в них мы и про ссылочные/значимые типы говорили и про сборщик мусора и многие другие темы поднимали. Ту же асинхронность с многопоточностью сравнивали.
Если вам интересные эти темы, то лучше начать с первого ролика, все ссылки есть в начале описания ролика
@@JinOptimist окей, но тогда здесь все равно нет мидл тем, ни методов взаимодействия сервисов, ни кап теоремы, ни шардировпния, ни топик с дизайн паттернами, даже идемпотентность не обсудили
клоун это 3 часть
Илья, лучший )
На видосы с Пашей залетаю с лайка, было бы классно увидеть еще серию видео с ним, в частности на вопросы по мидл уровню💜
UPD: Удивительный специалист, грамотно и на простом языке доносит информацию
26 марта у нас День открытых дверей в прямом эфире, там будут крутые спикеры, и Паша в их числе! Заглядывайте на огонёк: teachmeskills.by/den-otkrityh-dverey-vesna-2024