Tengo conocimiento de estructuras de datos y algoritmos, pero me falta programación competitiva, ¿cómo debo mejorar? ¿Puedo sobrevivir a la competencia de hoy?

Depende de la razón por la que no eres bueno en la programación competitiva. Hay cuatro razones probables en las que puedo pensar:

  • Podrías ser bueno para resolver problemas algorítmicos, pero malo para codificar a la velocidad vertiginosa de un concurso de codificación.
  • Podría ser malo en la resolución de problemas algorítmicos, incluso si comprende las estructuras de datos y los algoritmos.
  • Realmente no podría tener una buena comprensión de las estructuras de datos y algoritmos, y se ha engañado a sí mismo al pensar que sí (este tipo de situación es fácil de suceder).
  • Podrías ser malo codificando.

Si está en la primera situación, no debería tener muchos problemas con las entrevistas técnicas. Estar en esta categoría significaría que es bastante capaz de resolver problemas de programación competitivos, algunos de ellos bastante rápido, simplemente no implementa sus soluciones tan rápido como sus competidores, mientras las implementa a una velocidad que sería razonable para codificación a nivel de producción. No tiene problemas para completar los detalles de los algoritmos y convertir sus ideas en código.

Si no usa nombres de variables de una letra y métodos abreviados para reducir la cantidad de escritura que tiene que hacer, bien . Las empresas quieren que las personas escriban un código claro y comprensible durante la entrevista, no que lo escriban súper rápido a expensas de la comprensión. Realmente no es necesario conocer la forma más simplificada o concisa de implementar cada algoritmo, siempre que comprenda los conceptos claramente y pueda usar esos conceptos para producir un código razonable en un plazo razonable.

Si la razón por la que eres malo en la programación competitiva es uno de los otros tres, tendrás más dificultades.

Si eres malo para convertir ideas claras en código, eres malo para codificar. Y si eres malo en la codificación, no puedes esperar borrar las mejores entrevistas. Aconsejaría mejorar sus habilidades de codificación hasta que pueda convertir fácilmente ideas en código, incluso antes de mirar demasiado las estructuras de datos y los algoritmos.

Si está seguro de que puede convertir ideas que están claras en su cabeza al código, pero no puede resolver problemas de programación competitivos, debe averiguar si es porque es malo en la resolución de problemas algorítmicos o si no tiene el conocimiento . Una buena manera de probar su conocimiento es tomar un par de conceptos centrales que surgen mucho en los problemas que intenta, y luego ver si puede explicarlos a un amigo, en detalle. Si no puedes, probablemente te estás perdiendo algo.

Si aprueba el “examen de enseñanza”, entonces probablemente sea malo en la parte de resolución de problemas. Esa habilidad se construye a través de la experiencia. Siga resolviendo problemas y mejorará.

Es bueno que tenga conocimiento de estructuras de datos y algoritmos. Tener conocimiento de estos dos conceptos lo ayudará a comprender fácilmente varios conceptos de informática. Pero también es igualmente importante saber cómo implementarlos y aplicarlos en problemas del mundo real. No puede aprender a programar en un día o una semana, pero seguramente puede mejorar sus habilidades de codificación al practicar e implementar varios algoritmos.

Le sugiero que cree una cuenta en LeetCode Online Judge y comience a practicar.

  • Comience con un problema fácil
  • Implemente algoritmos ingenuos
  • Juega con varias estructuras de datos
  • Vea cómo puede mejorar la complejidad del tiempo y el espacio implementando un algoritmo eficiente
  • Lea el blog sobre ese problema y vea cómo todos se están acercando
  • Pase al problema medio y difícil

Espero que esto ayude 🙂

Probablemente no. La competencia de programación es realizada por personas que tienen al menos unos años de experiencia en programación real, y generalmente más que unos pocos. Terminar la universidad. Luego, puede buscar un trabajo de nivel de entrada (donde estará por aproximadamente 2 años, antes de que pueda buscar o ser promovido a un puesto de nivel superior. Después de unos años de eso, podría estar listo para alguna competencia .) La programación no es algo que aprendes en unas pocas semanas, es algo que pasas el resto de tu vida aprendiendo).