enunciados + leetcode
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.
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
record) con Bean Validation: @NotBlank, @Positive, @PositiveOrZero.id inexistente lanza una excepción propia que se traduce a 404 en un @RestControllerAdvice.id de forma segura ante requests concurrentes (por ejemplo con AtomicLong).# si te sobra tiempo, te van a preguntar
PUT y PATCH y cómo implementarías el segundo?@WebMvcTest y MockMvc?Product? ¿Expondrías la entidad directamente?null con Optional.30 minTené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
groupingBy, averagingInt, filter, max).Optional donde corresponda, sin null.# si te sobra tiempo, te van a preguntar
for clásico frente a un stream?parallelStream() acá? ¿Conviene?Map del resultado mantenga el orden alfabético?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
BigDecimal para el saldo y explicá por qué no double.List.copyOf o Collections.unmodifiableList).InsufficientFundsException es checked o unchecked y justificalo.# si te sobra tiempo, te van a preguntar
equals y hashCode? ¿Basados en qué campos?HashMap para pasar de O(n²) a O(n), base de muchas preguntas.Deque en vez de la vieja clase Stack, detalle que muchos entrevistadores miran.Map y sus casos borde.JOIN.