Preguntas de entrevista de Python, con respuestas que puedes ejecutar
Las entrevistas de Python combinan unos pocos ejercicios de calentamiento con preguntas sobre cómo se comporta el lenguaje. Estas son las que más aparecen. Cada ejemplo de abajo se ha ejecutado y la salida que se muestra es exacta, así que puedes confiar en ella cuando la expliques en voz alta.
Invertir una cadena de texto
El corte con un paso de -1 recorre la cadena hacia atrás. Funciona con cualquier secuencia, incluidas las listas.
print("python"[::-1])Salida:
nohtyp
¿Una lista contiene duplicados?
Un conjunto (set) guarda cada valor una sola vez. Si el conjunto es más corto que la lista, algo se repitió. Di en voz alta el coste: es una sola pasada, y los elementos deben ser hasheables.
numbers = [1, 2, 3, 2, 1] print(len(numbers) != len(set(numbers)))
Salida:
True
¿Son dos palabras anagramas?
Dos palabras son anagramas cuando sus letras ordenadas son iguales.
print(sorted("listen") == sorted("silent"))Salida:
True
Listas frente a tuplas
Las listas pueden cambiar después de crearse; las tuplas no. Las tuplas se usan para grupos fijos, como un punto, y como no pueden cambiar, pueden ser claves de un diccionario.
point = (3, 4)
try:
point[0] = 9
except TypeError:
print("tuples cannot change")Salida:
tuples cannot change
is frente a ==
== pregunta si dos valores son iguales. is pregunta si son exactamente el mismo objeto en memoria. Dos listas distintas con el mismo contenido son iguales, pero no son el mismo objeto.
a = [1, 2] b = [1, 2] print(a == b) print(a is b)
Salida:
True False
La trampa del argumento por defecto mutable
Un valor por defecto se crea una sola vez, cuando se define la función, y no en cada llamada. Si el valor por defecto es una lista, todas las llamadas comparten la misma lista. Es la trampa más famosa de Python.
def add_item(item, items=[]):
items.append(item)
return items
print(add_item("a"))
print(add_item("b"))Salida:
['a'] ['a', 'b']
La solución: usa None
Usa None como valor por defecto y crea la lista dentro de la función. Ahora cada llamada empieza desde cero.
def add_item(item, items=None):
if items is None:
items = []
items.append(item)
return items
print(add_item("a"))
print(add_item("b"))Salida:
['a'] ['b']
Preguntas frecuentes
- ¿Qué temas de Python preguntan más las entrevistas?
- Cadenas, listas, diccionarios y conjuntos para el calentamiento; después, funciones, errores, clases y cómo se comportan los tipos mutables e inmutables. Conoce el coste de las operaciones habituales y explica por qué eliges una estructura de datos.
- ¿Debo memorizar las soluciones?
- Entiende la idea que hay detrás de cada una. Si puedes explicar por qué un conjunto encuentra duplicados en una sola pasada, podrás resolver la siguiente variante que nunca hayas visto.
- ¿Cómo practico explicar mi respuesta?
- Ejecuta cada ejemplo y di en voz alta qué imprime y por qué, antes de leer la explicación. A quien entrevista le importa tu razonamiento tanto como el código.