ru
Feedback

Не попадитесь на канал ботавода! Telemetrio находит и помечает такие каналы 👉 Хотите видеть метку — оформите подписку

C# | Вопросы собесов

C# | Вопросы собесов

Открыть в Telegram
5 002
Подписчики
-324 часа
-97 дней
-730 дней
Архив постов
🤔 Какой метод используется для форматирования строки в C#?
Anonymous voting

В чем разница между процессами и потоками ? Спросят с вероятностью 22% "процесс" и "поток" относятся к фундаментальным аспектам управления выполнением задач в операционных системах. Хотя оба являются единицами выполнения, они имеют существенные различия и используются в разных контекстах. Процесс Это экземпляр программы, выполняющийся в операционной системе. Это полностью изолированная и самодостаточная сущность с собственным виртуальным адресным пространством памяти. Каждый процесс имеет свой собственный набор ресурсов, включая файловые дескрипторы, переменные окружения, основной поток выполнения и другие системные ресурсы. ✅Изоляция: Процессы изолированы друг от друга, что обеспечивает безопасность и стабильность системы. Ошибка в одном процессе обычно не влияет на работу других процессов. ✅Переключение контекста: При переключении между процессами операционная система должна сохранять и восстанавливать контекст процесса, что может быть ресурсоёмкой операцией. ✅Взаимодействие: Процессы могут взаимодействовать друг с другом через механизмы межпроцессного взаимодействия (IPC), такие как сокеты, файлы, общая память и другие. Поток (Thread) Это легковесная единица выполнения, которая работает в контексте процесса. Потоки в рамках одного процесса разделяют его ресурсы, такие как память и файловые дескрипторы, что делает их более эффективными в плане использования ресурсов по сравнению с процессами. ✅Разделение ресурсов: Все потоки внутри одного процесса разделяют одно и то же адресное пространство и системные ресурсы, что позволяет им эффективно обмениваться данными без использования IPC. ✅Создание и управление: Создание потока быстрее и требует меньше ресурсов, чем создание процесса. Переключение контекста между потоками происходит быстрее, чем между процессами. ✅Риски и недостатки: Поскольку потоки разделяют память, ошибка в одном потоке, такая как неправильная работа с памятью, может повлиять на другие потоки и весь процесс. Представьте себе браузер, который является одним процессом. Внутри этого процесса могут работать множество потоков: один поток может обрабатывать пользовательский интерфейс, другой — загрузку данных с интернета, а третий — выполнение JavaScript на веб-странице. Ошибки в потоке выполнения JavaScript не должны влиять на поток пользовательского интерфейса, позволяя пользователю закрыть вкладку, которая вызвала сбой. Основное различие между процессами и потоками заключается в том, что процессы являются изолированными и самостоятельными единицами выполнения с собственным набором ресурсов, в то время как потоки являются более легковесными единицами, которые работают в рамках процесса и разделяют его ресурсы. Эти различия делают потоки идеальными для задач, требующих эффективного взаимодействия и обмена данными, в то время как процессы лучше подходят для задач, требующих изоляции и безопасности. 🔥 ТОП ВОПРОСОВ С СОБЕСОВ 🔒 База собесов | 🔒 База тестовых

Запустите рекламу в телеграм-каналах с Яндекс Директом Перфоманс-реклама теперь в телеграм-каналах ⚡ Яндекс Директ знает, как
Запустите рекламу в телеграм-каналах с Яндекс Директом Перфоманс-реклама теперь в телеграм-каналах ⚡ Яндекс Директ знает, как привлечь целевую аудиторию 💰👌 Попробовать #реклама yandex.ru О рекламодателе

🤔 Что означает ключевое слово virtual в контексте метода в C#?
Anonymous voting

