Esta es la respuesta que desearía tener cuando comencé.
Para un principiante, es difícil saber por dónde comenzar cuando hay tantas opciones. Por lo tanto, sugeriría este plan: –
Primeros 2–3 meses : – Comience con HackerRank. ¿Por qué?
HackerRank tiene una interfaz de usuario bastante buena con código repetitivo preescrito. Entonces, el principiante se enfoca en escribir solo la parte lógica. Ser fácil de comenzar significa que es menos probable que te des por vencido. Luego, tiene una inflación bastante alta, es decir, tu rango aumenta cuanto más practicas, a pesar de resolver problemas menos complejos. No tome esto negativamente y piense en ello como un sistema de recompensas para mantenerlo feliz en la etapa inicial. Finalmente, la sección de práctica de HackerRank divide bien los problemas en los dominios adecuados, por lo que usted sabe qué tan bien se desempeña en varios subdominios, como el conjunto disjunto / Trie / etc. Complete todos los problemas de la sección de práctica y los puntos + si participa en algunas competiciones (en HackerRank). Y no te distraigas con nada más. Cuando llegue una gran competencia, simplemente diga “No me importa”. Porque la misma competencia se repetirá el próximo año y, a menos que ya esté en el top 100 (número arbitrariamente alto) en HackerRank, las posibilidades de hacerlo muy bien son realmente bajas.
No te olvides de enfocarte académicamente en tus estudios y construir una base sólida. Vea los ejemplos a continuación donde puede implementar el conocimiento aprendido de la arquitectura o la minería de datos en competencias de codificación. Bonificación: HackerRank también tiene otros dominios como en AI, Sistemas Distribuidos / etc. que te ayudará en lo académico.
Ejemplos:
- La agrupación puede reducir el tiempo de ejecución fácilmente en algunos problemas. Optimice para un millón de consultas, encuentre el punto más cercano a algún arbitrario (x, y) en un conjunto de millones de puntos fijos.
- Los trucos, como el módulo, rara vez se deben usar por su alto tiempo de operación.
- Matemáticas discretas, teoría de grafos, etc. son simplemente el núcleo de muchos problemas.
Cíñete a resolver un problema por día al menos. No lleva tanto tiempo.
Qué sigue : – A partir de ahora, debe tener una sólida formación académica (DS / Algo al menos), con buena experiencia en toda variedad de problemas. Ahora es el momento de atenuar tu amor por HackerRank. Tal vez, haya alcanzado una alta reputación (entre los primeros 200 o 500), y realmente no quiere irse y comenzar desde abajo nuevamente. Pero hazlo de todos modos. Es hora de contemplar una imagen más grande. Tal vez desee algo grande y audaz en el currículum, algo que importará al solicitar un trabajo o una oportunidad de investigación. O tal vez sea por tu sed de intelecto. En tales casos, tiene aún más razones para abandonar HackerRank.
Primero, comencemos por conocer las principales competiciones de todo el mundo y dejemos de centrarnos en los principales sitios de competencia. Algunos ejemplos: Codechef’s SnackDown, Google’s CodeJam, ACM ICPC, Facebook Hacker Cup, etc. Si cree que es demasiado para rastrear, hay aplicaciones que proporcionan actualizaciones sobre futuros eventos de competencia de codificación. Otro enfoque es suscribirse en todos estos sitios de eventos anuales y recibirá el correo de anuncio de los eventos una vez que llegue el momento.
Cuando participes en estas competiciones, hay una buena probabilidad de que solo pases de 1 a 2 rondas. Puede sentirse deprimido, pero no lo haga. Incluso si pudieras clasificarte solo en la primera ronda, eso es bueno. Significa que los primeros días de la práctica de HackerRank pagaron su dividendo.
Ahora, viene la parte realmente difícil, mejorarte a ti mismo. La mejora continua es difícil. Si crees que puedes hacerlo trabajando sin parar, es muy probable que seas horrible en algunas partes importantes de tu vida, como la escuela. Y lo que es peor, puede agotarse y nunca volver más tarde. Sea realista y haga un cronograma de las diferentes competiciones que suceden en codechef, hackerrank (sí, volviendo a eso también) y topcoder. Cuando suceden demasiados eventos, elige uno y cúmplelo. No hay escasez de estas competiciones y, como máximo, tendrá otro evento una semana más tarde.
Al final de cada competencia, haz dos cosas.
- Lea el editorial del problema que solo podría resolver parcialmente. Analice por qué (no cuál) cometió ese error de codificación / lógica que dio una respuesta incorrecta o estudie a fondo el concepto que no conocía. Con respecto a por qué (no cuál) , lo escribí porque no es la regla o restricción omitida lo que le impidió resolver la pregunta, pero fue la prisa y la falta de enfoque en leer el problema.
- Comprueba cómo los 3 codificadores principales resolvieron el mismo problema que tú. Vea cómo difiere su código. Esto lo ayudará a comprender no solo cómo funcionan las mejores mentes de la competencia, sino también algunos trucos geniales de programación que lleva años aprender / recopilar. Estos trucos pueden proporcionar una mejora en el rendimiento para reducir la cantidad de tiempo que le lleva codificar.
Hora de la competencia anual: es hora. Solo queda un mes. Es hora de comenzar a practicar diariamente por un período más largo. Mejore su velocidad, implemente DFS, BFS, etc. en 10 minutos o incluso menos. Practique problemas de concursos anteriores, como Google CodeJam 2008. Y en el último día, dé lo mejor de sí mismo.
Antes de terminar, sé muy fuerte en matemáticas. En informática y otras ciencias, las matemáticas juegan un papel crucial. No solo lo ayudará en las competiciones de codificación, sino que desempeñará un papel importante más adelante en la vida, ya sea en la carrera (aprendizaje automático, ciencia de datos, procesamiento de imágenes) o en la investigación.