Si. Como ingeniero de software de sistemas, solo trabajé en algunos trabajos que no requerían lo que aprendí en estructuras de datos, y esos grupos eran tan aburridos que me fui después de seis meses.
Los gráficos son comunes. En mi producto actual, he intentado con punteros principales en nodos, listas vinculadas y código ad-hoc para cosas como buffers contados de referencia para copia cero. Las listas vinculadas y los árboles de búsqueda binarios le enseñan sobre la indirección que necesita para eso.
La necesidad de elegir contenedores apropiados en función de los patrones de acceso y las características big-O de las operaciones es común, pero la implementación no lo es tanto con lenguajes populares que tienen clases de contenedor más sys / queue.h y sys / tree.h de BSD. Utilizo contenedores ordenados (árboles rojo-negros debajo del capó), contenedores no ordenados (tablas hash), colas y colas prioritarias (generalmente basadas en el montón) con frecuencia. A veces necesito pilas.
- Cómo responder sobre mi bajo rendimiento académico en un B.Tech si me preguntan en una entrevista de SSB
- Cómo lidiar con esta pregunta en una entrevista: 'Cuéntame sobre tus debilidades'
- ¿Cómo es el proceso de entrevista en eBay?
- ¿Cómo debo prepararme para una entrevista informativa?
- ¿Cuáles son algunas buenas preguntas para la entrevista de ElasticSearch?
Saber cómo se supone que deben comportarse las cosas también ayuda cuando no lo hacen: el rendimiento de O (n ^ 2) en relación con la longitud de la cola de prioridad en Windows no coincidía con el O (n log n) que esperaba, perfilando comparaciones verificadas en ese orden desde el código de la cola de prioridad, y cambiar mi typedef para usar los montones de fibonacci de boost resolvió el problema al eliminar la verificación de depuración que Windows hizo en las inserciones.
Las estructuras de datos más avanzadas son menos comunes pero útiles. Implementé árboles B + paginables con reasignación al escribir en un sistema de archivos estructurado de registro (con un registro separado para nodos de árbol para que puedan cargarse al inicio usando E / S secuenciales) para asignar direcciones de volumen lógico al almacenamiento local cuando construí un bloque de escalamiento horizontal Aparato de almacenamiento. Tengo una característica que requiere combinar árboles Merkle y árboles de combinación estructurados de registro. Los filtros Bloom son excelentes para evitar el acceso innecesario al disco cuando los datos no estarán allí.