Preguntas de entrevista con desglose de respuestas — Página 50 de 52
Explora la página 50 de los desgloses de preguntas y respuestas de entrevistas de Offer.cc con razonamiento, detalles de implementación, preguntas de seguimiento y fuentes públicas.
Entrevista técnica de código: ¿Cómo realizar un muestreo uniforme a partir de un flujo de longitud desconocida?
Utilice el muestreo de reservorio (reservoir sampling) para mantener k elementos con igual probabilidad en una sola pasada con memoria O(k), demostrando el invariante y gestionando los casos límite.
¿Cómo diseñarías un generador distribuido de IDs únicos?
Deriva la distribución de bits estilo Snowflake a partir de restricciones de capacidad, gestiona el retroceso del reloj, la identidad de los workers, el agotamiento de secuencias y fallas multirregión, y luego compara con UUIDv7 y asignación por segmentos.
Evaluar un clasificador en datos desbalanceados
Deriva métricas de clasificación y un umbral de decisión a partir de la matriz de confusión, la capacidad de revisión y los costos de error, y luego explica los roles diferenciados de AUROC, precision-recall, calibración y monitoreo de la tasa base.
Entrevista técnica de código: ¿Cómo maximizar la recompensa con trabajos no superpuestos?
Utilice la programación de intervalos ponderados para conectar ordenamiento, búsqueda binaria y programación dinámica, con límites precisos, demostración, complejidad y reconstrucción.
¿Cómo diseñarías un programador de tareas distribuido?
Diseña un programador multiinquilino para tareas únicas y cron utilizando identidades de ocurrencia, índices de tiempo particionados y entrega de al menos una vez, mientras se manejan picos sincronizados, fallas de disparo (misfires), husos horarios, carreras de cancelación y recuperación.
Detectar y prevenir la fuga de datos (data leakage) en Machine Learning
Utilice un modelo de fraude para definir un contrato en el momento de la predicción, investigar la fuga por variable objetivo, temporal, de entidad y de preprocesamiento, y construir divisiones creíbles, validación cruzada y una evaluación final en un conjunto de retención (holdout).
Entrevista de código: ¿Cómo implementar un arreglo dinámico y demostrar que append es O(1) amortizado?
Utiliza invariantes de capacidad, crecimiento geométrico y una demostración amortizada para implementar un arreglo dinámico indexable y explicar los costos de espacio y del peor caso.
Diseñar un sistema de notificaciones multicanal
Utilizando como supuesto de entrevista mil millones de tareas de entrega por canal al día, diseñe un sistema de notificaciones tanto para OTP como para campañas de marketing, con aislamiento de prioridades, estados de entrega fidedignos, callbacks fuera de orden, reintentos y recuperación comprobable.
Manejo de eventos tardíos y fuera de orden en el procesamiento de flujos
Utilice los ingresos por hora para derivar un diseño de procesamiento de flujos a partir del tiempo del evento, marcas de agua (watermarks), retraso permitido y estado de desduplicación, incluyendo correcciones, limpieza de estado, recuperación ante fallos y conciliación fuera de línea.
Entrevista técnica de código: ¿Cómo devolverías las K palabras más frecuentes?
Utiliza el conteo de frecuencias, un min-heap personalizado y un comparador preciso de frecuencia/lexicográfico para devolver las Top K palabras en tiempo O(n log k).
Entrevista de diseño de sistemas: Aplicar un límite de tasa global entre regiones
Diseñe el arrendamiento de cuotas para un límite de API global, cuantifique el exceso de consumo (overshoot) durante particiones, reequilibre regiones con alta demanda y elija un comportamiento explícito de fail-open o fail-closed.
Entrevista técnica: ¿Cómo implementar un calendario que rechaza solapamientos?
Utilice intervalos semiabiertos, búsqueda de predecesor y sucesor, y un mapa ordenado para resolver My Calendar I con límites claros y complejidad bien definida.
Entrevista técnica: Depurar una mediana en flujo continuo (streaming median) defectuosa basada en dos montículos
Diagnostica un MedianFinder que devuelve valores incorrectos tras inserciones adversas restaurando los invariantes de ordenamiento de montículos, tamaño, estado vacío y desbordamiento.
Entrevista técnica de código: ¿Cómo implementarías una pila de mínimo O(1)?
Mantén una pila de mínimos por prefijo para que push, pop, top y getMin se ejecuten en O(1), contemplando mínimos duplicados y el comportamiento de pila vacía.
Entrevista de código: Implementar un filtro de Bloom
Implementa add y mightContain para un filtro de Bloom, luego explica falsos positivos, dimensionamiento, límites de eliminación y pruebas.
Entrevista técnica de código: Implementar un bloqueo de lectura y escritura seguro para subprocesos (Thread-Safe Read-Write Lock)
Implementa un bloqueo de lectura y escritura con un mutex y variables de condición, luego analiza la equidad (fairness), las actualizaciones (upgrades) y los casos de falla.
Entrevista técnica: Implementar una caché TTL con expiración
Utilice una tabla hash, marcas de tiempo de expiración, limpieza y reglas de concurrencia para implementar una caché TTL fácil de probar.
Entrevista técnica de código: ¿Cómo implementarías un conjunto de intervalos con fusión y consultas?
Implementa un conjunto normalizado de intervalos no superpuestos con operaciones de adición, eliminación, búsqueda de puntos y consultas de superposición de rangos, incluyendo el razonamiento de límites y complejidad.
Entrevista de código: ¿Cómo implementarías una cola de prioridades mutable con actualización y eliminación?
Utiliza un heap, un mapa de índices y eliminación perezosa (lazy deletion) para implementar una cola de prioridades actualizable, cubriendo desempates estables, eliminación, entradas obsoletas y pruebas de complejidad.
Entrevista técnica de código: ¿Cómo diseñar un iterador por lotes reanudable?
Comienza a partir del contrato hasNext/next y diseña un iterador que lea páginas remotas, se reanude de forma segura, evite duplicados y propague fallas.
Entrevista técnica: Implementar un Snapshot Array
Diseña un arreglo versionado con historiales de cambios por índice, escrituras combinadas y búsqueda binaria del predecesor, y luego demuestra la semántica de tiempo, espacio y snapshots.
Entrevista técnica de código: Mínimo de salas de reuniones
Convierte los intervalos de reuniones en uso concurrente de recursos, calcula el número mínimo de salas con una línea de barrido de dos arreglos y demuestra la optimalidad mediante la profundidad de superposición, incluidos extremos semiabiertos, eventos coincidentes, alternativas con heap y preguntas de seguimiento sobre asignación de salas.
Entrevista técnica de código: Resolver Alien Dictionary con ordenamiento topológico
Deduce un alfabeto desconocido a partir de una lista ordenada de palabras extrayendo únicamente aristas de precedencia justificadas. Aprende la regla del prefijo inválido, la detección de ciclos, la demostración de corrección, las comprobaciones de ambigüedad y las pruebas adversarias para una respuesta completa en una entrevista.
Entrevista técnica de código: Contar el número de islas con DFS iterativo
Deriva un DFS iterativo in-place a partir del modelado de componentes conexas, explica por qué las celdas deben marcarse al agregarse a la pila (push) y cubre corrección, complejidad, pruebas de límites y alternativas.