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

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

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

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

Наши каналы: https://t.iss.one/proglibrary/9197
Download Telegram
Что такое виртуальный метод в C#?

Метод, который мы можем переопределить в производном классе, а это значит, что он может иметь разные реализации в базовом (исходном) и производном классах. Они используются, когда мы хотим расширить функциональность исходного метода базового класса. Мы используем ключевое слово virtual для создания виртуального метода в базовом классе, который позволяет переопределить функциональность в производном классе. То есть это пример полиморфизма. Вы не можете использовать ключевое слово virtual со статическими, абстрактными или частными методами в базовом классе.

Библиотека собеса по С#
Как бы вы объяснили разницу между 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.

Библиотека собеса по С#
В чем различие между операцией cast (приведения типов) и оператором as?

В случае ошибки cast выбрасывает исключение InvalidCastException, а оператор as возвращает null.

Библиотека собеса по С#
Что такое кэширование и его различные типы?

В Asp.Net метод кэширования позволяет хранить или кэшировать вывод веб-страницы. Эта техника используется для избежания расходов на повторное создание тех же данных. В ASP.NET доступны три различных типа кэширования:

✍🏻 Кэширование вывода страницы
✍🏻 Кэширование фрагмента страницы
✍🏻 Кэширование данных

Кэширование увеличивает параметр производительности, если пользователь запрашивает те же данные или информацию.

✍🏻 Кэширование вывода страницы: реализуется путем размещения директивы OutputCache в верхней части страницы .aspx во время разработки.
✍🏻 Кэширование данных: используется для быстрого извлечения данных приложения и реализуется объектом Cache.
✍🏻 Кэширование фрагмента страницы: используется для хранения части ответа веб-формы в памяти путем кэширования пользовательского элемента управления.


Библиотека собеса по С#
2
Что такое статический класс?

Статический класс — это класс, в котором CLR автоматически заполняет память во время выполнения кода.

Библиотека собеса по С#
🌚7😁51🥱1👾1
Как произвести отладку приложения C#?

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

Пример ответа: «Для отладки приложения C# используются инструменты отладки в таких IDE, как Visual Studio. Мы устанавливаем точки останова на определенных строках кода, чтобы остановить выполнение программы и изучить её состояние. Затем можно пошагово выполнить код, изучить переменные и найти ошибки. Логирование и использование выводов отладчика также являются хорошими техниками для устранения неполадок и изучения поведения программы».

На что обращают внимание: на кандидатов, которые могут объяснить процесс отладки в C# с учётом использования точек останова, пошагового выполнения кода и эффективного использования инструментов отладки.


Библиотека собеса по С#
1
Как реализовать шаблон проектирования Singleton в C#?

В шаблоне Singleton класс может иметь только один экземпляр и предоставляет глобальную точку доступа к нему.

Public sealed class Singleton
{
Private static readonly Singleton _instance = new Singleton();
}

Библиотека собеса по С#
Что такое данные JSON и как разработчики .NET могут работать с JSON?

JSON (JavaScript Object Notation) позволяет разработчикам упорядочивать и хранить данные для легкого доступа и чтения. Для разработчиков JSON является важным инструментом, так как позволяет управлять JSON-потоками с других сайтов и загружать их быстрее и проще, чем через каналы SML / RSS. Json.NET предоставляет возможность разработчикам .NET определять классы, которые могут анализировать объекты и массивы из текста JSON. Также Json.NET можно использовать для сериализации типов значений в текстовый формат JSON. Json.NET совместим с .NET2, .NET3 и .NET4.

Библиотека собеса по С#
Что вы подразумеваете под частичным методом?

Частичный метод — это, по сути, специальный метод в частичном классе, который также называется структурой. Одна часть частичного класса имеет единственное объявление частичного метода, что означает, что сигнатура, а также другая часть той же структуры, могут иметь выполнение.

Библиотека собеса по С#
😢4
Опишите свой опыт реализации сетевого многопользовательского режима в Unity, включая проблемы с задержками и синхронизацией.

Пример ответа: "Мой опыт работы с сетевым многопользовательским режимом в Unity включает использование Mirror и Netcode Unity для GameObjects. Я реализовал такие функции, как синхронизация движений игроков, создание и обработка обновлений состояния игры. Распространенной проблемой является снижение задержки. Я решил эту проблему с помощью таких методов, как прогнозирование на стороне клиента и серверное согласование, чтобы игра казалась отзывчивой, несмотря на задержки в сети. Для синхронизации я использовал компоненты NetworkTransform и пользовательские реализации NetworkVariable, выбирая правильный подход на основе частоты обновления данных и важности.

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


Библиотека собеса по С#
Как реализовать простое сохранение данных (сохранение и загрузку игровых данных) в Unity?

Пример ответа: "Для простого сохранения данных в Unity я обычно использую PlayerPrefs. Он прост для сохранения примитивных типов данных, таких как целые числа, числа с плавающей точкой и строки. Для сохранения данных я использую такие методы, как PlayerPrefs.SetInt("score", scoreValue), PlayerPrefs.SetFloat("volume", volumeValue) и PlayerPrefs.SetString("playerName", playerName). Для загрузки данных я использую соответствующие методы PlayerPrefs.GetInt("score"), PlayerPrefs.GetFloat("volume") и PlayerPrefs.GetString("playerName"). Я также проверяю, существует ли ключ перед загрузкой, используя PlayerPrefs.HasKey("keyName"), чтобы предоставить значения по умолчанию, если это необходимо.

