Ya has hecho algunos cursos, escribes código Python con confianza, entiendes algoritmos, desarrollas tu propio proyecto personal y buscas el trabajo de tus sueños. Un día recibes un mensaje invitándote a una entrevista de trabajo, pero ¿qué esperarás encontrar allí?

En este artículo hemos recopilado las preguntas más populares e interesantes de las entrevistas técnicas para el puesto de desarrollador/a de Python.

Portátil mostrando oferta de trabajo para desarrollador Python.
Entrevista para desarrollador Python.

Lo básico: preguntas fáciles que todo el mundo debería saber

En una entrevista técnica no siempre hay preguntas difíciles. Si te postulas para un puesto junior, no te exigirán un conocimiento profundo de Python. Bastará con que entiendas la biblioteca estándar del lenguaje. Además, la entrevista puede comenzar con las preguntas más sencillas y complicarse a medida que respondes correctamente. Recuerda que el entrevistador no busca desaprobarte. Quiere entender el límite de tus conocimientos y evaluar tu utilidad para la empresa.

Sería una pena prepararse para preguntas difíciles y codificación en vivo, pero ponerse nervioso con los paradigmas básicos de Python. Intenta refrescar tus conocimientos periódicamente y repasar incluso las preguntas sencillas. A continuación te presentamos las más populares.

#1. ¿Qué es Python?

Python es un lenguaje de programación de alto nivel con tipado dinámico. Es interpretado y multiparadigma. Python está orientado a mejorar la legibilidad del código y la productividad del desarrollador. Se utiliza en muchas áreas, incluyendo el desarrollo web, el aprendizaje automático, el análisis de datos, el desarrollo de software de aplicación y juegos. Python se utiliza activamente en la educación debido a su sintaxis relativamente sencilla.

#2. ¿Qué tipos de datos admite Python?

La biblioteca estándar de Python incluye soporte para los siguientes tipos de datos:

  • Numéricos: números enteros (int), números de coma flotante (float) y números complejos (complex);
  • Cadenas de caracteres: str;
  • Colecciones: listas (list), tuplas (tuple), conjuntos (set) y diccionarios (dict);
  • Booleanos: bool.

#3. ¿Qué es PEP 8?

PEP 8 (Python Enhancement Proposal 8) son recomendaciones para el desarrollo en Python. El documento describe los principales convenios de estilo de código que ayudan a mantener el orden en un proyecto y lo hacen ampliable. PEP 8 da recomendaciones sobre la denominación de entidades, las sangrías, la importación de código externo, la longitud de las líneas y los comentarios.

#4. ¿Cómo funciona la multiplicación de cadenas en Python?

Si multiplicas una cadena por n, Python devolverá una nueva cadena en la que la cadena original se repetirá n veces. Por ejemplo, si multiplicas ‘Python’ por 2, el resultado será la cadena PythonPython:

'Python' * 2
=> 'PythonPython'

#5. ¿Cómo funciona la multiplicación de listas en Python?

Si multiplicas una lista por n, Python devolverá una nueva lista en la que la lista original se repetirá n veces. Veamos un ejemplo:

[3, 2, 1] * 2
=> [3, 2, 1, 3, 2, 1]

#6. ¿Cuál es la diferencia entre listas y tuplas?

Las listas (list) y las tuplas (tuple) en Python se utilizan para trabajar con conjuntos ordenados de elementos. Se diferencian en que las listas se pueden modificar, mientras que las tuplas no. Una vez que se crea una tupla, ya no se pueden agregar ni eliminar datos. Esto acelera el trabajo con los elementos.

Las listas y las tuplas en Python se crean usando diferentes tipos de corchetes:

new_tuple = (1, 2, 3, 4, 5) # tupla
new_list = [1, 2, 3, 4, 5] # lista

#7. ¿Admite Python la POO?

Python admite completamente la programación orientada a objetos (POO). Los desarrolladores tienen acceso a todos los principios de este enfoque, incluyendo el polimorfismo, la herencia y la encapsulación.

#8. ¿Cómo se comprueba un archivo Python en busca de errores de sintaxis sin ejecutarlo?

En el ecosistema de Python existe la utilidad py_compile. Con ella puedes comprobar si hay errores de sintaxis en un archivo sin ejecutarlo. Para ello, en la terminal hay que introducir el siguiente comando:

python -m py_compile file.py

En lugar de file.py debe estar el nombre de tu archivo. Antes de llamar a la utilidad py_compile hay que indicar obligatoriamente la flag -m.

#9. ¿Cómo se invierte una lista en Python?

En Python hay una función reverse() con la que se puede invertir rápidamente una lista. Es importante tener en cuenta que la función no devuelve una nueva lista.

new_list = ['a', 'b', 'c']
new_list.reverse()
print(new_list)
=> ['c', 'b', 'a']

#10. ¿En qué se diferencia is de la doble igualdad (==)?

