diciembre 21, 2025
12 min de lectura

Preguntas de entrevista para backend junior Python

interview
career-advice
job-search
entry-level
Preguntas de entrevista para backend junior Python
Milad Bonakdar

Milad Bonakdar

Autor

Prepárate para entrevistas de backend junior Python con 30 preguntas sobre fundamentos, Django/Flask, APIs REST, bases de datos, testing, Git, Docker y seguridad.


Preparación para entrevistas backend junior Python

Si te estás preparando para una entrevista de backend junior con Python, céntrate en demostrar que puedes explicar el comportamiento básico de Python, crear rutas HTTP sencillas, razonar sobre APIs REST, trabajar con datos SQL, escribir pruebas, usar Git y hablar de seguridad básica de APIs. Esta guía reúne 30 preguntas comunes con respuestas que puedes practicar en voz alta.

Úsala en tres pasadas:

  • Primero, responde cada pregunta sin mirar la respuesta de ejemplo.
  • Después, conecta tus respuestas con un proyecto pequeño que hayas construido, como una API CRUD con autenticación y modelos de base de datos.
  • Por último, practica decisiones: cuándo usar Django o Flask, por qué los índices aceleran lecturas pero encarecen escrituras, y cómo protegerías un endpoint.

Si la oferta menciona FastAPI, prepara los mismos conceptos de rutas, validación, asincronía y dependencias. Los fundamentos de abajo siguen cubriendo lo que se evalúa en la mayoría de entrevistas junior de backend Python.


Fundamentos de Python (10 Preguntas)

1. ¿Cuál es la diferencia entre list y tuple en Python?

Respuesta:

  • list: Mutable (se puede cambiar), definido con corchetes [], más lento que las tuplas.
  • tuple: Inmutable (no se puede cambiar), definido con paréntesis (), más rápido que las listas, se puede usar como clave de diccionario.

Ejemplo:

# List
my_list = [1, 2, 3]
my_list[0] = 10  # Permitido

# Tuple
my_tuple = (1, 2, 3)
# my_tuple[0] = 10  # TypeError: 'tuple' object does not support item assignment

Rareza: Común Dificultad: Fácil


2. Explica la diferencia entre is y ==

Respuesta:

  • ==: Comprueba la igualdad de valor (¿tienen los objetos el mismo valor?).
  • is: Comprueba la igualdad de referencia (¿apuntan las variables al mismo objeto exacto en la memoria?).

Ejemplo:

a = [1, 2, 3]
b = [1, 2, 3]

print(a == b)  # True (los valores son iguales)
print(a is b)  # False (objetos diferentes en la memoria)

c = a
print(a is c)  # True (mismo objeto)

Rareza: Común Dificultad: Fácil


3. ¿Qué son los decoradores de Python y cómo funcionan?

Respuesta: Un decorador es un patrón de diseño en Python que permite a un usuario agregar nueva funcionalidad a un objeto existente sin modificar su estructura. Los decoradores generalmente se llaman antes de la definición de una función que deseas decorar.

Ejemplo:

def my_decorator(func):
    def wrapper():
        print("Algo está sucediendo antes de que se llame a la función.")
        func()
        print("Algo está sucediendo después de que se llame a la función.")
    return wrapper

@my_decorator
def say_hello():
    print("¡Hola!")

say_hello()
# Output:
# Algo está sucediendo antes de que se llame a la función.
# ¡Hola!
# Algo está sucediendo después de que se llame a la función.

Rareza: Común Dificultad: Media


4. ¿Cuál es la diferencia entre args y kwargs?

Respuesta:

  • *args: Permite pasar un número variable de argumentos sin palabras clave a una función. Los recopila en una tupla.
  • **kwargs: Permite pasar un número variable de argumentos de palabras clave a una función. Los recopila en un diccionario.

Ejemplo:

def example_function(*args, **kwargs):
    print("args:", args)
    print("kwargs:", kwargs)

example_function(1, 2, 3, name="Alice", age=30)
# Output:
# args: (1, 2, 3)
# kwargs: {'name': 'Alice', 'age': 30}

Rareza: Común Dificultad: Fácil


5. Explica las comprensiones de listas

Respuesta: Las comprensiones de listas proporcionan una forma concisa de crear listas. Las aplicaciones comunes son crear nuevas listas donde cada elemento es el resultado de algunas operaciones aplicadas a cada miembro de otra secuencia o iterable, o crear una subsecuencia de esos elementos que satisfacen una determinada condición.

Ejemplo:

# Forma tradicional
squares = []
for x in range(10):
    squares.append(x**2)

# Comprensión de lista
squares = [x**2 for x in range(10)]

Rareza: Común Dificultad: Fácil


