Библиотека собеса по C# | вопросы с собеседований
5.57K subscribers
267 photos
6 videos
1 file
564 links
Вопросы с собеседований по C# и ответы на них.

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

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

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

Наши каналы: https://t.me/proglibrary/9197
Download Telegram
Что такое архитектура REST?

REST означает REpresentational State Transfer (передача репрезентативного состояния). REST — это архитектурный стиль, который не следует никакому строгому стандарту, но следует шести ограничениям, определенным Роем Филдингом в 2000 году. Эти ограничения: Единый интерфейс, Клиент-сервер, Без сохранения состояния, Кэшируемый, Многоуровневая система, Код по требованию. REST не ограничивается XML, и выбор того, какой тип носителя использовать, например XML, JSON, Обычный текст остается за реализатором. Более того, REST может использовать протокол SOAP, но SOAP не может использовать REST. REST прост в реализации и требует меньшей пропускной способности, например, смартфонов.

Архитектурные ограничения RESTful API: Ниже перечислены шесть архитектурных ограничений, которые делают любую веб-службу:

✔️ Единый интерфейс
✔️ Без сохранения состояния
✔️ Кэшируемый
✔️ Клиент-сервер
✔️ Многоуровневая система
✔️ Код по требованию


Библиотека собеса по С#
👍1
✍🏻 Каковы различные способы перегрузки метода?

Различные типы данных параметров, разное количество параметров, разный порядок параметров.

Библиотека собеса по С#
2
Можно ли запретить наследование от какого-то класса?

Да, можно. Для того, чтобы запретить наследоваться от класса необходимо объявить его с модификатором sealed.

Например, если мы не хотим чтобы от класса SomeClass можно было наследоваться, то объявляем его так:

sealed class SomeClass
{
// Объявление класса
}

В качестве альтернативы, можно запретить и создание экземпляров этого класса с помощью ключевого слова static (под капотом, будет использована пара модификаторов: abstract sealed).

static class Helper
{
// допустимы лишь статические методы
}


🐸Библиотека собеса по С#
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4
Что такое RedirectPermanent в ASP.Net?

Перегрузка метода RedirectPermanent(String) дает код статуса HTTP 301 в реакции и включает URL для перенаправления запроса. Код статуса HTTP 301 — это стандартный код в реакции HTTP. Он показывает, что существует длительное перенаправление, и дает область перенаправления.

🐸Библиотека собеса по С#
Please open Telegram to view this post
VIEW IN TELEGRAM
«Этот манёвр будет стоить нам 51 год...»

— или один заваленный оффер в BigTech из-за плавающих знаний в базе. На собеседованиях по .NET всё чаще спрашивают не только синтаксис, но и фундаментальные алгоритмы с архитектурой. Пока рынок несётся вперёд, старые цены в Proglib Academy скоро останутся в прошлом.

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

Актуальные программы:

— Разработка ИИ-агентов
— Математика для разработки AI-моделей
— ML для старта в Data Science
— Математика для Data Science
— Специалист по ИИ
— Алгоритмы и структуры данных
— Программирование на Python
— Основы IT для непрограммистов
— Архитектуры и шаблоны проектирования

Забирайте обучение по старой цене, чтобы через год не смотреть на свой оффер со слезами из-за книжного шкафа.

Подготовиться к офферу выгодно

⚠️ Цены вырастут уже 19 января
Можно ли изменить значение переменной во время отладки приложения?

Да, значения переменных можно изменять во время отладки.

🐸Библиотека собеса по С#
Please open Telegram to view this post
VIEW IN TELEGRAM
Как бы вы настроили систему диалогов для NPC в Unity?

Для настройки диалоговой системы для NPC в Unity можно следовать следующим шагам:
1. Определение структуры диалога: Создайте структуру данных для хранения диалогов. Это может быть класс или структура, содержащая текст диалога, варианты ответов и ссылки на следующие реплики.
2. Создание интерфейса: Разработайте пользовательский интерфейс для отображения диалогов. Используйте UI элементы, такие как текстовые поля для отображения реплик и кнопки для выбора ответов.
3. Скрипт NPC: Напишите скрипт для NPC, который будет инициировать диалог при взаимодействии с игроком. Этот скрипт должен загружать соответствующий диалог из вашей структуры данных.
4. Система управления диалогом: Создайте класс, который будет управлять логикой диалога. Он должен обрабатывать выбор игрока, обновлять текст на экране и переходить к следующей реплике.
5. Сохранение и загрузка диалогов: Если диалоги сложные, можно использовать JSON или Scriptable Objects для хранения и загрузки данных диалога.
6. Тестирование и доработка: Протестируйте систему, чтобы убедиться, что все работает корректно, и внесите необходимые изменения для улучшения взаимодействия.
Эти шаги помогут вам создать базовую диалоговую систему для NPC в Unity.


🐸Библиотека собеса по С#
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🌚1
Можете ли вы объяснить, что означает LOD (уровень детализации) в Unity?

