Sí, los ingenieros de software de las empresas de software de primer nivel utilizan estructuras de datos y algoritmos en el desarrollo de sus aplicaciones. Es raro que necesite implementar algo estándar y complejo desde cero. Sin embargo, debe conocer el algoritmo y la existencia de la estructura de datos, para poder incluirlo en su diseño.
Por ejemplo, supongamos que estoy escribiendo un servicio web que maneja transacciones de un servicio web front-end. Necesito tener colas locales, posiblemente colas prioritarias, para priorizar las solicitudes de transacciones que recibo. Necesitaré bloqueos y bloqueos para cualquier estructura de datos local. Necesitaré algoritmos de consenso confiables (o bibliotecas que implementen estos) para hacer que los datos persistentes sean confiables ante fallas de almacenamiento. Necesitaré comprender la escalabilidad y la complejidad computacional de mi servicio y algoritmos (en términos de big-O) para saber cuándo necesito comenzar a limitar mi entrada.
Construcciones como conjuntos de hash, mapas, mapas múltiples, matrices, listas se utilizan constantemente. Para los servicios especializados, termina profundizando en otros dominios, como tablas de hash distribuidas para servicios punto a punto, pruebas de seguridad de conocimiento cero, opciones de cifrado para autenticación y autorización. análisis de componentes conectados para seguimiento táctil, aprendizaje automático para reconocimiento de gestos, etc.
- Actualmente estoy en USACO Gold, pero apenas puedo resolver nada. ¿Qué debo hacer para ser más competente? ¿Dominar el oro es solo una cuestión de aprender toneladas de algoritmos, o necesita más que eso?
- ¿Es posible la generación de números aleatorios verdaderos?
- ¿Podemos, y qué significa, 'crear algoritmos sin codificación'?
- ¿Por qué los marcos para componer música aleatoria algorítmica como SoundHelix no son más populares?
- ¿Por qué no usamos el aprendizaje automático para mejorar los modelos climáticos?
Es bueno, limpio, divertido.