45 вопросов для подготовки к собеседованию по C#
Реальные вопросы, не сгенерированные ИИ
1. В чём разница между
2. Для чего используется ключевое слово
3. Перечисли все модификаторы доступа для типов.
4. В чём разница между
5. Когда вызывается статический конструктор?
6. Как создать метод расширения?
7. Поддерживает ли C# множественное наследование классов?
8. Объясни, что такое упаковка (
9. Что такое куча (heap) и стек (stack)?
10. В чём разница между
11. Как создать дату с заданным часовым поясом?
12. Как изменить текущую культуру (
13. В чём разница между
14. Какова цель метода
15. Создаёт ли метод LINQ
16. Объясни отложенное выполнение (deferred execution) в LINQ.
17. Как работает
18. Какие преимущества дают замороженные коллекции (
19. Назови потокобезопасные коллекции.
20. Как реализовать
21. Перечисли все способы создания нового потока.
22. Как выполнить несколько
23. Объясни разницу между наследованием и композицией.
24. В чём отличие
25. Для чего используются
26. Назови две формы
27. Для чего используется ключевое слово
28. Какова цель первичных конструкторов (
29. Объясни, как работают nullable reference types (nullable-ссылочные типы).
30. Есть ли ограничения по возвращаемому типу у
31. Для чего используется
32. Сколько поколений у сборщика мусора (
33. Для чего используется класс
34. Какой код компилятор генерирует для автосвойств (
35. Как реализуется полиморфизм в C#?
36. Как реализуется инкапсуляция в C#?
37. В чём разница между параметрами
38. Как работает оператор
39. Что такое
40. Объясни перегрузку и переопределение методов.
41. В чём разница между
42. Что такое expression trees в LINQ?
43. Как работает обработка исключений в C#?
44. Назови все способы повторной генерации исключения (rethrow).
45. Объясни, что такое обобщения (
👉 @KodBlog
Реальные вопросы, не сгенерированные ИИ
1. В чём разница между
readonly
и const
?2. Для чего используется ключевое слово
sealed
?3. Перечисли все модификаторы доступа для типов.
4. В чём разница между
interface
и abstract class
?5. Когда вызывается статический конструктор?
6. Как создать метод расширения?
7. Поддерживает ли C# множественное наследование классов?
8. Объясни, что такое упаковка (
boxing
) и распаковка (unboxing
).9. Что такое куча (heap) и стек (stack)?
10. В чём разница между
string
и StringBuilder
?11. Как создать дату с заданным часовым поясом?
12. Как изменить текущую культуру (
CultureInfo
)?13. В чём разница между
HashSet
и Dictionary
?14. Какова цель метода
ToLookup
?15. Создаёт ли метод LINQ
Cast<T>
новый объект?16. Объясни отложенное выполнение (deferred execution) в LINQ.
17. Как работает
ImmutableList
?18. Какие преимущества дают замороженные коллекции (
Frozen collections
)?19. Назови потокобезопасные коллекции.
20. Как реализовать
lock
в асинхронном коде?21. Перечисли все способы создания нового потока.
22. Как выполнить несколько
async
-задач одновременно?23. Объясни разницу между наследованием и композицией.
24. В чём отличие
class
, record
и struct
?25. Для чего используются
ref struct
?26. Назови две формы
record
.27. Для чего используется ключевое слово
with
?28. Какова цель первичных конструкторов (
Primary Constructors
)?29. Объясни, как работают nullable reference types (nullable-ссылочные типы).
30. Есть ли ограничения по возвращаемому типу у
switch
-выражений?31. Для чего используется
yield return
?32. Сколько поколений у сборщика мусора (
GC
)?33. Для чего используется класс
Interlocked
?34. Какой код компилятор генерирует для автосвойств (
auto-properties
)?35. Как реализуется полиморфизм в C#?
36. Как реализуется инкапсуляция в C#?
37. В чём разница между параметрами
ref
и out
?38. Как работает оператор
using
?39. Что такое
delegate
и как он используется?40. Объясни перегрузку и переопределение методов.
41. В чём разница между
IEnumerable
и IQueryable
?42. Что такое expression trees в LINQ?
43. Как работает обработка исключений в C#?
44. Назови все способы повторной генерации исключения (rethrow).
45. Объясни, что такое обобщения (
generics
).Please open Telegram to view this post
VIEW IN TELEGRAM
❤25🔥9👍6🌭1
Эта фича показала мне, насколько PostgreSQL крут.
Думаю, тебе тоже понравится.
В одном проекте мне нужно было за одну операцию вставить 5 тысяч записей.
Хранилищем был Postgres, и, естественно, всё должно было работать быстро.
После небольшого ресёрча я наткнулся на команду
Эта команда позволяет выполнять массовую вставку данных напрямую в базу.
Метод
Так как при этом сохраняются типы данных без конвертации, лучше использовать
Что скажешь?🙂
👉 @KodBlog
Думаю, тебе тоже понравится.
В одном проекте мне нужно было за одну операцию вставить 5 тысяч записей.
Хранилищем был Postgres, и, естественно, всё должно было работать быстро.
После небольшого ресёрча я наткнулся на команду
COPY
.Эта команда позволяет выполнять массовую вставку данных напрямую в базу.
Метод
BINARY COPY
отправляет данные в бинарном формате, который Npgsql
декодирует, и после вызова Complete()
данные сохраняются в БД.Так как при этом сохраняются типы данных без конвертации, лучше использовать
NpgsqlDbType
— он позволяет явно указать нужный тип без неоднозначностей.Что скажешь?
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15❤4🤔4
Лучшая фича в
Server-Sent Events (SSE)
Простая альтернатива SignalR👇
Если тебе нужно реализовать обновления в реальном времени в .NET-приложении — с сервера на клиент, есть несколько подходов:
• Polling — фронтенд регулярно запрашивает сервер на наличие новых данных
• SignalR — клиент подписывается на событие, сервер пушит его через WebSockets
• Server-Sent Events (уже доступны в превью .NET 10)
Постоянный опрос каждые несколько секунд может перегружать сервер и тратить трафик впустую, а WebSockets через SignalR — это избыточно для простых однонаправленных обновлений.
Server-Sent Events (SSE) — это легковесный и стабильный способ стримить данные от сервера к клиенту в одну сторону, без всей сложности двусторонних протоколов.
В этой статье покажут, как сделать "Live Stock Market" — обновления котировок в реальном времени на сервере и клиенте.
➡️ Как работает SSE и зачем это нужно
➡️ Реализация SSE-эндпойнта с помощью Minimal API
➡️ Тестирование SSE-стрима через HTTP-запрос (HTTP Request file) в IDE
➡️ Создание простого фронтенда для проверки SSE
➡️ Ключевые отличия между SSE и SignalR (WebSockets)
👉 @KodBlog
ASP.NET Core 10
на сегодняшний деньServer-Sent Events (SSE)
Простая альтернатива SignalR
Если тебе нужно реализовать обновления в реальном времени в .NET-приложении — с сервера на клиент, есть несколько подходов:
• Polling — фронтенд регулярно запрашивает сервер на наличие новых данных
• SignalR — клиент подписывается на событие, сервер пушит его через WebSockets
• Server-Sent Events (уже доступны в превью .NET 10)
Постоянный опрос каждые несколько секунд может перегружать сервер и тратить трафик впустую, а WebSockets через SignalR — это избыточно для простых однонаправленных обновлений.
Server-Sent Events (SSE) — это легковесный и стабильный способ стримить данные от сервера к клиенту в одну сторону, без всей сложности двусторонних протоколов.
В этой статье покажут, как сделать "Live Stock Market" — обновления котировок в реальном времени на сервере и клиенте.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤19🔥12👍7
Я работаю с перечислениями каждый день.
И вот 4 лучших практики, которыми я пользуюсь, чтобы код в проекте оставался чистым:
🔸 Явно указывать тип хранения
🔸 Использовать атрибуты
🔸 Хелпер-метод для получения значения из атрибута
🔸 Безопасный парсинг через
А что бы ты добавил к этому списку?
👉 @KodBlog
И вот 4 лучших практики, которыми я пользуюсь, чтобы код в проекте оставался чистым:
Description
для отображаемых имёнDescription
TryParse
А что бы ты добавил к этому списку?
Please open Telegram to view this post
VIEW IN TELEGRAM
❤20👍5🤨1
Entity Framework 10 будет поддерживать именованные фильтры запросов
Да, это означает, что несколько фильтров теперь можно применять одновременно, начиная с EF 10+ — при условии, что они именованные.👍
👉 @KodBlog
Да, это означает, что несколько фильтров теперь можно применять одновременно, начиная с EF 10+ — при условии, что они именованные.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12❤5🤯2
This media is not supported in your browser
VIEW IN TELEGRAM
Необходимый репозиторий с сотнями бесплатных API для практики программирования и создания проектов.
Обновляется еженедельно и разделён по темам🔫
⇢ http://github.com/public-apis-dev/public-apis
👉 @KodBlog
Обновляется еженедельно и разделён по темам
⇢ http://github.com/public-apis-dev/public-apis
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16❤5
Правильный способ построения асинхронных API в .NET
Большинство API работают по простому шаблону:
🔸 Клиент отправляет запрос
🔸 Сервер выполняет работу
🔸 Сервер возвращает ответ
Такой подход отлично работает для быстрых операций — например, получения данных или простых обновлений.
А что насчёт длительных операций?
Речь о задачах вроде:
> обработки больших файлов
> генерации отчётов
> конвертации видео
Такие процессы могут занимать от нескольких минут до часов.
Вот как можно правильно строить асинхронные API: читать
Как сообщить клиенту, что его запрос обработан?
Есть два подхода:
🔸 PULL — клиент опрашивает API, чтобы узнать статус
🔸 PUSH — сервер сам уведомляет клиента (через WebSocket, email и т.д.)
👉 @KodBlog
Большинство API работают по простому шаблону:
Такой подход отлично работает для быстрых операций — например, получения данных или простых обновлений.
А что насчёт длительных операций?
Речь о задачах вроде:
> обработки больших файлов
> генерации отчётов
> конвертации видео
Такие процессы могут занимать от нескольких минут до часов.
Вот как можно правильно строить асинхронные API: читать
Как сообщить клиенту, что его запрос обработан?
Есть два подхода:
Please open Telegram to view this post
VIEW IN TELEGRAM
❤11👍2
𝟭𝟬 шагов для оптимизации запросов в EF Core
Даже сеньоры знают не все из них
Допустим, у тебя в проде тормозит EF Core-запрос.
Как бы ты исследовал и починил проблему?
Вот пошаговый подход: ( смотри иллюстрации )
А вот как начать работу с OpenTelemetry:
↳ ссылка
Как Антон оптимизировал реальный запрос EF Core Query с 30 секунд до 30 миллисекунд:
↳ ссылка
👉 @KodBlog
Даже сеньоры знают не все из них
Допустим, у тебя в проде тормозит EF Core-запрос.
Как бы ты исследовал и починил проблему?
Вот пошаговый подход: ( смотри иллюстрации )
А вот как начать работу с OpenTelemetry:
↳ ссылка
Как Антон оптимизировал реальный запрос EF Core Query с 30 секунд до 30 миллисекунд:
↳ ссылка
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤11👍2
Я ждал эту фичу 4 года и вот наконец она появляется в EF Core 10
EF Core 10 приносит серьёзное улучшение в метод
Раньше, чтобы сделать динамическое обновление, нужно было вручную собирать сложные и склонные к ошибкам expression tree'и.
Например: ты хочешь обновить поле
Раньше это значило писать довольно громоздкую логику вручную через expression API.
✅ Теперь — всё стало намного проще:
↳ можно просто использовать обычную лямбду, внутри которой разрешены
это улучшение делает код гораздо читаемее, поддерживаемее и снижает риск багов, связанных с ручной генерацией выражений.
Ждёшь эту фичу так же, как и я?
Дай знать, что думаешь👍
👉 @KodBlog
EF Core 10 приносит серьёзное улучшение в метод
ExecuteUpdateAsync
Раньше, чтобы сделать динамическое обновление, нужно было вручную собирать сложные и склонные к ошибкам expression tree'и.
Например: ты хочешь обновить поле
Views
у блога и, при определённом условии, ещё и Name
.Раньше это значило писать довольно громоздкую логику вручную через expression API.
↳ можно просто использовать обычную лямбду, внутри которой разрешены
if
и другие управляющие конструкции.это улучшение делает код гораздо читаемее, поддерживаемее и снижает риск багов, связанных с ручной генерацией выражений.
Ждёшь эту фичу так же, как и я?
Дай знать, что думаешь
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥23❤2