LOD (Level of Detail) в Unity — это метод, используемый для оптимизации производительности рендеринга путем снижения сложности 3D-моделей по мере их удаления от камеры. Это помогает поддерживать баланс между визуальным качеством и производительностью. Система LOD Unity позволяет разработчикам создавать несколько версий модели с разным уровнем детализации.

🐸Библиотека собеса по С#
Please open Telegram to view this post
VIEW IN TELEGRAM
Можете ли вы описать, как бы вы реализовали регистрацию ошибок в приложении .NET?

Реализация регистрации ошибок в приложении .NET обычно включает использование библиотек регистрации, таких как log4net, NLog или встроенной Microsoft.Extensions.Logging. Эти библиотеки предоставляют настраиваемые механизмы, которые могут регистрировать ошибки в различных местах назначения, таких как файлы, базы данных или внешние службы.

Разработчики должны настроить библиотеку регистрации в коде запуска приложения и использовать различные уровни регистрации (например, Debug, Info, Warn, Error, Fatal) для сбора и классификации логов соответствующим образом.


🐸Библиотека собеса по С#
Please open Telegram to view this post
VIEW IN TELEGRAM
Пятница, 19:00. Худшее время для деплоя, но идеальное, чтобы подтянуть архитектуру ИИ-систем и не поплыть на вопросе про RAG на интервью.

Подтяните свои знания перед следующим интервью.

Разберём на открытом уроке:

— механизмы RAG против Fine-tuning;
— как хранить и искать данные в векторных хранилищах;
— пример кода для «чтения» PDF-файлов нейронкой.

Один из спикеров — Алексей Яндутов, ML-инженер в поиске Яндекса.

Это вводный урок курса «Разработка AI-агентов». Ориентируемся на практику.

Записаться на урок
Вы планируете вернуть из публичного API ValueTask<T> ради снижения аллокаций. Какие риски это несёт для потребителей и как правильно поступить?

ValueTask<T> допускает только одно ожидание и плохо сочетается с повторным await/композицией (WhenAll, кеширование результата). Его нельзя хранить в полях и возвращать повторно. В публичных API обычно оставляют Task<T>, а ValueTask<T> используют только на горячих путях, где >90% завершений синхронные; при необходимости многократно ждать/комбинировать — сразу делать .AsTask().

Библиотека собеса по С#
👍8
В продакшене .NET-сервис со временем начинает замедляться, при этом CPU загружен не полностью, но видно рост задержек при обработке запросов. Как вы будете искать и устранять проблему?

Провести профилирование (PerfView, dotTrace) для анализа блокировок и асинхронных операций, проверить работу async/await на предмет deadlock’ов, посмотреть contention в lock/Monitor. Оптимизировать использование асинхронных I/O, ограничить параллелизм (например, SemaphoreSlim), снизить аллокации и при необходимости перепроектировать горячие участки кода.

Библиотека собеса по С#
6
Что такое enum и когда его следует использовать?

Enum — это тип значения, который используется для хранения перечислений, представляющих собой список именованных констант. Enum можно использовать для определения статических констант и константных флагов.

Библиотека собеса по С#
Можете ли вы кратко объяснить, что такое пул потоков в C#?

Thread Pool в C# — это, по сути, коллекция потоков. Эти потоки используются для выполнения задач, не внося помех в реализацию основного потока. После того, как поток из пула потоков завершает реализацию, он возвращается в пул потоков.

Библиотека собеса по С#
😁3
👀 Как работает командная логика в MVVM и что такое ICommand

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

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

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


🐸Библиотека собеса по С#
Please open Telegram to view this post
VIEW IN TELEGRAM
В ASP.NET Core у вас кэш над БД. Когда TTL истекает, сотни запросов одновременно пробивают кэш и штурмуют БД (cache stampede). Как спроектировать дедупликацию «получения значения» per-key без дедлоков и утечек, учитывая отмену/таймауты?

Сделать single-flight per key: ConcurrentDictionary<TKey, Lazy<Task<T>>> (или AsyncLazy) + GetOrAdd. Первый запрос запускает загрузку, остальные await той же Task. Важно: на ошибке/отмене удалять ключ из словаря, чтобы не закрепить failed-task; прокидывать CancellationToken; ставить таймаут и stale-while-revalidate для мягкого обновления. Для изоляции горячих ключей — пер-key SemaphoreSlim или Channel; результаты хранить в IMemoryCache с policy (TTL, size, eviction).

Библиотека собеса по С#
👍9
Что такое ViewState?

ViewState — это функция ASP.NET для сохранения значений страницы перед ее отправкой на сервер. После публикации страницы данные из ViewState восстанавливаются.

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

Да, это возможно для второго класса в иерархии наследования. Для этого нужно использовать модификатор sealed в сочетании с ключевым словом override при переопределении виртуального метода. Таким образом, дальнейшее переопределение этого метода в последующих классах будет запрещено.

🐸Библиотека собеса по С#
Please open Telegram to view this post
VIEW IN TELEGRAM
2
Объясните, что такое локальная переменная в C#.

Локальными переменными называются переменные, которые определены в блоке кода. Они видны только в блоке кода, в котором они объявлены.

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