Las 30 principales preguntas y respuestas de la entrevista sobre estructuras de datos y algoritmos [para principiantes y experimentados]

Publicado: 2021-08-31

Las estructuras de datos y los algoritmos se encuentran entre los temas más importantes en el mundo de la informática y la ingeniería. Si se presenta a una entrevista de ingeniería de software, puede estar seguro de que se enfrentará a una ronda de preguntas especialmente dedicadas a estructuras de datos y algoritmos: ¡así de cruciales son!

Los algoritmos se encuentran en el centro de todo lo que sucede en la informática y la ciencia de datos. Desde Machine Learning hasta AI y Blockchain: todas las tecnologías se ejecutan en algoritmos. Y los algoritmos necesitan estructuras de datos para funcionar. Por lo tanto, el conocimiento combinado de estructuras de datos y algoritmos puede ayudarlo a destacarse entre la multitud durante su entrevista.

Sin embargo, el desafío es que DSA es un dominio extenso. Aquí, el aprendizaje nunca se detiene y siempre hay algún nuevo desarrollo que debe comprender. Si bien la mejora continua es obligatoria cuando se trata de estructuras de datos y algoritmos, hoy veremos algunos fundamentos de DSA que lo ayudarán a sobresalir en las entrevistas técnicas.

Tabla de contenido

Principales estructuras de datos y algoritmos Preguntas y respuestas de la entrevista

  1. ¿Qué entiendes por 'Estructuras de datos'?

Las estructuras de datos se pueden definir como técnicas utilizadas para definir, almacenar y acceder a datos de forma sistemática. Forman el componente más importante de cualquier algoritmo. Dependiendo del tipo de estructuras de datos, almacenan diferentes tipos de datos y son accesibles de diferentes maneras. Para que un algoritmo devuelva un resultado, necesita operar y manipular un conjunto de estructuras de datos de manera organizada y eficiente para llegar al resultado final.

  1. ¿Cómo se puede diferenciar entre una estructura de archivos y una estructura de datos?

En las estructuras de archivos, los datos se almacenan en discos siguiendo políticas de almacenamiento de archivos estándar y no son compatibles con aplicaciones externas de terceros. En las Estructuras de Datos, por el contrario, los datos se almacenan tanto en el disco como en la memoria RAM en políticas de almacenamiento personalizadas, y estas son altamente compatibles con aplicaciones externas.

  1. ¿Cuáles son los tipos generales de estructuras de datos?

Las estructuras de datos se pueden dividir ampliamente en dos categorías:

  • Lineal: en este, todos los elementos se almacenan secuencialmente y la recuperación se realiza de forma lineal. La disposición no es jerárquica y cada elemento tiene un sucesor y un predecesor. Ejemplo: matrices, listas vinculadas, pilas, colas, etc.
  • No lineal: aquí, el almacenamiento no ocurre en una secuencia lineal, es decir, todos los elementos no tienen necesariamente un solo sucesor y predecesor. En cambio, los elementos de las estructuras de datos no lineales se conectan a dos o más elementos de forma no lineal. Ejemplo: árboles, gráficos, montones.

4. ¿Cuáles son algunas áreas de uso clave de las estructuras de datos?

Las estructuras de datos son bastante necesarias en todos los campos de la informática que se te ocurran, especialmente los algoritmos y la optimización de algoritmos. Aquí hay algunas otras áreas donde las estructuras de datos se utilizan ampliamente:

  • diseño del sistema operativo
  • Análisis numérico
  • Aprendizaje automático e IA
  • Diseño y desarrollo de compiladores.
  • Gestión de base de datos
  • Análisis léxico
  • programación gráfica
  • Algoritmos de búsqueda y clasificación, y más.
  1. Explique la estructura de datos de la pila y mencione sus áreas de uso.

Stack es simplemente una lista ordenada que permite la inserción y eliminación solo desde uno de los extremos, que se conoce como 'superior'. Es una estructura de datos recursiva que tiene un puntero a sus elementos "superiores" que nos permite conocer el elemento superior de la pila. Basado en la estrategia de recuperación de elementos, Stack también se conoce como Last-In-First-Out, ya que el último elemento insertado en la pila estará en la parte superior y será el primero en salir. Estos son algunos usos de la estructura de datos de pila:

  • retrocediendo
  • Gestión de la memoria
  • Función de devolución y llamada
  • Evaluación de expresiones
  1. ¿Cuáles son las operaciones que se pueden realizar en una pila?

