Dependency Injection / Внедрение зависимостей / Вопросы на собеседовании по программированию

  Рет қаралды 51,669

VoidPlusPlusRu

VoidPlusPlusRu

3 жыл бұрын

#dependecyinjection #dicontainer #ioc #паттерн
За последний месяц мне пришлось участвовать в 5 собеседованиях с кандидатами разного уровня. Во всех собеседованиях был вопрос про Dependency Injection или Внедрение Зависимостей, если по-русски.
В лучшем случае ответ сводился к формулировке в духе того, что DI - это фишка в .NET Core, которая позволяет инжектировать сервисы в контроллеры.
Такой ответ больше годится к вопросу о примерах использования DI, но не поясняет суть паттерна.
Самое странное, что даже кандидаты, блиставшие огромным опытом, не могли толком ответить.
Я рекомендую ознакомиться с этим паттерном всем программистам, особенно перед собеседованием, поскольку эта тема довольно актуальна.
В интернете полно разжеванной информации по этому паттерну, но раз уж вы здесь, я попытаюсь как можно проще объяснить концепцию DI.

Пікірлер: 60
@Revenant520
@Revenant520 Жыл бұрын
На данный момент, это лучшее объяснение DI, которое я встречал!
@speedrages
@speedrages Жыл бұрын
Почему ты не снимаешь другие видео по программированию. С таким объяснением и примерами тебе цены нет💪
@AndriiNikolaiev
@AndriiNikolaiev 2 жыл бұрын
Почему застрял? Давай новые ролики. Голос отличный. Ролик лаконичный. Требую продолжения банкета!
@jarjarbinks6015
@jarjarbinks6015 Жыл бұрын
госпади, здоровье тебе и твоим родственникам, это просто самое божественное, краткое и емкое объяснение DI.
@minimalstory
@minimalstory Жыл бұрын
2 года прошло, а до сих пор лучшее объяснение, советую всем нашим джунам)
@gennadyga2257
@gennadyga2257 Жыл бұрын
Это лучшее, что мог найти, простыми словами, порт для устройства. Круто Спасибо! Побольше б таких видео.
@aoveden197727
@aoveden197727 2 жыл бұрын
Очень хорошо объяснено. Давай в догонку IoC и так по всем основным понятиям.
@burningdaylight9171
@burningdaylight9171 2 жыл бұрын
самый лаконичный и доходчиво ответ. браво!
@evildaimyo3746
@evildaimyo3746 2 жыл бұрын
😯 Моё лицо когда посмотрел видео про DI, а понял что такое moq и для чего он по сути нужен))))
@liyaguliaieva1111
@liyaguliaieva1111 Жыл бұрын
Это просто гениальное объяснение!!! Спасибо 🙏👏👏👏👏
@ix3909
@ix3909 2 ай бұрын
Офигеть, принцип инверсии зависимостей и композицию выделили аж в отдельный паттерн 😂
@meosaganami5472
@meosaganami5472 2 жыл бұрын
Я всё ещё не понимаю, зачем придумывать специальные названия для здравого смысла? Приходишь на собеседование, а тебе там "а что такое тындрение залысенностей?". сиди и думай блин. потом окажется, что это паттерн разделения своей ноги и направления выстрела
@voidplusplusru
@voidplusplusru 2 жыл бұрын
Мне тоже это не нравится. Сильно усложняет понимание. Однако, это терминология, проф язык. В общении между программистами в команде, вместо использования длинных формулировок с уточнениями, проще назвать термин и всем сразу становится понятно о чем речь. Хотя порой программисты увлекаются, и придумывают новые термины там, где это не нужно, наверно для самоутверждения.
@alexanderbelov6892
@alexanderbelov6892 2 жыл бұрын
@@voidplusplusru Всё равно выпендрёж. Никогда не слышал на работе высокоинтеллектуальных бесед на тему паттернов и таких вот терминов при обсуждении кода. Даже если паттернов в коде навалом, то его всё равно могут не понимать. Может паттернов не знают? Но на собеседовании видимо это важно.
@radasmelaya6492
@radasmelaya6492 2 жыл бұрын
@@alexanderbelov6892 поддерживаю, обычно у тебя задача и ты идешь и пишешь ее решение без всяких указаний что и как. Обычно такие вопросы проводят неопытные специалисты- или только с института или hr. Горазда важнее посмотреть как именно будет решаться задача, а не определение терминов
@vladbreez4036
@vladbreez4036 Жыл бұрын
Разделение ноги, направление выстрела... В этом нет смысла или я тупой.
@meosaganami5472
@meosaganami5472 Жыл бұрын
​@@vladbreez4036 одно другому не мешает, хоть я и правда немного коряво сформулировал
@olehdumanskyi7830
@olehdumanskyi7830 2 жыл бұрын
Ролик бомба! Спасибо за разъяснение.
@sortadorgin9327
@sortadorgin9327 Жыл бұрын
вельми дякую) дуже лаконічне поясненя
@kanybekmomukeev4116
@kanybekmomukeev4116 2 жыл бұрын
Очень круто, сколько юзал данный подход, но не знал что То и есть di
@user-hs8zg4ws7z
@user-hs8zg4ws7z 2 жыл бұрын
Спасибо за разъяснения
@tov3801
@tov3801 2 жыл бұрын
Как раз готовлюсь к собеседованиям. Ролик очень полезен. Спасибо!
@taniakedrova
@taniakedrova 2 жыл бұрын
спасибо за видео!
@pawsdev
@pawsdev Жыл бұрын
Идеально! столько болтовни вокруг этой херни, а туту хрясь пара скринов и все сразу ясно)) Для Java это тоже подходит
@TheKirk1989
@TheKirk1989 Жыл бұрын
хмм, не знаю почему, быть может просто настало время, но именно на этом ролике я начал более менее понимать, зачем нужен этот паттерн проектирования
@vladead8
@vladead8 10 ай бұрын
Годно, спасибо
@OpalGooDog
@OpalGooDog 2 жыл бұрын
Спасибо!
@kuanyshkudaibergenov7041
@kuanyshkudaibergenov7041 Жыл бұрын
классное объяснение
@apdgslfhsodbna
@apdgslfhsodbna Жыл бұрын
Есть достаточно удачная формулировка: "класс должен зависеть от абстракции, а не от конкретной реализации", и далее можно рассказать про агрегацию в виде передачи параметра типа интерфейса в конструктор класса и что этот подход является эволюцией фабричного метода 🙂
@apdgslfhsodbna
@apdgslfhsodbna Жыл бұрын
@@mamikonpapikyan6120 , Ioc - идея, dependency inversion - принцип, dependency injection - реализация
@kingslayer7679
@kingslayer7679 Жыл бұрын
@@apdgslfhsodbna Вы путаете два понятия близкие к себе но всё же разные.
@SergeyDovbenko
@SergeyDovbenko 5 ай бұрын
Ещё один положительный момент а ДИ это возможность поумничать перед кандидатом😂
@teawizzard
@teawizzard Жыл бұрын
Вот так надо Внедрение зависимости (англ. Dependency injection, DI) - процесс предоставления внешней зависимости программному компоненту. Является специфичной формой «инверсии управления» (англ. Inversion of control, IoC), когда она применяется к управлению зависимостями. В полном соответствии с принципом единственной ответственности объект отдаёт заботу о построении требуемых ему зависимостей внешнему, специально предназначенному для этого общему механизму[1].
@agnia.starovoitova
@agnia.starovoitova 2 жыл бұрын
Хорошо изложен материал, жду новые видео 😀
@user-pg8ry1tm3t
@user-pg8ry1tm3t 3 ай бұрын
Интересно, а если мне нужно передать объект, который имплементируется неск интерфейсами?..
@user-hv8rk3fw8y
@user-hv8rk3fw8y 9 ай бұрын
кратко и понятно везде бы так
@toxicknight3079
@toxicknight3079 Жыл бұрын
Запили такой же видосик по IoC и IoC-контейнерам, ради христа)
@zeOnni
@zeOnni 2 ай бұрын
Я обычно прошу написать функцию сложения двух чисел без DI
@eu-rn1xb
@eu-rn1xb Жыл бұрын
Остался вопрос по контейнеру. Должна быть возможность зарегистрированные зависимости локализовать, верно? Потому что не везде мне нужно подставлять так, как я хочу в конкретном месте. В одном месте я такую зависимость регистрирую, в другом - другую, и они друг другу противоречат... Например, вот здесь 4:37 меня устраивает связь DbContext. А вот в другом месте я хочу MyDbContext
@voidplusplusru
@voidplusplusru Жыл бұрын
Это можно решить разными способами. Зависит от того, что позволяет делать конкретный IoC. В некоторых случаях можно именовать каждую регистрацию. Я бы в таком случае просто сделал интерфейс IMyDbContext, который наследует от IDbContext и MyDbContext будет его реализовывать. И там, где нужен MyDbContext указываем интерфейс IMyDbContext.
@ser9ga592
@ser9ga592 11 ай бұрын
D в SOLID - это Dependensy Inversion. А вы назвали и объяснили dependency injection. Темы немного пересекающиеся, но всё таки разные
@user-ni9tf5yr6m
@user-ni9tf5yr6m 10 ай бұрын
👀👀👀👀 Где SOLID автором упомянут?
@GraMuzgobChick
@GraMuzgobChick 4 ай бұрын
Вы случайно не играли в бдо ? Очень похожий голос просто
@user-vn1oz3fx3d
@user-vn1oz3fx3d 3 жыл бұрын
Я не знаю зачем мне Ютуб выплюнул это видео, видимо чтобы я оставил тебе коммент =) Я часто сталкиваюсь с тем, что у собеседников переплетено понятие внедрения зависимостей и инверсии зависимостей (хотя в целом, с точки зрения реализации без контейнера выглядит одинаково и их тут нечего судить), ну и даже если программист понимает теорию внедрения, то не может ответить в чем же его минусы, а ведь о них написано не так много и обычно понимаешь только набив пару шишек. В общем, я бы добавил такую инфу в видео, чтобы получилось поставить точку над i. Удачи!)
@JPyanikova
@JPyanikova 2 жыл бұрын
В чем же его минусы?
@SafargalinVladislavbimka89
@SafargalinVladislavbimka89 Жыл бұрын
Только что узнал о существовании этой фичи и вроде, как круто, не нужно создавать экземпляры классов. Нооо не понимаю, как это применить с MVVM, биндинги отлично отделяют вьюшку от viewmodel и делают их не зависимыми друг от друга, как я понял эта фича помогает сделатт viewmodel более независимой от самой model. Но тогда, как мне свойства вьюмодели привязать к данным, я же не могу в классе вьюмодели делать sql запросы, напрямую привязывать тоже, в конструкторе вьюмодел, я не могу передавать аргументы, возникнет ошибка между вьюшкой и самой вьюмоделью, наследовать я тоже не могу, ведь вьюмодел уже наследуется от BindableBase да и смысла нету реализовывать это во вьюмодел, ведь суть и заключается, чтобы отделить ее от модели. Допустим есть данные в sql и модель этих данных, я создам интерфейс и класс который будет вытаскивать данные из БД, а теперь как свойства вьюмодел привязать к этим данным? Не совсем понимаю что такое Response в примере, просто класс который реализует этот интерфейс? Извиняюсь если задаю глупые вопросы, не так давно начал изучать паттерны очень сложно самому находить понятную простым смертным информацию(. Пукан подгорел пока пытался найти что-то по MVVM и внедрению зависимостей, какие-то контейнеры, какие-то хостинги, службы, сервисы...
@voidplusplusru
@voidplusplusru Жыл бұрын
Не уверен, что полностью понял, что вы пытаетесь сделать. Полагаю, что в вашем случае нужно внедрять зависимость (некий сервис, который вытаскивает данные из БД) во вьюмодел. Тут есть пример community.devexpress.com/blogs/wpf/archive/2022/02/07/dependency-injection-in-a-wpf-mvvm-application.aspx В моем примере Response - это просто модель, которую возвращает метод, отношения к DI не имеет.
@SafargalinVladislavbimka89
@SafargalinVladislavbimka89 Жыл бұрын
@@voidplusplusru то что я искал, спасибо огромное !
@of_youtube
@of_youtube Жыл бұрын
Чел харош
@smookkee1
@smookkee1 Жыл бұрын
Di - это агрегация, так?
@Anik_666
@Anik_666 4 ай бұрын
Почав з залежностей, закінчив інверсією тих же залежностей( не сказавши про це), потім на di контейнер переліз)))) ляяяяя жесть
@teawizzard
@teawizzard Жыл бұрын
Вначале я не понял, а потом я начал тупо угорать 😂 Потом дежавю
@excellent18rus
@excellent18rus Жыл бұрын
а я так ваще ниче не понял)))
@dzmitrykuhukou4480
@dzmitrykuhukou4480 Жыл бұрын
хрена себе комменты, видимо, тут все и так в курсе, как это работает, т.к. если бы я был не в курсе - хер бы что было понятно....
@SinnerWar
@SinnerWar 11 ай бұрын
За 4 минуты вся база, а то зае... своими книгами по 400+ страниц с кучей воды, на такие простые темы не очень как по мне важные
@dok.8078
@dok.8078 2 жыл бұрын
Тема размазана в ограниченных знаниях автора… читай больше, ServiceLocator не обходи.
@user-hv8rk3fw8y
@user-hv8rk3fw8y 9 ай бұрын
чел, угорает, МНОГО РАЗЖЕВАННОЙ информация
Dependency Injection простыми словами
18:17
devschacht
Рет қаралды 83 М.
New Gadgets! Bycycle 4.0 🚲 #shorts
00:14
BongBee Family
Рет қаралды 14 МЛН
WHY DOES SHE HAVE A REWARD? #youtubecreatorawards
00:41
Levsob
Рет қаралды 42 МЛН
Make me the happiest man on earth... 🎁🥹
00:34
A4
Рет қаралды 8 МЛН
Грабим Дома на Собеседовании в Google
11:30
Саша Лукин
Рет қаралды 34 М.
Решаем тестовое задание на позицию junior python backend разработчик
21:18
𝐧𝐞𝐫𝐝𝐢𝐳𝐚𝐲-𝐜𝐨𝐝𝐞
Рет қаралды 11 М.
ОКОННЫЕ ФУНКЦИИ SQL за 13 минут
13:46
Listen IT
Рет қаралды 40 М.
Просто о SOLID (Принципы SOLID)
15:54
webDev
Рет қаралды 214 М.
Redux Toolkit для управления состоянием в React-приложении
1:00:09
Михаил Непомнящий
Рет қаралды 191 М.
Где раздвижные смартфоны ?
0:49
Не шарю!
Рет қаралды 599 М.
Эффект Карбонаро и бумажный телефон
1:01
История одного вокалиста
Рет қаралды 2,8 МЛН
How charged your battery?
0:14
V.A. show / Магика
Рет қаралды 3,9 МЛН
iPhone 15 Pro vs Samsung s24🤣 #shorts
0:10
Tech Tonics
Рет қаралды 11 МЛН