¿La estructura de datos de aprendizaje ayuda a los programadores en sus proyectos de la vida cotidiana, o es algo que tienes que estudiar para las entrevistas de trabajo?

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.

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í.

More Interesting

Cuando un entrevistador pregunta sobre mi mayor arrepentimiento en la vida, ¿cuál es la mejor respuesta?

Durante una entrevista, ¿cuál debería ser mi respuesta a: '¿Has leído' Cracking the Coding Interview '?

¿Hay algo que pueda hacer / decir durante mi entrevista que ayude a mis posibilidades de ser aceptado?

¿Cómo me preparo para una entrevista de trabajo de ingeniería de software?

¿Se puede usar la reputación de Stack Overflow como punto de referencia en el currículum vitae / durante una entrevista de trabajo?

¿Qué hace la diferencia en una entrevista de trabajo?

Cómo preparar la entrevista de Google para un rol de analista de negocios

¿Puedo usar una 'calculadora' mientras respondo una pregunta de estimación en una entrevista de gerente de producto?

Me rechazaron por prácticas en Facebook y Google después de la ronda de entrevistas. Tuve mucha mala suerte durante las entrevistas. ¿Puedo volver a presentar una solicitud con un título de currículum diferente y una dirección de correo electrónico diferente?

¿Cómo se prepara uno para una entrevista con un científico de datos en cuanto al tema?

¿Cuáles son las preguntas técnicas para tuberías?

¿Cómo se llega a ser bueno para resolver problemas?

¿Te impresionaría si alguien lograra aprender programación desde cero en solo 2 años y descifrar las entrevistas de Facebook y Microsoft?

¿Cómo lidias con un ex jefe que te ha prometido una referencia negativa?

¿Qué es lo que más impresiona a los entrevistadores durante la selección de AFMC?