Pregunta de entrevista para Desarrollador Python

¿Cómo perfilarías un servicio Python que se volvió más lento tras una release?

Qué evalúa el entrevistador, cómo estructurar tu respuesta y un ejemplo hablado que puedes adaptar.

Respuesta rápida

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

Ejemplo hablado, en primera persona

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 funciona

Preguntas 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

Ensaya las preguntas difíciles antes de que te las hagan

Practica con un copiloto en vivo y entra preparado. Un Session Pass de $29 te lleva a través de la entrevista sin suscripción y sin ataduras.

Consigue GhostPilot