Приведи пример pet-проектов или тестовых учебных проектов

«Приведи пример pet-проектов или тестовых учебных проектов» — вопрос из категории Софт-скиллы, который задают на 25% собеседований C# Разработчик. Ниже — развёрнутый пример ответа, который можно адаптировать под свой опыт.

Ответ

Pet-проекты — отличный способ изучить новые технологии и показать практические навыки. Вот несколько идей, которые можно реализовать на C#/.NET, постепенно усложняя:

1. Консольный менеджер задач (To-Do List)

Цель: Освоить основы C#, работу с файлами (JSON/XML) или простой локальной БД (SQLite).

// Пример структуры задачи
public class TaskItem
{
    public int Id { get; set; }
    public string Description { get; set; }
    public bool IsCompleted { get; set; }
    public DateTime CreatedAt { get; set; }
}
// Функционал: CRUD операции, сохранение/загрузка из JSON-файла через System.Text.Json

Усложнение: Добавить категории, приоритеты, дедлайны, поиск и фильтрацию.

2. RESTful API для каталога продуктов (ASP.NET Core Web API)

Цель: Изучить создание веб-API, Entity Framework Core, миграции БД.

[ApiController]
[Route("api/[controller]")]
public class ProductsController : ControllerBase
{
    private readonly AppDbContext _context;

    [HttpGet]
    public async Task<ActionResult<IEnumerable<Product>>> GetProducts()
    {
        return await _context.Products.ToListAsync();
    }

    [HttpPost]
    public async Task<ActionResult<Product>> PostProduct(Product product)
    {
        _context.Products.Add(product);
        await _context.SaveChangesAsync();
        return CreatedAtAction(nameof(GetProducts), new { id = product.Id }, product);
    }
}

Усложнение: Добавить пагинацию, сортировку, JWT-аутентификацию, кэширование ответов, контейнеризацию (Docker).

3. WPF-приложение "Курсы валют"

Цель: Освоить MVVM-паттерн, привязку данных (Data Binding), асинхронные запросы.

  • Использовать публичное API (например, exchangerate-api.com).
  • Интерфейс: поле для выбора валют, кнопка обновления, таблица/список с курсами.
  • Сохранение истории запросов в SQLite.

4. Telegram-бот на C

Цель: Работа с внешними API, long-polling/webhooks.

  • Использовать библиотеку Telegram.Bot.
  • Примеры: бот-напоминалка, бот для конвертации валют, простой опросник.

5. Игра "Змейка" (Snake) на Unity или с использованием .NET MAUI/ Avalonia

Цель: Понять основы игрового цикла, обработку ввода, отрисовку графики.

Советы по развитию любого pet-проекта:

  1. Версионный контроль: Обязательно используйте Git, создавайте осмысленные коммиты.
  2. Тестирование: Покройте логику unit-тестами с помощью xUnit или NUnit.
  3. Документация: Напишите README.md с описанием, инструкцией по запуску и скриншотами.
  4. CI/CD: Настройте автоматическую сборку и прогон тестов на GitHub Actions или GitLab CI.