🚀Как я и говорил, музон уехал на второй канал. Вот вам немного Software Stoner Metal🤘. https://www.youtube.com/watch?v=odguxNLyIso
YouTube
DeusExStateMachine - Binary Откровения (Software Stoner Metal) (ai metal)
✅ Subscribe https://www.youtube.com/@DeusExStateMachine?sub_confirmation=1
#aimusic #metal #rock
#aimusic #metal #rock
Продолжаем тему вопросов о паттернах проектирования на собеседовании. Напоминаю, что наша цель — проявить инициативу, показать свои знания и убедить, что мы разбираемся в теме. Также мы, хоть немного, но всё же можем управлять ходом интервью, направляя его в ту область, где способны проявить себя с лучшей стороны, если, конечно, нас не прервут =)
Напоминаю, что вас спросили о том, какие паттерны проектирования вы чаще всего использовали в своей работе. На этот раз вы вспомнили паттерн "Стратегия". Хороший выбор! 😊 Давайте разберём, к чему это может вас привести.
Как всегда, вы безусловно должны знать, что представляет собой классический паттерн "Стратегия" и для чего он нужен. А помимо этого, наша с вами стратегия следующая: нужно привести пример, который связан с основами платформы .NET. Здесь важно вспомнить, что паттерн "Стратегия" отлично реализуется через делегаты. А где мы чаще всего используем делегаты? Правильно — в LINQ. Таким образом, "Стратегия" оказывается одним из наиболее часто применяемых паттернов.
Кстати, как раз сейчас я работаю над большим курсом по LINQ! 😊
Итак, рассказываем, что такое LINQ, для чего оно нужно. Обязательно упоминаем, что паттерн "Стратегия" в LINQ (если мы говорим о синтаксисе методов) реализован через extension methods (рассказываем, что это) и встроенные (универсальные) делегаты. Рассказываем о том, что такое делегаты. Основным делегатом, который используется в LINQ, является Func, но если будет возможность, упомяните также Action и Predicate. Обязательно следует упомянуть, что LINQ реализован на базе интерфейса IEnumerable (скоро будет видео). Тут вас, кстати, могут спросить про паттерн "Итератор", но это тема другого поста. Учтите, что разговор про IEnumerable может плавно перерасти в разговор про IQueryable и expression tree, где довольно часто возникает затык, так что подготовьтесь 😊
Ну и как вишенка на торте — вас могут попросить написать свой собственный LINQ-метод.
Учтите, что практически на любом собеседовании, кроме, пожалуй, Senior-позиций, все эти вопросы всё равно спросят. Так что лучше сразу показать, что вы в теме! 💪
Напоминаю, что вас спросили о том, какие паттерны проектирования вы чаще всего использовали в своей работе. На этот раз вы вспомнили паттерн "Стратегия". Хороший выбор! 😊 Давайте разберём, к чему это может вас привести.
Как всегда, вы безусловно должны знать, что представляет собой классический паттерн "Стратегия" и для чего он нужен. А помимо этого, наша с вами стратегия следующая: нужно привести пример, который связан с основами платформы .NET. Здесь важно вспомнить, что паттерн "Стратегия" отлично реализуется через делегаты. А где мы чаще всего используем делегаты? Правильно — в LINQ. Таким образом, "Стратегия" оказывается одним из наиболее часто применяемых паттернов.
Кстати, как раз сейчас я работаю над большим курсом по LINQ! 😊
Итак, рассказываем, что такое LINQ, для чего оно нужно. Обязательно упоминаем, что паттерн "Стратегия" в LINQ (если мы говорим о синтаксисе методов) реализован через extension methods (рассказываем, что это) и встроенные (универсальные) делегаты. Рассказываем о том, что такое делегаты. Основным делегатом, который используется в LINQ, является Func, но если будет возможность, упомяните также Action и Predicate. Обязательно следует упомянуть, что LINQ реализован на базе интерфейса IEnumerable (скоро будет видео). Тут вас, кстати, могут спросить про паттерн "Итератор", но это тема другого поста. Учтите, что разговор про IEnumerable может плавно перерасти в разговор про IQueryable и expression tree, где довольно часто возникает затык, так что подготовьтесь 😊
Ну и как вишенка на торте — вас могут попросить написать свой собственный LINQ-метод.
Учтите, что практически на любом собеседовании, кроме, пожалуй, Senior-позиций, все эти вопросы всё равно спросят. Так что лучше сразу показать, что вы в теме! 💪
💡 В продолжение темы о вопросах на собеседовании и паттернах, одним из наиболее часто используемых вами паттернов так же является Итератор и вот почему.
Коллекции в C# могут работать с циклом foreach благодаря реализации паттерна Итератор, который, в свою очередь, может быть реализован благодаря тому, что эти коллекции реализуют интерфейсы IEnumerable и IEnumerator. Такой подход даёт возможность, не разбираясь в деталях реализации коллекции, перебирать её элементы в цикле.
🎥 В этом уроке мы разберём цикл foreach на атомы, разберёмся с тем, при чём тут паттерн Итератор, а также с интерфейсы IEnumerable и IEnumerator.
https://www.youtube.com/watch?v=YpRSnUkepv8
Коллекции в C# могут работать с циклом foreach благодаря реализации паттерна Итератор, который, в свою очередь, может быть реализован благодаря тому, что эти коллекции реализуют интерфейсы IEnumerable и IEnumerator. Такой подход даёт возможность, не разбираясь в деталях реализации коллекции, перебирать её элементы в цикле.
🎥 В этом уроке мы разберём цикл foreach на атомы, разберёмся с тем, при чём тут паттерн Итератор, а также с интерфейсы IEnumerable и IEnumerator.
https://www.youtube.com/watch?v=YpRSnUkepv8
YouTube
Enumerable и IEnumerator в C#: как работает цикл foreach и при чём тут паттерн Итератор | C# | #85
➡️ Если вам нравятся мои уроки и вы хотите поддержать создание новых материалов, вы можете приобрести мой курс на Udemy. Спасибо за вашу поддержку!
👉 https://www.udemy.com/course/simplecode-cshap/?referralCode=53C0314076F77DCC2A02
Коллекции в C# могут работать…
👉 https://www.udemy.com/course/simplecode-cshap/?referralCode=53C0314076F77DCC2A02
Коллекции в C# могут работать…
🔄 Вернёмся к теме вопросов на job interview!
В продолжение предыдущего поста о паттерне Итератор.
Само собой, вы уже рассказали об интерфейсах IEnumerable и IEnumerator, перечислили методы и свойства интерфейса IEnumerator:
• MoveNext()
• Reset()
• Current
Рассказали, как они работают.
🤔 Логичным будет следующий вопрос:
Что вы знаете про yield?
Уже в следующем уроке мы этот самый yield подробно разберём!
Будут бенчмарки с пруфами!
🔑 А пока, вот основные моменты, которые стоит помнить о yield:
1️⃣ Разворачивается в стейт-машину
При компиляции метод с yield преобразуется в скрытый класс, который управляет состоянием итерации (реализует IEnumerator).
2️⃣ Отложенное выполнение
Код внутри метода с yield не выполняется сразу, а только тогда, когда последовательность начинает перечисляться (например, в цикле foreach).
Это может значительно повысить производительность, так как позволяет получать элементы по одному, а не всю коллекцию сразу. Чем больше элементов в коллекции, тем больше мы выигрываем в производительности.
3️⃣ Эффективное использование памяти
Поскольку элементы обрабатываются по очереди, yield позволяет работать с большими коллекциями, не занимая много оперативной памяти. Это особенно полезно при обработке сотен тысяч объектов, когда нет необходимости хранить всю коллекцию в памяти. Используем меньше памяти. Реже отрабатывает сборщик мусора, что довольно накладно.
З.Ы. На Udemy эта тема уже есть. Там я буду выкладывать всё немного раньше в качестве благодарности за финансовую поддержку. https://www.udemy.com/course/simplecode-cshap/?referralCode=53C0314076F77DCC2A02
В продолжение предыдущего поста о паттерне Итератор.
Само собой, вы уже рассказали об интерфейсах IEnumerable и IEnumerator, перечислили методы и свойства интерфейса IEnumerator:
• MoveNext()
• Reset()
• Current
Рассказали, как они работают.
🤔 Логичным будет следующий вопрос:
Что вы знаете про yield?
Уже в следующем уроке мы этот самый yield подробно разберём!
Будут бенчмарки с пруфами!
🔑 А пока, вот основные моменты, которые стоит помнить о yield:
1️⃣ Разворачивается в стейт-машину
При компиляции метод с yield преобразуется в скрытый класс, который управляет состоянием итерации (реализует IEnumerator).
2️⃣ Отложенное выполнение
Код внутри метода с yield не выполняется сразу, а только тогда, когда последовательность начинает перечисляться (например, в цикле foreach).
Это может значительно повысить производительность, так как позволяет получать элементы по одному, а не всю коллекцию сразу. Чем больше элементов в коллекции, тем больше мы выигрываем в производительности.
3️⃣ Эффективное использование памяти
Поскольку элементы обрабатываются по очереди, yield позволяет работать с большими коллекциями, не занимая много оперативной памяти. Это особенно полезно при обработке сотен тысяч объектов, когда нет необходимости хранить всю коллекцию в памяти. Используем меньше памяти. Реже отрабатывает сборщик мусора, что довольно накладно.
З.Ы. На Udemy эта тема уже есть. Там я буду выкладывать всё немного раньше в качестве благодарности за финансовую поддержку. https://www.udemy.com/course/simplecode-cshap/?referralCode=53C0314076F77DCC2A02
Udemy
C# ОТ НОВИЧКА К ПРОФЕССИОНАЛУ
Глубокое и профессиональное понимание C# и объектно-ориентированного программирования (ООП)
В этом уроке мы разберёмся с механизмом отложенного возврата значений yield return, рассмотрим стейт-машину, в которую это всё компилируется, а также с помощью бенчмарков проверим, как использование yield может существенно оптимизировать производительность. https://www.youtube.com/watch?v=aUbFYuBMDqU
YouTube
Ключевое слово yield | для чего нужен yield return и как он устроен | C# | Урок #86
➡️ Если вам нравятся мои уроки и вы хотите поддержать создание новых материалов, вы можете приобрести мой курс на Udemy. Спасибо за вашу поддержку!
👉 https://www.udemy.com/course/simplecode-cshap/?referralCode=53C0314076F77DCC2A02
🔹 Telegram канал https:…
👉 https://www.udemy.com/course/simplecode-cshap/?referralCode=53C0314076F77DCC2A02
🔹 Telegram канал https:…
🔄 И снова к теме вопросов на job interview!
Одной из ключевых тем собеседования будут вопросы о строках и классе StringBuilder, поскольку знания о них так же охватывают понимание того как устроена работа с памятью в .NET.
🔑 Что следует знать о строках и StringBuilder:
1️⃣ Строки неизменяемы (immutable)
• Когда строки объединяются с помощью оператора + (то есть выполняется конкатенация), происходит создание нового объекта строки в памяти.
• Старые объекты остаются в памяти до сборки мусора (Garbage Collector).
2️⃣ Конкатенация строк в цикле == проблемы с производительностью
• Если конкатенация выполняется внутри цикла, это может сильно замедлить работу программы.
• Причина в том, что строки являются неизменяемыми: на каждой итерации создается новый объект в памяти, а старые объекты ожидают удаления сборщиком мусора, что является дорогостоящей операцией.
3️⃣ Класс StringBuilder решает проблему конкатенации
• StringBuilder использует внутренний изменяемый буфер, что позволяет добавлять, изменять и удалять текст без создания новых объектов.
• Вместо создания нового объекта строки изменения происходят внутри буфера, что позволяет избежать лишних выделений памяти и сборок мусора.
🛠 Когда использовать StringBuilder?
• Если строки изменяются часто (например, в циклах).
• При конкатенации большого количества строк.
📌 Интернирование строк (String Interning)
Отдельным пунктом следует упомянуть о механизме интернирования строк.
• Интернирование строк — это механизм оптимизации памяти, который позволяет хранить только одну копию каждой уникальной строки в специальном пуле строк (intern pool).
• Все литеральные строки (например, "Hello") автоматически интернируются и добавляются в пул строк на этапе компиляции.
• Если создается строка с таким же значением, которое уже есть в пуле, ссылка будет указывать на существующую строку, а не создавать новый объект.
Одной из ключевых тем собеседования будут вопросы о строках и классе StringBuilder, поскольку знания о них так же охватывают понимание того как устроена работа с памятью в .NET.
🔑 Что следует знать о строках и StringBuilder:
1️⃣ Строки неизменяемы (immutable)
• Когда строки объединяются с помощью оператора + (то есть выполняется конкатенация), происходит создание нового объекта строки в памяти.
• Старые объекты остаются в памяти до сборки мусора (Garbage Collector).
2️⃣ Конкатенация строк в цикле == проблемы с производительностью
• Если конкатенация выполняется внутри цикла, это может сильно замедлить работу программы.
• Причина в том, что строки являются неизменяемыми: на каждой итерации создается новый объект в памяти, а старые объекты ожидают удаления сборщиком мусора, что является дорогостоящей операцией.
3️⃣ Класс StringBuilder решает проблему конкатенации
• StringBuilder использует внутренний изменяемый буфер, что позволяет добавлять, изменять и удалять текст без создания новых объектов.
• Вместо создания нового объекта строки изменения происходят внутри буфера, что позволяет избежать лишних выделений памяти и сборок мусора.
🛠 Когда использовать StringBuilder?
• Если строки изменяются часто (например, в циклах).
• При конкатенации большого количества строк.
📌 Интернирование строк (String Interning)
Отдельным пунктом следует упомянуть о механизме интернирования строк.
• Интернирование строк — это механизм оптимизации памяти, который позволяет хранить только одну копию каждой уникальной строки в специальном пуле строк (intern pool).
• Все литеральные строки (например, "Hello") автоматически интернируются и добавляются в пул строк на этапе компиляции.
• Если создается строка с таким же значением, которое уже есть в пуле, ссылка будет указывать на существующую строку, а не создавать новый объект.
Сегодня добиваем yield и разбираем комбинацию yield break в C# 🔥 https://www.youtube.com/watch?v=f_DLSkFhzQY
YouTube
yield break в C#: что это такое и зачем использовать | C# ОТ НОВИЧКА К ПРОФЕССИОНАЛУ | #87
yield break в C#: что это такое, зачем использовать и как работает на практике
➡️ Если вам нравятся мои уроки и вы хотите поддержать создание новых материалов, вы можете приобрести мой курс на Udemy. Спасибо за вашу поддержку!
👉 https://www.udemy.com/course/simplecode…
➡️ Если вам нравятся мои уроки и вы хотите поддержать создание новых материалов, вы можете приобрести мой курс на Udemy. Спасибо за вашу поддержку!
👉 https://www.udemy.com/course/simplecode…
Для поддержания актуальности этого курса разбираемся с тем, куда пропал метод Main и класс Program, а также с тем, что такое Top-level statements. Далее пойдут более интересные технические темы.
З.Ы. Для тех, кто купил этот курс на Udemy, не переживайте — эта тема раскрыта в самом начале курса в видео о том, как создавать проект. (Там заменить устаревшее видео и расширить курс проще, чем на YouTube) https://www.youtube.com/watch?v=iFWcob1ttNg
З.Ы. Для тех, кто купил этот курс на Udemy, не переживайте — эта тема раскрыта в самом начале курса в видео о том, как создавать проект. (Там заменить устаревшее видео и расширить курс проще, чем на YouTube) https://www.youtube.com/watch?v=iFWcob1ttNg
YouTube
Куда пропал метод main и класс Program | top level statements | C# ОТ НОВИЧКА К ПРОФЕССИОНАЛУ
Для поддержания актуальности этого курса разбираемся с тем, куда пропал метод Main и класс Program, а также с тем, что такое Top-level statements.
➡️ Если вам нравятся мои уроки и вы хотите поддержать создание новых материалов, вы можете приобрести мой курс…
➡️ Если вам нравятся мои уроки и вы хотите поддержать создание новых материалов, вы можете приобрести мой курс…
Вчера весь вечер тестил китайский DeepSeek (если кто не в курсе – аналог ChatGPT). Первые впечатления – довольно неплохо! 🤔
Кажется, он менее осторожен в высказываниях и более прямолинеен в суждениях – наваливает без лишних церемоний. 😎
Тестим дальше.
Кажется, он менее осторожен в высказываниях и более прямолинеен в суждениях – наваливает без лишних церемоний. 😎
Тестим дальше.
Рассуждаем на тему: «Заменят ли нейросети или искусственный интеллект программистов?» https://www.youtube.com/watch?v=5Nwt6jOTsC0
YouTube
Искусственный интеллект ЗАМЕНИТ программистов ИЛИ НЕТ?
Рассуждаем на тему: «Заменят ли нейросети или искусственный интеллект программистов?»
➡️ Если вам нравятся мои уроки и вы хотите поддержать создание новых материалов, вы можете приобрести мой курс на Udemy. Спасибо за вашу поддержку!
👉 https://www.udemy.…
➡️ Если вам нравятся мои уроки и вы хотите поддержать создание новых материалов, вы можете приобрести мой курс на Udemy. Спасибо за вашу поддержку!
👉 https://www.udemy.…
📢 Запускаем LLM локально за 5 минут! ⚡️
По комментариям под прошлым видео я заметил, что многим интересен запуск больших языковых моделей (LLM) на своём ПК, но не все знают, как это сделать. 🤔
Поэтому вот один из самых простых и быстрых способов! 🚀 Запускаем DeepSeek R1 локально с помощью LM Studio. 🔧💻 https://www.youtube.com/watch?v=UPdtp4l7IjE
По комментариям под прошлым видео я заметил, что многим интересен запуск больших языковых моделей (LLM) на своём ПК, но не все знают, как это сделать. 🤔
Поэтому вот один из самых простых и быстрых способов! 🚀 Запускаем DeepSeek R1 локально с помощью LM Studio. 🔧💻 https://www.youtube.com/watch?v=UPdtp4l7IjE
YouTube
Как легко запустить DeepSeek R1 локально | Бесплатный аналог ChatGPT на твоём ПК
Запускаем большую языковую модель (LLM), такую как ChatGPT, локально на своём ПК всего за 5 минут. Разбираем на примере DeepSeek R1.
➡️ Если вам нравятся мои уроки и вы хотите поддержать создание новых материалов, вы можете приобрести мой курс на Udemy. Спасибо…
➡️ Если вам нравятся мои уроки и вы хотите поддержать создание новых материалов, вы можете приобрести мой курс на Udemy. Спасибо…
В этом видео разберёмся с делегатами в C# – что это такое, как они работают и зачем нужны. Рассмотрим встроенные делегаты Func и Action, а также их связь с LINQ и лямбда-выражениями. Покажу примеры использования, создание собственных делегатов и работу с Multicast Delegate. https://www.youtube.com/watch?v=vkOnfEn8tFU
YouTube
Делегаты и Лямбда-выражения | C# ОТ НОВИЧКА К ПРОФЕССИОНАЛУ | #88
➡️ Если вам нравятся мои уроки и вы хотите поддержать создание новых материалов, вы можете приобрести мой курс на Udemy. Спасибо за вашу поддержку!
👉 https://www.udemy.com/course/simplecode-cshap/?referralCode=53C0314076F77DCC2A02
В этом видео разберёмся…
👉 https://www.udemy.com/course/simplecode-cshap/?referralCode=53C0314076F77DCC2A02
В этом видео разберёмся…
🎯 События (events) в C#
В этом видео разбираем, как работают события в C# и как они связаны с делегатами и паттерном Наблюдатель.
Разберёмся, в чём проблемы инкапсуляции при использовании делегатов и как события помогают это исправить. https://www.youtube.com/watch?v=aNK0CjwFtwU
В этом видео разбираем, как работают события в C# и как они связаны с делегатами и паттерном Наблюдатель.
Разберёмся, в чём проблемы инкапсуляции при использовании делегатов и как события помогают это исправить. https://www.youtube.com/watch?v=aNK0CjwFtwU
YouTube
Cобытия (Events) в C# | Проблемы Инкапсуляции и Делегаты | C# ОТ НОВИЧКА К ПРОФЕССИОНАЛУ | #89
➡️ Если вам нравятся мои уроки и вы хотите поддержать создание новых материалов, вы можете приобрести мой курс на Udemy. Спасибо за вашу поддержку!
👉 https://www.udemy.com/course/simplecode-cshap/?referralCode=53C0314076F77DCC2A02
В этом видео разбираем события…
👉 https://www.udemy.com/course/simplecode-cshap/?referralCode=53C0314076F77DCC2A02
В этом видео разбираем события…