La estructura de datos de pila admite las siguientes tres operaciones:

  • push() — para insertar un elemento en la posición superior de la pila.
  • pop(): para sacar un elemento de la parte superior de la pila.
  • peek(): para simplemente verificar el elemento presente en la parte superior de la pila sin sacarlo de la pila.
  1. ¿Qué entiendes sobre Postfix Expressions?

Postfix Expression es una expresión en la que los operadores siguen a los operandos. Esto es extremadamente beneficioso en términos informáticos, ya que no requiere ninguna agrupación de subexpresiones entre paréntesis ni siquiera considerar la precedencia del operador. La expresión a+b se representa simplemente como ab+ en sufijo.

  1. ¿Cómo se almacenan los elementos de matriz 2D en la memoria?

Los elementos de una matriz 2-D se pueden almacenar en la memoria de cualquiera de las dos formas:

  • Row-Major: en este método, primero todas las filas de la matriz se almacenan de forma contigua en la memoria. Primero, la primera fila se almacena por completo, luego la segunda fila, y así sucesivamente hasta la última.
  • Column-Major: En este, todas las columnas de la matriz se almacenan continuamente en la memoria. Primero, la primera columna se almacena por completo, luego la segunda columna, y así sucesivamente.
  1. Defina la estructura de datos de la lista enlazada.

Las listas enlazadas son colecciones de nodos, que son objetos almacenados aleatoriamente. Cada nodo tiene dos elementos internos: un campo de datos y un campo de enlace. El campo Datos contiene el valor que tiene el nodo en particular, mientras que el campo Enlace tiene un puntero al siguiente nodo al que está vinculado este. Dependiendo de la situación, una lista enlazada se puede considerar tanto como una estructura de datos lineal como no lineal.

  1. ¿De qué manera las listas enlazadas son mejores que las matrices?

Las listas enlazadas son mejores que las matrices de las siguientes maneras:

  • Los tamaños de las matrices se fijan en tiempo de ejecución y no se pueden modificar más adelante, pero las listas vinculadas se pueden expandir en tiempo real, según los requisitos.
  • Las listas enlazadas no se almacenan de forma contigua en la memoria, como resultado, son mucho más eficientes en memoria que las matrices que se almacenan estáticamente.
  • La cantidad de elementos que se pueden almacenar en cualquier lista enlazada está limitada solo al espacio de memoria disponible, mientras que la cantidad de elementos está limitada por el tamaño de la matriz.
  1. En el lenguaje de programación C, ¿qué puntero usaría para implementar una lista enlazada heterogénea?

Las listas enlazadas heterogéneas, como sugiere el nombre, contienen diferentes tipos de datos. Como resultado, no es posible usar punteros ordinarios aquí. Por lo tanto, los punteros Void normalmente se usan en tal escenario, ya que son capaces de apuntar a cualquier tipo de valor.

  1. ¿Qué es una lista doblemente enlazada?

Como sugiere el nombre, una Lista Doblemente Vinculada es una Lista Vinculada que tiene nodos vinculados a los nodos anteriores y posteriores. Como resultado, los nodos de la Lista Doblemente Vinculada tienen tres campos, no dos:

  • El campo de datos
  • Siguiente puntero (para señalar el siguiente nodo)
  • Puntero anterior (para señalar el nodo anterior)
  1. Explicar la estructura de datos de la cola con algunas de sus aplicaciones.

Una cola es una lista ordenada que permite la inserción y eliminación de elementos no desde uno sino desde dos extremos, llamados REAR y FRONT. La inserción se realiza por el extremo DELANTERO mientras que el borrado por el extremo TRASERO. Como resultado de esto, la cola a menudo se denomina primero en entrar, primero en salir (FIFO). Aquí hay algunas aplicaciones generalizadas de colas como estructura de datos:

  • Para listas de espera de recursos compartidos individualmente como CPU, impresora, disco, etc.
  • Para la transferencia asíncrona de datos, ejemplo de archivo IO, sockets, pipes.
  • Como búfer en la mayoría de las aplicaciones de reproductores multimedia.
  • En Sistemas Operativos para el manejo de interrupciones.
  1. ¿Puede enumerar algunos inconvenientes de implementar Colas usando arreglos?