В качестве альтернативы я могу сериализовать данные в JSON или двоичный файл для более сложных структур данных. Для JSON я бы использовал JsonUtility.ToJson() для сериализации объекта и JsonUtility.FromJson() для его обратной десериализации. Для двоичного формата я бы использовал BinaryFormatter для сериализации и десериализации данных. Сохранение в файл включает использование File.WriteAllText() или File.WriteAllBytes(), а чтение из файла включает использование File.ReadAllText() или File.ReadAllBytes() соответственно. Это часто используется, когда более сложные игровые данные необходимо хранить постоянно."


Библиотека собеса по С#
Что означают следующие аббревиатуры в .NET: IL, CIL, MSIL, CLI и JIT?

IL (Intermediate Language)
– это независимый от процессора частично скомпилированный код. Код IL будет скомпилирован в родной машинный код с использованием текущих свойств среды компилятором Just-In-Time (JIT). JIT-компилятор переводит IL-код в код сборки и использует архитектуру процессора целевой машины для выполнения приложения .NET.

В .NET язык IL называется Common Intermediate Language (CIL), а на первых этапах .NET он назывался Microsoft Intermediate Language (MSIL).

CLI (Common Language Infrastructure) – это открытая спецификация, разработанная компанией Microsoft. Это библиотека скомпилированного кода, используемая для развертывания, создания версий и обеспечения безопасности.

В .NET существует два типа CLI: сборки процессов (EXE) и сборки библиотек (DLL). Сборки CLI содержат код на языке CIL, и, как уже упоминалось, при компиляции языков программирования CLI исходный код транслируется в код CIL, а не в объектный код, специфичный для платформы или процессора.

Подведем итоги:

1. При компиляции исходный код сначала транслируется в IL (в .NET это CIL, а ранее назывался MSIL).
2. Затем CIL собирается в байткод и создается сборка CLI.
3. Перед выполнением кода CLI-код проходит через JIT-компилятор среды выполнения для генерации родного машинного кода.
4. Процессор компьютера выполняет родной машинный код.


Библиотека собеса по С#
👍2
🔥 Последняя неделя перед стартом курса по AI-агентам

Старт курса уже 5го числа! Если вы планировали вписаться — сейчас ПОСЛЕДНИЙ шанс забронировать место

На курсе:
разложим LLM по косточкам: токенизация, SFT, PEFT, инференс
— соберём RAG и научимся оценивать его адекватно
— построим настоящую мультиагентную систему — архитектуру, которая умеет расти
— разберём CoPilot, сломаем через prompt injection (спасибо Максу)
— и наконец, посмотрим, как это работает в MCP и реальных кейсах

📍 Это 5 живых вебинаров + раздатка + домашки + чат с преподавателями

И главное — возможность реально разобраться, как проектировать системы на LLM, а не просто «поиграться с API»

👉 Курс здесь
1
Что такое архитектура REST?

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

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

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


Библиотека собеса по С#
6
Что такое оператор return в C#?

Функция оператора return в C# заключается в завершении выполнения метода в месте его появления и передаче управления вызывающему методу.

Библиотека собеса по С#
😁61
🧠 «Поиграйся с LLM, почитай про агентов — и сам поймёшь, как это работает»

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

Поиграйся — это как?
Потыкать пару промптов в ChatGPT и решить, что теперь ты можешь строить мультиагентные системы? 🤡 Ну-ну.

AI-агенты — это не «очередная обёртка над GPT». Это архитектура. Состояния, инструменты, цепочки вызовов, память, оценка качества и адекватность поведения.

➡️ Чтобы разобраться, нужно:
— понимать, как устроен LLM под капотом
— уметь подключать внешние данные (RAG, retrievers, rerankers)
— уметь масштабировать и дебажить поведение агентов
— разбираться в фреймворках вроде AutoGen, CrewAI, LangChain
— знать, как всё это тащится в прод

Если вы реально хотите не «поиграться», а научиться собирать рабочие агентные системы — у нас стартует курс по разработке ИИ-агентов 5го июля

P.S: не упусти свой шанс, промокод: LASTCALL на 10.000₽
🥱1
Какую цель выполняет оператор «using» в C#?

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

Библиотека собеса по С#
🤔3
Что вы подразумеваете под объектом в C#?

Реальная сущность, имеющая поведение и атрибуты, объект в C# представляет класс, к которому он принадлежит. Для своих функций-членов он выполняет распределение памяти.

Библиотека собеса по С#
Объясните, что такое локальные и глобальные ресурсы?

Локальный ресурс явно относится к определенной странице, которая является той, которая может получить к нему доступ, в то время как глобальные ресурсы могут быть доступны из любого места. Локальные ресурсы хранятся в органайзере App_LocalResources, в то время как глобальные хранятся в папке App_GlobalResources. Записи локальных и глобальных ресурсов будут выглядеть идентичными, поэтому единственным различием будет папка, в которой они находятся. Но они используются по-разному.

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

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

Библиотека собеса по С#
В чем разница между локальными и глобальными переменными в SQL?

Локальные переменные могут быть доступны только внутри функции, в которой они были объявлены. А глобальные переменные, будучи объявленными вне какой-либо функции, хранятся в фиксированных структурах памяти и могут использоваться во всей программе.

Библиотека собеса по С#
4