Saltar al contenido principal
InicioBlogPython

Las 23 mejores preguntas y respuestas de entrevistas sobre Python

Preguntas esenciales de una entrevista sobre Python con ejemplos para solicitantes de empleo, estudiantes de último curso y profesionales de los datos.
Actualizado feb 2024  · 22 min leer

Preguntas de entrevistas sobre Python

Lee la versión en inglés 🇺🇲 de este artículo.

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. 

  1. Hemos creado una clase `monkey` con una función `patch()`. También hemos creado una función `monk_p` fuera de la clase. 
  2. Ahora sustituiremos `patch` por la función `monk_p` asignando `monkey.patch` a `monk_p`.
  3. 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.

  1. En el primer intento, introdujimos 2 como numerador y "d" como denominador. Esto es incorrecto, y `except:` se activó con "Invalid input!". 
  2. 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. 

  1. 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.
  2. 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()`.
  3. Sustituye los valores que faltan por una constante String, Integer o Float utilizando la función `replace()`.
  4. 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')

Interpolación de pandas

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:

  1. Matplotlib
  2. Seaborn
  3. Plotly
  4. 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:

  1. Buscar la raíz cuadrada del número y convertirla en un número entero.
  2. Aplicar el cuadrado al número de la raíz cuadrada y comprobar si es una raíz cuadrada perfecta.
  3. Devolver el resultado como booleano. 

Prueba 1  

Hemos proporcionado el número 10 a la función `valid_square()`. 

  1. Sacando la raíz cuadrada del número, obtenemos 3,1622776601683795.
  2. Convirtiéndolo en un número entero, obtenemos 3.
  3. Luego, toma el cuadrado de 3 y obtén 9.
  4. 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()`. 

  1. Sacando la raíz cuadrada del número, obtenemos 6.
  2. Convirtiéndolo en un número entero, obtenemos 6.
  3. Luego, toma el cuadrado de 6 y obtén 36.
  4. 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. 

  1. Convierte el número factorial en una cadena.
  2. Vuelve a leerlo y solicita un bucle.
  3. Si el número es 0, suma +1 al resultado; si no, rompe el bucle.
  4. 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.  

Segmentación de cadenas

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.

  1. Ejecuta el bucle utilizando la longitud de la cadena grande.
  2. Crearemos dos subcadenas. 
  3. La primera subcadena comprobará cada punto de la cadena grande desde s[0:i].
  4. Si la primera subcadena no está en el diccionario, devolverá False.
  5. Si la primera subcadena está en el diccionario, creará la segunda subcadena utilizando s[i:0].
  6. 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. 

Eliminar duplicados de la matriz ordenada

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:

  1. Ejecuta el bucle para el intervalo de 1 al tamaño de la matriz.
  2. Comprueba si el número anterior es único o no. Comparamos elementos anteriores con el actual.  
  3. Si es único, actualiza la matriz utilizando insertIndex, que es 1 al principio, y suma +1 a insertIndex. 
  4. 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:

  1. Calcularemos el beneficio global restando la venta global (el primer elemento de la lista) de la compra actual (el segundo elemento de la lista). 
  2. Ejecuta el bucle para el intervalo de 1 a la longitud de la lista. 
  3. Dentro del bucle, calcula el beneficio actual utilizando los elementos de la lista y el valor de compra actual. 
  4. 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.
  5. Si la compra actual es mayor que el elemento actual de la lista, cambia la compra actual por el elemento actual de la lista. 
  6. 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.

  1. Halla la suma de todos los elementos de la lista.
  2. Utilizando la fórmula de la suma de series aritméticas, hallaremos la suma esperada de los n primeros números. 
  3. 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:

  1. Calcula el cuadrado de todos los elementos de la matriz.
  2. Ordena la matriz en orden creciente.
  3. 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.
  4. Crea set() para almacenar los elementos entre el índice del bucle externo y el índice del bucle interno.
  5. 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. 

hacer cambio con monedas

Imagen del autor

Solución:

  1. Crearemos la lista de cantidad de tamaño + 1. Se añaden espacios adicionales para almacenar la solución para una cantidad cero.
  2. Iniciaremos una lista de soluciones con 1.
  3. 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.
  4. Los resultados de las distintas denominaciones se almacenan en la solución de matriz solution[i] = solution[i] + solution[i - den].
  5. 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:

  1. Entrada: [20, 70, 40, 50, 12, 38, 98]; salida: 6  (j = 6, i = 0)
  2. Entrada: [10, 3, 2, 4, 5, 6, 7, 8, 18, 0]; salida: 8 ( j = 8, i = 0)

Solución

  1. Calcula la longitud de la matriz e inicia la diferencia máxima con -1.
  2. 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. 
  3. 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?

  1. Desarrollo de sitios web y software
  2. Scripting y utilidades
  3. Aplicaciones de escritorio
  4. Análisis de datos
  5. 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. 

Temas

Cursos de entrevistas de Python

Course

Practicing Machine Learning Interview Questions in Python

4 hr
8.7K
Sharpen your knowledge and prepare for your next interview by practicing Python machine learning interview questions.
See DetailsRight Arrow
Start Course
Ver másRight Arrow
Relacionado

Las 10 mejores carreras en Análisis de datos: Habilidades, salarios y perspectivas profesionales

Explora los mejores trabajos en análisis de datos con estas diez carreras. Descubre las habilidades que necesitarás para empezar, además de los salarios y las perspectivas profesionales de estas carreras analíticas.
Matt Crabtree's photo

Matt Crabtree

13 min

Python 2 vs 3

Python 2 frente a 3: Todo lo que necesitas saber

En este artículo, trataremos las principales diferencias entre Python 2 y 3, cuál es el mejor y por cuál deberías decantarte para comenzar tu andadura en la ciencia de datos
Javier Canales Luna 's photo

Javier Canales Luna

6 min

Python snake

¿Para qué se utiliza Python? 7 usos reales de Python

¿Te has preguntado alguna vez para qué se utiliza Python en el mundo real? Echa un vistazo a 7 usos prácticos de este potente lenguaje de programación.
Elena Kosourova 's photo

Elena Kosourova

11 min

Tutorial de comprensión del diccionario Python

¡Aprende todo sobre la comprensión de diccionarios en Python: cómo puedes utilizarla para crear diccionarios, para sustituir los for loops (anidados) o las funciones lambda por map(), filter() y reduce(), ...!
Sejal Jaiswal's photo

Sejal Jaiswal

14 min

Tutorial de Generación de nubes de palabras en Python

Aprende a realizar Análisis exploratorios de datos para el Procesamiento del lenguaje natural utilizando WordCloud en Python.
Duong Vu's photo

Duong Vu

21 min

Clasificación de bosques aleatorios con Scikit-Learn

Este artículo trata de cómo y cuándo utilizar la clasificación Random Forest con scikit-learn. Centrado en conceptos, flujo de trabajo y ejemplos. También veremos cómo utilizar la matriz de confusión y las importancias de las características.
Adam Shafi's photo

Adam Shafi

14 min

See MoreSee More