Existen principalmente dos inconvenientes que ocurren al implementar colas con arreglos:

  • Mala gestión de la memoria, ya que las matrices son estructuras de datos estáticas, por lo que implementar colas con matrices elimina muchas funcionalidades de las colas.
  • Problema con el tamaño, ya que los tamaños de los arreglos se definen durante la definición del arreglo. Entonces, si queremos agregar más elementos a nuestra cola que el tamaño de la matriz, no será posible.
  1. ¿Qué condiciones deben cumplirse para que un elemento se inserte en una cola circular?

Aquí hay algunas condiciones relevantes con respecto a la inserción en colas circulares:

  • Si (rear + 1)%maxsize == front -> esto significa que la cola está llena -> no es posible realizar más inserciones.
  • Si trasero != max – 1, el valor de trasero se incrementa a maxsize y se insertará un nuevo valor en el extremo trasero.
  • Si front != 0 and rear == max -1 –> esto significa que la cola no está llena. Entonces, el valor de trasero se establece en 0 y se inserta un nuevo elemento en el extremo trasero de la cola circular.

16. ¿Qué es un dequeue?

La cola de dos extremos o deque es un conjunto ordenado de elementos que facilita la inserción y eliminación desde ambos extremos, posterior y frontal. Como resultado, esto es incluso más flexible que la estructura de datos de la cola.

  1. Defina la estructura de datos del árbol y enumere algunos tipos de árboles.

El árbol es una estructura de datos recursiva no lineal que contiene varios nodos. Un nodo en particular se designa como la raíz del árbol de donde emergen todos los demás nodos. Aparte de la raíz, todos los demás nodos se denominan nodos secundarios. En términos generales, existen los siguientes tipos de estructuras de datos de árbol:

  • Árboles generales
  • Árboles binarios
  • Árboles de búsqueda binarios
  • Bosques
  • Árbol de expresión
  • Árbol de Torneos
  1. ¿Cómo funciona la clasificación por burbujas?

Bubble Sort es uno de los algoritmos de clasificación más utilizados y se usa con matrices comparando elementos adyacentes e intercambiando sus posiciones en función de sus valores. Se llama clasificación de burbujas porque la visualización de cómo funciona es como burbujas que flotan desde la parte superior del agua y entidades más grandes que se hunden.

Leer: Estructuras de datos en C & ¿Cómo usar?

  1. ¿Cuál es el algoritmo de clasificación más rápido disponible?

Hay muchos algoritmos de clasificación diferentes disponibles, como clasificación por fusión, clasificación rápida, clasificación por burbuja y más. De estos, no podemos elegir un algoritmo específico que sea objetivamente el más rápido, ya que su rendimiento varía mucho según los datos de entrada, la reacción después de que el algoritmo haya procesado los datos y cómo se almacenan.

  1. ¿Qué son los árboles binarios?

Los árboles binarios son tipos especiales de árboles en los que cada nodo puede tener COMO MÁXIMO dos hijos. Para facilitar las cosas, los árboles binarios generalmente se dividen en tres conjuntos separados: nodo raíz, subárbol derecho y subárbol izquierdo.

  1. ¿Cómo se pueden usar los árboles AVL en varias operaciones en comparación con BST?

Los árboles AVL son árboles de altura equilibrada, por lo que no permiten que el árbol se sesgue desde ningún lado. El tiempo necesario para todas las operaciones realizadas en BST de altura h es O(h). Sin embargo, esto puede llegar a ser O(n) en el peor de los casos, donde BST se desvía. AVL ayuda a eliminar esta limitación al restringir la altura del árbol. Al hacerlo, impone un límite superior a todas las operaciones para que sea el máximo de O (log n) donde n = número de nodos.

  1. ¿Cuáles son las propiedades de un árbol B?

Un B-Tree de orden m contiene las siguientes propiedades:

  • Todas las propiedades de un árbol M-way.
  • Cada nodo del B_tree tendrá un máximo de m hijos.
  • Todos los nodos, excepto la raíz y la hoja, tendrán al menos m/2 hijos.
  • El nodo raíz debe tener al menos 2 nodos secundarios.
  • Todos los nodos de hoja deben estar en el mismo nivel horizontal.
  1. ¿Qué entiendes sobre la estructura de datos del gráfico?

La estructura de datos Graph (G) se puede definir como un conjunto ordenado G(V,E) donde V representa el conjunto de vértices y E son los bordes que forman las conexiones. Básicamente, se puede pensar en un gráfico como un árbol cíclico donde los nodos pueden mantener relaciones complejas entre ellos y no solo relaciones padre-hijo.

  1. Diferenciar entre ciclo, ruta y circuito con referencia a la estructura de datos del gráfico.

