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

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

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

Работать у нас: https://job.proglib.io/

Наши каналы: https://yangx.top/proglibrary/9197
加入频道
💡 Что такое оператор перехода в C#?

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

Библиотека собеса по С#
Please open Telegram to view this post
VIEW IN TELEGRAM
✍🏻 Чем отличаются интерфейсы от абстрактных классов в C#?

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

1. Отношение к классам-наследникам: Абстрактный класс может иметь как абстрактные, так и конкретные (реализованные) методы. Интерфейс же предоставляет только определения методов. Класс может наследоваться только от одного абстрактного класса, но может реализовывать несколько интерфейсов.

2. Реализация: Абстрактным классам разрешено иметь переменные экземпляра и иметь реализацию методов. Интерфейсы могут иметь только методы (и свойства) без реализации, только сигнатуры. Класс, реализующий интерфейс, должен предоставить реализацию всех методов и свойств интерфейса.

3. Использование: Абстрактные классы применяются, когда некоторые базовые методы и свойства должны быть доступны и переопределены в классах-наследниках. Интерфейсы используются для создания контракта, который должны выполнить классы, обеспечивая использование полиморфизма.

Оба механизма полезны в разных сценариях разработки. Выбор между использованием абстрактных классов и интерфейсов зависит от конкретных требований проекта.


Библиотека собеса по С#
✍🏻 Расскажите, какова функция Inspector в Unity 3D

Инспектор — это контекстно-зависимая панель, на которой вы можете настроить положение, масштаб и поворот игровых объектов, перечисленных на панели иерархии.


Библиотека собеса по С#
🪄 Визуальные вычисления в Power BI: прокачиваем условное форматирование

Теперь настраивать условное форматирование в Power BI можно без сложных DAX-формул!

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

⭐️ Пора сделать отчеты действительно интерактивными!

🔗 Ссылка на статью: https://proglib.io/sh/lsb0fEuYSv

Библиотека дата-сайентиста
Please open Telegram to view this post
VIEW IN TELEGRAM
✔️ Как в C# поля и свойства отличаются друг от друга?

В C# поля и свойства имеют различия друг от друга. Поле — это член класса или объекта, предназначенный для хранения данных, в то время как свойство — это член класса, который предоставляет методы для чтения, записи и вычисления значения соответствующего поля.

Библиотека собеса по С#
Что означает «A» в ACID?

Это свойство означает, что транзакция — неделимая единица работы: либо выполняется полностью, либо не выполняется вообще.

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


🐸Библиотека собеса по С#
Please open Telegram to view this post
VIEW IN TELEGRAM
🕸 Как работает протокол 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