Тестовые задания по C#

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

стэк>
Компания>
Сложность>

СКБ Контур • Высокая сложность

Высокий уровень сложности - 3 звезды

Тестовое задание по C# от компании СКБ Контур

Задача. Архиватор логов Неотъемлемая часть любого промышленного приложения — это его логи. Туда попадают записи о всех важных событиях в жизни приложения, например ошибках, скорости и результатах выполнения пользовательских запросов. Зачастую чтение логов — единственный способ разобраться с внезапно возникшей в продакшене неведомой проблемой, или посчитать какую-то статистику о работе приложения. За день приложение под хорошей нагрузкой может генерировать десятки гигабайт логов. Все эти логи хочется хранить вечно, а значит, их надо сжимать. Обычно для этих целей используются алгоритмы сжатия общего назначения — например, gzip. Но можно ли сжимать лучше? Наверное да — ведь логи имеют специфичный формат записей и множество повторяющихся элементов. Ваша задача — продемонстрировать, что это возможно. Задача Разработать приложение для архивации логов в заданном формате (см. конец этого документа). Это должно быть консольное приложение, имеющее два режима работы: сжатие и разжатие. При запуске с двумя аргументами приложение должно запускаться в режиме сжатия: dotnet LogPacker.dll <input_file> <output_file> Первый аргумент задает путь до исходного лог-файла. Второй аргумент задает путь до файла, куда вы запишете сжатые данные. При запуске с тремя аргументами, где первый равен -d, приложение должно запускаться в режиме разжатия: dotnet Kontur.LogPacker.dll -d <input_file> <output_file> Здесь второй аргумент задает путь до сжатого файла, сформированного вашим приложением, а третий аргумент — путь до разжатого файла. Требования и ограничения Внимание! Чтобы соблюсти все базовые требования к решению, рекомендуем воспользоваться шаблоном: https://github.com/DQKrait/Kontur.LogPacker/tree/master Там также есть набор простейших тестов и утилита для запаковки решения в архив перед отправкой на проверку. Внимание! Для выполнения задания вам понадобится .NET Core SDK 2.1 и среда разработки Visual Studio 2017 или JetBrains Rider. Пробную версию JetBrains Rider можно скачать тут: https://www.jetbrains.com/rider/ Функциональные требования: После цикла сжатие-разжатие файл должен быть побайтово равен исходному. Алгоритм должен корректно работать на логах, где строки имеют другой формат, а также на данных, вообще не являющихся логами (в общем случае это просто случайные бинарные данные). Требований по качеству сжатия в таком случае нет, но требования по скорости сжатия сохраняются. Качество сжатия: на произвольных лог-файлах заданного формата размер сжатых данных должен быть меньше, чем при использовании gzip (здесь и далее имеется в виду стандартная реализация из .NET Core: GZipStream с CompressionLevel.Optimal). Ваш архиватор должен выигрывать хотя бы 1 процентный пункт (если gzip сжимает файл до 25% исходного размера, у вас должно получаться 24% или ещё меньше). Скорость сжатия: на любых данных время работы вашего алгоритма не должно превышать время работы gzip более чем в два раза. Аналогично со скоростью разжатия. Потребление оперативной памяти: объем потребляемой оперативной памяти не должен зависеть от размера входных данных и на любых входных данных не должен выходить за разумные пределы (100-200 МБ). Загрузка процессора: архивация логов не должна мешать другим работающим на машине приложениям. Поэтому ваш архиватор должен работать в один поток. Решение может создавать временные файлы, но их суммарный размер не должен превышать размер входного файла, и они должны удаляться до завершения процесса архиватора. Все временные файлы должны находиться в рабочей директории приложения (т. е. если вы будете указывать только имя файла, без директории, всё сработает как надо). Требования к оформлению: Решение должно представлять собой консольное приложение на .NET Core 2.1. Нельзя использовать внешние библиотеки и приложения, как из nuget, так и подключаемые вручную. Решение должно быть запаковано в zip-архив с фиксированной структурой папок. Чтобы не ошибиться, рекомендуем воспользоваться утилитой Kontur.LogPacker.SubmitHelper из проекта с шаблоном.

NAUKA • Лёгкая сложность

Лёгкий уровень сложности - 1 звезда

Тестовое задание по C# от компании NAUKA

