Библиотека собеса по C# | вопросы с собеседований
5.66K subscribers
218 photos
2 videos
1 file
224 links
Вопросы с собеседований по C# и ответы на них.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/4c2f1c3b

Для обратной связи: @proglibrary_feeedback_bot

Наши каналы: https://yangx.top/proglibrary/9197
加入频道
🕸 Как работает протокол HTTP/2: основные принципы и преимущества в сравнении с HTTP/1.1

​HTTP/2 — это как переход с однополосной дороги HTTP/1.1 на скоростное шоссе: быстрее, эффективнее и без пробок.

Узнайте, как новые технологии ускоряют загрузку веб-страниц и улучшают работу приложений.

➡️ Читать статью

🐸Библиотека шарписта
Please open Telegram to view this post
VIEW IN TELEGRAM
Что такое мультикаст-делегат

Мультикаст-делегат — это делегат, который может ссылаться на несколько методов одновременно. При вызове такого делегата все методы в его списке вызовов выполняются последовательно.

🐸Библиотека собеса по С#
Please open Telegram to view this post
VIEW IN TELEGRAM
Что означает «C» в ACID?

Это свойство гарантирует, что транзакция всегда переводит систему из одного валидного состояния в другое.

Например: перевод денег с одного счета на другой, система остаётся в корректном состоянии: сумма на одном счете уменьшилась, а на другом увеличилась. Если транзакция не завершится, изменения не будут внесены, и система останется в исходном валидном состоянии.


🐸Библиотека собеса по С#
Please open Telegram to view this post
VIEW IN TELEGRAM
🎮🔌 4 cамых популярных фреймворка для разработки онлайн-игр на Unity

Сетевое взаимодействие — это сердце многопользовательской игры, и правильный выбор фреймворка это решающий фактор для проекта.

Посмотрите обзор самых популярных фреймворков для разработки онлайн-игр на Unity и выберите тот, который подходит для вашего проекта.

➡️ Читать обзор

🐸Библиотека шарписта
Please open Telegram to view this post
VIEW IN TELEGRAM
✍🏼 Расскажите про конкурентные коллекции в C#?

Конкурентные коллекции в C# предназначены для безопасного доступа к данным в многозадачных приложениях. Они позволяют нескольким потокам одновременно читать и изменять данные, исключая необходимость ручной синхронизации и минимизируя блокировки.

ConcurrentQueue — потокобезопасная очередь (FIFO), отлично подходит для сценариев с последовательной обработкой;
ConcurrentStack — потокобезопасный стек (LIFO), полезен, когда важен обратный порядок обработки;
ConcurrentBag — коллекция без определённого порядка, оптимальна для хранения данных в локальном кэше потоков;
ConcurrentDictionarу — потокобезопасный словарь, замена обычному Dictionary в многопоточном окружении; и наконец,
BlockingCollection — высокоуровневая обёртка над другими коллекциями, поддерживающая блокировки и ограничение размера, идеально подходит для реализации паттерна "продюсер-потребитель"


🐸Библиотека собеса по С#
Please open Telegram to view this post
VIEW IN TELEGRAM
Что означает «I» в ACID?

Это свойство означает, что каждая транзакция выполняется независимо от других, даже если они происходят одновременно.

Например: два пользователя одновременно пытаются обновить информацию о товаре в магазине, то изменения одного пользователя не могут "перемешиваться" с действиями другого. Транзакции не видят промежуточные результаты других транзакций, пока они не будут завершены. Это гарантирует, что одна транзакция не повлияет на другую до её завершения.