Какие API можно назвасть Restо-вым ? Спросят с вероятностью 22% RESTful API (Representational State Transfer) — это архитектурный стиль взаимодействия компонентов в сети. Создание его включает в себя следование ряду принципов, которые делают API легко использовать и интегрировать в различные приложения. Основные принципы REST включают использование стандартных методов HTTP, семантически ясных URL и передачу данных в форматах, таких как JSON или XML. Чтобы API можно было назвать RESTful, он должен следовать этим ключевым принципам: 1️⃣Использование стандартных методов HTTP: ✅GET: Получение данных. ✅POST: Создание новой записи. ✅PUT: Обновление существующей записи. ✅DELETE: Удаление записи. 2️⃣Без сохранения состояния (Stateless): ✅Каждый запрос от клиента к серверу должен содержать всю информацию, необходимую для выполнения запроса. Сервер не должен хранить контекст клиента между запросами. 3️⃣Кэширование: ✅Ответы должны быть явно маркированы как кэшируемые или некэшируемые, чтобы клиенты могли избежать повторной отправки запросов за неизменной информацией. 4️⃣Единообразие интерфейса: ✅Интерфейс должен быть единообразным, что облегчает взаимодействие с API. URL должны быть структурированы логически, а передача данных должна быть прозрачной и понятной. 5️⃣Слоистая система: ✅Клиент не должен обязательно знать, общается ли он напрямую с сервером или через промежуточные слои (прокси, балансировщики нагрузки). Примеры популярных RESTful API: ✅GitHub API: Предоставляет доступ к функциям, таким как репозитории, коммиты, вопросы и т.д., используя стандартные методы HTTP для управления ресурсами. ✅Twitter API: Позволяет разработчикам взаимодействовать с основными аспектами Twitter, включая твиты, профили пользователей и т.д. ✅Google Maps API: Дает возможность добавлять карты Google и другие функции местоположения в веб-сайты и приложения. ✅Amazon S3 API: Обеспечивает программный доступ к функциям хранения файлов на Amazon S3. Эти API являются примерами, как можно организовать взаимодействие между клиентом и сервером, используя принципы REST для обеспечения гибкости, масштабируемости и удобства интеграции. 🔥 ТОП ВОПРОСОВ С СОБЕСОВ 🔒 База собесов | 🔒 База тестовых

🤔 Какая функция в C# создаёт анонимные объекты?
Anonymous voting

👩‍💻 Программирование теперь в телеграм! Вот обширная база материалов, которая ежедневно обновляется, выбирай своё направлен
👩‍💻 Программирование теперь в телеграм! Вот обширная база материалов, которая ежедневно обновляется, выбирай своё направление: Обучение С# с нуля Обучение Python с нуля Обучение Java с нуля Обучение JavaScript с нуля Обучение HTML/CSS с нуля Обучение C/С++ с нуля Обучение DevOps с нуля Обучение SQL/GO/PHP с нуля Обучение Kotlin/Swift с нуля ⛓ Архив на 1789ГБ: Курсы, книги, шпаргалки, статьи, видео ресурсы — всё собрано в одном месте: @roadmap_ready

