В чём разница между System.Array.CopyTo() и System.Array.Clone()?
Метод System.Array.CopyTo() выполняет глубокое копирование, копируя не только элементы самого массива, но и все объекты, на которые указывают ссылки в этих элементах. Это означает, что все связанные объекты также будут скопированы.
В отличие от этого, метод System.Array.Clone() выполняет поверхностное копирование. При этом копируются только сами элементы массива, независимо от их типа (значение или ссылка). При этом объекты, на которые указывают ссылки, не копируются, а копируются только сами ссылки, точно так же, как и в исходном массиве.
Ещё пара отличий между методами:
System.Array.CopyTo() требует наличия выходного массива, тогда как System.Array.Clone() создает новый массив.
System.Array.CopyTo() позволяет указывать индекс элемента, начиная с которого производить копирование.
🐸 Библиотека собеса по С#
В отличие от этого, метод System.Array.Clone() выполняет поверхностное копирование. При этом копируются только сами элементы массива, независимо от их типа (значение или ссылка). При этом объекты, на которые указывают ссылки, не копируются, а копируются только сами ссылки, точно так же, как и в исходном массиве.
Ещё пара отличий между методами:
System.Array.CopyTo() требует наличия выходного массива, тогда как System.Array.Clone() создает новый массив.
System.Array.CopyTo() позволяет указывать индекс элемента, начиная с которого производить копирование.
Please open Telegram to view this post
VIEW IN TELEGRAM
Как диагностировать в проде thread pool starvation и «sync-over-async» без перезапуска?
Снимайте EventPipe-метрики (dotnet-counters): ThreadPool Queue Length/Completed/Active, aspnetcore-критерии; берите короткий dotnet-trace CPU-сэмплинг, при необходимости дамп. Признаки — длинная очередь, мало воркеров, блокирующие стеки. Лечение: end-to-end async, убрать .Result/.Wait(), вынести долгие блокировки, при пиках поднять MinThread, но не маскировать корень.
Библиотека собеса по С#
Библиотека собеса по С#
Различия между интерфейсом и абстрактным классом в .NET
Интерфейс определяет набор поведения, которым должны обладать классы, его реализующие. Он включает только объявления свойств, методов и событий, без указания модификаторов доступа. Все члены интерфейса обязательно должны быть реализованы в классах, которые его используют.
Абстрактный класс, в свою очередь, предлагает частичную реализацию функциональности и может содержать как абстрактные, так и виртуальные члены, которые должны быть реализованы наследующими его классами. Кроме того, абстрактный класс может содержать поля.
Важно отметить, что ни интерфейс, ни абстрактный класс не могут быть инстанцированы.
🔹 Курс «Программирование на языке Python»
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
Библиотека собеса по С#
Абстрактный класс, в свою очередь, предлагает частичную реализацию функциональности и может содержать как абстрактные, так и виртуальные члены, которые должны быть реализованы наследующими его классами. Кроме того, абстрактный класс может содержать поля.
Важно отметить, что ни интерфейс, ни абстрактный класс не могут быть инстанцированы.
🔹 Курс «Программирование на языке Python»
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
Библиотека собеса по С#
❤3
В .NET Core сервисе под высокой нагрузкой вы замечаете рост задержек и частые блокировки потоков при работе с БД. Как будете искать и устранять проблему?
Проверить, не используются ли синхронные вызовы (.Result, .Wait()), профилировать async-цепочки. Убедиться, что пул подключений к БД настроен корректно, и что долгие операции не блокируют ThreadPool. Решение — переписать на полноценный async/await, оптимизировать запросы, при необходимости ограничить параллелизм через SemaphoreSlim или использовать кэширование.
🔹 Курс «Программирование на языке Python»
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
Библиотека собеса по С#
🔹 Курс «Программирование на языке Python»
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
Библиотека собеса по С#
В .NET Core сервисе под высокой нагрузкой время отклика начало расти. Профилирование показывает частые паузы GC и большое количество объектов в Large Object Heap (LOH). Как вы будете разбираться с этой проблемой и что можно сделать для оптимизации?
Нужно проанализировать профилировщиком (dotTrace, PerfView, ETW), какие именно объекты попадают в LOH. Оптимизировать работу с большими массивами и строками: использовать пулы (ArrayPool<T>), Span<T>, Memory<T>, разбивать большие структуры на меньшие. Проверить аллокации, убрать избыточные, а GC — настроить (Server/Background GC).
Библиотека собеса по С#
Библиотека собеса по С#
В высоконагруженном .NET Core сервисе вы замечаете рост задержек при обработке запросов. Профилирование показывает большое количество асинхронных задач в состоянии WaitingForActivation. Что это может означать и как решать проблему?
Это часто указывает на блокирующий код внутри async-методов (например, вызовы .Result или .Wait()), либо на долгие операции без await. Нужно убрать синхронные блокировки, использовать полноценный async/await, добавить таймауты, проверить сторонние библиотеки на наличие блокирующих вызовов и при необходимости вынести тяжёлые операции в отдельные потоки/процессы.
🔹 Курс «Программирование на языке Python»
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
Библиотека собеса по С#
🔹 Курс «Программирование на языке Python»
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
Библиотека собеса по С#
В Unity-проекте вы замечаете, что FPS резко проседает при активации новых объектов на сцене. Как вы будете искать и устранять проблему?
Сначала проверю профайлером (Unity Profiler, Deep Profile), чтобы понять, тратится ли время на Instantiate, GC или загрузку ассетов. Для оптимизации — применю Object Pooling вместо частого создания/уничтожения объектов, использую Addressables для асинхронной подгрузки, а также разделю тяжёлые операции на несколько кадров (coroutines/Jobs).
Библиотека собеса по С#
Библиотека собеса по С#
Почему тебя валят на архитектуре?
Выучить синтаксис C# и LINQ — это программа минимум. Но на позициях Middle+ собеседующие копают глубже: паттерны, SOLID, чистота кода и алгоритмическая база. Без этого оффер не получить.
Закрываем пробелы оптом: 1 + 2.
Выбираешь три курса, оплачиваешь только тот, что выше по стоимости. Остальные — за счет заведения.
Что подтянуть шарписту:
— Архитектуры и шаблоны проектирования (чтобы отвечать уверенно);
— Алгоритмы и структуры данных.
Собрать набор для грейдапа
Актуально до 31 декабря.
Нужен совет по треку? Пиши: @manager_proglib
Выучить синтаксис C# и LINQ — это программа минимум. Но на позициях Middle+ собеседующие копают глубже: паттерны, SOLID, чистота кода и алгоритмическая база. Без этого оффер не получить.
Закрываем пробелы оптом: 1 + 2.
Выбираешь три курса, оплачиваешь только тот, что выше по стоимости. Остальные — за счет заведения.
Что подтянуть шарписту:
— Архитектуры и шаблоны проектирования (чтобы отвечать уверенно);
— Алгоритмы и структуры данных.
Собрать набор для грейдапа
Актуально до 31 декабря.
Нужен совет по треку? Пиши: @manager_proglib
В вашей команде разработчиков часто случаются конфликты при merge в main. Как вы будете диагностировать и выстраивать процесс так, чтобы минимизировать количество конфликтов?
Анализировать, где чаще всего возникают конфликты (монолитные файлы, частые изменения), внедрить короткоживущие feature-ветки и регулярные rebase на main, настроить code ownership и pull request review. При необходимости — разбить большие модули на более мелкие, а также автоматизировать форматирование кода, чтобы уменьшить “шум” в diff.
Библиотека собеса по С#
Библиотека собеса по С#