🐸Библиотека собеса по С#
Please open Telegram to view this post
VIEW IN TELEGRAM
👀 Как оптимизировать ситуацию, когда к таблице много join`ов?

Для оптимизации запросов с множественными JOIN-ами важно использовать индексы на полях JOIN-ов, избегать избыточных соединений, заменять несколько JOIN-ов на подзапросы и разбивать запросы на этапы с меньшим количеством JOIN-ов. Агрегация и фильтрация данных перед JOIN-ами также помогут ускорить запрос.
Правильный выбор типа JOIN-а, например, INNER JOIN вместо LEFT JOIN, тоже важен для производительности.


🐸Библиотека собеса по С#
Please open Telegram to view this post
VIEW IN TELEGRAM
Что означает «D» в ACID?

Это свойство гарантирует, что как только транзакция завершена, её изменения будут сохранены, даже если система внезапно выйдет из строя.

Допустим, вы перевели деньги через интернет-банк, и транзакция завершилась успешно. Даже если сервер после этого упал, ваш перевод всё равно будет сохранён. Это означает, что данные, записанные в процессе транзакции, не потеряются и останутся целыми.


🐸Библиотека собеса по С#
Please open Telegram to view this post
VIEW IN TELEGRAM
👀 Какую проблему решает ThreadPool

ThreadPool решает проблему управления потоками в многозадачных приложениях. Он помогает оптимизировать производительность за счет повторного использования уже созданных потоков, чтобы избежать дорогих операций по созданию и уничтожению потоков при каждой задаче.
Основная цель ThreadPool — эффективно управлять количеством потоков, чтобы не перегружать систему и при этом поддерживать высокую производительность. Когда задача добавляется в пул потоков, ThreadPool выбирает свободный поток или создает новый, если их недостаточно. Это позволяет избежать утечек памяти и перегрузки, которые могут возникнуть при прямом управлении потоками вручную.

Это особенно полезно для приложений с большим количеством короткоживущих задач, таких как веб-сервисы или серверные приложения, где создание нового потока для каждой задачи может сильно снизить производительность.


🐸Библиотека собеса по С#
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔📝 Псевдокод: когда преподы не шарят, а ты в тупике

Псевдокод может быть настоящим головняком, особенно если требования к нему кажутся непонятными или не совпадают с тем, что вы видите в реальной практике программирования.

Узнайте, как сделать псевдокод полезным инструментом, а не дополнительной нагрузкой.

➡️ Читать статью

🐸Библиотека шарписта
Please open Telegram to view this post
VIEW IN TELEGRAM
Где будет размещен значимый тип данных, если он объявлен внутри класса

Если у класса есть значимый тип данных (например, int, double, struct), то он будет храниться в области памяти, предназначенной для экземпляра этого класса, то есть в heap (если класс создается с помощью оператора new) или в stack (если класс создается локально). Однако важно отметить, что сам значимый тип данных будет храниться непосредственно внутри объекта, на который указывает ссылка.

Например:
Если класс является ссылочным типом (class), то сам объект класса будет размещен в куче (heap), но значимый тип данных будет храниться в этом объекте в том же месте.
Если класс является структурой (struct), то данные будут храниться в том месте, где создается экземпляр структуры (например, в стеке, если структура объявлена локально).

Таким образом, где именно будет храниться значимый тип данных, зависит от того, является ли класс ссылочным типом или значимым типом.


🐸Библиотека собеса по С#
Please open Telegram to view this post
VIEW IN TELEGRAM
Можно ли в рамках lock и использовать await

Нет, в рамках оператора lock нельзя использовать await.

Когда вы используете lock, поток блокируется до тех пор, пока не завершится выполнение кода внутри блока. Операции с await требуют освобождения потока, чтобы он мог продолжить выполнение других задач, что несовместимо с блокировкой потока через lock.

Если вы хотите использовать асинхронные операции с ожиданием, следует использовать другие механизмы синхронизации, такие как SemaphoreSlim, которые поддерживают асинхронное ожидание.


🐸Библиотека собеса по С#
Please open Telegram to view this post
VIEW IN TELEGRAM
🎮 Дорожная карта Unity-разработчика 2025: с нуля до джуна

Если вы хотите создать свою игру с нуля или систематизировать знания, эта дорожная карта — идеальный старт.

Рассмотрели все важные этапы: от основ языка C# до работы с физикой, интерфейсом и сторонними SDK. Шаг за шагом объясняются ключевые темы, такие как ООП, паттерны проектирования, корутины и оптимизация.

В конце бонус — подборка полезных ресурсов.

➡️ Пройти путь по карте

🐸Библиотека шарписта
Please open Telegram to view this post
VIEW IN TELEGRAM
Как ViewModel взаимодействует с Model в паттерне MVVM

ViewModel взаимодействует с Model, запрашивая и преобразуя данные для отображения в UI. Она использует привязку данных для обновления UI и обрабатывает действия пользователя, инициируя изменения в Model. ViewModel служит посредником между View и Model, обеспечивая логику преобразования данных, но не содержащую логику представления. Это позволяет разделить ответственность: Model управляет данными, View — отображением, а ViewModel — взаимодействием между ними.

🐸Библиотека собеса по С#
Please open Telegram to view this post
VIEW IN TELEGRAM
👀 Как работает командная логика в MVVM и что такое ICommand

В паттерне MVVM командная логика реализуется через интерфейс ICommand, который связывает действия пользователя (например, нажатие кнопки) с выполнением бизнес-логики в ViewModel.

ICommand имеет два метода:
• Execute — выполняет команду.
• CanExecute — проверяет, можно ли выполнить команду, например, активировать или деактивировать кнопку.

Когда пользователь выполняет действие, вызывается Execute, а CanExecute управляет доступностью команды. Это разделение логики между View и ViewModel улучшает тестируемость и поддерживаемость кода, поскольку UI не содержит бизнес-логики.


🐸Библиотека собеса по С#
Please open Telegram to view this post
VIEW IN TELEGRAM
🎉🐙🐱 20 лет Git: все такой же необычный, все такой же великолепный

Легендарному Git стукнуло 20! Вспоминаем, как проект, который Линус Торвальдс называл «тупым менеджером контента», стал незаменимым инструментом для всех, кто хоть раз писал код или даже просто хранил файлы.

Погружаемся в историю, эволюцию и влияние Git на индустрию разработки.

➡️ Читать статью

🐸 Библиотека программиста
Please open Telegram to view this post
VIEW IN TELEGRAM
👀 В чем разница между Eager loading и Lazy Loading в EF?

Eager loading позволяет заранее определить, какие связанные данные необходимо загрузить во время выполнения запроса. Entity Framework преобразует метод Include() в JOIN, что позволяет выполнить всего один запрос к базе данных.
С другой стороны, Lazy loading подразумевает автоматическую загрузку связанных данных при обращении к навигационному свойству, но это может привести к значительным задержкам в определенных ситуациях. Кроме того, Lazy loading может вызвать проблему n+1, когда требуется выполнить множество дополнительных запросов.


🐸Библиотека собеса по С#
Please open Telegram to view this post
VIEW IN TELEGRAM
Что такое веб-служба .NET?

Веб-сервисы — это повторно используемые компоненты, которые позволяют разработчикам публиковать функцию приложения через Интернет, чтобы сделать его доступным и напрямую взаимодействовать с другими приложениями и объектами в нем. Веб-службы взаимодействуют с помощью стандартных веб-протоколов и форматов данных, включая HTTP, XML и SOAP, что позволяет им подключаться между различными платформами и языками программирования.

🐸Библиотека собеса по С#
Please open Telegram to view this post
VIEW IN TELEGRAM
👀 В чем разница между Eager loading и Lazy Loading в EF?

Eager loading позволяет заранее определить, какие связанные данные необходимо загрузить во время выполнения запроса. Entity Framework преобразует метод Include() в JOIN, что позволяет выполнить всего один запрос к базе данных.
С другой стороны, Lazy loading подразумевает автоматическую загрузку связанных данных при обращении к навигационному свойству, но это может привести к значительным задержкам в определенных ситуациях. Кроме того, Lazy loading может вызвать проблему n+1, когда требуется выполнить множество дополнительных запросов.


🐸Библиотека собеса по С#
Please open Telegram to view this post
VIEW IN TELEGRAM
Что такое Entity Framework в C#?

Как ответить: Опишите Entity Framework как Object-Relational Mapping (ORM) фреймворк, упрощающий доступ и манипуляцию базами данных. Объясните, что он даёт разработчикам возможность работать с базами данных, используя принципы ООП, и предоставляет такие функции, как автоматический маппинг, поддержка LINQ и отслеживание изменений.

Пример ответа: «Entity Framework — это ORM-фреймворк, созданный Microsoft. Он позволяет разработчикам работать с базами данных с помощью принципов ООП вместо написания необработанных SQL запросов. Entity Framework автоматически сопоставляет таблицы базы данных с классами и даёт такие функции, как поддержка LINQ, отслеживание изменений и CRUD операции. Он упрощает доступ и изменение баз данных в приложениях C#».

На что обращают внимание: на кандидатов, которые могут дать точное и полное объяснение Entity Framework, включая его назначение, главные особенности и преимущества доступа и управления базами данных.


🐸Библиотека собеса по С#
Please open Telegram to view this post
VIEW IN TELEGRAM