uz
Feedback
Библиотека собеса по C# | вопросы с собеседований

Библиотека собеса по C# | вопросы с собеседований

Kanalga Telegram’da o‘tish

Вопросы с собеседований по C# и ответы на них. По рекламе: @proglib_adv Учиться у нас: https://clc.to/QRJIVw Для обратной связи: @proglibrary_feeedback_bot Наши каналы: https://t.me/proglibrary/9197

Ko'proq ko'rsatish
5 642
Obunachilar
+324 soatlar
+57 kunlar
+1230 kunlar
Postlar arxiv
Можно ли разрешить наследование класса, но запретить переопределение его метода? Да, это возможно для второго класса в иерархии наследования. Для этого нужно использовать модификатор sealed в сочетании с ключевым словом override при переопределении виртуального метода. Таким образом, дальнейшее переопределение этого метода в последующих классах будет запрещено. 🐸Библиотека собеса по С#

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

В 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). Библиотека собеса по С#

👀 Как работает командная логика в MVVM и что такое ICommand В паттерне MVVM командная логика реализуется через интерфейс ICommand, который связывает действия пользователя (например, нажатие кнопки) с выполнением бизнес-логики в ViewModel. ICommand имеет два метода: • Execute — выполняет команду. • CanExecute — проверяет, можно ли выполнить команду, например, активировать или деактивировать кнопку. Когда пользователь выполняет действие, вызывается Execute, а CanExecute управляет доступностью команды. Это разделение логики между View и ViewModel улучшает тестируемость и поддерживаемость кода, поскольку UI не содержит бизнес-логики. 🐸Библиотека собеса по С#

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

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

🖥 Многопоточность в .NET часто сводят к lock. Но в реальных системах этого недостаточно — особенно под нагрузкой, в легаси-коде и распределённых сценариях. 📕 На открытом уроке разберём, какие инструменты действительно есть в .NET и как выбирать подходящий примитив под конкретную задачу. Рассмотрим Monitor, Mutex, Semaphore, а также другие примитивы из System.Threading: ReaderWriterLockSlim, Barrier, ManualResetEventSlim, SpinLock. ❗️ Вы увидите практические примеры, типовые ошибки и узнаете, где блокировки становятся узким местом. Урок будет полезен разработчикам, работающим с высоконагруженными системами и легаси-кодом, а также тимлидам, которые проектируют архитектуру и отвечают за производительность. 📣 Встречаемся 27 января в 20:00 МСК в преддверии старта курса «C# Developer. Professional». Регистрация открыта: https://clc.to/wVqVuQ Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru

В продакшене .NET-сервис со временем начинает замедляться, при этом CPU загружен не полностью, но видно рост задержек при обработке запросов. Как вы будете искать и устранять проблему? Провести профилирование (PerfView, dotTrace) для анализа блокировок и асинхронных операций, проверить работу async/await на предмет deadlock’ов, посмотреть contention в lock/Monitor. Оптимизировать использование асинхронных I/O, ограничить параллелизм (например, SemaphoreSlim), снизить аллокации и при необходимости перепроектировать горячие участки кода. Библиотека собеса по С#

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

Пятница, 19:00. Худшее время для деплоя, но идеальное, чтобы подтянуть архитектуру ИИ-систем и не поплыть на вопросе про RAG на интервью. Подтяните свои знания перед следующим интервью. Разберём на открытом уроке: — механизмы RAG против Fine-tuning; — как хранить и искать данные в векторных хранилищах; — пример кода для «чтения» PDF-файлов нейронкой. Один из спикеров — Алексей Яндутов, ML-инженер в поиске Яндекса. Это вводный урок курса «Разработка AI-агентов». Ориентируемся на практику. Записаться на урок