Какие проблемы могут быть при многопоточности и как их избежать ? Спросят с вероятностью 22% Многопоточное программирование позволяет улучшить производительность программ за счет параллельной обработки данных, но это также влечет за собой ряд специфических проблем. Понимание этих проблем и способы их предотвращения или управления ими критически важны для создания надежных и эффективных многопоточных приложений. Основные проблемы: 1️⃣Гонки данных (Race Conditions) ✅Проблема: Два или более потоков пытаются одновременно изменить общие данные или один поток читает данные во время их изменения другим потоком, что приводит к непредсказуемым результатам. ✅Решение: Использование механизмов синхронизации, таких как блокировки (locks), мьютексы (mutexes) и семафоры (semaphores), для контроля доступа к общим ресурсам. 2️⃣Взаимная блокировка (Deadlock) ✅Проблема: Два или более потоков бесконечно ожидают ресурсы, заблокированные друг другом, в результате чего они не могут продолжить выполнение. ✅Решение: Разработка программы таким образом, чтобы потоки запрашивали ресурсы всегда в одном и том же порядке, использование таймаутов для блокировок, чтобы потоки могли выйти из состояния ожидания. 3️⃣Голодание (Starvation) ✅Проблема: Один или несколько потоков не могут получить доступ к необходимым ресурсам, потому что другие потоки постоянно занимают их. ✅Решение: Применение справедливых блокировок (fair locks) или алгоритмов планирования, которые обеспечивают всем потокам равный доступ к ресурсам. 4️⃣Переключение контекста (Context Switching) ✅Проблема: Частое переключение контекста между потоками может значительно снизить производительность системы, особенно если потоки часто блокируются и разблокируются. ✅Решение: Оптимизация количества потоков, уменьшение зависимостей между потоками и уменьшение использования блокировок. 5️⃣Проблемы с проектированием ✅Проблема: Неправильное проектирование многопоточной архитектуры может привести к сложностям в поддержке и расширении программного обеспечения. ✅Решение: Использование абстракций высокого уровня для работы с потоками, таких как пулы потоков, параллельные библиотеки (например, TPL в .NET) и модели акторов. Использование блокировки:
private static readonly object _lock = new object();
private static int _sharedResource;

public static void UpdateResource()
{
    lock (_lock)
    {
        _sharedResource++;
        // Выполнение некоторой работы с общим ресурсом
    }
}
Этот пример показывает использование объекта блокировки для предотвращения гонки данных при доступе к общему ресурсу. Избегание взаимной блокировки:
private static readonly object _lock1

 = new object();
private static readonly object _lock2 = new object();

public static void Method1()
{
    lock (_lock1)
    {
        // Некоторые действия
        lock (_lock2)
        {
            // Дополнительные действия
        }
    }
}

public static void Method2()
{
    lock (_lock1)
    {
        // Аналогичные действия
        lock (_lock2)
        {
            // Дополнительные действия
        }
    }
}
Запрашивая блокировки в одном и том же порядке, мы предотвращаем взаимную блокировку, которая могла бы возникнуть, если бы порядок блокировок был обратным в разных методах. Многопоточное программирование требует внимательного проектирования и тщательного управления ресурсами. Использование современных инструментов и подходов, таких как библиотеки и фреймворки высокого уровня, может значительно упростить создание надежных и эффективных многопоточных приложений. 🔥 ТОП ВОПРОСОВ С СОБЕСОВ 🔒 База собесов | 🔒 База тестовых

🤔 Какой модификатор доступа делает класс доступным только в текущей сборке?
Anonymous voting

Repost from easyoffer
Канал приближается к 20к подписчиков, а здесь так и нет нормального контент плана 😒 Ищу талантливых журналистов, способных писать клевые и авторские посты на тему "Карьера в IT" и все что с этим связано: поиск работы, повышение з/п, разбор кейсов, переезд в другие страны по рабочим визам, аналитика, исследование рынка и т.д. Важно глубокое понимание IT индустрии, вы должны иметь опыт работы в ней Если интересно отправьте мне свое резюме @kivaiko

