#SimpleCode - Сергей Журавльёв
6.64K subscribers
24 photos
10 videos
2 files
175 links
Канал о программировании и не только.
Download Telegram
🔄 И снова к теме вопросов на job interview!
Одной из ключевых тем собеседования будут вопросы о строках и классе StringBuilder, поскольку знания о них так же охватывают понимание того как устроена работа с памятью в .NET.

🔑 Что следует знать о строках и StringBuilder:
1️⃣ Строки неизменяемы (immutable)
• Когда строки объединяются с помощью оператора + (то есть выполняется конкатенация), происходит создание нового объекта строки в памяти.
• Старые объекты остаются в памяти до сборки мусора (Garbage Collector).

2️⃣ Конкатенация строк в цикле == проблемы с производительностью
• Если конкатенация выполняется внутри цикла, это может сильно замедлить работу программы.
• Причина в том, что строки являются неизменяемыми: на каждой итерации создается новый объект в памяти, а старые объекты ожидают удаления сборщиком мусора, что является дорогостоящей операцией.

3️⃣ Класс StringBuilder решает проблему конкатенации
• StringBuilder использует внутренний изменяемый буфер, что позволяет добавлять, изменять и удалять текст без создания новых объектов.
• Вместо создания нового объекта строки изменения происходят внутри буфера, что позволяет избежать лишних выделений памяти и сборок мусора.

🛠 Когда использовать StringBuilder?
• Если строки изменяются часто (например, в циклах).
• При конкатенации большого количества строк.

📌 Интернирование строк (String Interning)
Отдельным пунктом следует упомянуть о механизме интернирования строк.
• Интернирование строк — это механизм оптимизации памяти, который позволяет хранить только одну копию каждой уникальной строки в специальном пуле строк (intern pool).
• Все литеральные строки (например, "Hello") автоматически интернируются и добавляются в пул строк на этапе компиляции.
• Если создается строка с таким же значением, которое уже есть в пуле, ссылка будет указывать на существующую строку, а не создавать новый объект.
Для поддержания актуальности этого курса разбираемся с тем, куда пропал метод Main и класс Program, а также с тем, что такое Top-level statements. Далее пойдут более интересные технические темы.
З.Ы. Для тех, кто купил этот курс на Udemy, не переживайте — эта тема раскрыта в самом начале курса в видео о том, как создавать проект. (Там заменить устаревшее видео и расширить курс проще, чем на YouTube) https://www.youtube.com/watch?v=iFWcob1ttNg
Вчера весь вечер тестил китайский DeepSeek (если кто не в курсе – аналог ChatGPT). Первые впечатления – довольно неплохо! 🤔
Кажется, он менее осторожен в высказываниях и более прямолинеен в суждениях – наваливает без лишних церемоний. 😎
Тестим дальше.
📢 Запускаем LLM локально за 5 минут! ⚡️
По комментариям под прошлым видео я заметил, что многим интересен запуск больших языковых моделей (LLM) на своём ПК, но не все знают, как это сделать. 🤔
Поэтому вот один из самых простых и быстрых способов! 🚀 Запускаем DeepSeek R1 локально с помощью LM Studio. 🔧💻 https://www.youtube.com/watch?v=UPdtp4l7IjE
В этом видео разберёмся с делегатами в C# – что это такое, как они работают и зачем нужны. Рассмотрим встроенные делегаты Func и Action, а также их связь с LINQ и лямбда-выражениями. Покажу примеры использования, создание собственных делегатов и работу с Multicast Delegate. https://www.youtube.com/watch?v=vkOnfEn8tFU