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

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

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

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

Наши каналы: https://t.me/proglibrary/9197
Download Telegram
Почему в C# используются Async и Await?

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

Для этого мы используем ключевое слово Async для создания асинхронного метода и Await для его запуска без блокировки нашей программы.


Библиотека собеса по С#
Напишите программу для сложения всех чётных чисел в массиве

Ответ:
static long TotalAllNum(int[] intArray) {
return intArray.Where(i => i % 2 == 0).Sum(i => (long)i);
}

Библиотека собеса по С#
😡 А вас тоже бесят облачные сервисы?

Согласитесь, статус отношений с облаками — все сложно. Но что, если можно изменить правила игры?

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

Что мы хотим узнать:
— Для чего вы реально используете облако?
— Чего катастрофически не хватает прямо сейчас?
— Что бесит больше всего? (можно материться)
— Как выбираете провайдера — по цене или по любви?
— и тому подобное

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

️Время на опрос: меньше, чем на кофе-брейк. Жмите → https://clc.to/nboYDA
Что такое закрытый класс?

Мы используем ключевое слово “sealed” для создания закрытого класса. Классы создаются как закрытый класс, когда нет необходимости наследовать это дальше или когда есть необходимость ограничить наследование этого класса.

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

Коллекция схожих элементов, доступных через числовой индекс, называется массивом. Бывают одномерные массивы, двумерные массивы и jagged массивы.

Библиотека собеса по С#
Можете ли вы привести пример сценария, в котором использование LINQ повысило эффективность проекта на C#, над которым вы работали?

Ожидаемый ответ: в недавнем проекте я использовал LINQ для упрощения фильтрации и сортировки данных в веб-приложении. Это уменьшило объем необходимого кода и улучшило общую читаемость.

Объяснение: предоставление реального примера демонстрирует практические преимущества использования LINQ и демонстрирует способность кандидата эффективно его применять.


Библиотека собеса по С#
Можно ли разрешить наследование класса, но запретить переопределение метода?

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

Библиотека собеса по С#
😱 Завтра цена на курс «AI-агенты для DS» вырастет

Пока вы думаете — другие уже покупают. Что вы теряете, откладывая решение? Как минимум — 10 000 рублей, именно столько вы переплатите завтра. Как максимум — шанс войти в топ-1% дата-сайентистов, которые умеют строить AI-агенты.

🎓 Чему вы научитесь на курсе:
— адаптировать LLM под разные предметные области и данные
— собирать свою RAG-систему: от ретривера и реранкера до генератора и оценки качества
— строить AI-агентов с нуля — на основе сценариев, функций и взаимодействия с внешней средой

Решение за вами.

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

Неглубокая копия создает новый объект, но не дублирует внутренние ссылки. Глубокая копия создает новый объект и рекурсивно клонирует все внутренние ссылки. Поверхностное копирование можно выполнить с помощью MemberwiseClone, тогда как глубокое копирование требует специальной реализации.

Библиотека собеса по С#
Потокобезопасен ли List?

Нет, List не потокобезопасен.

Самый простой способ сделать его таким — это блокировать доступ к базовым коллекциям (читать и писать) с помощью lock.


Библиотека собеса по С#
Что делает оператор throw?

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

Библиотека собеса по С#
Почему мы используем коллекции в C#?

Классы коллекций используются для динамического выделения памяти элементам и доступа к списку элементов на основе индекса.

Библиотека собеса по С#
Как вы подходите к оптимизации производительности в Unity для мобильных устройств, учитывая ограничения аппаратного обеспечения и разнообразие экосистемы устройств?

Для оптимизации производительности в Unity для мобильных устройств, важно сосредоточиться на следующих аспектах:

Оптимизация ресурсов: Сжатие текстур и мешей, использование LOD (Level of Detail) для уменьшения детализации объектов на расстоянии и оптимизация ассетов для уменьшения загрузки на GPU.

Эффективное использование освещения: Использование статического и запекаемого освещения вместо динамического, что снижает нагрузку на процессор.

Оптимизация скриптов: Минимизация использования операций Update() и FixedUpdate(), оптимизация алгоритмов и структур данных.

Пакетная обработка и куллинг: Использование пакетной обработки для уменьшения количества draw calls и эффективный куллинг для исключения не видимых объектов из рендеринга.

Тестирование и профилирование: Регулярное использование профилировщика Unity для выявления и устранения узких мест производительности.

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


Библиотека собеса по С#
Как изменить размер массива?

Для изменения размера массива применяется метод Resize. Его первый параметр — изменяемый массив, а второй параметр — количество элементов, которые должны быть в массиве.

Если второй параметр меньше длины массива, то массив усекается. Если значение параметра, наоборот, больше, то массив дополняется дополнительными элементами, которые имеют значение по умолчанию. Причем первый параметр передается по ссылке.


Библиотека собеса по С#
Что такое виртуальный метод в 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.

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