~/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[x]Backend · JavaSpring Boot[ ]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)

01Controller REST de productos con validaciónQue conozcas las piezas básicas de Spring Boot (controllers, DTOs, validación, manejo global de errores) y las uses con orden.45 min

Con Spring Boot, armá un ProductController para un catálogo guardado en memoria (un ConcurrentHashMap alcanza). Un producto tiene id (Long), name (String), price (BigDecimal) y stock (int).

Implementá POST /products que devuelve 201 con el producto creado y el header Location, GET /products/{id} y PUT /products/{id}. Si el body es inválido respondé 400 con un JSON como { "errors": { "price": "debe ser mayor a 0" } }.

# requisitos

  • -Usá un DTO de entrada (puede ser un record) con Bean Validation: @NotBlank, @Positive, @PositiveOrZero.
  • -Separá controller y service; el controller no tiene lógica de negocio.
  • -Un id inexistente lanza una excepción propia que se traduce a 404 en un @RestControllerAdvice.
  • -Los errores de validación se devuelven con el formato pedido, no el default de Spring.
  • -Generá los id de forma segura ante requests concurrentes (por ejemplo con AtomicLong).

# si te sobra tiempo, te van a preguntar

  • -¿Qué diferencia hay entre PUT y PATCH y cómo implementarías el segundo?
  • -¿Cómo lo testearías con @WebMvcTest y MockMvc?
  • -¿Qué cambia si pasás a JPA con una entidad Product? ¿Expondrías la entidad directamente?
02Reporte de notas con StreamsTu manejo de colecciones y Streams en Java moderno, y si sabés evitar null con Optional.30 min

Tenés una List<Grade> donde Grade es record Grade(String student, String subject, int score). Escribí métodos que devuelvan: el promedio por alumno como Map<String, Double>, los alumnos con alguna nota menor a 4 y la materia con mejor promedio.

Por ejemplo, con [("ana", "math", 8), ("ana", "history", 3), ("juan", "math", 6)], el promedio de ana es 5.5, la lista de alumnos con aplazos es ["ana"] y la mejor materia es math con 7.0.

# requisitos

  • -Resolvelo con la API de Streams (groupingBy, averagingInt, filter, max).
  • -La lista de alumnos con aplazos no tiene repetidos y está ordenada alfabéticamente.
  • -Manejá la lista vacía devolviendo Optional donde corresponda, sin null.
  • -No mutes la lista de entrada.

# si te sobra tiempo, te van a preguntar

  • -¿Cuándo preferís un for clásico frente a un stream?
  • -¿Qué pasa si usás parallelStream() acá? ¿Conviene?
  • -¿Cómo harías que el Map del resultado mantenga el orden alfabético?
03Modelar una cuenta bancariaTus bases de orientación a objetos en Java: encapsulamiento, inmutabilidad, excepciones y tipos adecuados para dinero.30 min

Modelá una clase BankAccount con titular, número de cuenta y saldo. Tiene que permitir deposit(amount), withdraw(amount) y transferTo(other, amount), y guardar un historial de movimientos consultable.

Un retiro o transferencia sin fondos suficientes lanza InsufficientFundsException. Los montos negativos o cero lanzan IllegalArgumentException.

# requisitos

  • -Usá BigDecimal para el saldo y explicá por qué no double.
  • -El saldo no tiene setter público; solo cambia a través de las operaciones.
  • -El historial se expone como una lista inmutable (List.copyOf o Collections.unmodifiableList).
  • -Decidí si InsufficientFundsException es checked o unchecked y justificalo.
  • -Escribí tests con JUnit 5 para los casos de error.

# si te sobra tiempo, te van a preguntar

  • -¿Qué pasa si dos threads retiran de la misma cuenta al mismo tiempo?
  • -¿Cómo evitarías un deadlock si dos transferencias cruzadas se ejecutan en paralelo?
  • -¿Implementarías equals y hashCode? ¿Basados en qué campos?

# leetcode recomendado (Backend · Java · Junior)

EasyTwo SumEl ejemplo clásico de usar un HashMap para pasar de O(n²) a O(n), base de muchas preguntas.
EasyValid ParenthesesPractica una pila con Deque en vez de la vieja clase Stack, detalle que muchos entrevistadores miran.
EasyMerge Two Sorted ListsManipular referencias en listas enlazadas es un clásico de entrevistas Java para juniors.
EasyIsomorphic StringsMantener dos mapas consistentes entrena el uso cuidadoso de Map y sus casos borde.
EasyMove ZeroesTwo pointers in-place sobre arrays, un patrón simple que muestra si pensás en memoria.
EasyEmployees Earning More Than Their ManagersUn self join, la consulta que más se suele preguntar para ver si entendés los JOIN.
EasyRising TemperatureComparar filas por fecha con un join, práctica útil para consultas sobre series temporales.
$ progreso --live-codingBackend · Java · 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