Es importante recordar que con == se puede comprobar la igualdad, y con is la identidad. Por ejemplo, crearemos varias listas:

list_a = [1, 2, 3]
list_b = list_a
list_c = [1, 2, 3]

Ahora comprobaremos las listas para ver si son iguales:

print(list_a == list_b)
print(list_a == list_c)
=> True
=> True

A continuación, comprobaremos su identidad:

print(list_a is list_b)
print(list_a is list_c)
=> True
=> False

Resulta que las listas son iguales porque contienen los mismos conjuntos de datos. Pero list_a y list_c son diferentes, ya que son dos listas independientes.

Preguntas más difíciles

Si te las arreglas con las preguntas sencillas, el entrevistador aumentará la dificultad. Normalmente, esto se hace para comprobar la profundidad de los conocimientos del candidato. Las preguntas más complejas pueden incluir no sólo teoría seca, sino también la demostración de código.

Aquí sólo hemos recogido preguntas generales sobre el lenguaje de programación Python. La lista puede ampliarse en función del ámbito. Por ejemplo, para los desarrolladores web o los especialistas en aprendizaje automático, se pueden añadir preguntas sobre marcos y tecnologías específicas.

#11. ¿Cómo funciona la función range?

En Python, la función range() se utiliza para generar una lista de números enteros. Se puede utilizar de tres maneras, según la tarea:

  • range(stop): crea una lista de 0 a stop;
list(range(10))
=> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
  • range(start, stop): crea una lista de start a stop;
list(range(2, 10))
=> [2, 3, 4, 5, 6, 7, 8, 9]
  • range(start, stop, step): crea una lista de start a stop con un paso step.
list(range(2, 10, 2))
=> [2, 4, 6, 8]

#12. ¿En qué se diferencia func de func()?

Para responder correctamente a la pregunta, es importante entender que cualquier función en Python puede ser un objeto. Por lo tanto, func() representa una función normal en su sentido clásico, mientras que func es un objeto que representa la función. Puede pasarse a otra función o variable.

#13. ¿Cómo se combinan las listas?

Para combinar listas en Python se utiliza la operación de suma.

list_a = [10, 9]
list_b = [8, 7, 6]
list_a + list_b
=> [10, 9, 8, 7, 6]

#14. ¿En qué se diferencia una aplicación multiproceso de una multihilo?

Las aplicaciones multihilo se ejecutan dentro de un proceso, pero se dividen en hilos. Esto significa que cada hilo tiene acceso a los recursos compartidos: archivos, memoria, red y recursos de la máquina. Las aplicaciones multiprocesos se dividen en procesos separados. Cada uno tiene su propio conjunto aislado de recursos.

En Python, para implementar el enfoque multiprocesamiento se utilizan las bibliotecas concurrent.futures y multiprocessing, y para el multihilo, threading.

#15. ¿Qué se puede utilizar como clave de un diccionario?

Para las claves de un diccionario se puede utilizar cualquier objeto inmutable, como una tupla o un número.

new_dict = {1: 'one', 'two': 2, (3, 4): 'three four'}

Las claves deben ser únicas. Si se utilizan dos claves iguales, Python sobrescribirá el valor:

new-dict = {1: 'one', 1: 'one again'}

Después de esto, la cadena ‘one again’ estará disponible para la clave 1.

#16. ¿Para qué se utiliza el método id?

En Python, el método id() se utiliza para obtener el identificador de un objeto. El propio identificador se puede utilizar para comparar objetos. Si en el código hay dos variables que se refieren entre sí, esto se puede comprobar con id():

list_a = [1, 2, 3]
list_b = list_a
print(id(list_a)) # identificador de la lista list_a
print(id(list_b)) # identificador de la lista list_b

#17. ¿Cómo funciona el recolector de basura en Python?

En Python, la recolección de basura es automática. Esto significa que el desarrollador no necesita controlar explícitamente la asignación y liberación de memoria. El sistema gestiona la memoria de los objetos sin referencias.

El recolector de basura automático se inicia con una periodicidad establecida y busca esos objetos. Se marcan como basura y se eliminan de la memoria. El propio proceso de búsqueda es similar a un contador. Su valor aumenta con cada creación de una nueva referencia a él. Si el contador llega a cero, el objeto se elimina.

A veces, varios objetos pueden referirse entre sí. En estos casos, Python utiliza una función de detección de ciclos que encuentra estos objetos y elimina las referencias cíclicas.

#18. ¿Cómo se puede recargar un módulo importado en un proyecto?

Para recargar los módulos importados en la biblioteca importlib hay una función reload(). Es mejor no utilizarla en producción, pero se puede utilizar para pruebas o depuración:

from importlib import reload
import new_module
reload(new_module)

#19. ¿Cómo se ejecuta el código en Python?

Python es un lenguaje de programación interpretado, por lo que el código no necesita compilación. Se ejecuta sobre la marcha, pero se utiliza una forma intermedia que se denomina compilación de bytecode.