6. ¿Qué son los generadores y la palabra clave yield?

Respuesta: Los generadores son una forma sencilla de crear iteradores. Son funciones que devuelven un objeto (iterador) sobre el que podemos iterar (un valor a la vez). La palabra clave yield se usa como return, excepto que la función devolverá un generador.

Ejemplo:

def simple_generator():
    yield 1
    yield 2
    yield 3

for value in simple_generator():
    print(value)
# Output: 1, 2, 3

Beneficios: Eficiencia de memoria (evaluación perezosa).

Rareza: Media Dificultad: Media


7. ¿Cómo funciona la gestión de memoria en Python?

Respuesta: Python utiliza un espacio de montón privado para administrar la memoria. Todos los objetos y estructuras de datos de Python se encuentran en un montón privado. El programador no tiene acceso a este montón privado. El intérprete se encarga de este montón privado de Python. Python también tiene un recolector de basura incorporado, que recicla toda la memoria no utilizada y, por lo tanto, puede estar disponible para el espacio del montón.

Rareza: Media Dificultad: Media


8. ¿Qué es el Global Interpreter Lock (GIL)?

Respuesta: En CPython estándar, el Global Interpreter Lock (GIL) es un mutex que permite que solo un hilo ejecute bytecode de Python a la vez mientras protege la gestión de memoria de los objetos Python. Por eso el código Python con varios hilos y mucha carga de CPU a menudo no escala en varios núcleos. Los hilos con mucha E/S sí pueden ayudar, porque el GIL se libera durante operaciones bloqueantes como red o archivos.

Nota actual: Python 3.13+ también admite builds opcionales free-threaded donde el GIL puede desactivarse, pero es una elección especial de build y no la suposición por defecto en la mayoría de entrevistas junior.

Impacto: Para trabajo ligado a CPU, considera multiprocessing, extensiones nativas o workers en segundo plano. Para trabajo web ligado a E/S, los hilos o los patrones async pueden seguir siendo útiles.

Rareza: Media Dificultad: Difícil


9. Explica la diferencia entre copia profunda y copia superficial

Respuesta:

  • Copia Superficial: Crea un nuevo objeto que almacena la referencia de los elementos originales. Por lo tanto, una copia superficial no crea una copia de los objetos anidados, sino que simplemente copia la referencia de los objetos anidados.
  • Copia Profunda: Crea un nuevo objeto y agrega recursivamente las copias de los objetos anidados presentes en los elementos originales.

Ejemplo:

import copy

original = [[1, 2, 3], [4, 5, 6]]
shallow = copy.copy(original)
deep = copy.deepcopy(original)

original[0][0] = 'X'
print(shallow[0][0]) # 'X' (afectado)
print(deep[0][0])    # 1 (no afectado)

Rareza: Media Dificultad: Media


10. ¿Cuáles son los tipos de datos integrados de Python?

Respuesta:

  • Numérico: int, float, complex
  • Secuencia: list, tuple, range
  • Texto: str
  • Mapeo: dict
  • Conjunto: set, frozenset
  • Booleano: bool
  • Binario: bytes, bytearray, memoryview

Rareza: Común Dificultad: Fácil


Frameworks Web (Django/Flask) (10 Preguntas)

11. Compara Django y Flask

Respuesta:

  • Django: Framework "con todo incluido". Incluye ORM, autenticación, panel de administración, etc. Bueno para aplicaciones grandes y complejas. Sigue el patrón MVT (Modelo-Vista-Plantilla).
  • Flask: Micro-framework. Minimalista, flexible. Tú eliges las herramientas que deseas (ORM, autenticación, etc.). Bueno para aplicaciones más pequeñas, microservicios o cuando necesitas un control preciso.

Rareza: Común Dificultad: Fácil


12. ¿Qué es el patrón MVC (y MVT en Django)?

Respuesta:

  • MVC (Modelo-Vista-Controlador): Patrón arquitectónico que separa una aplicación en tres componentes lógicos principales: el modelo (datos), la vista (interfaz de usuario) y el controlador (procesa las entradas).
  • MVT (Modelo-Vista-Plantilla): Variación de Django.
    • Modelo: Estructura de datos (base de datos).
    • Vista: Lógica de negocio (similar al Controlador en MVC).
    • Plantilla: Capa de presentación (similar a la Vista en MVC).

Rareza: Común Dificultad: Media


13. Explica Django ORM

Respuesta: Django ORM (Object-Relational Mapping) te permite interactuar con tu base de datos, como SQLite, PostgreSQL y MySQL, usando código Python en lugar de SQL. Defines tus modelos de datos como clases de Python, y Django se encarga de la creación de tablas de bases de datos y las consultas.

Ejemplo:

