Кажется, что
virtual и private должны просто работать вместе. Один говорит «этот метод можно переопределить», другой говорит «этот метод виден только внутри класса».Подсказка:
Ответ:
📍 Навигация: Вакансии • Задачи • Собесы
#dotnet_challenge
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱17🌚1
💡 Подсказка:
📍 Навигация: Вакансии • Задачи • Собесы
#dotnet_challenge
Please open Telegram to view this post
VIEW IN TELEGRAM
Это классика технических интервью в C#:
Статический конструктор — когда именно его вызывает рантайм
Вы не пишете
new MyClass(), не обращаетесь к объекту, не делаете вообще ничего явного. А он всё равно срабатывает.📍 Навигация: Вакансии • Задачи • Собесы
#dotnet_challenge
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7😁1
Представьте: продакшн .NET Core сервис под высокой нагрузкой. Задержки растут, потоки блокируются, DBA смотрит на вас с подозрением. БД вроде бы ни при чём.. или всё же при чём?
Что вы будете делать?
Если знаете — пишите в комментариях 👇 Если хотите проверить себя —
📍 Навигация: Вакансии • Задачи • Собесы
#dotnet_challenge
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔 Вопрос с собеседования по C#
Если вы думаете про
Попробуйте сформулировать ответ сами, а потом сверьтесь 👇
➡️ Ответ
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека шарписта
#dotnet_challenge
Как работают асинхронные делегаты и зачем они нужны?
Если вы думаете про
async/await — это совсем другая история. Здесь механизм старше и ближе к ручному управлению потоками.Попробуйте сформулировать ответ сами, а потом сверьтесь 👇
📍 Навигация: Вакансии • Задачи • Собесы
#dotnet_challenge
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4❤1
ref struct в C#ref struct появился не просто как ограниченная версия обычного struct. За этим стоит конкретная гарантия компилятора о том, где может находиться такой тип в памяти.Подумайте: что произойдёт, если попробовать передать
ref struct в лямбду, сохранить в поле класса или сделать boxing?📍 Навигация: Вакансии • Задачи • Собесы
#dotnet_challenge
Please open Telegram to view this post
VIEW IN TELEGRAM
😁1
Чтобы не теряться в потоке постов, собрали удобную навигацию по рубрикам:
#sharp_view — короткие и полезные посты с кодом, best practices, фишки C#, сравнение подходов, code snippets и разбор багов
#il_люминатор — глубокие технические разборы: архитектурные паттерны, производительность, устройство .NET, CLR, GC, JIT и сложные концепции
#async_news — релизы .NET, обновления IDE, анонсы конференций, дайджесты и другие важные новости экосистемы
#entry_point — опросы, холивары, вопросы подписчикам, истории из практики и обсуждения с сообществом
#dotnet_challenge — задачи по C# и .NET, вопросы с собеседований, поиск ошибок в коде и интерактивные викторины
#схема — инфографика, диаграммы, шпаргалки, дорожные карты и визуальное объяснение сложных тем
#garbage_collector — мемы, юмор и забавные истории из жизни .NET-разработчиков
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔4
Правильный ответ:
Многие ожидают, что новый элемент просто добавится в список и цикл продолжит работу. Но внутри foreach используется Enumerator, который запоминает версию коллекции на момент начала обхода.
После выполнения:
users.Add(4);
версия списка изменяется.
System.InvalidOperationException: Collection was modified; enumeration operation may not execute.
Например, такой код:
{
Console.WriteLine(user);
if (user == 2)
users.Add(4);
}
успеет вывести:
1
2
и только после этого завершится с ошибкой.
Если во время обхода нужно изменять коллекцию, используйте цикл for, работайте с копией через ToList() или накапливайте изменения отдельно.
#dotnet_challenge
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤4👾2
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔4🥱1
Правильный ответ:
Многие ожидают увидеть 20, но здесь есть важная деталь:
Counter — это struct, а значит значимый тип (value type).
Когда выполняется:
var c2 = c1;
создаётся не ссылка на объект, а полная копия структуры.
После этой строки в памяти фактически находятся два независимых экземпляра:
c1 -> Value = 10 c2 -> Value = 10
Затем меняется только копия:
c2.Value = 20;
Теперь состояние выглядит так:
c1 -> Value = 10 c2 -> Value = 20
Поэтому вывод будет: 10
Для сравнения, если бы Counter был классом:
public class Counter
{
public int Value;
}
то после:
var c2 = c1;
обе переменные ссылались бы на один и тот же объект, и результатом был бы уже 20.
#dotnet_challenge
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱15👍3❤🔥1
double a = 0.1 + 0.2;
Console.WriteLine(a == 0.3);
Console.WriteLine(a);
👇 Пишите свои варианты в комментариях.
#dotnet_challenge
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱9😁7❤2
0.30000000000000004
Почему:
Тип double использует стандарт IEEE 754 и хранит числа в двоичном формате. Значения 0.1 и 0.2 нельзя представить в нём точно, поэтому после сложения получается число, немного отличающееся от 0.3.
Если нужна точная работа с десятичными дробями (например, денежные расчёты), используйте decimal.
А значения типа double сравнивайте с допуском:
Math.Abs(a - b) < epsilon
#dotnet_challenge
Please open Telegram to view this post
VIEW IN TELEGRAM
😁7❤3🥰3🥱3