Preguntas para Entrevistas de Desarrollador Backend Junior (Python): Guía Completa

Milad Bonakdar
Autor
Domina el desarrollo backend con Python con preguntas esenciales para entrevistas que cubren los fundamentos de Python, Django/Flask, bases de datos, APIs y más. Preparación perfecta para entrevistas de desarrollador backend junior.
Introducción
Esta guía completa contiene 30 preguntas esenciales para entrevistas que abarcan el desarrollo backend con Python. Estas preguntas están diseñadas para ayudar a los desarrolladores backend junior a prepararse para las entrevistas, cubriendo conceptos clave en Python, frameworks web (Django/Flask), bases de datos y arquitectura backend general. Cada pregunta incluye una respuesta detallada, una evaluación de rareza y una calificación de dificultad.
Tanto si estás empezando tu carrera como si buscas cambiar al desarrollo backend, esta guía te ayudará a generar confianza y dominar los fundamentos.
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:
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:
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:
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:
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:
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:
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: El Global Interpreter Lock (GIL) es un mutex que protege el acceso a los objetos de Python, impidiendo que múltiples hilos ejecuten bytecodes de Python a la vez. Este bloqueo es necesario principalmente porque la gestión de memoria de CPython no es segura para subprocesos.
Impacto: Limita la ejecución de programas Python multiproceso a un solo núcleo de CPU, lo que puede ser un cuello de botella para las tareas con uso intensivo de CPU.
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:
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:
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:
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:
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: Códigos de respuesta estándar proporcionados por los servidores web en Internet.
- 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 (JWT, OAuth).
- Autorización: Verificar qué se le permite hacer al usuario (Roles/Permisos).
- HTTPS: Cifrar los datos en tránsito.
- Validación de Entrada: Sanear todas las entradas para evitar la inyección SQL y XSS.
- Limitación de Velocidad: Prevenir el abuso/DDoS.
- CORS: Restringir qué dominios pueden acceder a tu API.
Rareza: Media Dificultad: Media