# Model
class Person(models.Model):
    first_name = models.CharField(max_length=30)
    last_name = models.CharField(max_length=30)

# Query
Person.objects.filter(first_name="John")

Rareza: Común Dificultad: Media


14. ¿Qué es una migración en Django?

Respuesta: Las migraciones son la forma en que Django propaga los cambios que realizas en tus modelos (agregar un campo, eliminar un modelo, etc.) en el esquema de tu base de datos. Están diseñadas para ser en su mayoría automáticas, pero deberás saber cuándo realizar migraciones, cuándo ejecutarlas y los problemas comunes que podrías encontrar.

Comandos:

  • makemigrations: Crea nuevas migraciones basadas en los cambios del modelo.
  • migrate: Aplica las migraciones a la base de datos.

Rareza: Común Dificultad: Fácil


15. ¿Cómo maneja Flask el enrutamiento?

Respuesta: Flask usa el decorador @app.route() para vincular una función a una URL.

Ejemplo:

from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_world():
    return '¡Hola, Mundo!'

@app.route('/user/<username>')
def show_user_profile(username):
    return f'Usuario {username}'

Rareza: Común Dificultad: Fácil


16. ¿Qué son los Blueprints de Flask?

Respuesta: Los Blueprints son una forma de organizar tu aplicación Flask en módulos. Te permiten agrupar rutas, plantillas y archivos estáticos relacionados. Esto es esencial para escalar aplicaciones Flask.

Rareza: Media Dificultad: Media


17. Explica el concepto de Middleware en Django

Respuesta: El middleware es un framework de hooks en el procesamiento de solicitud/respuesta de Django. Es un sistema de "plugin" ligero y de bajo nivel para alterar globalmente la entrada o salida de Django. Cada componente de middleware es responsable de realizar alguna función específica.

Ejemplos: AuthenticationMiddleware, SessionMiddleware, CsrfViewMiddleware.

Rareza: Media Dificultad: Media


18. ¿Cómo manejas las sesiones en Flask?

Respuesta: Flask utiliza una cookie firmada para almacenar el contenido de la sesión. El usuario puede ver el contenido de la cookie, pero no puede modificarla, a menos que conozca la clave secreta utilizada para la firma.

Ejemplo:

from flask import session

@app.route('/login', methods=['POST'])
def login():
    session['username'] = request.form['username']
    return redirect(url_for('index'))

Rareza: Media Dificultad: Media


19. ¿Cuál es el propósito de settings.py en Django?

Respuesta: settings.py es el archivo de configuración principal para un proyecto de Django. Contiene toda la configuración para el proyecto, incluyendo la configuración de la base de datos, las aplicaciones instaladas, el middleware, la configuración de la plantilla, las rutas de archivos estáticos y las claves de seguridad.

Rareza: Común Dificultad: Fácil


20. ¿Cómo previenes los ataques CSRF en Django?

Respuesta: Django tiene protección incorporada contra la falsificación de solicitudes entre sitios (CSRF). Utiliza un token CSRF que se genera para cada sesión de usuario. Este token debe incluirse en cada solicitud POST (generalmente como un campo de formulario oculto). El servidor verifica el token antes de procesar la solicitud.

Rareza: Media Dificultad: Media


Base de Datos y Backend General (10 Preguntas)

21. SQL vs NoSQL

Respuesta:

  • SQL (Relacional): Datos estructurados, esquema predefinido, tablas, filas, columnas. Bueno para consultas y transacciones complejas (ACID). Ejemplos: PostgreSQL, MySQL.
  • NoSQL (No Relacional): Datos no estructurados o semiestructurados, esquema dinámico, documentos, pares clave-valor. Bueno para escalabilidad, creación rápida de prototipos y grandes conjuntos de datos. Ejemplos: MongoDB, Redis.

Rareza: Común Dificultad: Fácil


22. ¿Qué es una API?

Respuesta: API significa Interfaz de Programación de Aplicaciones. Es un conjunto de reglas y protocolos que permite que diferentes aplicaciones de software se comuniquen entre sí. En el desarrollo backend, normalmente construimos API RESTful o API GraphQL para permitir que los frontends (web, móvil) interactúen con los datos y la lógica del backend.

Rareza: Común Dificultad: Fácil


23. Explica los principios de la API RESTful

Respuesta:

  • Cliente-Servidor: Separación de preocupaciones.
  • Sin Estado: No se almacena el contexto del cliente en el servidor entre las solicitudes.
  • Almacenable en Caché: Las respuestas deben definirse a sí mismas como almacenables en caché o no.
  • Interfaz Uniforme: Forma estandarizada de comunicarse (métodos HTTP: GET, POST, PUT, DELETE).
  • Sistema en Capas: El cliente normalmente no puede saber si está conectado directamente al servidor final o a un intermediario en el camino.

