Course
O Python continua a dominar o setor de tecnologia como uma das linguagens de programação mais versáteis e procuradas. Não importa se você está se preparando para uma entrevista técnica ou se deseja aprimorar suas habilidades de codificação, dominar Python é essencial. As entrevistas geralmente envolvem a solução de desafios e a explicação de funcionalidades complexas em Python.
Este guia fornece uma lista abrangente das perguntas mais comuns e avançadas da entrevista sobre Python. Se você praticar essas perguntas, os profissionais de dados, desenvolvedores e engenheiros de software terão as habilidades necessárias para se destacar em entrevistas técnicas e avançar em suas carreiras.
Obter uma certificação Top Data
Perguntas básicas da entrevista sobre Python
Essas são algumas das perguntas que você pode encontrar durante uma entrevista de nível básico sobre Python.
As listas e as tuplas são estruturas de dados Python fundamentais com características e casos de uso distintos.
Lista:
- Mutável: Os elementos podem ser alterados após a criação.
- Uso de memória: Consome mais memória.
- Desempenho: Iteração mais lenta em comparação com as tuplas, mas melhor para operações de inserção e exclusão.
- Métodos: Oferece vários métodos incorporados para manipulação.
Exemplo:
a_list = ["Data", "Camp", "Tutorial"]
a_list.append("Session")
print(a_list) # Output: ['Data', 'Camp', 'Tutorial', 'Session']
Tuple:
- Imutável: Os elementos não podem ser alterados após a criação.
- Uso de memória: Consome menos memória.
- Desempenho: Iteração mais rápida em comparação com as listas, mas não tem a flexibilidade das listas.
- Métodos: Métodos incorporados limitados.
Exemplo:
a_tuple = ("Data", "Camp", "Tutorial")
print(a_tuple) # Output: ('Data', 'Camp', 'Tutorial')
Saiba mais em nosso tutorial sobre Listas em Python.
2. O que é __init__() em Python?
O método __init__()
é conhecido como um construtor na terminologia de programação orientada a objetos (OOP). É usado para inicializar o estado de um objeto quando ele é criado. Esse método é chamado automaticamente quando uma nova instância de uma classe é instanciada.
Objetivo:
- Atribuir valores às propriedades do objeto.
- Executar qualquer operação de inicialização.
Exemplo:
Criamos uma classe `book_shop` e adicionamos o construtor e a função `book()`. O construtor armazenará o nome do título do livro e a função `book()` imprimirá o nome do livro.
Para testar nosso código, inicializamos o objeto `b` com "Sandman" e executamos a função `book()`.
class book_shop:
# constructor
def __init__(self, title):
self.title = title
# Sample method
def book(self):
print('The tile of the book is', self.title)
b = book_shop('Sandman')
b.book()
# The tile of the book is Sandman
3. Qual é a diferença entre um tipo de dados mutável e um tipo de dados imutável?
Tipos de dados mutáveis:
- Definição: Os tipos de dados mutáveis são aqueles que podem ser modificados após sua criação.
- Exemplos: Lista, dicionário, conjunto.
- Características: Os elementos podem ser adicionados, removidos ou alterados.
- Caso de uso: Adequado para coleções de itens em que são necessárias atualizações frequentes.
Exemplo:
# List Example
a_list = [1, 2, 3]
a_list.append(4)
print(a_list) # Output: [1, 2, 3, 4]
# Dictionary Example
a_dict = {'a': 1, 'b': 2}
a_dict['c'] = 3
print(a_dict) # Output: {'a': 1, 'b': 2, 'c': 3}
Tipos de dados imutáveis:
- Definição: Tipos de dados imutáveis são aqueles que não podem ser modificados após sua criação.
- Exemplos: Numérico (int, float), String, Tuple.
- Características: Os elementos não podem ser alterados depois de definidos; qualquer operação que pareça modificar um objeto imutável criará um novo objeto.
Exemplo:
# Numeric Example
a_num = 10
a_num = 20 # Creates a new integer object
print(a_num) # Output: 20
# String Example
a_str = "hello"
a_str = "world" # Creates a new string object
print(a_str) # Output: world
# Tuple Example
a_tuple = (1, 2, 3)
# a_tuple[0] = 4 # This will raise a TypeError
print(a_tuple) # Output: (1, 2, 3)
4. Explique a compreensão de lista, dicionário e tupla com um exemplo.
Lista
A compreensão de lista oferece uma sintaxe de linha única para criar uma nova lista com base nos valores da lista existente. Você pode usar um `for loop` para replicar a mesma coisa, mas isso exigirá que você escreva várias linhas e, às vezes, isso pode se tornar complexo.
A compreensão de lista facilita a criação da lista com base no iterável existente.
my_list = [i for i in range(1, 10)]
my_list
# [1, 2, 3, 4, 5, 6, 7, 8, 9]
Dicionário
Semelhante a uma compreensão de lista, você pode criar um dicionário com base em uma tabela existente com uma única linha de código. Você precisa colocar a operação entre colchetes `{}`.
my_dict = {i for i in range(1, 10)}
my_dict
# {1, 2, 3, 4, 5, 6, 7, 8, 9}
Tuple
Isso é um pouco diferente para as tuplas. Você pode criar a compreensão de tuplas usando colchetes `()`, mas ela retornará um objeto gerador, não uma compreensão de tuplas.
Você pode executar o loop para extrair os elementos ou convertê-los em uma lista.
my_tuple = (i for i in range(1, 10))
my_tuple
# <generator object <genexpr> at 0x7fb91b151430>
Você pode saber mais em nosso tutorial Python Tuples.
Perguntas avançadas para entrevistas com Python
Essas perguntas da entrevista são para profissionais mais experientes em Python.
5. O que é monkey patching em Python?
O Monkey patching em Python é uma técnica dinâmica que pode alterar o comportamento do código em tempo de execução. Em resumo, você pode modificar uma classe ou módulo em tempo de execução.
Exemplo:
Vamos aprender a aplicar patches de macaco com um exemplo.
- Criamos uma classe `monkey` com uma função `patch()`. Também criamos uma função `monk_p` fora da classe.
- Agora, substituiremos a função `patch` pela função `monk_p`, atribuindo `monkey.patch` a `monk_p`.
- No final, testaremos a modificação criando o objeto usando a classe `monkey` e executando a função `patch()`.
Em vez de exibir "patch() está sendo chamado", ele exibiu "monk_p() está sendo chamado".
class monkey:
def patch(self):
print ("patch() is being called")
def monk_p(self):
print ("monk_p() is being called")
# replacing address of "patch" with "monk_p"
monkey.patch = monk_p
obj = monkey()
obj.patch()
# monk_p() is being called
6. Para que serve a instrução "with" do Python?
A instrução `with` é usada para o tratamento de exceções para tornar o código mais limpo e simples. Geralmente, ele é usado para o gerenciamento de recursos comuns, como criar, editar e salvar um arquivo.
Exemplo:
Em vez de escrever várias linhas de open, try, finally e close, você pode criar e gravar um arquivo de texto usando a instrução `with`. É simples.
# using with statement
with open('myfile.txt', 'w') as file:
file.write('DataCamp Black Friday Sale!!!')
7. Por que usar else na construção try/except em Python?
`try:` e `except:` são comumente conhecidos pelo tratamento de exceções em Python, então onde é que `else:` é útil? O `else:` será acionado quando nenhuma exceção for criada.
Exemplo:
Vamos aprender mais sobre `else:` com alguns exemplos.
- Na primeira tentativa, inserimos 2 como numerador e "d" como denominador. O que está incorreto, e o `except:` foi acionado com "Invalid input!".
- Na segunda tentativa, inserimos 2 como numerador e 1 como denominador e obtivemos o resultado 2. Nenhuma exceção foi levantada, então você acionou o `else:` imprimindo a mensagem "Division is successful".
try:
num1 = int(input('Enter Numerator: '))
num2 = int(input('Enter Denominator: '))
division = num1/num2
print(f'Result is: {division}')
except:
print('Invalid input!')
else:
print('Division is successful.')
## Try 1 ##
# Enter Numerator: 2
# Enter Denominator: d
# Invalid input!
## Try 2 ##
# Enter Numerator: 2
# Enter Denominator: 1
# Result is: 2.0
# Division is successful.
Faça o curso de habilidades Python Fundamentals para adquirir as habilidades básicas que você precisa para se tornar um programador Python.
8. O que são decoradores em Python?
Os decoradores em Python são um padrão de design que permite que você adicione novas funcionalidades a um objeto existente sem modificar sua estrutura. Eles são comumente usados para ampliar o comportamento de funções ou métodos.
Exemplo:
def my_decorator(func):
def wrapper():
print("Something is happening before the function is called.")
func()
print("Something is happening after the function is called.")
return wrapper
@my_decorator
def say_hello():
print("Hello!")
say_hello()
# Output:
# Something is happening before the function is called.
# Hello!
# Something is happening after the function is called.
9. O que são gerenciadores de contexto em Python e como eles são implementados?
Os gerenciadores de contexto em Python são usados para gerenciar recursos, garantindo que eles sejam adquiridos e liberados adequadamente. O uso mais comum dos gerenciadores de contexto é a declaração with
.
Exemplo:
class FileManager:
def __init__(self, filename, mode):
self.filename = filename
self.mode = mode
def __enter__(self):
self.file = open(self.filename, self.mode)
return self.file
def __exit__(self, exc_type, exc_value, traceback):
self.file.close()
with FileManager('test.txt', 'w') as f:
f.write('Hello, world!')
Neste exemplo, a classe FileManager
é um gerenciador de contexto que garante que o arquivo seja fechado corretamente depois de ser usado na instrução with
.
Perguntas da entrevista sobre ciência de dados em Python
Para aqueles que se concentram mais nos aplicativos de ciência de dados do Python, estas são algumas perguntas que você pode encontrar.
10. Quais são as vantagens do NumPy em relação às listas regulares do Python?
Memória
As matrizes Numpy consomem menos memória.
Por exemplo, se você criar uma lista e uma matriz Numpy de mil elementos. A lista consumirá 48 mil bytes, e a matriz Numpy consumirá 8 mil bytes de memória.
Velocidade
Os arrays Numpy levam menos tempo para realizar as operações em arrays do que em listas.
Por exemplo, se estivermos multiplicando duas listas e duas matrizes Numpy de 1 milhão de elementos. Você levou 0,15 segundo para a lista e 0,0059 segundo para a matriz operar.
Vestibilidade
As matrizes Numpy são convenientes de usar, pois oferecem múltiplas matrizes simples, adição e muitas outras funcionalidades incorporadas. Enquanto as listas do Python são incapazes de executar operações básicas.
11. Qual é a diferença entre mesclar, unir e concatenar?
Mesclar
Mesclar dois DataFrames denominados objetos de série usando o identificador de coluna exclusivo.
Ele requer dois DataFrame, uma coluna comum em ambos os DataFrame e "como" você deseja uni-los. Você pode unir dois DataFrames de dados à esquerda, à direita, externos, internos e cruzados. Por padrão, é uma união interna.
pd.merge(df1, df2, how='outer', on='Id')
Junte-se a você
Unir os DataFrames usando o índice exclusivo. Ele requer um argumento opcional `on` que pode ser uma coluna ou vários nomes de colunas. Por padrão, a função de união executa uma união à esquerda.
df1.join(df2)
Concatenar
O Concatenate une dois ou vários DataFrames em um eixo específico (linhas ou colunas). Ele não requer um argumento `on`.
pd.concat(df1,df2)
- join(): combina dois DataFrames por índice.
- merge(): combina dois DataFrames pela coluna ou colunas que você especificar.
- concat(): combina dois ou mais DataFrames vertical ou horizontalmente.
12. Como você identifica e lida com valores ausentes?
Identificação de valores ausentes
Podemos identificar os valores ausentes no DataFrame usando a função `isnull()` e, em seguida, aplicando `sum()`. A função `Isnull()` retornará valores booleanos e a soma fornecerá a você o número de valores ausentes em cada coluna.
No exemplo, criamos um dicionário de listas e o convertemos em um DataFrame do pandas. Depois disso, usamos isnull().sum() para obter o número de valores ausentes em cada coluna.
import pandas as pd
import numpy as np
# dictionary of lists
dict = {'id':[1, 4, np.nan, 9],
'Age': [30, 45, np.nan, np.nan],
'Score':[np.nan, 140, 180, 198]}
# creating a DataFrame
df = pd.DataFrame(dict)
df.isnull().sum()
# id 1
# Age 2
# Score 1
Como lidar com valores ausentes
Há várias maneiras de lidar com valores ausentes.
- Elimine toda a linha ou as colunas se elas consistirem em valores ausentes usando `dropna()`. Esse método não é recomendado, pois você perderá informações importantes.
- Preencha os valores ausentes com a constante, a média, o preenchimento para trás e o preenchimento para frente usando a função `fillna()`.
- Substitua os valores ausentes por uma constante String, Integer ou Float usando a função `replace()`.
- Preencha os valores ausentes usando um método de interpolação.
Observação: certifique-se de que você está trabalhando com um conjunto de dados maior ao usar a função `dropna()`.
# drop missing values
df.dropna(axis = 0, how ='any')
#fillna
df.fillna(method ='bfill')
#replace null values with -999
df.replace(to_replace = np.nan, value = -999)
# Interpolate
df.interpolate(method ='linear', limit_direction ='forward')
Para se tornar um cientista de dados profissional, você pode seguir a carreira de Cientista de Dados com Python. Ele inclui 25 cursos e seis projetos para ajudar você a aprender todos os fundamentos da ciência de dados com a ajuda das bibliotecas Python.
13. Quais bibliotecas Python você já usou para visualização?
A visualização de dados é a parte mais importante da análise de dados. Você pode ver seus dados em ação e isso o ajuda a encontrar padrões ocultos.
As bibliotecas de visualização de dados Python mais populares são:
- Matplotlib
- Seaborn
- Plotly
- Bokeh
Em Python, geralmente usamos Matplotlib e seaborn para exibir todos os tipos de visualização de dados. Com algumas linhas de código, você pode usá-lo para exibir gráficos de dispersão, gráficos de linhas, gráficos de caixa, gráficos de barras e muito mais.
Para aplicativos interativos e mais complexos, usamos o Plotly. Você pode usá-lo para criar gráficos interativos coloridos com algumas linhas de código. Você pode aplicar zoom, animações e até mesmo adicionar funções de controle. O Plotly oferece mais de 40 tipos exclusivos de gráficos, e você pode até mesmo usá-los para criar um aplicativo da Web ou um painel de controle.
O Bokeh é usado para gráficos detalhados com um alto nível de interatividade em grandes conjuntos de dados.
Perguntas da entrevista sobre codificação Python
Se você tiver uma entrevista sobre codificação Python em breve, preparar perguntas semelhantes a essas pode ajudá-lo a impressionar o entrevistador.
14. Como você pode substituir o espaço da cadeia de caracteres por um determinado caractere em Python?
É um desafio simples de manipulação de strings. Você precisa substituir o espaço por um caractere específico.
Exemplo 1: um usuário forneceu a cadeia de caracteres "l vey u" e o caractere "o", e o resultado será "loveyou".
Exemplo 2: um usuário forneceu a string "D t C mpBl ckFrid yS le" e o caractere "a", e o resultado será "DataCampBlackFridaySale".
Na função `str_replace()`, faremos um loop em cada letra da string e verificaremos se ela é um espaço ou não. Se ele consistir em espaço, nós o substituiremos pelo caractere específico fornecido pelo usuário. Por fim, retornaremos a string modificada.
def str_replace(text,ch):
result = ''
for i in text:
if i == ' ':
i = ch
result += i
return result
text = "D t C mpBl ckFrid yS le"
ch = "a"
str_replace(text,ch)
# 'DataCampBlackFridaySale'
15. Dado um número inteiro positivo num, escreva uma função que retorne True se num for um quadrado perfeito, caso contrário, False.
Isso tem uma solução relativamente simples. Você pode verificar se o número tem uma raiz quadrada perfeita:
- Encontrar a raiz quadrada do número e convertê-la em um número inteiro.
- Aplicando o quadrado à raiz quadrada do número e verificando se é uma raiz quadrada perfeita.
- Retornando o resultado como um booleano.
Teste 1
Fornecemos o número 10 para a função `valid_square()`.
- Ao tirar a raiz quadrada do número, você obtém 3,1622776601683795.
- Ao convertê-lo em um número inteiro, obtemos 3.
- Em seguida, pegue o quadrado de 3 e obtenha 9.
- 9 não é igual ao número, portanto a função retornará False.
a
Teste 2
Fornecemos o número 36 para a função `valid_square()`.
- Ao tirar a raiz quadrada do número, você obtém 6.
- Ao convertê-lo em um número inteiro, obtemos 6.
- Em seguida, você deve considerar o quadrado de 6 e obter 36.
- 36 é igual ao número, portanto, a função retornará True.
def valid_square(num):
square = int(num**0.5)
check = square**2==num
return check
valid_square(10)
# False
valid_square(36)
# True
16. Dado um número inteiro n, retorne o número de zeros à direita em n fatorial n!
Para passar nesse desafio, você deve primeiro calcular o fatorial n (n!) e, em seguida, calcular o número de zeros de treinamento.
Como encontrar o fatorial
Na primeira etapa, usaremos um loop while para iterar sobre o fatorial n e parar quando n for igual a 1.
Cálculo de zeros finais
Na segunda etapa, calcularemos o zero final, não o número total de zeros. Há uma grande diferença.
7! = 5040
Os sete fatoriais têm um total de dois zeros e apenas um zero à direita, portanto, nossa solução deve retornar 1.
- Converta o número fatorial em uma cadeia de caracteres.
- Leia-o novamente e aplique um loop.
- Se o número for 0, adicione +1 ao resultado; caso contrário, interrompa o loop.
- Retorna o resultado.
A solução é elegante, mas requer atenção aos detalhes.
def factorial_trailing_zeros(n):
fact = n
while n > 1:
fact *= n - 1
n -= 1
result = 0
for i in str(fact)[::-1]:
if i == "0":
result += 1
else:
break
return result
factorial_trailing_zeros(10)
# 2
factorial_trailing_zeros(18)
# 3
Faça o curso essencial de prática de perguntas de codificação para entrevistas para se preparar para suas próximas entrevistas de codificação em Python.
Pergunta da entrevista sobre Python da FAANG
Abaixo, selecionamos algumas das perguntas que você pode esperar dos cargos mais procurados nos setores, como os da Meta, Amazon, Google e similares.
Perguntas da entrevista do Facebook/Meta Python
As perguntas exatas que você encontrará na Meta dependem muito da função. No entanto, você pode esperar alguns dos seguintes itens:
17. Segmentação de cordas
Você receberá uma corda grande e um dicionário de palavras. Você precisa descobrir se a string de entrada pode ser segmentada em palavras usando o dicionário ou não.
Imagem do autor
A solução é razoavelmente simples. Você precisa segmentar uma cadeia grande em cada ponto e verificar se a cadeia pode ser segmentada para as palavras do dicionário.
- Execute o loop usando o comprimento da corda grande.
- Criaremos duas substrings.
- A primeira substring verificará cada ponto da string grande a partir de s[0:i]
- Se a primeira substring não estiver no dicionário, você retornará False.
- Se a primeira substring estiver no dicionário, você criará a segunda substring usando s[i:0].
- Se a segunda substring estiver no dicionário ou se o comprimento da segunda substring for zero, você retornará True. Chame recursivamente `can_segment_str()` com a segunda substring e retorne True se ela puder ser segmentada.
def can_segment_str(s, dictionary):
for i in range(1, len(s) + 1):
first_str = s[0:i]
if first_str in dictionary:
second_str = s[i:]
if (
not second_str
or second_str in dictionary
or can_segment_str(second_str, dictionary)
):
return True
return False
s = "datacamp"
dictionary = ["data", "camp", "cam", "lack"]
can_segment_string(s, dictionary)
# True
18. Remover duplicatas da matriz ordenada
Dada uma matriz inteira classificada em ordem crescente, remova os números duplicados de forma que cada elemento único apareça apenas uma vez. Certifique-se de que você mantenha a mesma ordem final da matriz.
É impossível alterar o comprimento da matriz em Python, portanto, colocaremos o resultado na primeira parte da matriz. Depois de remover as duplicatas, teremos k elementos, e os primeiros k elementos da matriz devem conter os resultados.
Imagem de LeetCode
Exemplo 1: a matriz de entrada é [1,1,2,2], a função deve retornar 2.
Exemplo 2: a matriz de entrada é [1,1,2,3,3], a função deve retornar 3.
Solução:
- Execute o loop para o intervalo de 1 até o tamanho da matriz.
- Verifique se o número anterior é exclusivo ou não. Estamos comparando elementos anteriores com o atual.
- Se for exclusivo, atualize a matriz usando insertIndex, que é 1 no início, e adicione +1 ao insertIndex.
- Retorna insertIndex, pois é o k.
Essa pergunta é relativamente simples quando você sabe como fazer. Se você dedicar mais tempo para entender a declaração, poderá facilmente encontrar uma solução.
def removeDuplicates(array):
size = len(array)
insertIndex = 1
for i in range(1, size):
if array[i - 1] != array[i]:
# Updating insertIndex in our main array
array[insertIndex] = array[i]
# Incrementing insertIndex count by 1
insertIndex = insertIndex + 1
return insertIndex
array_1 = [1,2,2,3,3,4]
removeDuplicates(array_1)
# 4
array_2 = [1,1,3,4,5,6,6]
removeDuplicates(array_2)
# 5
19. Encontre o lucro máximo de uma única venda
Você recebe a lista de preços de ações e precisa retornar o preço de compra e venda para obter o maior lucro.
Observação: Temos que obter o máximo de lucro com uma única compra/venda e, se não conseguirmos obter lucro, temos que reduzir nossas perdas.
Exemplo 1: stock_price = [8, 4, 12, 9, 20, 1], buy = 4 e sell = 20. Maximizar o lucro.
Exemplo 2: stock_price = [8, 6, 5, 4, 3, 2, 1], buy = 6 e sell = 5. Minimizar a perda.
Solução:
- Calcularemos o lucro global subtraindo a venda global (o primeiro elemento da lista) da compra atual (o segundo elemento da lista).
- Execute o loop para o intervalo de 1 até o comprimento da lista.
- No loop, calcule o lucro atual usando os elementos da lista e o valor de compra atual.
- Se o lucro atual for maior que o lucro global, altere o lucro global com o lucro atual e a venda global para o elemento i da lista.
- Se a compra atual for maior que o elemento atual da lista, altere a compra atual com o elemento atual da lista.
- No final, retornaremos o valor global de compra e venda. Para obter o valor de compra global, subtrairemos a venda global do lucro global.
A pergunta é um pouco complicada, e você pode criar um algoritmo exclusivo para resolver os problemas.
def buy_sell_stock_prices(stock_prices):
current_buy = stock_prices[0]
global_sell = stock_prices[1]
global_profit = global_sell - current_buy
for i in range(1, len(stock_prices)):
current_profit = stock_prices[i] - current_buy
if current_profit > global_profit:
global_profit = current_profit
global_sell = stock_prices[i]
if current_buy > stock_prices[i]:
current_buy = stock_prices[i]
return global_sell - global_profit, global_sell
stock_prices_1 = [10,9,16,17,19,23]
buy_sell_stock_prices(stock_prices_1)
# (9, 23)
stock_prices_2 = [8, 6, 5, 4, 3, 2, 1]
buy_sell_stock_prices(stock_prices_2)
# (6, 5)
Perguntas da entrevista com a Amazon Python
As perguntas da entrevista com o Amazon Python podem variar muito, mas podem incluir:
20. Encontre o número que falta na matriz
Você recebeu a lista de números inteiros positivos de 1 a n. Todos os números de 1 a n estão presentes, exceto x, e você deve encontrar x.
Exemplo:
4 |
5 |
3 |
2 |
8 |
1 |
6 |
- n = 8
- Número ausente = 7
Essa pergunta é um problema simples de matemática.
- Encontre a soma de todos os elementos da lista.
- Usando a fórmula da soma da série aritmética, encontraremos a soma esperada dos primeiros n números.
- Retorna a diferença entre a soma esperada e a soma dos elementos.
def find_missing(input_list):
sum_of_elements = sum(input_list)
# There is exactly 1 number missing
n = len(input_list) + 1
actual_sum = (n * ( n + 1 ) ) / 2
return int(actual_sum - sum_of_elements)
list_1 = [1,5,6,3,4]
find_missing(list_1)
# 2
21. Tripleto pitagórico em uma matriz
Escreva uma função que retorne True se houver um tripleto pitagórico que satisfaça a2+ b2 = c2
Exemplo:
Entrada |
Saída |
[3, 1, 4, 6, 5] |
Verdadeiro |
[10, 4, 6, 12, 5] |
Falso |
Solução:
- Eleva ao quadrado todos os elementos da matriz.
- Classifique a matriz em ordem crescente.
- Dê duas voltas. O loop externo começa do último índice da matriz até 1 e o loop interno começa de (outer_loop_index -1) até o início.
- Crie set() para armazenar os elementos entre o índice do loop externo e o índice do loop interno.
- Verifique se há um número presente no conjunto que seja igual a (array[outerLoopIndex] - array[innerLoopIndex]). Se sim, você retornará True, caso contrário, False.
def checkTriplet(array):
n = len(array)
for i in range(n):
array[i] = array[i]**2
array.sort()
for i in range(n - 1, 1, -1):
s = set()
for j in range(i - 1, -1, -1):
if (array[i] - array[j]) in s:
return True
s.add(array[j])
return False
arr = [3, 2, 4, 6, 5]
checkTriplet(arr)
# True
22. De quantas maneiras você pode fazer o troco com moedas e um valor total?
Precisamos criar uma função que receba uma lista de denominações de moedas e valores totais e retorne o número de maneiras pelas quais podemos fazer o troco.
No exemplo, fornecemos as denominações das moedas [1, 2, 5] e o valor total de 5. Em troca, recebemos cinco maneiras de fazer a mudança.
Imagem do autor
Solução:
- Criaremos a lista de tamanho amount + 1. Espaços adicionais são adicionados para armazenar a solução para um valor zero.
- Iniciaremos uma lista de soluções com 1.
- Executaremos dois loops. O loop externo retornará o número de denominações, e o loop interno será executado a partir do intervalo do índice do loop externo até o valor +1.
- Os resultados de diferentes denominações são armazenados na matriz solução. solução[i] = solução[i] + solução[i - den]
- O processo será repetido para todos os elementos da lista de denominações e, no último elemento da lista de soluções, teremos nosso número.
def solve_coin_change(denominations, amount):
solution = [0] * (amount + 1)
solution[0] = 1
for den in denominations:
for i in range(den, amount + 1):
solution[i] += solution[i - den]
return solution[len(solution) - 1]
denominations = [1,2,5]
amount = 5
solve_coin_change(denominations,amount)
# 4
Perguntas da entrevista do Google Python
Assim como nas outras empresas mencionadas, as perguntas da entrevista do Google Python dependerão da função e do nível de experiência. No entanto, algumas perguntas comuns incluem:
23. Defina uma função lambda, um iterador e um gerador em Python.
A função Lambda também é conhecida como função anônima. Você pode adicionar qualquer número de parâmetros, mas com apenas um comando.
Um iterador é um objeto que podemos usar para iterar sobre objetos iteráveis, como listas, dicionários, tuplas e conjuntos.
O gerador é uma função semelhante a uma função normal, mas gera um valor usando a palavra-chave yield em vez de return. Se o corpo da função contiver yield, ele se tornará automaticamente um gerador.
Leia mais sobre iteradores e geradores Python em nosso tutorial completo.
24. Dada uma matriz arr[], encontre o máximo j - i de modo que arr[j] > arr[i]
Essa pergunta é bastante simples, mas requer atenção especial aos detalhes. Você tem à disposição uma matriz de números inteiros positivos. Temos que encontrar a diferença máxima entre j-i em que array[j] > array[i].
Exemplos:
- Entrada: [20, 70, 40, 50, 12, 38, 98], Saída: 6 (j = 6, i = 0)
- Entrada: [10, 3, 2, 4, 5, 6, 7, 8, 18, 0], Saída: 8 ( j = 8, i = 0)
Solução:
- Calcule o comprimento da matriz e inicie a diferença máxima com -1.
- Dê duas voltas. O loop externo seleciona os elementos da esquerda e o loop interno compara os elementos selecionados com os elementos que começam do lado direito.
- Interrompa o loop interno quando o elemento for maior que o elemento selecionado e continue atualizando a diferença máxima usando j - I.
def max_index_diff(array):
n = len(array)
max_diff = -1
for i in range(0, n):
j = n - 1
while(j > i):
if array[j] > array[i] and max_diff < (j - i):
max_diff = j - i
j -= 1
return max_diff
array_1 = [20,70,40,50,12,38,98]
max_index_diff(array_1)
# 6
25. Como você usaria os operadores ternários em Python?
Os operadores ternários também são conhecidos como expressões condicionais. São operadores que avaliam expressões com base em condições como True (verdadeiro) e False (falso).
Você pode escrever expressões condicionais em uma única linha em vez de escrever usando várias linhas de instruções if-else. Ele permite que você escreva um código limpo e compacto.
Por exemplo, podemos converter instruções if-else aninhadas em uma linha, como mostrado abaixo.
Declaração If-else
score = 75
if score < 70:
if score < 50:
print('Fail')
else:
print('Merit')
else:
print('Distinction')
# Distinction
Operador ternário aninhado
print('Fail' if score < 50 else 'Merit' if score < 70 else 'Distinction')
# Distinction
Capacitando sua equipe com Python
Embora a preparação para entrevistas com Python seja essencial para quem procura emprego e para os gerentes de contratação, é igualmente importante que as empresas invistam em treinamento contínuo em Python para suas equipes. Em uma era em que a automação, a análise de dados e o desenvolvimento de software são fundamentais, garantir que seus funcionários tenham habilidades sólidas em Python pode ser um fator transformador para o sucesso da sua empresa.
Se você é líder de equipe ou proprietário de uma empresa e deseja garantir que toda a sua equipe seja proficiente em Python, o DataCamp for Business oferece programas de treinamento personalizados que podem ajudar seus funcionários a dominar as habilidades em Python, desde os conceitos básicos até os avançados. Podemos fornecer:
- Caminhos de aprendizado direcionados: Personalizável de acordo com o nível de habilidade atual da sua equipe e com as necessidades comerciais específicas.
- Prática prática: Projetos do mundo real e exercícios de codificação que reforçam o aprendizado e melhoram a retenção.
- Acompanhamento do progresso: Ferramentas para monitorar e avaliar o progresso de sua equipe, garantindo que eles atinjam suas metas de aprendizado.
Investir na capacitação em Python por meio de plataformas como o DataCamp não apenas aprimora os recursos da sua equipe, mas também oferece à sua empresa uma vantagem estratégica, permitindo que você inove, permaneça competitivo e forneça resultados impactantes. Conecte-se com nossa equipe e solicite uma demonstração hoje mesmo.
Aumente a proficiência em Python da sua equipe
Treine sua equipe em Python com o DataCamp for Business. Treinamento abrangente, projetos práticos e métricas de desempenho detalhadas para sua empresa.
Considerações finais
Dominar Python é fundamental para qualquer pessoa que queira se destacar em entrevistas técnicas, sejam elas aspirantes a profissionais de dados, desenvolvedores ou engenheiros de software. Este guia fornece uma visão geral das perguntas comuns da entrevista sobre Python, que vão do nível básico ao avançado, bem como desafios de codificação e perguntas específicas das principais empresas de tecnologia.
Ao praticar essas perguntas e entender suas soluções, você pode aprimorar significativamente suas habilidades de solução de problemas e seu conhecimento técnico, o que o deixará bem preparado para passar nas etapas técnicas e de codificação das entrevistas.
A obtenção das principais certificações em Python e o aprendizado contínuo por meio de cursos e projetos reforçarão ainda mais seus conhecimentos e suas perspectivas de carreira no setor de tecnologia. Se você precisa aprimorar suas habilidades, não deixe de concluir nosso curso de carreira de Cientista de Dados Associado em Python.
Perguntas frequentes sobre a entrevista com Python
Como posso me preparar para uma entrevista com Python?
Você precisa revisar a sintaxe, as funções, as classes, os tipos de dados, os algoritmos, as estruturas de dados e o tratamento excepcional do Python. Além disso, você precisa ler tutoriais técnicos, analisar projetos de exemplo, folhas de consulta e perguntas simuladas e resolver desafios de codificação para passar na fase de entrevista.
Você precisa se preparar para perguntas gerais sobre Python em funcionalidade nativa, perguntas específicas do cargo (engenheiro de dados, cientista de dados, desenvolvedor de back-end) e perguntas com base em código cronometrado. Você pode praticar perguntas Python sobre aprendizado de máquina e perguntas de entrevista sobre estatística em Python com o DataCamp.
Como você se destaca em uma entrevista sobre codificação em Python?
Você deve demonstrar a capacidade de escrever códigos limpos e prontos para produção, entender bibliotecas, ferramentas e algoritmos Python específicos do trabalho e encontrar soluções exclusivas para problemas complexos. Todos vocês podem fazer isso praticando desafios de codificação ou trabalhando em um projeto de código aberto.
Você também pode se destacar criando um portfólio de projetos baseados em Python no GitHub e em sites pessoais.
O que é Lambda em Python?
Uma função lambda também é conhecida como função anônima, uma função Python sem nome. Ele pode receber qualquer número de argumentos, mas avalia e retorna apenas uma expressão.
Sintaxe:
lambda arguments : expression
Exemplo:
lambda_add = lambda a : a + 10
print(lambda_add (7))
# 17
Quais são os cinco principais usos do Python?
- Desenvolvimento de sites e software
- Software de script e utilitário
- Aplicativos de desktop
- Análise de dados
- Aprendizado de máquina
O mapa é mais rápido do que o loop for?
O "map" é mais rápido do que o "for loop" se você estiver aplicando a função a cada item de um iterável.
Cursos para entrevistas com Python
Course
Practicing Coding Interview Questions in Python
Course
Practicing Statistics Interview Questions in Python
blog
As 26 principais perguntas e respostas da entrevista sobre pandas em Python
Srujana Maddula
15 min
blog
As 20 principais perguntas da entrevista sobre o NumPy: Do básico ao avançado
Tim Lu
20 min
blog
As 25 principais perguntas da entrevista sobre aprendizado de máquina para 2024
blog
As 45 principais perguntas da entrevista sobre PostgreSQL para todos os níveis
blog
As 26 principais bibliotecas Python para ciência de dados em 2024
tutorial