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.

Practícalo