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

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

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

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

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

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

Тестовая задача “Ханаби” В этой задаче на объектно-ориентированное проектирование нужно создать систему классов, моделирующую карточную игру. Правила игры Мы используем упрощенные правила игры Ханаби. Они отличаются от стандартных. Два участника играют специальными картами. У каждой карты есть цвет (красный, зеленый, синий, желтый и белый) и достоинство (от 1 до 5). На вход программе подается список карт колоды. В колоде есть как минимум 11 карт. Первые 5 карт достаются первому игроку. Вторые 5 карт — второму. Начало новой игры описывается такой входной строкой: Start new game with deck R1 G2 B3 W4 Y5 R1 R1 B1 B2 W1 W2 W1 Эта игра начнется со следующими картами: Первый игрок: R1 G2 B3 W4 Y5 (красная единица, зеленая двойка и т.д) Второй игрок: R1 R1 B1 B2 W1 Верхняя карта колоды после такой раздачи — W2 (белая двойка) Игра кооперативная и задача у игроков общая — выложить на стол как можно больше карт, пока игра не закончилась. Игроки держат карты рубашками к себе, то есть не видят своих карт, но видят чужие. Игроки не знают ни состав колоды, ни порядок карт в колоде. Игроки ходят по очереди и пропускать ход нельзя. Ход — это одно из четырех действий: 1. Разыграть карту. Игрок выбирает одну из своих карт и кладет на стол. Играть можно только карту, которой еще нет на столе. При этом достоинство карты должно быть единицей или на столе уже должна быть карта того же цвета, но на единицу меньшего достоинства. То есть разыгранная карта должна продолжать возрастающую последовательность одного цвета или начинать последовательность нового цвета. Сыгранная карта удаляется из руки и помещается на стол. Игрок добирает карту из колоды себе в руку, в конец списка карт. Если корректно сыграть карту нельзя, то карта помещается в сброс, а игра немедленно завершается. Пример: Play card 0 — текущий игрок выкладывает первую карту Если игроку достоверно не известно, можно ли сыграть карту корректно, но он все же успешно разыгрывает эту карту, то ход считается рискованным. В этой задаче рискованными называются только такие ходы. 2. Сбросить карту. Игрок выбирает одну из своих карт, помещает её в сброс и добирает одну карту из колоды себе в руку. Пример: Drop card 4 — текущий игрок сбрасывает последнюю карту из руки 3. Подсказать цвет. Игрок называет один из цветов и указывает на все карты этого цвета в чужой руке. Цвет, которого нет в чужой руке, называть нельзя. Пример: Tell color Red for cards 0 1 2 3 4 — текущий игрок сообщает другому игроку, что у него все карты красные 4. Подсказать достоинство. Игрок называет достоинство и указывает на все карты этого достоинства в чужой руке. Достоинство, которого нет в чужой руке называть нельзя. Пример: Tell rank 1 for cards 2 4 — текущий игрок сообщает, что у другого игрока в руке вторая и четвертая карты (нумерация с нуля) — единицы. Игра завершается в трех случаях: 1. Когда колода заканчивается. То есть, последняя карта колоды никогда не играет. 2. Когда на столе 25 карт. То есть, когда больше ни одну карту выложить нельзя. 3. Когда один из игроков делает некорректный ход: разыгрывает некорректную карту или сообщает другому игроку ложную или неполную информацию о его картах. Все ходы после завершения игры нужно игнорировать. Постановка задачи Программе будут вводить через консоль описание игр одна за другой. Для каждой завершенной игры из входных данных программа должна вывести одну строку, содержащую номер хода, на котором игра завершилась, количество корректно сыгранных карт, а также количество успешных рискованных ходов.

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

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

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

