Entiendo los conceptos básicos de Java y puedo codificarlo fácilmente, pero no puedo codificar casos complejos. ¿Qué puedo hacer para mejorar mis habilidades de codificación?

Solo un simple consejo: no importa qué tipo de problema desee resolver, no busque una solución establecida. No busque “el” algoritmo para este caso. Solo intenta resolverlo tú mismo primero. Pruebe diferentes enfoques, explore, piense en ello, experimente. Una vez que esté agotado, o haya fallado muchas veces o simplemente haya encontrado una solución probablemente no muy eficiente, puede aprender el algoritmo más conocido para esta situación específica.

Esto se debe a que es difícil aprender una solución para un problema que nunca enfrentó.

Una vez que haya intentado diferentes enfoques y se haya familiarizado con las dificultades, su mente podrá comprender el valor de esos algoritmos que se hicieron famosos por las personas que enfrentaron estos problemas antes.

La programación es una habilidad que requiere práctica y mejora con la experiencia. Leer el código de otras personas es una gran parte del proceso de aprendizaje. No puedes ser un gran novelista si no eres un gran lector primero, ¿no te parece? Pero antes de aprender de los demás, debe buscar una solución usted mismo. Aprieta tu cerebro, enfréntalo al problema, familiarízalo con cada desafío. Entonces, podrás absorber la lección como una esponja.

Los programadores aprenden mejor al leer códigos de otros. Elija algunos proyectos que le interesen y sean conocidos y mire debajo del capó, lea sobre su arquitectura interna, lea el código en sí mismo y trate de entender cómo está escrito.

Fuera de mi alcance, diría que comience con proyectos más pequeños y más enfocados, como la API de índice de búsqueda lucene. No Solr o Nutch o etc., sino la propia API de búsqueda. Tiene un alcance bien definido, un propósito claro y utilidad.

Tomcat es otro proyecto, es un poco una aplicación insignia de Java. Sin embargo, está menos enfocado que Lucene, pero es más una aplicación completa. Puede mirar primero uno de los motores de servlet más definidos (tal vez Jetty? O algún otro ejemplo) y centrarse solo en la implementación de API de servlet. Luego pasa a Tomcat.

También puede buscar proyectos que tengan buenos libros o documentos disponibles en sus componentes internos, por lo que no va a entrar en frío.

Además, recomiendo leer algunos buenos libros sobre programación y diseño orientado a objetos. Martin Fowler suele ser mi recomendación favorita, he hablado sobre sus libros en estas dos respuestas:

¿Qué libros mejorarán mi comprensión de la programación de computadoras independientemente del idioma que elija usar?

Tengo más de 6 años de experiencia en Java EE. ¿Qué empiezo a hacer ahora para convertirme en arquitecto de aplicaciones?

Parece que eres débil en estructuras de datos y algoritmos. Para esto necesitas aprenderlo correctamente, entonces solo puedes implementarlo en código.

Para esto, recomiendo encarecidamente el siguiente libro. Es uno de los libros de DSA más vendidos en la India.

Estructuras de datos y algoritmos simplificados en Java

También puede visitar GeeksforGeeks para mejorar su conocimiento de DSA.

Practique más y más, la programación se trata de hacer práctica.

¡La mejor de las suertes!

Como dijo Quora User, primero hágalo usted mismo. Rastree cada paso del algoritmo con una imagen de los datos involucrados. Afortunadamente, los algoritmos CS utilizan pocas operaciones, por lo que al rastrear pocos algoritmos en problemas bien conocidos mejorará enormemente las habilidades. Una imagen siempre vale más de 1000 palabras, por lo que la representación de datos en cada paso ayuda.

Las habilidades de programación mejoran más rápido haciendo que leyendo. la mejor manera de ser bueno en la programación es programar. Si tiene alguna dificultad, encuentre a su facultad o entrenador.

manteniendo copias de seguridad de su trabajo con frecuencia.

si tiene un código que funciona principalmente, tome una copia de los archivos antes de cambiar cualquier cosa en el código … en caso de que sus cambios rompan lo que funcionaba bien antes.

No esperes terminar todo de la noche a la mañana.

A veces, nuestro cerebro solo necesita comprender un problema antes de que lo resuelva. Si en algún momento te quedas atascado en un problema de programación durante mucho tiempo, sal a caminar y aléjate del problema, regresa y pruébalo. Definitivamente lo resolverás.

Sea muy curioso para convertirse en un buen desarrollador de Java 🙂

Solo busca en Google el famoso algoritmo que deseas. Solía ​​haber visualizaciones de cómo funciona el ordenamiento rápido de dijkstra que recuerdo haber visto en línea. Estoy seguro de que otras personas también han destruido a otros. Recuerdo a Steve Gibson explicando la compresión LZ en “Seguridad ahora”.

Es importante recordar que muchos de estos algoritmos requieren cierta información o truco para funcionar. Ese es el aspecto del acertijo de la programación que amo tanto. A menudo, la resolución de un problema se puede hacer de muchas maneras, pero eventualmente encontrará una forma rápida y eficiente de hacerlo o diseñarlo. U otras veces escuchas algo o ves un código de compañeros de trabajo y dices “Wow, eso es bastante ingenioso”.

Como dicen otros, la práctica ayudará. Algunos trucos se aplican de diferentes maneras. Y ver diferentes trucos con el tiempo te hará cambiar de opinión. En Sorts específicamente, solo tratar de encontrar todas las diferentes formas de ordenar una lista será de ayuda.

De todos modos, apuesta de suerte.

Sepa algo sobre su dominio de materia.

Al igual que escribir, un buen vocabulario es inútil si no tienes algo sobre lo que escribir.

Mejora tus habilidades para resolver problemas. Cómo traducir cosas a tu código. Si tiene alguna entrada con nodos, haga una lista, por ejemplo. ¿Estos nodos tienen propiedades o relaciones con otros nodos? Las propiedades se convierten en campos, las relaciones se convierten en referencias, etc.

Resuelva un problema a la vez, 1. defina sus estructuras de datos 2. comience a escribir su algoritmo. Si conoce el algoritmo, digamos que puede escribir su pseudocódigo, es mejor implementarlo usted mismo.

Intenta hacerlo desde un pseudocódigo prefabricado.

También puede ayudarlo en el futuro a planificar sus códigos en pseudocódigo primero también. Puede tomar un poco más de tiempo, pero sabrá que es correcto y que funcionará antes de comenzar a escribirlo.