Зачем нужны поколения для сборщика мусора ? Спросят с вероятностью 22% Поколения в сборке мусора (.NET Garbage Collector) играют важную роль в оптимизации процесса управления памятью. Использование поколений основывается на наблюдении, известном как "гипотеза о слабой генерализации", которая гласит, что большинство объектов умирает молодыми. Это означает, что объекты, которые были недавно созданы, с большей вероятностью будут недоступны или "умрут" быстро, в то время как объекты, которые уже существовали в течение более длительного времени, вероятнее всего, будут нужны программе еще дольше. 1️⃣Улучшение производительности Сбор мусора может быть затратным с точки зрения производительности, особенно если он запускается часто или должен проверять большое количество объектов. Разделение объектов на поколения позволяет сборщику мусора оптимизировать свою работу: ✅Частые сборы в младших поколениях: Поскольку большинство объектов умирает молодыми, частая сборка мусора в поколении 0 (где находятся новые объекты) быстро освобождает память, занимаемую недолговечными объектами, с минимальными затратами времени. ✅Реже сборы в старших поколениях: Объекты, которые выжили несколько сборок мусора и были продвинуты в поколение 1 и далее в поколение 2, проверяются на достижимость менее часто, что снижает нагрузку на систему. 2️⃣Минимизация фрагментации памяти Компактификация, которая часто выполняется в процессе сборки мусора, особенно в младших поколениях, помогает уменьшить фрагментацию памяти. Перемещение "выживших" объектов в одну непрерывную область памяти улучшает производительность доступа к памяти и увеличивает эффективность выделения памяти для новых объектов. 3️⃣Сокращение времени простоя Интеллектуальное управление поколениями позволяет сборщику мусора выполнять полную сборку мусора (включающую все поколения) гораздо реже, что сокращает время простоя приложения, связанное с сбором мусора. Таким образом, приложения работают более плавно и с меньшими задержками. В приложении, где создаются множество временных объектов (например, в результате парсинга данных или обработки запросов пользователя), сборщик мусора быстро удаляет эти объекты в поколении 0, предотвращая накопление "мусора" и сохраняя высокую производительность приложения. Использование поколений в сборке мусора позволяет более эффективно управлять памятью, сокращая время, необходимое на сборку мусора, и улучшая общую производительность приложений. 🔥 ТОП ВОПРОСОВ С СОБЕСОВ 🔒 База собесов | 🔒 База тестовых

Почему тебя не зовут на интервью? Исправь это в своем резюме… Получить приглашение на интервью сейчас сложнее, чем с нуля обу
Почему тебя не зовут на интервью? Исправь это в своем резюме… Получить приглашение на интервью сейчас сложнее, чем с нуля обучиться разработке. И к сожалению, это не шутка. Скорее всего только 1-2% работодателей сейчас позовут тебя на интервью. Это статистика, которую мы собирали по 10.000 откликам. Но над этой цифрой можно и нужно работать. Если правильно оформить свое резюме, и поменять свою стратегию с откликами, то конверсию можно увеличить до 10%. Т.е почти в 10 раз! Как это сделать? 1. Проверить свое резюме по нашему чек листу, и внести в него то, чего будет не хватать. 2. Поменять свой подход к поиску работы, ведь одними откликами на hh.ru сыт не будешь. 16 июля, в 18:00 по москве, мы вместе с Максом из CodeReview проведем вебинар на тему эффективного поиска работы в 2024 году. На нем Макс покажет как сейчас нужно искать работу. В прямом эфире. А также раскроет что именно нужно писать в свое резюме, чтобы оно ПРОДАВАЛО. Получить чек лист по составлению резюме, а также зарегистрироваться на вебинар можно по этой ссылке. Регистрируйся сейчас и увидимся 16 июля, в 18:00 по мск. 👉 Зарегистрироваться и получить чек-лист по резюме.

🤔 Что такое LINQ в C#?
Anonymous voting

Что такое IEnumerable ? Спросят с вероятностью 22% IEnumerable — это интерфейс в базовой библиотеке классов .NET Framework, который определяет один метод: GetEnumerator(). Этот метод возвращает объект IEnumerator, который позволяет перебирать элементы коллекции (например, массива или списка) один за другим. Зачем он нужен? Используется для создания универсального метода перебора данных, не зависящего от типа коллекции. Это означает, что любой тип данных, который реализует IEnumerable, можно перебирать с помощью цикла foreach в C#. Это упрощает работу с различными структурами данных, предоставляя единый механизм для итерации элементов. Как он используется? Когда вы реализуете интерфейс IEnumerable в своём классе, вы обязуете этот класс предоставлять метод GetEnumerator(), который возвращает IEnumerator. IEnumerator, в свою очередь, имеет методы для перехода к следующему элементу (MoveNext) и для получения текущего элемента (Current), а также метод Reset(), который возвращает перечислитель в начальное состояние.
using System;
using System.Collections;

