Ya sea en web2 o web3, tener un buen desempeño en las preguntas de estructuras de datos, algoritmos y LeetCode es importante, no solo para conseguir un trabajo, sino para desarrollar una buena base en informática.
Muchos desarrolladores saben que deberían estar practicando en LeetCode (o alternativamente, en HackerRank, Codecademy, o Codewars), pero si aún no has empezado, puede ser muy intimidante.
¿Con qué problemas de LeetCode deberías empezar y en qué orden deberías ir?
Superando la barrera psicológica de empezar
Nada es más desmoralizante que abrir uno de estos sitios web, elegir un problema al azar marcado como fácil y luego quedarse atascado. Ahora tienes que gastar tres veces más energía: encontrar el problema adecuado, resolverlo y no desanimarte preguntándote si elegiste el problema equivocado o si simplemente no sirves para la prueba.
Lo que recomendamos hacer es comenzar con las preguntas de LeetCode y los problemas de LeetCode que son ridículamente fáciles de resolver. En serio, ¿qué te parece este desafío?
https://leetcode.com/problems/add-two-integers/
func sum(num1 int, num2 int) int {
}
Problema de código fácil para sumar dos enteros
No da tanto miedo, ¿verdad?
Centrarse en el núcleo del lenguaje
Existen muchas estructuras de datos y algoritmos. Hay árboles, listas enlazadas, heaps, queues, grafos, grafos dirigidos, ¡lo que se te ocurra! Para evitar abrumarse con tantas opciones, es mejor centrarse en las estructuras de datos que están integradas en casi todos los lenguajes modernos.
- arrays
- strings
- arrays anidados (2d arrays)
- hash table
La mayoría de los lenguajes te permiten usar estas estructuras de datos sin importar nada.
Para usar cosas como un Queue o un Heap, tienes que importar una biblioteca de algún tipo. Por muy brillante y “nueva” que sea la tecnología, los lenguajes de programación han existido durante décadas. Han evolucionado para facilitar las acciones comunes. Si un lenguaje requiere más trabajo para usarse, eventualmente caerá en desuso, en igualdad de condiciones.
Reflejar un árbol binario no es algo común. Pero manipular strings y arrays es muy común, por lo tanto, están integrados en el lenguaje.
Si no sabes cómo hacer estas cosas esenciales en un lenguaje, no sabes cómo programar en ese lenguaje. Aprender cosas como árboles, grafos y colas no es específico de un lenguaje. Pero si no puedes iterar sobre un array en JavaScript, no puedes decir que sabes JavaScript.
La lista de problemas que hemos recopilado está diseñada para asegurarnos de que te sientas cómodo con lo esencial del lenguaje. Estos problemas te darán una excelente base para trabajar en temas más avanzados más adelante.
Concéntrate primero en la lógica y la resolución de problemas
Los nombres de los algoritmos pueden dar miedo; por lo general, son la concatenación de nombres europeos raramente usados con aplicaciones esotéricas. ¿Floyd-Warshall? ¿El algoritmo de Dijkstra? ¿Fisher-Yates?
Puedes esperar para aprender esos más adelante.
Pero absolutamente debes ser capaz de hacer cosas básicas que ni siquiera son “algorítmicas”.
Por ejemplo, dada una cuadrícula de tres en raya (tic-tac-toe), ¿puedes decir si el juego ha terminado? No necesitas algoritmos sofisticados para lograr esto. Si tienes dificultades con esta tarea básica, te costará mucho con los algoritmos más avanzados mencionados anteriormente.
Los problemas que hemos enumerado aquí no necesitan ninguna técnica especial para resolverse. Aprende a aplicar la lógica básica y soluciones de sentido común antes de añadir a tu plato más técnicas de nivel universitario.
¿No son estos demasiado fáciles?
Tal vez no seas el público objetivo para esto, pero te sorprendería la cantidad de personas que se llaman a sí mismas desarrolladores pero no pueden hacer fizz buzz. Hemos visto esto de primera mano. Cuando aplicas a nuestro programa, recibirás de inmediato un correo electrónico con un enlace a una prueba de programación. Una de ellas es fizz buzz. Y la tasa de fracaso en ella es alta.
Tal vez sean los nervios y no haber hecho una prueba de programación antes. Pero si nunca has practicado una prueba de programación al menos una vez, no te estás haciendo ningún favor.
¿Es esto suficiente para pasar las entrevistas de programación?
¡Podrías conseguir un trabajo si puedes resolver todos estos problemas! Sería uno de nivel muy básico en una empresa que no sea muy selectiva. Pero, sin embargo, es posible.
¿No tienes que pagar para usar estos problemas?
Solo hemos incluido problemas de la versión gratuita.
Aviso de copyright
Debido a problemas de plagio que hemos tenido con otros programas de capacitación en software, este trabajo en su totalidad está licenciado bajo la Licencia No Comercial de Creative Commons.
Calentamientos (Playlist)
- https://leetcode.com/problems/convert-the-temperature/
- https://leetcode.com/problems/add-two-integers/
- https://leetcode.com/problems/smallest-even-multiple/
- https://leetcode.com/problems/final-value-of-variable-after-performing-operations/
- https://leetcode.com/problems/count-of-matches-in-tournament/
- https://leetcode.com/problems/number-of-common-factors/
- https://leetcode.com/problems/xor-operation-in-an-array/
String (Playlist):
- https://leetcode.com/problems/length-of-last-word/
- https://leetcode.com/problems/to-lower-case/
- https://leetcode.com/problems/to-lower-case/ (simplemente haz lo contrario)
- https://leetcode.com/problems/reverse-string/ (no uses two-pointers)
- https://leetcode.com/problems/valid-palindrome/
- https://leetcode.com/problems/count-vowel-substrings-of-a-string/ (no uses hashmap)
- https://leetcode.com/problems/repeated-substring-pattern/
- https://leetcode.com/problems/defanging-an-ip-address/
- https://leetcode.com/problems/determine-color-of-a-chessboard-square/
- https://leetcode.com/problems/add-digits/
- https://leetcode.com/problems/jewels-and-stones/
- https://leetcode.com/problems/roman-to-integer/
Array (Playlist):
- https://leetcode.com/problems/fizz-buzz/
- https://leetcode.com/problems/check-if-array-is-sorted-and-rotated/
- https://leetcode.com/problems/sort-an-array/ (ignora las instrucciones de LeetCode, usa una función integrada)
- https://leetcode.com/problems/check-if-a-word-occurs-as-a-prefix-of-any-word-in-a-sentence/
- https://leetcode.com/problems/subtract-the-product-and-sum-of-digits-of-an-integer/
- https://leetcode.com/problems/find-first-palindromic-string-in-the-array/
- https://leetcode.com/problems/running-sum-of-1d-array/
- https://leetcode.com/problems/merge-two-sorted-lists/
- https://leetcode.com/problems/find-greatest-common-divisor-of-array/
- https://leetcode.com/problems/maximum-number-of-words-found-in-sentences/
- https://leetcode.com/problems/final-value-of-variable-after-performing-operations/
- https://leetcode.com/problems/shuffle-the-array/
- https://leetcode.com/problems/shuffle-string/
- https://leetcode.com/problems/cells-in-a-range-on-an-excel-sheet/
- https://leetcode.com/problems/minimum-sum-of-four-digit-number-after-splitting-digits/
- https://leetcode.com/problems/decompress-run-length-encoded-list/
2D Array (Playlist):
- https://leetcode.com/problems/richest-customer-wealth/
- https://leetcode.com/problems/flipping-an-image/
- https://leetcode.com/problems/lucky-numbers-in-a-matrix/
- https://leetcode.com/problems/shift-2d-grid/
- https://leetcode.com/problems/available-captures-for-rook/
Hash Table (Playlist):
- https://leetcode.com/problems/jewels-and-stones/
- https://leetcode.com/problems/decode-the-message/
- https://leetcode.com/problems/unique-morse-code-words/
- https://leetcode.com/problems/check-if-the-sentence-is-pangram/
- https://leetcode.com/problems/first-letter-to-appear-twice/
- https://leetcode.com/problems/sum-of-unique-elements/
- https://leetcode.com/problems/merge-similar-items/
- https://leetcode.com/problems/divide-array-into-equal-pairs/
- https://leetcode.com/problems/destination-city/
- https://leetcode.com/problems/number-of-good-pairs
¿Te gusta lo que ves aquí? Echa un vistazo a nuestro curso gratuito de Solidity.
Publicado originalmente el 8 de diciembre de 2022