curso
Las 23 mejores preguntas y respuestas de entrevistas sobre Python
Python es el lenguaje más popular en el sector tecnológico. Durante la entrevista, se te pedirá que resuelvas el reto utilizando Python y que expliques funcionalidades complejas de Python. Para superar la fase técnica y de programación, necesitas una guía o modelos de preguntas para practicar.
En este post, hemos resumido las preguntas más habituales que se hacen en las entrevistas técnicas. Practicar estas preguntas puede ayudar a los profesionales de datos, desarrolladores e ingenieros de software a superar la fase de entrevista.
Certifícate como profesional de los datos y destaca ante las empresas.
Preguntas básicas de entrevistas sobre Python
Estas son algunas de las preguntas que puedes encontrarte durante una entrevista de nivel inicial para Python.
1. ¿Puedes diferenciar entre una lista y una tupla?
Las listas y las tuplas son estructuras de datos de Python. La lista es dinámica, mientras que la tupla tiene características estáticas. Ambas tienen diversas ventajas y casos de uso.
Lista
La lista es el tipo de datos mutable, consume más memoria y es mejor para la inserción y eliminación de elementos. Además, tiene varias funciones de construcción, y la implicación de las iteraciones es más lenta en comparación con la tupla.
Ejemplo:
a_list = ["Data", "Camp", "Tutorial"]
Tupla
La tupla es un tipo de datos inmutable, y se utiliza generalmente para acceder a los elementos. Es más rápida y consume menos memoria, pero carece de métodos integrados.
Ejemplo:
a_tuple = ("Data", "Camp", "Tutorial")
Aprende más en nuestro tutorial sobre listas de Python.
2. ¿Qué es __init__() en Python?
Se conoce como constructor en la terminología de la programación orientada a objetos. Se utiliza para iniciar un estado cuando creas un nuevo objeto. Por ejemplo, puedes asignar valores a las propiedades del objeto o ejecutar las operaciones necesarias cuando se crea el objeto.
El método __init__() está reservado a las clases de Python, y se invoca automáticamente cuando creas un nuevo objeto.
Ejemplo:
Hemos creado una clase `book_shop` y añadido el constructor y la función `book()`. El constructor almacenará el nombre del título del libro y la función `book()` imprimirá el nombre del libro.
Para probar nuestro código hemos inicializado el objeto `b` con "Sandman" y ejecutado la función `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. ¿Cuál es la diferencia entre un tipo de datos mutable y un tipo de datos inmutable?
Los tipos de datos mutables de Python se pueden modificar y pueden cambiar en tiempo de ejecución, como una lista, un diccionario y un conjunto.
Los tipos de datos inmutables de Python no pueden cambiarse ni modificarse, y permanecen invariables durante el tiempo de ejecución, como los numéricos, las cadenas y las tuplas.
4. Explica la comprensión de listas, diccionarios y tuplas con un ejemplo.
Lista
La comprensión de listas ofrece una sintaxis de una sola línea para crear una nueva lista a partir de los valores de la lista existente. Puedes utilizar un `for loop` para replicar lo mismo, pero te obligará a escribir varias líneas, y a veces puede resultar complejo.
La comprensión de listas facilita la creación de la lista a partir de un iterable existente.
my_list = [i for i in range(1, 10)]
my_list
# [1, 2, 3, 4, 5, 6, 7, 8, 9]
Diccionario
De forma similar a la comprensión de listas, puedes crear un diccionario basado en una tabla existente con una sola línea de código. Debes escribir la operación entre llaves `{}`.
my_dict = {i for i in range(1, 10)}
my_dict
# {1, 2, 3, 4, 5, 6, 7, 8, 9}
Tupla
Es un poco diferente para las tuplas. Puedes crear comprensión de tuplas utilizando paréntesis `()`, pero devolverá un objeto generador, no una comprensión de tuplas.
Puedes ejecutar el bucle para extraer los elementos o convertirlos en una lista.
my_tuple = (i for i in range(1, 10))
my_tuple
# <generator object <genexpr> at 0x7fb91b151430>
Puedes obtener más información en nuestro tutorial sobre tuplas de Python.
Preguntas avanzadas de entrevistas sobre Python
Estas preguntas de entrevista son para profesionales de Python con más experiencia.
5. ¿Qué es el Monkey Patching en Python?
El Monkey Patching en Python es una técnica dinámica que puede cambiar el comportamiento del código en tiempo de ejecución. En resumen, puedes modificar una clase o módulo en tiempo de ejecución.
Ejemplo:
Aprendamos qué es el Monkey Patching con un ejemplo.
- Hemos creado una clase `monkey` con una función `patch()`. También hemos creado una función `monk_p` fuera de la clase.
- Ahora sustituiremos `patch` por la función `monk_p` asignando `monkey.patch` a `monk_p`.
- Al final, probaremos la modificación creando el objeto con la clase `monkey` y ejecutando la función `patch()`.
En lugar de mostrar "patch() is being called", ha mostrado "monk_p() is being called".
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 qué sirve la sentencia "with" de Python?
La sentencia `with` se utiliza para la gestión de excepciones con el fin de que el código sea más limpio y sencillo. Generalmente se utiliza para la gestión de recursos comunes como crear, editar y guardar un archivo.
Ejemplo:
En lugar de escribir varias líneas de open, try, finally y close, puedes crear y escribir un archivo de texto utilizando la sentencia `with`. Es sencillo.
# using with statement
with open('myfile.txt', 'w') as file:
file.write('DataCamp Black Friday Sale!!!')
7. ¿Por qué utilizar else en la construcción try/except en Python?
`try:` y `except:` se usan habitualmente para la gestión de excepciones en Python, así que, ¿dónde resulta útil `else:`? `else:` se activará cuando no se produzca ninguna excepción.
Ejemplo:
Vamos a aprender más sobre `else:` con un par de ejemplos.
- En el primer intento, introdujimos 2 como numerador y "d" como denominador. Esto es incorrecto, y `except:` se activó con "Invalid input!".
- En el segundo intento, introdujimos 2 como numerador y 1 como denominador y obtuvimos el resultado 2. No se lanzó ninguna excepción, por lo que se activó `else:` y se imprimió el mensaje "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.
Sigue el programa Fundamentos de Python para adquirir los conocimientos básicos que necesitas para convertirte en programador de Python.
Preguntas de entrevista de ciencia de datos en Python
Para los que se centran más en las aplicaciones de Python a la ciencia de datos, estas son algunas preguntas que pueden encontrarse.
8. ¿Qué ventajas tiene NumPy sobre las listas normales de Python?
Memoria
Las matrices Numpy consumen menos memoria.
Por ejemplo, si creas una lista y una matriz Numpy de mil elementos, la lista consumirá 48 kbytes de memoia, y la matriz Numpy consumirá 8 kbytes.
Velocidad
Las matrices Numpy tardan menos en realizar las operaciones sobre matrices que las listas.
Por ejemplo, si multiplicamos junas dos listas y dos matrices Numpy de 1 millón de elementos, la lista tarda 0,15 segundos y la matriz, 0,0059 segundos.
Versatilidad
Las matrices Numpy son cómodas, ya que ofrecen una suma y multiplicación de matrices simples y muchas más funciones integradas. Por su parte, las listas de Python son incapaces de ejecutar operaciones básicas.
9. ¿Cuál es la diferencia entre fusionar, unir y concatenar?
Fusionar
Fusiona dos objetos Series con nombre DataFrames utilizando el identificador único de columna.
Requiere dos DataFrame, una columna común en ambos DataFrame y "cómo" quieres unirlos. Puedes utilizar unión a la izquierda, a la derecha, externa, interna y cruzada con dos DataFrames de datos. Por defecto, es una unión interna.
pd.merge(df1, df2, how='outer', on='Id')
Unir
Une los DataFrames utilizando el índice único. Requiere un argumento opcional `on` que puede ser una columna o varios nombres de columna. Por defecto, la función de unión realiza una unión a la izquierda.
df1.join(df2)
Concatenar
La concatenación une dos o más DataFrames a lo largo de un eje determinado (filas o columnas). No requiere un argumento `on`.
pd.concat(df1,df2)
- join(): combina dos DataFrames por índice.
- merge(): combina dos DataFrames por la columna o las columnas que especifiques.
- concat(): combina dos o más DataFrames vertical u horizontalmente.
10. ¿Cómo identificas y tratas los valores que faltan?
Identificar los valores que faltan
Podemos identificar los valores que faltan en el DataFrame utilizando la función `isnull()` y aplicando después `sum()`. `Isnull()` devolverá valores booleanos, y la suma te dará el número de valores que faltan en cada columna.
En el ejemplo, hemos creado un diccionario de listas y lo hemos convertido en un DataFrame de pandas. Después, utilizamos isnull().sum() para obtener el número de valores que faltan en cada columna.
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
Tratar los valores que faltan
Hay diversas formas de tratar los valores que faltan.
- Elimina toda la fila o las columnas si están formadas por valores que faltan utilizando `dropna()`. Este método no es recomendable, ya que perderás información importante.
- Rellena los valores que faltan con la función de constante, media, relleno hacia atrás y relleno hacia delante utilizando la función `fillna()`.
- Sustituye los valores que faltan por una constante String, Integer o Float utilizando la función `replace()`.
- Rellena los valores que faltan utilizando un método de interpolación.
Nota: Asegúrate de trabajar con un conjunto de datos mayor cuando utilices la función `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')
Conviértete en un científico de datos profesional siguiendo el programa Científico de datos con Python. Incluye 25 cursos y 6 proyectos para ayudarte a aprender todos los fundamentos de la ciencia de datos con la ayuda de bibliotecas de Python.
11. ¿Qué bibliotecas de Python has utilizado para la visualización?
La visualización de datos es la parte más importante del análisis de datos. Consigues ver tus datos en acción, y te ayuda a encontrar patrones ocultos.
Las bibliotecas de visualización de datos de Python más populares son:
- Matplotlib
- Seaborn
- Plotly
- Bokeh
En Python, generalmente utilizamos Matplotlib y seaborn para mostrar todo tipo de visualizaciones de datos. Con unas pocas líneas de código, puedes utilizarlo para mostrar gráficos de dispersión, de líneas, de cajas, de barras y muchos más.
Para aplicaciones interactivas y más complejas, utilizamos Plotly. Puedes utilizarlo para crear vistosos gráficos interactivos con unas pocas líneas de código. Puedes hacer zoom, aplicar animaciones e incluso añadir funciones de control. Plotly proporciona más de 40 tipos únicos de gráficos, e incluso podemos utilizarlos para crear una aplicación web o un panel de control.
Bokeh se utiliza para gráficos detallados con un alto nivel de interactividad en grandes conjuntos de datos.
Preguntas de entrevista sobre programación en Python
Si tienes una entrevista sobre programación en Python próximamente, preparar preguntas similares a estas puede ayudarte a impresionar al entrevistador.
12. ¿Cómo puedes sustituir el espacio de una cadena por un carácter determinado en Python?
Se trata de un sencillo reto de manipulación de cadenas. Tienes que sustituir el espacio por un carácter específico.
Ejemplo 1: un usuario ha proporcionado la cadena "l vey u" y el carácter "o", y la salida será "loveyou".
Ejemplo 2: un usuario ha proporcionado la cadena "D t C mpBl ckFrid yS le" y el carácter "a", y la salida será "DataCampBlackFridaySale".
En la función `str_replace()`, haremos un bucle sobre cada letra de la cadena y comprobaremos si es un espacio o no. Si consiste en un espacio, lo sustituiremos por el carácter específico proporcionado por el usuario. Por último, devolveremos la cadena 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'
13. Dado un número entero positivo, escribe una función que devuelva True si el número es un cuadrado perfecto, y False si no lo es.
Esto tiene una solución relativamente sencilla. Puedes comprobar si el número tiene raíz cuadrada perfecta haciendo lo siguiente:
- Buscar la raíz cuadrada del número y convertirla en un número entero.
- Aplicar el cuadrado al número de la raíz cuadrada y comprobar si es una raíz cuadrada perfecta.
- Devolver el resultado como booleano.
Prueba 1
Hemos proporcionado el número 10 a la función `valid_square()`.
- Sacando la raíz cuadrada del número, obtenemos 3,1622776601683795.
- Convirtiéndolo en un número entero, obtenemos 3.
- Luego, toma el cuadrado de 3 y obtén 9.
- 9 no es igual al número, por lo que la función devolverá False.
a
Prueba 2
Hemos proporcionado el número 36 a la función `valid_square()`.
- Sacando la raíz cuadrada del número, obtenemos 6.
- Convirtiéndolo en un número entero, obtenemos 6.
- Luego, toma el cuadrado de 6 y obtén 36.
- 36 es igual al número, por lo que la función devolverá True.
def valid_square(num):
square = int(num**0.5)
check = square**2==num
return check
valid_square(10)
# False
valid_square(36)
# True
14. Dado un número entero n, devuelve el número de ceros a la derecha de n! factorial de n
Para superar este reto, primero tienes que calcular el factorial de n (n!) y luego calcular el número de ceros a la derecha.
Buscar el factorial
En el primer paso, utilizaremos un bucle while para iterar sobre el factorial n y detenernos cuando n sea igual a 1.
Calcular los ceros a la derecha
En el segundo paso, calcularemos el cero a la derecha, no el número total de ceros. Hay una gran diferencia.
7! = 5040
Los siete factoriales tienen un total de dos ceros y solo un cero a la derecha, por lo que nuestra solución debe devolver 1.
- Convierte el número factorial en una cadena.
- Vuelve a leerlo y solicita un bucle.
- Si el número es 0, suma +1 al resultado; si no, rompe el bucle.
- Devuelve el resultado.
La solución es elegante, pero requiere atención al detalle.
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
Sigue el curso esencial de práctica de preguntas de entrevista de programación para preparar tus próximas entrevistas de programación en Python.
Pregunta de entrevista de Python en FAANG
A continuación, hemos seleccionado algunas de las preguntas que podrías esperar en los puestos más solicitados del sector: los de Meta, Amazon, Google y similares.
Preguntas de entrevista de Python en Facebook/Meta
Las preguntas exactas que te encontrarás en Meta dependen en gran medida del puesto. Sin embargo, puedes esperar algo de lo siguiente:
15. Segmentación de cadenas
Se te proporciona una cadena grande y un diccionario con las palabras. Tienes que averiguar si la cadena de entrada se puede segmentar en palabras utilizando el diccionario o no.
Imagen del autor
La solución es razonablemente sencilla. Tienes que segmentar una cadena grande en cada punto y comprobar si la cadena se puede segmentar a las palabras del diccionario.
- Ejecuta el bucle utilizando la longitud de la cadena grande.
- Crearemos dos subcadenas.
- La primera subcadena comprobará cada punto de la cadena grande desde s[0:i].
- Si la primera subcadena no está en el diccionario, devolverá False.
- Si la primera subcadena está en el diccionario, creará la segunda subcadena utilizando s[i:0].
- Si la segunda subcadena está en el diccionario o la segunda subcadena tiene longitud cero, devuelve True. Llama recursivamente a `can_segment_str()` con la segunda subcadena y devuelve True si se puede segmentar.
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
16. Eliminar duplicados de la matriz ordenada
Dada una matriz ordenada de números enteros en orden creciente, elimina los números duplicados de forma que cada elemento único aparezca una sola vez. Asegúrate de mantener el mismo orden final de la matriz.
Es imposible cambiar la longitud de la matriz en Python, así que colocaremos el resultado en la primera parte de la matriz. Tras eliminar los duplicados, tendremos k elementos, y los primeros k elementos de la matriz deben contener los resultados.
Imagen de LeetCode
Ejemplo 1: la matriz de entrada es [1,1,2,2], la función debe devolver 2.
Ejemplo 2: la matriz de entrada es [1,1,2,3,3], la función debe devolver 3.
Solución:
- Ejecuta el bucle para el intervalo de 1 al tamaño de la matriz.
- Comprueba si el número anterior es único o no. Comparamos elementos anteriores con el actual.
- Si es único, actualiza la matriz utilizando insertIndex, que es 1 al principio, y suma +1 a insertIndex.
- Devuelve insertIndex, ya que es k.
Esta pregunta es relativamente sencilla una vez que sabes cómo hacerlo. Si dedicas más tiempo a comprender la sentencia, podrás encontrar fácilmente una solución.
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
17. Busca el máximo beneficio de una sola venta
Se te proporciona la lista de precios de las acciones, y tienes que devolver el precio de compra y de venta para obtener el mayor beneficio.
Nota: Tenemos que obtener el máximo beneficio de una sola compra/venta, y si no podemos obtener beneficios, tenemos que reducir nuestras pérdidas.
Ejemplo 1: precio de acción = [8, 4, 12, 9, 20, 1], compra = 4 y venta = 20. Maximizar el beneficio.
Ejemplo 2: precio de acción = [8, 6, 5, 4, 3, 2, 1], compra = 6 y venta = 5. Minimizar la pérdida.
Solución:
- Calcularemos el beneficio global restando la venta global (el primer elemento de la lista) de la compra actual (el segundo elemento de la lista).
- Ejecuta el bucle para el intervalo de 1 a la longitud de la lista.
- Dentro del bucle, calcula el beneficio actual utilizando los elementos de la lista y el valor de compra actual.
- Si el beneficio actual es mayor que el beneficio global, cambia el beneficio global por el beneficio actual y vende globalmente al elemento i de la lista.
- Si la compra actual es mayor que el elemento actual de la lista, cambia la compra actual por el elemento actual de la lista.
- Al final, devolveremos el valor global de compra y venta. Para obtener el valor de compra global, restaremos la venta global del beneficio global.
La pregunta es un poco complicada, y puedes idear tu propio algoritmo para resolver los 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)
Preguntas de entrevista de Python en Amazon
Las preguntas de entrevista de Python en Amazon pueden variar mucho, pero podrían incluir:
18. Encuentra el número que falta en la matriz
Se te ha proporcionado la lista de enteros positivos de 1 a n. Todos los números de 1 al n están presentes, excepto x, y debes encontrar x.
Ejemplo:
4 |
5 |
3 |
2 |
8 |
1 |
6 |
- n = 8
- número que falta = 7
Esta pregunta es un simple problema matemático.
- Halla la suma de todos los elementos de la lista.
- Utilizando la fórmula de la suma de series aritméticas, hallaremos la suma esperada de los n primeros números.
- Devuelve la diferencia entre la suma esperada y la suma de los 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
19. Terna pitagórica en una matriz
Escribe una función que devuelva True si hay una terna pitagórica que cumpla a2 + b2 = c2
Ejemplo:
Entrada |
Salida |
[3, 1, 4, 6, 5] |
True |
[10, 4, 6, 12, 5] |
False |
Solución:
- Calcula el cuadrado de todos los elementos de la matriz.
- Ordena la matriz en orden creciente.
- Ejecuta dos bucles. El bucle externo comienza desde el último índice de la matriz hasta 1 y el bucle interno comienza desde (outer_loop_index -1) hasta el inicio.
- Crea set() para almacenar los elementos entre el índice del bucle externo y el índice del bucle interno.
- Comprueba si hay un número presente en el conjunto que sea igual a (array[outerLoopIndex] – array[innerLoopIndex]). En caso afirmativo, devuelve True; en caso contrario, 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
20. ¿De cuántas formas puedes hacer el cambio con monedas y una cantidad total?
Debemos crear una función que tome una lista de denominaciones de moneda y cantidades totales y devuelva el número de formas en que podemos hacer el cambio.
En el ejemplo, hemos proporcionado las denominaciones de moneda [1, 2, 5] y la cantidad total de 5. Obtuvimos cinco formas de hacer el cambio.
Imagen del autor
Solución:
- Crearemos la lista de cantidad de tamaño + 1. Se añaden espacios adicionales para almacenar la solución para una cantidad cero.
- Iniciaremos una lista de soluciones con 1.
- Ejecutaremos dos bucles. El bucle externo devolverá el número de denominaciones, y el bucle interno recorrerá desde el intervalo del índice del bucle externo hasta la cantidad +1.
- Los resultados de las distintas denominaciones se almacenan en la solución de matriz solution[i] = solution[i] + solution[i - den].
- El proceso se repetirá para todos los elementos de la lista de denominaciones, y en el último elemento de la lista de soluciones, tendremos nuestro 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
Preguntas de entrevista de Python en Google
Igual que en las otras empresas mencionadas, las preguntas de entrevista de Python en Google dependerán del puesto y del nivel de experiencia. Sin embargo, algunas preguntas habituales son:
21. Define una función lambda, un iterador y un generador en Python.
La función lambda también se llama función anónima. Puedes añadir cualquier número de parámetros, pero con una sola sentencia.
Un iterador es un objeto que podemos utilizar para iterar sobre objetos iterables como listas, diccionarios, tuplas y conjuntos.
El generador es una función similar a una función normal, pero genera un valor utilizando la palabra clave yield en lugar de return. Si el cuerpo de la función contiene yield, se convierte automáticamente en un generador.
Lee más sobre los iteradores y generadores de Python en nuestro tutorial completo.
22. Dada una matriz arr[], halla el máximo j – i tal que arr[j] > arr[i]
Esta pregunta es bastante sencilla, pero requiere especial atención a los detalles. Se nos proporciona una matriz de números enteros positivos. Tenemos que hallar la máxima diferencia entre j-i donde array[j] > array[i].
Ejemplos:
- Entrada: [20, 70, 40, 50, 12, 38, 98]; salida: 6 (j = 6, i = 0)
- Entrada: [10, 3, 2, 4, 5, 6, 7, 8, 18, 0]; salida: 8 ( j = 8, i = 0)
Solución:
- Calcula la longitud de la matriz e inicia la diferencia máxima con -1.
- Ejecuta dos bucles. El bucle externo escoge elementos de la izquierda, y el bucle interno compara los elementos escogidos con elementos que empiezan por la derecha.
- Detén el bucle interno cuando el elemento sea mayor que el elemento escogido y sigue actualizando la diferencia máxima mediante 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
23. ¿Cómo utilizarías los operadores ternarios en Python?
Los operadores ternarios también se llaman expresiones condicionales. Son operadores que evalúan la expresión en función de que las condiciones sean True y False.
Puedes escribir expresiones condicionales en una sola línea en lugar de escribir en varias líneas de sentencias if-else. Te permite escribir un código limpio y compacto.
Por ejemplo, podemos convertir sentencias if-else anidadas en una sola línea, como se muestra a continuación.
Sentencia if-else
score = 75
if score < 70:
if score < 50:
print('Fail')
else:
print('Merit')
else:
print('Distinction')
# Distinction
Operador ternario anidado
print('Fail' if score < 50 else 'Merit' if score < 70 else 'Distinction')
# Distinction
Preguntas frecuentes acerca de entrevistas sobre Python
¿Cómo me preparo para una entrevista sobre Python?
Debes revisar la sintaxis, las funciones, las clases, los tipos de datos, los algoritmos, las estructuras de datos y la gestión de excepciones de Python. Además, tienes que leer tutoriales técnicos; revisar proyectos de ejemplo, hojas de trucos y preguntas modelo; y resolver retos de programación para superar la fase de entrevista.
Tienes que prepararte para preguntas generales de Python sobre funcionalidad nativa, preguntas específicas del puesto (ingeniero de datos, científico de datos, desarrollador back-end) y preguntas cronometradas sobre programación. Puedes practicar preguntas de machine learning en Python y preguntas de entrevista de Python sobre estadística con DataCamp.
¿Cómo destacar en una entrevista de programación en Python?
Debes mostrar la capacidad de escribir código limpio y listo para la producción; comprender las bibliotecas, herramientas y algoritmos de Python específicos del trabajo; y presentar soluciones únicas para problemas complejos. Todos podéis hacerlo practicando retos de programación o trabajando en un proyecto de código abierto.
También puedes destacar creando un portafolio de proyectos basados en Python en GitHub y en sitios web personales.
¿Qué es lambda en Python?
Una función lambda también se llama función anónima, una función de Python sin nombre. Puede recibir cualquier número de argumentos, pero evalúa y devuelve solo una expresión.
Sintaxis:
lambda arguments : expression
Ejemplo:
lambda_add = lambda a : a + 10
print(lambda_add (7))
# 17
¿Cuáles son los cinco usos principales de Python?
- Desarrollo de sitios web y software
- Scripting y utilidades
- Aplicaciones de escritorio
- Análisis de datos
- Machine learning
¿Es map más rápido que for loop?
"map" es más rápido que "for loop" si aplicas la función a todos los elementos de un iterable.
Cursos de entrevistas de Python
curso
Practicing Coding Interview Questions in Python
curso
Practicing Statistics Interview Questions in Python
blog
Las 20 preguntas más frecuentes en una entrevista sobre NumPy: De Básico a Avanzado

Tim Lu
20 min

blog
Las 80 mejores preguntas y respuestas de entrevistas SQL para principiantes y profesionales intermedios
blog
28 preguntas principales de la entrevista a un científico de datos para todos los niveles

blog
Las 25 preguntas más frecuentes en las entrevistas sobre aprendizaje automático para 2024
tutorial