Rareza: Común Dificultad: Media


24. ¿Qué son los códigos de estado HTTP? Da ejemplos.

Respuesta: Los códigos de estado HTTP son respuestas estándar que indican al cliente si una solicitud tuvo éxito, falló, fue redirigida o necesita otra acción.

  • 2xx Éxito: 200 OK, 201 Creado.
  • 3xx Redirección: 301 Movido Permanentemente, 304 No Modificado.
  • 4xx Error del Cliente: 400 Solicitud Incorrecta, 401 No Autorizado, 403 Prohibido, 404 No Encontrado.
  • 5xx Error del Servidor: 500 Error Interno del Servidor, 502 Puerta de Enlace Incorrecta.

Rareza: Común Dificultad: Fácil


25. ¿Qué es la indexación de bases de datos?

Respuesta: La indexación es una técnica de estructura de datos que se utiliza para localizar y acceder rápidamente a los datos en una base de datos. Los índices se crean utilizando algunas columnas de la base de datos. Mejora la velocidad de las operaciones de recuperación de datos en una tabla de base de datos a costa de escrituras adicionales y espacio de almacenamiento para mantener la estructura de datos del índice.

Rareza: Media Dificultad: Media


26. Explica el concepto de propiedades ACID en las bases de datos

Respuesta:

  • Atomicidad: Todas las operaciones en una transacción tienen éxito o cada operación se revierte.
  • Consistencia: La base de datos cambia de estado correctamente tras una transacción confirmada con éxito.
  • Aislamiento: Permite que las transacciones operen independientemente y transparentes entre sí.
  • Durabilidad: Garantiza que el resultado o efecto de una transacción confirmada persista en caso de una falla del sistema.

Rareza: Media Dificultad: Media


27. ¿Qué es Docker y por qué se utiliza?

Respuesta: Docker es una plataforma para desarrollar, enviar y ejecutar aplicaciones en contenedores. Los contenedores son unidades ligeras, portátiles y autosuficientes que incluyen todo lo necesario para ejecutar una aplicación (código, tiempo de ejecución, herramientas del sistema, bibliotecas). Resuelve el problema de "funciona en mi máquina" y garantiza la coherencia en diferentes entornos (desarrollo, pruebas, producción).

Rareza: Común Dificultad: Media


28. ¿Qué son las pruebas unitarias?

Respuesta: Las pruebas unitarias son un método de prueba de software donde se prueban unidades o componentes individuales de un software. El propósito es validar que cada unidad del código de software funcione como se espera. En Python, el framework unittest o pytest se utiliza comúnmente.

Rareza: Común Dificultad: Fácil


29. ¿Qué es Git y por qué es importante?

Respuesta: Git es un sistema de control de versiones distribuido. Realiza un seguimiento de los cambios en el código fuente durante el desarrollo del software. Permite que varios desarrolladores trabajen en el mismo proyecto simultáneamente, administren diferentes versiones del código (ramas) y vuelvan a estados anteriores si es necesario.

Rareza: Común Dificultad: Fácil


30. ¿Cómo se asegura una API backend?

Respuesta:

  • Autenticación: Verificar quién es el usuario, por ejemplo con sesiones, JWT u OAuth.
  • Autorización: Comprobar a qué puede acceder el usuario en cada recurso protegido, no solo al iniciar sesión.
  • HTTPS: Cifrar los datos en tránsito.
  • Validación de entrada: Validar tipos, longitudes, formatos y campos obligatorios antes de procesar.
  • Acceso seguro a la base de datos: Usar consultas parametrizadas u ORM en lugar de construir SQL con strings.
  • Limitación de velocidad: Reducir intentos de fuerza bruta, scraping y tráfico abusivo.
  • CORS: Restringir orígenes de navegador cuando haga falta, pero no tratar CORS como autenticación.
  • Manejo de errores y logs: Devolver errores seguros y registrar suficiente contexto para depurar.

Rareza: Media Dificultad: Media

Newsletter subscription

Consejos de carrera semanales que realmente funcionan

Recibe las últimas ideas directamente en tu bandeja de entrada

Deja de Postularte. Comienza a Ser Contratado.

Transforma tu currículum en un imán de entrevistas con optimización impulsada por IA confiada por buscadores de empleo en todo el mundo.

Comienza gratis

Compartir esta publicación

Reduce el Tiempo de Escritura de tu Currículum en un 90%

El buscador de empleo promedio pasa más de 3 horas formateando un currículum. Nuestra IA lo hace en menos de 15 minutos, llevándote a la fase de solicitud 12 veces más rápido.