Можете ли вы описать, как бы вы реализовали регистрацию ошибок в приложении .NET? Реализация регистрации ошибок в приложении .NET обычно включает использование библиотек регистрации, таких как log4net, NLog или встроенной Microsoft.Extensions.Logging. Эти библиотеки предоставляют настраиваемые механизмы, которые могут регистрировать ошибки в различных местах назначения, таких как файлы, базы данных или внешние службы. Разработчики должны настроить библиотеку регистрации в коде запуска приложения и использовать различные уровни регистрации (например, Debug, Info, Warn, Error, Fatal) для сбора и классификации логов соответствующим образом. 🐸Библиотека собеса по С#

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

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

Можно ли изменить значение переменной во время отладки приложения? Да, значения переменных можно изменять во время отладки. 🐸Библиотека собеса по С#

«Этот манёвр будет стоить нам 51 год...» — или один заваленный оффер в BigTech из-за плавающих знаний в базе. На собеседовани
«Этот манёвр будет стоить нам 51 год...» — или один заваленный оффер в BigTech из-за плавающих знаний в базе. На собеседованиях по .NET всё чаще спрашивают не только синтаксис, но и фундаментальные алгоритмы с архитектурой. Пока рынок несётся вперёд, старые цены в Proglib Academy скоро останутся в прошлом. Если вы хотите уверенно отвечать на каверзные вопросы или проектировать сложные системы, сейчас — лучшая точка входа. Актуальные программы: — Разработка ИИ-агентов — Математика для разработки AI-моделей — ML для старта в Data Science — Математика для Data Science — Специалист по ИИ — Алгоритмы и структуры данных — Программирование на Python — Основы IT для непрограммистов — Архитектуры и шаблоны проектирования Забирайте обучение по старой цене, чтобы через год не смотреть на свой оффер со слезами из-за книжного шкафа. Подготовиться к офферу выгодно ⚠️ Цены вырастут уже 19 января

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

Можно ли запретить наследование от какого-то класса? Да, можно. Для того, чтобы запретить наследоваться от класса необходимо объявить его с модификатором sealed. Например, если мы не хотим чтобы от класса SomeClass можно было наследоваться, то объявляем его так: sealed class SomeClass { // Объявление класса } В качестве альтернативы, можно запретить и создание экземпляров этого класса с помощью ключевого слова static (под капотом, будет использована пара модификаторов: abstract sealed). static class Helper { // допустимы лишь статические методы } 🐸Библиотека собеса по С#

✍🏻 Каковы различные способы перегрузки метода? Различные типы данных параметров, разное количество параметров, разный порядок параметров. Библиотека собеса по С#

Как бы вы объяснили разницу между Repeater и ListView? Элемент управления Repeater является производным от класса Control. Повторитель просто повторяет данные, указанные в шаблонах. Повторяющиеся данные обычно представляют собой HTML-код, смешанный с записями из источников данных. Вывод Repeater не предопределен. Из-за этого Repeater требует больше всего работы для определения шаблона. Взамен он дает нам наибольшую гибкость для построения макета и оптимизации представления. С тем же шаблоном и тем же набором данных Repeater обычно работает быстрее, чем элементы управления Data List или GridView. Это в основном из-за класса DataReader, который используется для доступа только для чтения. DataReader быстрее, чем классы DataSet или DataTable, обычно используемые с GridView. По сравнению с элементами управления GridView и DataList, Repeater имеет ограниченные возможности. По умолчанию Repeater хорош для отображения данных. Это не лучший выбор, если вам нужно редактировать данные. Кроме того, по умолчанию он не обеспечивает разбиение на страницы и сортировку записей. Элемент управления ListView — это новейший элемент управления представлением данных, представленный в ASP.NET 3.5. Предыдущие элементы управления (Repeater, DataList и GridView) логически следуют друг за другом. Например, Repeater — самый простой, но быстрый, затем DataList имеет больше функций, но и больше накладных расходов, и, наконец, GridView — самый сложный, имеет больше функций, но самый тяжелый и, следовательно, самый медленный на странице. Теперь есть новый элемент управления ListView, который пытается предоставить лучшее с обеих сторон: скорость и гибкость в дизайне, а также множество функций, таких как разбиение на страницы, обновление или удаление записей и т. д. Из-за этого элемент управления ListView часто является лучшим выбором, чем Repeater или DataList. Библиотека собеса по С#