В коде спрятан намёк на обновление, которое принёс нам C# 10 версии. Может публичные поля? Или конструктор.. Явно что-то связанное со структурой.
👉 Ответ 👈
📍 Навигация: Вакансии • Задачи • Собесы
#dotnet_challenge
Please open Telegram to view this post
VIEW IN TELEGRAM
Сделали сниппет кода на манер JavaScript, складываем число и строку. В C#, в отличие от JS, это операция предсказуемая и можно догадаться о результате.
📍 Навигация: Вакансии • Задачи • Собесы
#dotnet_challenge
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔 Вопрос с собеса
Классика интервью:
На собесе часто ловят на вопросе «когда использовать». Многие говорят просто «для безопасности», но это неправильный ответ.
Правильный ответ, который ждут на собесе ждёт только вас в нашем канале с вопросами с собесов
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека шарписта
#dotnet_challenge
Классика интервью:
Что такое readonly struct и чем он отличается от обычной структуры
На собесе часто ловят на вопросе «когда использовать». Многие говорят просто «для безопасности», но это неправильный ответ.
Правильный ответ, который ждут на собесе ждёт только вас в нашем канале с вопросами с собесов
📍 Навигация: Вакансии • Задачи • Собесы
#dotnet_challenge
Please open Telegram to view this post
VIEW IN TELEGRAM
Предлагаем ответить на вопрос с собеседования:
Что делает оператор using в C#
Почти каждый C#-разработчик писал такой код сотни раз:
using (var connection = new SqlConnection(connectionString))
{
// работаем с ресурсом
}
На первый взгляд — просто синтаксический сахар.
Подсказка:
📍 Навигация: Вакансии • Задачи • Собесы
#dotnet_challenge
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱16👍6
Эндпоинт возвращает тысячи записей. Что происходит, если просто сделать
return Ok(list)?Правильно — всё копится в памяти. Сервер ждёт, пока соберётся весь ответ, только потом отправляет клиенту. При высокой нагрузке это убивает и память, и растёт задержка.
Возникает вопрос:
Как не держать весь ответ в памяти и какими инструментами воспользоваться?
Данные можно отдавать данные по мере готовности, без лишних аллокаций и с контролем над потоком.
📍 Навигация: Вакансии • Задачи • Собесы
#dotnet_challenge
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8
Представьте: TTL кэша истёк, и сотни запросов одновременно обнаружили пустой кэш. Все ломятся в базу за одним и тем же значением. Это называется cache stampede.
Как бы вы это решили? Какой примитив синхронизации выбрать, чтобы первый запрос шёл в БД, а остальные ждали его результата?
Подумайте и проверьте свой ответ здесь: @csharp_interview_lib
📍 Навигация: Вакансии • Задачи • Собесы
#dotnet_challenge
Please open Telegram to view this post
VIEW IN TELEGRAM
На технических интервью по C# для джунов и иногда для мидлов вопрос про перегрузки и переопределения задаётся одним из первых.
Оба механизма связаны с методами и их именами. Оба выглядят похоже на первый взгляд. Но работают они в совершенно разных ситуациях и решают разные задачи.
Разница между ними принципиальная. Один работает на уровне компиляции, другой на уровне выполнения программы. Один не требует наследования, другой без него невозможен.
📍 Навигация: Вакансии • Задачи • Собесы
#dotnet_challenge
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱4👍2
Кажется, что
virtual и private должны просто работать вместе. Один говорит «этот метод можно переопределить», другой говорит «этот метод виден только внутри класса».Подсказка:
Ответ:
📍 Навигация: Вакансии • Задачи • Собесы
#dotnet_challenge
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱16🌚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❤3👾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
🥱8😁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
😁6🥰3🥱3❤2