~/pcn $ iniciando_

programaConNosotros

Iniciar sesiónCrear cuenta
  • programaConNosotrosprogramaConNosotrosComunidad · desde 2020
  • Inicio
  • Feed
Actividades
  • Eventos
  • Conversaciones
  • Charlas
  • Podcast
  • Desarrollo
Recursos
  • Cursos
  • Lectura
  • Videos
  • Especialidades
  • Herramientas
  • Proyectos
  • Entrevistas
Comunidad
  • Historia
  • Miembros
  • Logros
  • Galería
  • Setups
  • Partners
  • Changelog
SoporteFeedback

~/entrevistas/live-coding

enunciados + leetcode

[simulador][guías][live coding]

Enunciados como los de una entrevista real para resolver por tu cuenta, con el tiempo que te darían, y problemas de LeetCode recomendados para cada tecnología y seniority. Nada se corrige acá: resolvelo en tu editor, en voz alta, y marcá lo que ya practicaste.

# 1. tecnología

[ ]Frontend · React.jsweb, hooks, Next.js[ ]Frontend · iOSSwift, SwiftUI, UIKit[ ]Frontend · AndroidKotlin, Jetpack Compose[ ]Frontend · React NativeExpo, iOS y Android[ ]Backend · Node.jsExpress, NestJS[ ]Backend · PythonDjango, FastAPI[ ]Backend · JavaSpring Boot[x]Backend · .NETC#, ASP.NET Core[ ]AI engineeringconstruir agentes de IA[ ]Agentic engineeringdesarrollar con agentes[ ]Quality engineeringtesting manual y automatizado

# 2. seniority

[x]Junior[ ]Semi-senior[ ]Senior

# ejercicios (resolvelos por tu cuenta, con el tiempo que darían en la entrevista)

01API de tareas con validación en ASP.NET CoreQue conozcas lo básico de ASP.NET Core: routing, DI con sus lifetimes, status codes y validación de entrada.45 min

Con ASP.NET Core (Minimal APIs o controllers, como prefieras) armá una API de tareas guardadas en memoria. Una tarea es record TodoItem(int Id, string Title, bool IsDone, DateTime CreatedAt).

Implementá POST /todos que devuelve 201 Created con la ubicación del recurso, GET /todos con filtro opcional ?done=true, GET /todos/{id} y PUT /todos/{id}. Los errores de validación se devuelven como 400 con un ProblemDetails.

# requisitos

  • -Usá un DTO de entrada distinto del modelo; Title es obligatorio y tiene entre 1 y 100 caracteres.
  • -Registrá el repositorio en memoria en el contenedor de DI y justificá el lifetime elegido (Singleton, Scoped o Transient).
  • -El repositorio es seguro ante requests concurrentes (ConcurrentDictionary o un lock).
  • -Un id inexistente devuelve 404 con Results.NotFound() o NotFound().
  • -Los handlers son async aunque el store sea en memoria, para que el contrato no cambie al pasar a EF Core.

# si te sobra tiempo, te van a preguntar

  • -¿Qué pasaría si registrás el repositorio como Scoped?
  • -¿Cómo lo testearías con WebApplicationFactory?
  • -¿Qué cambia al pasar a EF Core con un DbContext?
02Reporte de ventas con LINQTu fluidez con colecciones y LINQ, y si conocés sus trampas habituales como la ejecución diferida.30 min

Tenés una List<Sale> donde record Sale(string Seller, string Region, decimal Amount, DateOnly Date). Escribí métodos que devuelvan: el total vendido por región ordenado de mayor a menor, el mejor vendedor de cada mes y los vendedores que no vendieron nada en un mes dado, partiendo de una lista de todos los vendedores.

Por ejemplo, el primero devuelve algo como [("Norte", 15000m), ("Sur", 9800m)].

# requisitos

  • -Resolvelo con LINQ (GroupBy, Sum, OrderByDescending, Except o equivalentes).
  • -Usá decimal para los montos.
  • -Las colecciones vacías no lanzan excepción: cuidado con Max y First sobre secuencias vacías.
  • -Evitá enumerar la misma consulta varias veces sin necesidad.

# si te sobra tiempo, te van a preguntar

  • -¿Qué es la ejecución diferida en LINQ y cuándo te puede jugar en contra?
  • -¿Qué diferencia hay entre IEnumerable e IQueryable si esto viniera de EF Core?
  • -¿Cuándo preferís FirstOrDefault y cuándo Single?
03Parsear un archivo de configuraciónTu manejo de strings, colecciones y errores en C#, y si escribís código claro y testeado para algo simple.30 min

Escribí Dictionary<string, string> ParseConfig(string content) que reciba el contenido de un archivo con líneas como db.host = localhost, comentarios que empiezan con # y líneas vacías.

Por ejemplo, para el texto con las líneas # base, db.host = localhost, db.port=5432 y invalida, devuelve { "db.host": "localhost", "db.port": "5432" } y reporta que la línea 4 es inválida.

# requisitos

  • -Se ignoran espacios alrededor de la clave y del valor.
  • -Una clave repetida se queda con el último valor, y se registra un warning.
  • -Las líneas inválidas no cortan el parseo; se devuelven con su número de línea en una lista de errores.
  • -Escribí tests con xUnit o NUnit para los casos borde.

# si te sobra tiempo, te van a preguntar

  • -¿Cómo agregarías un método GetInt(key) que falle con un mensaje claro si el valor no es numérico?
  • -¿Usarías TryParse o excepciones para los errores de formato? ¿Por qué?
  • -¿Cómo se relaciona esto con el sistema de configuración de .NET (IConfiguration)?

# leetcode recomendado (Backend · .NET · Junior)

EasyTwo SumEl ejemplo clásico de usar un Dictionary para pasar de O(n²) a O(n), base de muchas preguntas.
EasyValid AnagramContar frecuencias con un array o Dictionary, un patrón que se repite en cualquier agregación.
EasyRoman to IntegerRecorrer un string con reglas simples, buen ejercicio para escribir lógica clara y sin errores de borde.
EasyMerge Sorted ArrayTwo pointers desde el final para fusionar in-place, un clásico que muestra si pensás en memoria.
EasyDesign HashMapImplementar un hash map con buckets te hace entender qué pasa dentro de un Dictionary.
EasyRecyclable and Low Fat ProductsUn SELECT con filtros combinados para empezar con SQL, que en backend siempre se evalúa.
EasyArticle Views IPractica DISTINCT y ORDER BY, detalles que en una entrevista se olvidan fácil.
$ progreso --live-codingBackend · .NET · Junior

ejercicios0/3

leetcode0/7

$ cat guias/live-coding

Cómo encarar un live coding: el método para resolver en voz alta, complejidad, los patrones más frecuentes y cómo practicar.

leer la guía de live coding