Библиотека собеса по C# | вопросы с собеседований
9.11K subscribers
85 photos
34 links
Вопросы с собеседований по C# и ответы на них.

Список наших каналов: https://t.me/proglibrary/9197
Учиться у нас: https://proglib.io/w/907158ab

Обратная связь: @proglibrary_feedback_bot

По рекламе: @proglib_adv
Прайс: @proglib_advertising
Download Telegram
В чем разница между .NET и Laravel?

Большинство специалистов в области веб-разработки имеют представление о различных фреймворках, таких как Laravel, и могут провести сравнение между этими платформами и .NET. Обсуждение этих различий может помочь понять интересы кандидатов и их взгляд на роль разработчика .NET. Например, они могут обратить внимание на:

✍🏻 Языки (например, поддержка C # в .NET по сравнению с поддержкой PHP в Laravel)
✍🏻 Безопасность
✍🏻 Интеграция .NET с Visual Studio
✍🏻 Сторонние библиотеки
✍🏻 Поддержка сообщества разработчиков ПО с открытым исходным кодом
Что такое рефлексия в С#?

Это процесс описания метаданных типов, методов и полей в коде. Пространство имен System.Reflection позволяет получать данные о загруженных сборках, элементах внутри них, таких как классы, методы и типы значений.
Что такое данные JSON и как разработчики .NET могут работать с JSON?

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

Ответ:
Программа не скомпилируется, поскольку переменная name, к которой мы хотим обратиться в методе Main, не имеет модификаторов. Следовательно, по умолчанию она имеет модификатор доступа private. Поэтому вне класса Person к этой переменной мы обратиться не можем.
Как вы подходите к оптимизации производительности в Unity для мобильных устройств, учитывая ограничения аппаратного обеспечения и разнообразие экосистемы устройств?

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

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

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

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

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

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

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

Этот вопрос на собеседовании по .NET направлен на оценку базовых знаний кандидатов о работе с коллекциями. В эту категорию входят стеки, очереди, хеш-таблицы, пакеты, словари и списки. Стек используется для отслеживания и обработки значений по принципу LIFO (Last-In, First-Out), где последний добавленный элемент будет первым удаленным.

С другой стороны, очередь оперирует элементами по принципу FIFO (First-In, First-Out), где первый добавленный элемент будет первым удаленным. В очереди элементы добавляются с задней стороны и удаляются с передней стороны.
Самые полезные каналы для программистов в одной подборке!

Сохраняйте себе, чтобы не потерять 💾

🔥Для всех

Библиотека программиста — новости, статьи, досуг, фундаментальные темы
Книги для программистов
IT-мемы
Proglib Academy — тут мы рассказываем про обучение и курсы

🤖Про нейросети
Библиотека робототехники и беспилотников | Роботы, ИИ, интернет вещей
Библиотека нейрозвука | Транскрибация, синтез речи, ИИ-музыка
Библиотека нейротекста | ChatGPT, Gemini, Bing
Библиотека нейровидео | Sora AI, Runway ML, дипфейки
Библиотека нейрокартинок | Midjourney, DALL-E, Stable Diffusion

#️⃣C#

Книги для шарпистов | C#, .NET, F#
Библиотека шарписта — полезные статьи, новости и обучающие материалы по C#
Библиотека задач по C# — код, квизы и тесты
Библиотека собеса по C# — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Вакансии по C#, .NET, Unity Вакансии по PHP, Symfony, Laravel

☁️DevOps

Библиотека devops’а — полезные статьи, новости и обучающие материалы по DevOps
Вакансии по DevOps & SRE
Библиотека задач по DevOps — код, квизы и тесты
Библиотека собеса по DevOps — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования

🐘PHP

Библиотека пхпшника — полезные статьи, новости и обучающие материалы по PHP
Вакансии по PHP, Symfony, Laravel
Библиотека PHP для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по PHP — код, квизы и тесты

🐍Python

Библиотека питониста — полезные статьи, новости и обучающие материалы по Python
Вакансии по питону, Django, Flask
Библиотека Python для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Python — код, квизы и тесты

Java

Книги для джавистов | Java
Библиотека джависта — полезные статьи по Java, новости и обучающие материалы
Библиотека Java для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Java — код, квизы и тесты
Вакансии для java-разработчиков

👾Data Science

Книги для дата сайентистов | Data Science
Библиотека Data Science — полезные статьи, новости и обучающие материалы по Data Science
Библиотека Data Science для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Data Science — код, квизы и тесты
Вакансии по Data Science, анализу данных, аналитике, искусственному интеллекту

🦫Go

Книги для Go разработчиков
Библиотека Go разработчика — полезные статьи, новости и обучающие материалы по Go
Библиотека Go для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Go — код, квизы и тесты
Вакансии по Go

🧠C++

Книги для C/C++ разработчиков
Библиотека C/C++ разработчика — полезные статьи, новости и обучающие материалы по C++
Библиотека C++ для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по C++ — код, квизы и тесты
Вакансии по C++

💻Другие каналы

Библиотека фронтендера
Библиотека мобильного разработчика
Библиотека хакера
Библиотека тестировщика
Вакансии по фронтенду, джаваскрипт, React, Angular, Vue
Вакансии для мобильных разработчиков
Вакансии по QA тестированию
InfoSec Jobs — вакансии по информационной безопасности

📁Чтобы добавить папку с нашими каналами, нажмите 👉сюда👈

Также у нас есть боты:
Бот с IT-вакансиями
Бот с мероприятиями в сфере IT

Мы в других соцсетях:
🔸VK
🔸YouTube
🔸Дзен
🔸Facebook *
🔸Instagram *

* Организация Meta запрещена на территории РФ
Доступные только для чтения переменные и константы имеют много общего, но чем они отличаются?

Есть два варианта ответа на подобные вопросы на собеседованиях по .NET:
Переменные только для чтения могут содержать ссылочные типы данных, в то время как константы могут содержать только значения типа.
Переменные только для чтения оцениваются во время выполнения разработчиками, в то время как константы оцениваются во время компиляции.
Можете ли вы привести пример сценария, в котором использование LINQ повысило эффективность проекта на C#, над которым вы работали?

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

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

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

Public sealed class Singleton
{
Private static readonly Singleton _instance = new Singleton();
}
Какие существуют типы сборки мусора в C#? Как их настроить?

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

Вы можете отделить тесно связанные классы с помощью внедрения зависимостей. Таким образом, это уменьшает прямую зависимость классов друг от друга. Вы можете добиться внедрения зависимостей с помощью следующего: зависимость конструктора, зависимость свойств, зависимость метода.
Объясните понятие наследования и то, как оно работает в .NET.

В общем понимании ООП наследование означает, что класс может быть создан на основе другого класса, при этом новый класс получает атрибуты родительского класса. Например, разработчики могут создать класс с именем Транспортное средство, а затем дочерние классы с именами Грузовик, Автомобиль и Мотоцикл — все они наследуют атрибуты Транспортного средства.

Для демонстрации своего понимания вопроса на собеседовании кандидаты могут объяснить, что в .NET поддерживается только одиночное наследование, что означает, что класс может наследовать только от одного другого класса. Они также могут упомянуть транзитивное наследование — например, класс Форд наследуется от класса Автомобиль, который в свою очередь наследуется от Транспортного средства.
Расскажите краткое описание вариантов передачи параметров с помощью методов в C#.

Параметр значения: опция по умолчанию. Параметры, передаваемые в метод, приведут к сохранению новой копии в памяти, и любые изменения в этой копии не будут отражены в исходном параметре значения.
Ссылочный параметр: хранит адрес памяти параметра в аргументе метода, поэтому любые изменения аргумента отражаются на исходном параметре в памяти.
Выходной параметр: используется, если вы хотите, чтобы метод возвращал несколько значений.
Можно ли хранить смешанные типы данных, такие как int, string, float, char, в одном массиве?

Да, это возможно, поскольку массив может иметь тип объекта, который может хранить не только любой тип данных, но и объект класса, как показано на картинке.
Что такое веб-служба .NET?

Ответ: веб-сервисы — это повторно используемые компоненты, которые позволяют разработчикам публиковать функцию приложения через Интернет, чтобы сделать его доступным и напрямую взаимодействовать с другими приложениями и объектами в нем. Веб-службы взаимодействуют с помощью стандартных веб-протоколов и форматов данных, включая HTTP, XML и SOAP, что позволяет им подключаться между различными платформами и языками программирования. ||ASP .NET|| предоставляет простой способ разработки веб-служб. .NET Framework предоставляет встроенные классы для создания и использования веб-служб.
Для чего в C# используются Async и Await?

Если у нас есть программа, требующая запуска методов независимо от основного процесса, нам необходимо использовать асинхронное программирование. Это позволяет нам запускать процессы и, при необходимости, заставлять их ждать, не блокируя остальную часть программы. Для этого мы используем ключевое слово Async для создания асинхронного метода и Await для его запуска без блокировки нашей программы.
Можете ли вы использовать «this» в статическом методе C#?

Нет, потому что «this» возвращает ссылку на текущий экземпляр того же класса, а статические методы не принадлежат какому-либо конкретному экземпляру, поскольку их можно вызывать только по имени класса.

Единственным исключением являются методы расширения, поскольку мы можем использовать «this» с первым параметром метода.
Что такое виртуальный метод в C#?

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