public class DaysOfWeek : IEnumerable
{
    private string[] days = { "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday" };

    public IEnumerator GetEnumerator()
    {
        for (int index = 0; index < days.Length; index++)
        {
            // Yield each day of the week.
            yield return days[index];
        }
    }
}

public class Program
{
    public static void Main()
    {
        DaysOfWeek daysOfWeek = new DaysOfWeek();
        foreach (string day in daysOfWeek)
        {
            Console.WriteLine(day);
        }
    }
}
В этом примере класс DaysOfWeek реализует IEnumerable, что позволяет использовать его в цикле foreach для вывода всех дней недели. Использование yield return в методе GetEnumerator() упрощает создание итератора. IEnumerable позволяет объектам быть перебираемыми в цикле foreach. Это дает возможность скрыть внутреннюю реализацию коллекции, предоставляя простой и понятный интерфейс для доступа к её элементам. Также это способствует созданию кода, который легче читать и поддерживать. 🔥 ТОП ВОПРОСОВ С СОБЕСОВ 🔒 База собесов | 🔒 База тестовых

Привет! Ты сейчас ищешь работу? Если да, то у меня для тебя классные новости. Мы с Максом решили провести вебинар на тему пои
Привет! Ты сейчас ищешь работу? Если да, то у меня для тебя классные новости. Мы с Максом решили провести вебинар на тему поиска работы и того, как быстрее получить оффер. Зачем? Да потому что найти работу просто откликаясь на вакансии теперь практически нереально. На Junior вакансии откликаются по 1500 кандидатов. 1500 человек, Карл... Вопрос: Как искать работу в таких условиях? Ответ: Нужно менять подходы, и использовать новые способы поиска работы. А вот какие способы, и как искать работу в 2024 году, расскажет мой товарищ - Макс, который помогает разработчикам с трудоустройством. Он расскажет тебе как ПРАВИЛЬНО откликаться на вакансии, на что смотрят рекрутеры, и как ты должен быть упакован, чтобы получить работу в это непростое время. 🗓 Когда? Во вторник – 16 июля, в 18:00 по мск. 🎁 После регистрации он также обещал прислать: 1) Анализ рынка труда. 2) Разбор кейсов тех, кто сейчас находит работу. 3) Пошаговый план, что нужно делать, чтобы прийти к оферу. 👉 Записаться на вебинар по поиску работы.

🤔 Какое ключевое слово используется для создания неизменяемого поля в C#?
Anonymous voting

Как работает сборщик мусора ? Спросят с вероятностью 22% Сборка мусора (Garbage Collection, GC) является ключевым компонентом управления памятью, который автоматически освобождает память, используемую объектами, которые больше не доступны для приложения. Он значительно упрощает разработку приложений, поскольку не нужно явно управлять выделением и освобождением памяти. Это помогает предотвратить такие распространенные ошибки, как утечки памяти и повторное использование освобожденной памяти. 1️⃣Фаза маркировки Первым шагом сборки мусора является фаза маркировки. В этой фазе сборщик мусора проходит по всем активным объектам в памяти, начиная с "корней". Корни — это набор объектов, которые непосредственно доступны приложению, включая локальные переменные, статические переменные, параметры методов и т.д. Сборщик мусора идентифицирует все объекты, которые могут быть достигнуты из этих корней, и помечает их как "достижимые". Все непомеченные объекты считаются "недостижимыми" и потенциальными кандидатами на удаление. 2️⃣Фаза очистки После маркировки всех достижимых объектов, сборщик мусора переходит к фазе очистки. В этой фазе он освобождает память, занимаемую недостижимыми объектами. Этот процесс включает удаление ссылок на недостижимые объекты и освобождение памяти, которую они занимали. 3️⃣Фаза компактификации (не всегда) После очистки сборщик мусора может выполнить компактификацию, чтобы уменьшить фрагментацию памяти. В этой фазе достижимые объекты перемещаются вместе в начало кучи, что уменьшает количество разрозненных участков свободной памяти и улучшает производительность последующих выделений памяти. Поколения объектов Сборщик мусора использует генерационный подход, чтобы оптимизировать процесс сборки мусора. Объекты разделяются на три поколения: ✅Поколение 0: Включает новые объекты. Поскольку многие объекты умирают молодыми, поколение 0 собирается часто. ✅Поколение 1: Служит буферной зоной между часто собираемыми молодыми объектами и объектами с долгим временем жизни. Это поколение собирается реже. ✅Поколение 2: Включает объекты с долгим временем жизни. Сборка мусора в этом поколении происходит редко. Сборка мусора автоматизирует управление памятью, предотвращает распространенные ошибки управления памятью и помогает обеспечить стабильность приложения. Она использует комбинацию маркировки, очистки и, при необходимости, компактификации для управления памятью эффективно. 🔥 ТОП ВОПРОСОВ С СОБЕСОВ 🔒 База собесов | 🔒 База тестовых