Необходимо разработать приложение, позволяющее управлять учетными данными сотрудников (создавать, редактировать, просматривать список и детали, удалять). Функциональные требования к веб-приложению: 1. Поддержка операций управления (создания, чтения, редактирования и удаления) данными сотрудников. Данные сотрудника определяется следующими значениями:  Имя;  Фамилия;  Отчество;  Дата рождения;  Адрес проживания;  Отдел;  Поле ввода “О себе”. 2. Наличие пользовательского интерфейса, реализованного c использованием WinForms. Нефункциональные требования:  Система хранения данных: любая СУБД;  Код приложения необходимо снабдить комментариями;  Приложение должно собираться без установки или настройки каких- либо дополнительных компонент;  Архив с результатом тестового задания должен содержать текстовый файл readme.txt с инструкцией по настройке и конфигурированию приложения (если необходимо).

Инфотекст • Лёгкая сложность

Лёгкий уровень сложности - 1 звезда

Тестовое задание по C# от компании Инфотекст

Задание 1. Резервное копирование файлов. Консольное приложение для резервного копирования файлов в архив. В файле настроек хранятся пути для исходной и целевой папки. При запуске программы происходит создание папки с временным штампом в целевой папке и копирование в неё всех доступных файлов из исходной. Требуется обрабатывать ситуации с невозможностью доступа к файлам в исходной папке. Пункты со звездочкой являются дополнительными и не обязательны для выполнения. * Файл настроек имеет формат JSON. * Есть возможность указать несколько исходных папок. * Ведется журналирование процесса копирования. Каждый запуск создает свой файл журнала. Уровень журналирования можно указать в файле настроек. Примеры распределения событий: Error - Ошибки приложения. Например, те, которые вызвали неожиданное падение. Info - Основные события приложения: старт приложения, обработка одной исходной папки или обработанные ошибки. Debug - Отладочная информация. Например, скопирован отдельный файл

Инфотекст • Средняя сложность

Средний уровень сложности - 2 звезды

Тестовое задание по C# от компании Инфотекст

Задание 2. Rss фидер. Графическое приложение для чтения RSS ленты с сайта. В файле настроек хранится: Лента, которую обрабатывает фидер. По умолчанию это (https://habr.com/rss/interesting/). Частота обновления ленты приложением. Основное окно должно содержать список элементов ленты (item): Каждый элемент ленты должен отображать название и дату публикации (поля item->title и item->pubDate ). Дата публикации статьи должна отображаться в удобном для чтения пользователю формате. При нажатии на заголовок должен открываться браузер с переходом на выбранную статью (или в уже открытом браузере должна открываться ссылка). Пользователь должен иметь возможность посмотреть описание статьи (поле item->description). Содержание описание выводится в виде обычного текста (как есть), без форматирования по тегам. Данные должны периодически обновляться. Частота обновления должна быть взята из файла конфигурации. Пункты со звездочкой являются дополнительными и не обязательны для выполнения. * Файл настроек имеет формат XML. * Имеется возможность изменить ленту в меню настроек. * Имеется возможность изменить частоту обновления в меню настроек. * Опции в меню настроек валидируются. * Имеется возможность включить несколько лент. Пользователь должен иметь возможность включать и выключать ленты в окне приложения. * Выводить описание в виде, форматированном по тегам. * Иметь возможность переключения отображения описания в форматированном виде и без форматирования. * Реализовать на asp.net mvc/blazor или asp.net spa Требования к присылаемым решениям. Готовые задания должны быть переданы в zip архиве. Каждый из проектов должен находиться в своей папке и должен в обязательном порядке содержать отдельно исходный код приложения и отдельно собранную бинарную версию работающую в среде MS Windows 10. Собранная программа не должна требовать настроек системы или нахождения определенных файлов в специфичном месте (не актуально для 2го задания, если выполнено на asp.net). Исходный код должен компилироваться средствами MSVS 2015 или MSVS 2017. В архиве не должно быть неиспользуемых исходных кодов, ресурсов или промежуточных файлов сборки. Максимальное время на выполнение задания – 2 недели.

Получите доступ более чем к 500 тестовым заданиям
Сервис можно использовать бесплатно,
без ограничений. Чтобы получить полный доступ,
вам необходимо зарегистрироваться.
12
...
8
где найти тестовые задания для практики
пример тестового задания junior
тестовые задания для junior csharp
практические задачи по csharp
решение тестового задания csharp