Empieza acotando adónde se va el tiempo antes de tocar código. Compara el diff de la release, mira el tracing o las métricas de tiempos para encontrar el endpoint lento, y luego perfila esa ruta con cProfile o py-spy, que puede muestrear un proceso vivo sin reiniciarlo. Fíjate en el tiempo acumulado para encontrar la llamada responsable, formula una hipótesis, cambia una cosa y vuelve a medir.
Por qué lo preguntan los entrevistadores
Las preguntas de rendimiento separan a quien mide de quien adivina. El entrevistador busca un método: reproducir, medir, aislar, cambiar una variable, verificar. También quiere soltura con las herramientas, en particular con un profiler de muestreo que se pueda enganchar a un proceso de producción en marcha, y el criterio de saber que casi toda la lentitud en Python acaba siendo trabajo de base de datos o de red y no del intérprete.
Cómo estructurar tu respuesta
- Establece qué cambió y adónde se va el tiempo.
- Nombra el profiler que engancharías y por qué.
- Lee el tiempo acumulado, no solo el propio.
- Cambia una cosa y mide la diferencia.
Ejemplo de respuesta
La primera pregunta es qué cambió en realidad, porque una release me da una lista corta de sospechosos. Luego quiero números y no opiniones, así que los spans de tracing o los tiempos por endpoint me dicen qué ruta se degradó y si el tiempo está en la base de datos, en una llamada externa o en el propio proceso. Si está en el proceso, py-spy es lo primero a lo que recurro porque se engancha a un contenedor en marcha y muestrea sin reiniciar, así que puedo perfilar la carga real de producción y no una sintética. Un flame graph suele dejarlo obvio. Para un caso local reproducible uso cProfile y ordeno por tiempo acumulado, porque el tiempo propio esconde a quien llama, que es el verdadero responsable. Una precaución: perfilar cambia los tiempos, así que nunca me fío de sus números absolutos, solo de la forma relativa. Después cambio exactamente una cosa y vuelvo a medir. La última vez que hice esto el culpable era un serializador nuevo que hacía una copia profunda por fila, y quitar esa copia devolvió el endpoint de cuatrocientos milisegundos a noventa.
¿Tienes esta entrevista a la vuelta de la esquina? GhostPilot escucha tu llamada en vivo, detecta la pregunta en cuanto la hacen y pone una respuesta estructurada en tu pantalla en tiempo real. Pruébalo en tu próxima entrevista de práctica, o coge un Session Pass de $29, sin suscripción, para la de verdad.
Mira cómo funcionaPreguntas de seguimiento que puedes esperar
- ¿En qué se diferencia py-spy de cProfile?
- ¿Cómo perfilarías memoria en vez de tiempo?
- ¿Y si la degradación solo aparece bajo carga?
Más preguntas para Desarrollador Python
Tu entrevistador hará su propia versión de esta. Pega la descripción real del puesto en el Question Predictor gratuito y obtén las 20 preguntas que ese puesto tiene más probabilidades de hacerte, con lo que cada una busca en realidad.
Predecir mis preguntas