Las diferencias entre el ciclo, la trayectoria y el circuito son las siguientes:

  • Un parche es un orden de vértices vecinos conectados por aristas sin ninguna restricción.
  • Un ciclo es un camino cerrado en el que el vértice inicial es el mismo que el vértice final. En un ciclo, ningún vértice en particular se puede visitar dos veces.
  • Un circuito, como un ciclo, es un camino cerrado con el vértice inicial igual al vértice final. Sin embargo, cualquier vértice particular de un circuito se puede visitar más de una vez.
  1. ¿Cómo funciona el algoritmo de Kruskal?

El Algoritmo de Kruskal considera el grafo como un bosque y cada uno de sus nodos como un árbol individual. Se dice que un árbol se conecta a otro árbol si y solo si tiene el menor costo entre todas las opciones, y no viola ninguna propiedad de un árbol de expansión mínimo (MST).

Relacionado: Árbol binario en la estructura de datos

  1. ¿Cómo encuentra el algoritmo de Prim el árbol de expansión?

El algoritmo de Prim funciona considerando los nodos como árboles únicos. Luego, continúa agregando nuevos nodos al árbol de expansión del gráfico dado que debe convertirse en el árbol de expansión requerido.

  1. ¿Qué es un árbol de expansión mínimo (MST)?

Los MST, en gráficos ponderados, son árboles que tienen un peso mínimo, pero abarcan todos los vértices.

  1. ¿Qué es una función recursiva?

Por definición, una función recursiva se llama a sí misma o llama directamente a una función que la llama. Cada función recursiva tiene algunos criterios básicos, después de los cuales la función deja de llamarse a sí misma.

  1. ¿Qué es la técnica de búsqueda por interpolación?

La técnica de búsqueda por interpolación es una modificación del método de búsqueda binaria. El algoritmo de búsqueda de interpolación funciona en la posición de sondeo de los valores deseados.

  1. ¿Qué es hash?

Hashing es una técnica muy útil que se utiliza para convertir un rango de pares clave-valor en índices de una matriz. Las tablas hash son útiles al crear almacenamiento de datos asociativo en el que el índice de datos se puede encontrar fácilmente simplemente proporcionando su par clave-valor.

En conclusión

Las estructuras de datos son realmente la base de todo lo demás que sucede en la informática. Incluso las aplicaciones más complejas de la informática, es decir, la ciencia de datos, el aprendizaje automático, la inteligencia artificial y el IoT, se construyen sobre estructuras de datos y algoritmos.

Por lo tanto, si es un principiante que busca hacer una carrera en cualquiera de los campos de la nueva era, se le recomienda comenzar dominando las estructuras de datos y los algoritmos. O bien, también puede consultar nuestro curso sobre el programa Executive PG en ciencia de datos, que está diseñado para principiantes. Aprende desde cero y conviértete en un experto en Data Science. ¡Inscríbase hoy mismo!

¿Las entrevistas para qué puesto de trabajo generalmente hacen preguntas sobre estructuras de datos y algoritmos?

Si está sentado para cualquier rol de ingeniería o desarrollo de software, definitivamente se le evaluarán sus habilidades de DSA. Aparte de eso, si está solicitando trabajos de ciencia de datos o quiere aventurarse en el aprendizaje automático, se espera que conozca DSA.

¿Necesito saber programación para entender la estructura de datos y los algoritmos?

No, no necesariamente. DSA es principalmente abstracto, y tiene que ver con las matemáticas, las representaciones y el flujo de lo que sucede detrás de escena de cualquier aplicación o programa. Si bien tener experiencia con la programación será útil cuando implemente algoritmos, de ninguna manera es un requisito previo para estudiar DSA.

¿Las estructuras de datos son siempre estáticas?

No, las estructuras de datos pueden ser tanto dinámicas como estáticas, según cómo les funcione la asignación de memoria. Por ejemplo, las matrices son estructuras de datos estáticas, ya que se les asigna una gran cantidad de memoria contigua cuando se definen. Por otro lado, las Listas Enlazadas son Estructuras de Datos dinámicas ya que no tienen un tamaño fijo y el número de nodos puede aumentar dependiendo de los requerimientos del programador.