ImageTransformer Нужно написать сервис, решающий такую задачу. По HTTP приходит запрос, содержащий картинку в формате png, координаты прямоугольной области и тип преобразования. Надо применить к картинке преобразование, вырезать фрагмент, соответствующий заданной области, и отправить в ответ. Вопросы по заданию можно задавать здесь: https://t.me/joinchat/A3Kxg0zr49r5YbnfHpIT0A Требования к решению Ожидается, что ваш сервис будет подвергаться большой нагрузке. Поэтому он, конечно же, должен работать максимально быстро. Чем быстрее обрабатывается каждый запрос — тем лучше. Чем больше запросов в секунду обрабатывается — тем лучше. Но у любой производительности есть предел, и ваш сервис должен быть готов столкнуться с нагрузкой, превышающей его возможности. Требования к стабильности под экстремальной нагрузкой: 1. Если нагрузка превышает возможности сервиса — производительность не должна деградировать. То есть, если сервис способен обработать максимум X rps, при нагрузке X * 2 rps сервис должен всё ещё обрабатывать не меньше X rps. Запросы, до которых очередь дойдет не скоро, можно сразу отклонять с ошибкой. 2. Производительность сервиса не должна деградировать со временем. Если сервис круглосуточно работает под нагрузкой без перезапусков, никакие ресурсы не должны закончиться и пропускная способность не должна уменьшиться. 3. Клиенты не должны замечать кратковременные задержки в работе сервиса. Если случилась пауза из-за GC, или ещё по какой-то причине сервис короткое время не обрабатывал запросы, клиенты не должны получить ошибок, если пауза действительно была небольшая. Известно, что сервис будет запущен на виртуальной машине с 8 GB оперативной памяти и 8 ядрами процессора. Операционная система — 64-битная Windows Server 2016. Реализация Сервис должен представлять собой self-hosted веб-сервер, написанный на C# под .NET 4.6.2. Можно использовать вот этот шаблон проекта: https://github.com/DQKrait/Kontur.ImageTransformer

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

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

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

Задание Напишите сервер статистики для многопользовательской игры-шутера. Матчи этой игры проходят на разных серверах, и задача сервера статистики — строить общую картину по результатам матчей со всех серверов. Сервер должен представлять собой standalone-приложение, реализующее описанный ниже RESTful API. Общая схема работы такая: игровые сервера анонсируют себя advertise-запросами, затем присылают результаты каждого завершенного матча. Сервер статистики аккумулирует разную статистику по результатам матчей и отдает её по запросам (статистика по серверу, статистика по игроку, топ игроков и т.д.). Нельзя​​использовать​​.NET​​Core. Требования к решению ● Сервер должен реализовывать описанное выше API. ● Сервер должен поддерживать работу на произвольном HTTP-префиксе (задается при запуске). ● Сервер не должен терять данные при перезапуске. Если на PUT-запрос сервер вернул 200 OK, данные не должны быть потеряны даже в случае аварийного завершения приложения. Допустима потеря данных при внезапном выключении хоста. Для​​хранения​​данных​​можно​​использовать​​как​​собственное​​решение,​​так​​и готовую​​embedded-базу​​данных.​​В​​качестве​​БД​​не​​рекомендуется использовать​​MSSQL​​LocalDB. ● Сервер не должен падать при получении некорректных запросов. На такие запросы нужно отправлять ответ с кодом, отличным от 200 OK. Допустимы любые коды вида 4xx и 5xx. ● Сервер должен быстро обслуживать все виды запросов. ● Сервер должен уметь логировать ошибки. ● Код должен быть покрыт тестами. ● Код должен быть написан аккуратно и с любовью к деталям. Оформление решения ● Все внешние модули, от которых зависит решение, должны содержаться в папке с решением. Также допускаются зависимости от nuget-модулей. ● Решение должно успешно собираться с помощью msbuild: nuget restore && msbuild /p:Configuration=Release. В результате сборки папка Kontur.GameStats.Server/bin/Release внутри папки с решением должна содержать всё необходимое для работы приложения. ● Сервер должен запускаться из папки bin/Release следующим образом: Kontur.GameStats.Server.exe --prefix http://+:8080/, где вместо http://+:8080/ может быть любой UrlPrefix. ● Можно использовать в качестве заготовки проект из репозитория на гитхабе: https://github.com/DQKrait/Kontur.GameStats

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

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

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

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

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