~/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

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

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

01Listado de órdenes con JPA sin N+1Que entiendas cómo JPA y Hibernate generan SQL y puedas diagnosticar y resolver problemas de performance comunes.45 min

Tenemos las entidades JPA Customer, Order (con @ManyToOne a Customer y @OneToMany a OrderItem) y OrderItem. El endpoint GET /orders?status=PAID&page=0&size=20 devuelve cada orden con el nombre del cliente y sus ítems, y en producción dispara cientos de queries.

Reescribí el repository, el service y el DTO de respuesta para que la cantidad de queries sea constante y la respuesta sea { "content": [...], "page": 0, "size": 20, "totalElements": 1234 }.

# requisitos

  • -Usá Pageable de Spring Data y un DTO de salida, sin serializar entidades.
  • -Resolvé el N+1 con @EntityGraph, JOIN FETCH o una proyección, y explicá el problema de combinar JOIN FETCH de colecciones con paginación.
  • -El service es @Transactional(readOnly = true).
  • -Validá size con un máximo de 100.
  • -Mostrá cómo verificarías la cantidad de queries (logs de Hibernate o un test).

# si te sobra tiempo, te van a preguntar

  • -¿Qué es LazyInitializationException y por qué aparece con open-in-view desactivado?
  • -¿Cuándo pasarías a paginación por cursor?
  • -¿Qué índices crearías para este listado?
02Cache LRU thread-safe con TTLTu dominio de colecciones y concurrencia en Java, y si entendés el costo real de cada estrategia de sincronización.45 min

Implementá LruCache<K, V> con capacidad máxima y TTL por entrada. get(key) devuelve Optional<V> y actualiza el orden de uso; put(key, value) inserta y, si se supera la capacidad, desaloja la entrada usada menos recientemente.

El cache se usa desde varios threads de un servidor web al mismo tiempo, así que tiene que ser seguro ante concurrencia sin bloquear más de lo necesario.

# requisitos

  • -Primero resolvelo extendiendo LinkedHashMap con removeEldestEntry y después explicá cómo lo harías a mano con hash map y lista doblemente enlazada.
  • -Las entradas vencidas no se devuelven nunca.
  • -Usá ReentrantReadWriteLock, synchronized o una estructura concurrente y justificá la elección.
  • -Las operaciones son O(1) en promedio.

# si te sobra tiempo, te van a preguntar

  • -¿Por qué un get en un LRU no es una operación de solo lectura y qué implica para el lock?
  • -¿Cuándo usarías Caffeine o el cache de Spring (@Cacheable) en vez de esto?
  • -¿Cómo medirías el hit rate?
03Agregador de precios con CompletableFutureTu manejo de programación concurrente con futures en Java: timeouts, aislamiento de fallas y uso responsable de threads.45 min

Un comparador de vuelos consulta 5 proveedores externos con ProviderClient.search(query), que tarda entre 200 ms y 3 segundos y a veces falla. Escribí un PriceAggregator.search(query) que consulte a todos en paralelo y devuelva las ofertas combinadas, ordenadas por precio.

La respuesta total no puede tardar más de 2 segundos: lo que no llegó a tiempo se descarta y se informa qué proveedores faltaron, por ejemplo { "offers": [...], "missingProviders": ["acme"] }.

# requisitos

  • -Usá CompletableFuture con un Executor propio, no el common pool.
  • -Aplicá un timeout por proveedor con orTimeout o completeOnTimeout.
  • -Un proveedor que falla no rompe la respuesta de los demás.
  • -Combiná resultados con allOf o una alternativa equivalente.
  • -Explicá cómo dimensionarías el pool de threads.

# si te sobra tiempo, te van a preguntar

  • -¿Qué cambia si usás virtual threads de Java 21?
  • -¿Cómo agregarías un circuit breaker con Resilience4j para un proveedor que falla seguido?
  • -¿Cómo lo testearías sin depender de tiempos reales?

# leetcode recomendado (Backend · Java · Semi-senior)

Medium3SumOrdenar más two pointers y manejar duplicados, una pregunta muy repetida en entrevistas Java.
MediumNumber of IslandsBFS o DFS sobre una grilla, la puerta de entrada a todos los problemas de grafos.
MediumMin StackDiseñar una estructura con una operación extra en O(1) entrena pensar invariantes.
MediumKth Largest Element in an ArrayPractica PriorityQueue y te hace comparar heap contra quickselect.
MediumPrint FooBar AlternatelyCoordinar dos threads con Semaphore o wait/notify es una pregunta de concurrencia muy común en Java.
MediumManagers with at Least 5 Direct ReportsGROUP BY con HAVING sobre una relación jerárquica, típico de consultas de reportes.
MediumNth Highest SalaryPractica DENSE_RANK, LIMIT/OFFSET y el manejo de NULL cuando no hay resultado.
$ progreso --live-codingBackend · Java · Semi-senior

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