Así es como ocurre bajo el capó:

  1. En la primera ejecución del código en Python, el intérprete lo compila en bytecode;
  2. Después, la máquina virtual de Python (PVM) lo ejecuta;
  3. El bytecode se almacena en la carpeta pycache, estos archivos tienen la extensión .pyc;
  4. Periódicamente, Python comprueba si el archivo .py tiene bytecode compilado en formato .pyc. Si no lo tiene o es más antiguo que el archivo principal, el proceso de compilación se inicia de nuevo.

El proceso condicional de compilación del código en Python se realiza mediante el intérprete. El bytecode resultante es ejecutado por PVM.

#20. ¿Qué es pycache y los archivos con la extensión .pyc?

Esta pregunta repite en cierta medida la anterior, pero también es importante para entender los principios de funcionamiento de Python.

Los archivos con la extensión .pyc son bytecodes compilados. Se almacenan en la carpeta pycache y se utilizan para acelerar el proceso de compilación por parte del intérprete. Gracias a esto, el código se ejecuta más rápido. Además, los archivos .pyc se pueden utilizar para distribuir proyectos sin necesidad de compartir el código fuente. En su lugar, el usuario recibirá el bytecode compilado.

El desarrollador no necesita trabajar con la carpeta pycache ni con su contenido. Este proceso está automatizado. También es importante recordar que los archivos .pyc no son intercambiables entre las versiones de Python.

#21. ¿Dónde se realiza la búsqueda más rápido: en listas o en diccionarios?

En las listas, durante la búsqueda hay que recorrer todos los valores. Esto lleva un tiempo O(n). La búsqueda en un diccionario por clave lleva un tiempo O(1), porque en la base se utiliza una tabla hash.

De esto se deduce que la búsqueda en diccionarios es más rápida. Esto es especialmente notable cuando hay una gran cantidad de valores. Pero hay un inconveniente: los diccionarios no siempre son convenientes para almacenar una gran cantidad de datos debido al requisito de claves únicas.

#22. ¿En qué se diferencian los paquetes de los módulos?

Un paquete es una colección de módulos, mientras que un módulo es un archivo o un conjunto de archivos.

Así es como se importa un paquete:

from package import module

Y así un módulo:

import module

#23. ¿Cómo se eliminan los duplicados de una lista?

Si hay duplicados en una lista, se puede convertir la lista en un conjunto y viceversa:

new_list = [1, 1, 1, 2, 2, 3, 3, 3]
new_list = list(set(new_list))
print(new_list)
=> [1, 2, 3]

#24. ¿Cómo se comprueba que una cadena sólo contiene letras?

Si necesitas comprobar que una cadena sólo contiene letras, puedes utilizar la función isalpha():

'python'.isalpha()
=> True

#25. ¿Cómo se comprueba que una cadena sólo contiene números?

Para esta tarea, en Python existe la función isnumeric():

'4561298'.isnumeric()
=> True

#26. ¿Cómo se comprueba que una cadena sólo contiene números y letras?

Para ello existe la función isalnum():

'456python1298'.isalnum()
=> True

#27. ¿Cómo gestiona Python las excepciones?

La gestión de excepciones en Python se implementa mediante la construcción try-except-finally:

try:
    # Python intenta ejecutar esta parte del código
except:
    # a este bloque se pasa si no se pudo ejecutar el try
finally:
    # este bloque se ejecuta siempre

#28. ¿Para qué se utiliza la bandera -O?

La bandera -O en Python se llama completamente pythonoptimize y se utiliza para optimizar el código compilado. Con ella se puede eliminar la información de depuración, lo que acelera la ejecución del código. Normalmente, -O elimina de los bytecodes compilados las cadenas de documentación y las sentencias assert.

Así es como se ve en un ejemplo:

python -O name.py

#29. ¿Qué es una función lambda?

Una función lambda es una función que se puede definir en una sola línea y sin la palabra clave def. Esto resulta útil en los casos en que se necesita definir rápidamente una función. También se utiliza como argumento de otras funciones.

Una función lambda se define de la siguiente manera:

double = lambda x: x * 2

Enlaces útiles

Nunca se puede saber de antemano las preguntas que se harán en una entrevista. Para superarla con éxito, es necesario comprender claramente Python y cómo se escribe código en él.

Los artículos como el nuestro se pueden utilizar para refrescar la memoria o encontrar puntos débiles. Si has leído una pregunta y no sabes la respuesta correcta, deberías consultar la documentación y volver a repasar el tema.

  • Documentación de Python
  • Bucles en Python: principios de funcionamiento y ejemplos de uso
  • Expresiones regulares en Python: instrucciones, ejemplos y práctica
  • Cómo crear y utilizar funciones en Python
  • Recursos online gratuitos para el aprendizaje de Python para principiantes: cursos, simuladores y blogs

Categorizado en:

Python,