Perguntas de entrevista de Python, com respostas que você pode executar

As entrevistas de Python misturam alguns aquecimentos de programação com perguntas sobre como a linguagem se comporta. Estas são as que mais aparecem. Cada exemplo abaixo foi executado, e a saída mostrada é exata, então você pode confiar nela ao explicar em voz alta.

Inverter uma string

Um fatiamento com passo de -1 percorre a string de trás para frente. Funciona em qualquer sequência, inclusive em listas.

print("python"[::-1])

Saída:

nohtyp

Uma lista contém duplicatas?

Um set guarda cada valor uma única vez. Se o set for menor que a lista, algum valor se repetiu. Diga o custo em voz alta: é uma única passagem, e os itens precisam ser hasheáveis.

numbers = [1, 2, 3, 2, 1]
print(len(numbers) != len(set(numbers)))

Saída:

True

Duas palavras são anagramas?

Duas palavras são anagramas quando suas letras, em ordem, são iguais.

print(sorted("listen") == sorted("silent"))

Saída:

True

Listas versus tuplas

Listas podem mudar depois de criadas, tuplas não. Tuplas são usadas para grupos fixos, como um ponto, e como não podem mudar, podem ser chaves de dicionário.

point = (3, 4)
try:
    point[0] = 9
except TypeError:
    print("tuples cannot change")

Saída:

tuples cannot change

is versus ==

== pergunta se dois valores são iguais. is pergunta se são exatamente o mesmo objeto na memória. Duas listas separadas com o mesmo conteúdo são iguais, mas não são o mesmo objeto.

a = [1, 2]
b = [1, 2]
print(a == b)
print(a is b)

Saída:

True
False

A armadilha do argumento padrão mutável

Um valor padrão é criado uma única vez, quando a função é definida, e não a cada chamada. Com uma lista como padrão, todas as chamadas compartilham a mesma lista. Esta é a pegadinha mais famosa do Python.

def add_item(item, items=[]):
    items.append(item)
    return items

print(add_item("a"))
print(add_item("b"))

Saída:

['a']
['a', 'b']

A correção: use None

Use None como padrão e crie a lista dentro da função. Assim, cada chamada começa do zero.

def add_item(item, items=None):
    if items is None:
        items = []
    items.append(item)
    return items

print(add_item("a"))
print(add_item("b"))

Saída:

['a']
['b']

Perguntas comuns

Quais tópicos de Python as entrevistas mais cobram?
Strings, listas, dicionários e sets para o aquecimento de programação, depois funções, erros, classes e como os tipos mutáveis e imutáveis se comportam. Conheça o custo das operações mais comuns e explique sua escolha de estrutura de dados.
Devo decorar as soluções?
Entenda a ideia por trás de cada uma. Se você conseguir explicar por que um set encontra duplicatas em uma única passagem, saberá resolver a próxima variação que nunca viu.
Como posso praticar a explicação da minha resposta?
Execute cada exemplo e, antes de ler a explicação, diga em voz alta o que ele imprime e por quê. Os entrevistadores se importam com o seu raciocínio tanto quanto com o código.

Pratique