Как джуну без опыта составить себе крутое резюме? Просто скачай наш гайд с 5 примерами реальных резюмешек ребят, которые неда
Как джуну без опыта составить себе крутое резюме? Просто скачай наш гайд с 5 примерами реальных резюмешек ребят, которые недавно нашли работу. В этом гайде рассказали как: 1. Оформить свой опыт, даже если его нет. 2. Добавили 5 крутых примеров настоящих резюме junior разработчиков без опыта, которые нашли работу. А писала этот гайд команда, которая трудоустроила уже больше 150 джунов! Меняем его на подписку на канал 😊 👉 Скачать можно бесплатно по этой ссылочке.

🤔 Какой метод из `System.Threading.Tasks.Task` является асинхронным?
Anonymous voting

Что известно про SQL ? Спросят с вероятностью 22% SQL (Structured Query Language — язык структурированных запросов) — это специализированный язык программирования, используемый для управления данными в системах управления базами данных (СУБД), таких как SQL Server, Oracle, MySQL, SQLite и PostgreSQL. Этот язык позволяет выполнять различные операции с данными, включая их создание, изменение, управление и извлечение. Основные возможности: 1️⃣DML (Data Manipulation Language) — Язык манипулирования данными: ✅SELECT — извлечение данных из базы данных. ✅INSERT — вставка новых данных в таблицы. ✅UPDATE — обновление существующих данных. ✅DELETE — удаление данных. 2️⃣DDL (Data Definition Language) — Язык определения данных: ✅CREATE — создание новых таблиц или баз данных. ✅ALTER — модификация существующей структуры таблиц или баз данных. ✅DROP — удаление таблиц, баз данных. 3️⃣DCL (Data Control Language) — Язык контроля данных: ✅GRANT — предоставление прав доступа пользователям и ролям. ✅REVOKE — отзыв прав доступа. 4️⃣TCL (Transaction Control Language) — Язык управления транзакциями: ✅COMMIT — подтверждение транзакции. ✅ROLLBACK — откат изменений до начала транзакции или к сохранённой точке.
-- Выборка всех данных из таблицы пользователей
SELECT * FROM Users;

-- Вставка нового пользователя
INSERT INTO Users (Username, Age) VALUES ('Ivan', 25);

-- Обновление данных пользователя
UPDATE Users SET Age = 26 WHERE Username = 'Ivan';

-- Удаление пользователя из таблицы
DELETE FROM Users WHERE Username = 'Ivan';
Почему он так важен? SQL является стандартом в области управления реляционными базами данных. Он позволяет эффективно управлять большими объемами данных, обеспечивает безопасность данных и поддерживает сложные запросы. Это делает SQL незаменимым инструментом для разработчиков, аналитиков данных и администраторов баз данных. 🔥 ТОП ВОПРОСОВ С СОБЕСОВ 🔒 База собесов | 🔒 База тестовых