Resuelve estos problemas de codificación frecuentes para salir bien parado en tus próximas entrevistas de trabajo de programación.
.
Las entrevistas de codificación son algo tan importante en la vida de un programador que no puede librarse de ello. Es el primer obstáculo que tienen que cruzar para conseguir el trabajo de desarrollador de software que desean a lo largo de sus días de escuela y universidad.
Para empeorar el asunto, usted encontrará que muchas personas en Internet diciendo que la entrevista de codificación es defectuosa, el proceso de contratación para los programadores apesta y así sucesivamente, pero no es necesario prestar atención a ellos, no al menos al principio de su carrera.
Pueden tener razón, pero están dentro del tren en el que usted está tratando de entrar. No importa lo mucho que critiquen las entrevistas de codificación y el proceso de contratación de programadores, muchos de ellos han pasado por el mismo camino hasta llegar a donde están.
Todos sabemos que el sistema de entrevistas de codificación no es perfecto y muchos están tratando de cambiarlo, pero hasta que se cambie, tienes que seguir sus reglas para entrar en el sistema. Esto es algo con lo que deben lidiar los desarrolladores con experiencia, como desarrollador junior tu prioridad debe ser superar la entrevista de codificación y conseguir el trabajo que deseas.
Como autor de un blog de Java y de una publicación en Medium, recibo muchas consultas relacionadas con problemas de codificación y cómo lidiar con ellos y por eso sigo escribiendo artículos como este que han ayudado a muchos programadores directa e indirectamente en su carrera.
En este artículo, voy a compartir con ustedes los 100 mejores problemas de la entrevista de codificación de las entrevistas de trabajo de programación que cada programador debe saber.
Ahora que, he aclarado la confusión de que la entrevista de codificación es importante y no debe distraer, vamos a entrar en el trabajo real. La gran pregunta es ¿qué preparar para las entrevistas de Codificación?
Bueno, lo más importante a preparar son los problemas de codificación basados en estructuras de datos como problemas de codificación basados en arrays, problemas de cadenas, problemas de listas enlazadas, problemas de árboles binarios, etc.
Aparte de las preguntas basadas en la estructura de datos, la mayoría de las entrevistas de trabajo de programación también hacen preguntas basadas en algoritmos, diseño, manipulación de bits y lógica general, que describiré en esta sección.
Es importante que practiques estos conceptos porque a veces son difíciles de resolver en la entrevista real. Haberlos practicado antes no sólo hace que te familiarices con ellos sino que te da más confianza a la hora de explicar la solución al entrevistador.
Uno de los principales problemas de la codificación es que hay cientos y miles de problemas de codificación en las entrevistas, incluso hay sitios como LeetCode, HackerRank, Codewars, Topcoder, freeCodeCamp, HackerEarth que entrenan a los programadores para las entrevistas de codificación con un montón de preguntas difíciles, lo que a veces simplemente abruma a un principiante que busca trabajo.
Creo en la simplicidad y en el 10% de esfuerzo que produce el 90% de los resultados y es por eso que he recogido los 100 mejores problemas de codificación que no son demasiado difíciles y también se preguntan con frecuencia en las entrevistas reales.
La resolución de estos problemas no sólo le dará confianza, sino que también le ayudará a reconocer algunos de los patrones algorítmicos más comunes que también le ayudarán a resolver algunos problemas no vistos en las entrevistas reales.
Recursos para entrevistas de codificación
La selección de buenos recursos es muy importante para el éxito en sus entrevistas de codificación. Si usted eligió un recurso incorrecto, entonces más que dinero, perderá un tiempo valioso que necesita para la preparación, por lo tanto, pasar algún tiempo de investigación para un buen recurso.
Si necesita recomendaciones, los siguientes son algunos de mis los recursos probados para aprender Estructura de Datos y Algoritmos en profundidad para las entrevistas de codificación:
- Estructuras de Datos y Algoritmos: Deep Dive Using Java para desarrolladores de Java. Aprende sobre Arrays, Listas Enlazadas, Árboles, Hashtables, Pilas, Colas, Montones, Algoritmos de Ordenación y Algoritmos de Búsqueda
- Algoritmos y Estructuras de Datos en Python para los amantes de Python
Una guía para implementar los algoritmos más actuales desde cero: arrays, listas enlazadas, algoritmos de grafos y ordenación
- Masterclass de Algoritmos y Estructuras de Datos en JavaScript por Colt_Steele para programadores de JavaScript. El campamento de entrenamiento para entrevistas de codificación y ciencias de la computación que faltaba. Aprenda todo lo que necesita para asar entrevistas difíciles de codificación.
- Mastering Data Structures & Algorithms using C and C++ para aquellos que son buenos en C/C++
- Data Structures in Java: An Interview Refresher by The Educative Team para refrescar conceptos importantes de Estructuras de Datos y algoritmos en Java. Este curso contiene una revisión detallada de todas las estructuras de datos comunes y proporciona detalles a nivel de implementación en Java para que los lectores estén bien equipados.
- Grokking the Coding Interview: Patterns for Coding Questions por Fahim ul Haq y The Educative Team
Este es como el meta curso para las entrevistas de codificación, que no le enseñará cómo resolver un problema de codificación sino, en cambio, le enseñará cómo resolver un tipo particular de problemas de codificación utilizando patrones. Domina estos 15 patrones subyacentes a las preguntas de la entrevista, y serás capaz de afrontar cualquier cosa que se te presente en la entrevista
Y, si prefieres los libros, no hay nada mejor que el Cracking The Coding Interview, de Gayle Laakmann McDowell que presenta 189+ preguntas de programación y su solución. Un buen libro para preparar las entrevistas de trabajo de programación en poco tiempo. Btw, también voy a ganar algo de dinero si usted compra cualquiera de estos recursos mencionados aquí.
Algunos Consejos para las Entrevistas de Codificación
- No hay mejor manera de hacer bien en las entrevistas de Codificación que practicar tantos problemas de codificación como sea posible. Esto no sólo entrenará tu mente para reconocer patrones algorítmicos en los problemas, sino que también te dará la tan necesaria confianza para resolver el problema que nunca has visto antes.
- Mi segundo consejo es aprender sobre tantas estructuras de datos y algoritmos como sea posible. Esto es una extensión del consejo anterior pero también implica leer y no sólo practicar. Por ejemplo, si conoces la tabla hash puedes también muchos problemas basados en arrays y contadores fácilmente. Lo mismo ocurre con los árboles y los gráficos.
- La elección de la estructura de datos adecuada es una parte muy importante del desarrollo de software y de la entrevista de codificación y, a menos que la conozcas, no podrás elegirla.
- Tiempo: los candidatos que resuelven los problemas de la entrevista dentro del límite de tiempo y con rapidez tienen más probabilidades de salir bien parados en la entrevista, por lo que también deberías tomarte tu tiempo.
- Piensa en casos límite y ejecuta tu código en ellos. Algunos buenos casos límite pueden ser la entrada vacía, alguna entrada extraña o alguna entrada realmente grande para probar las condiciones de contorno y los límites.
- Después de resolver el problema, intenta explicárselo a un amigo o a un colega que también esté interesado en los problemas de codificación. Esto te dirá si realmente has entendido el problema o no. Si puedes explicarlo fácilmente significa que lo has entendido. Además, la discusión hace que tu mente trabaje y se te ocurra una solución alternativa y puedas encontrar algunos fallos en tus algoritmos existentes.
- Otro consejo útil para sobresalir en las entrevistas de codificación es aparecer en la entrevista de codificación y en muchas de ellas. Te encontrarás mejorando después de cada entrevista y esto también te ayuda a conseguir múltiples ofertas que además te permiten negociar mejor y conseguir esos 30K a 50K extra que generalmente dejas sobre una mesa si solo tienes una oferta en la mano.
- Por cierto, si estás listo para la entrevista de codificación entonces también puedes hacer el test de TripleByte y pasar directamente a la ronda final de entrevistas con las principales empresas tecnológicas como Coursera, Adobe Acrobat, Dropbox, Grammarly, Uber, Quora, Evernote, Twitch, y muchas más. No conocía Triplebyte antes, pero están proporcionando un gran servicio a los solicitantes de empleo. Un gran agradecimiento a ellos.
Los 100 mejores problemas de codificación de las entrevistas de trabajo de programación
Sin perder más tiempo, aquí está mi lista de los 100 problemas de codificación más frecuentes de las entrevistas de trabajo de programación. Con el fin de obtener la mayor parte de esta lista, sugiero que realmente resolver el problema.
Hágalo usted mismo, no importa si usted atascado porque esa es la única manera de aprender. Después de resolver un par de problemas ganarás confianza. También te sugiero que mires la solución cuando te atasques o después de haber resuelto el problema, así aprenderás a comparar diferentes soluciones y a enfocar un problema desde un ángulo diferente.
- ¿Cómo se implementa un algoritmo de ordenación de burbujas? (solución)
- ¿Cómo se implementa un algoritmo de ordenación por fusión? (solución)
- ¿Cómo se cuenta la aparición de un determinado carácter en una cadena? (solución)
- ¿Cómo se imprime el primer carácter no repetido de una cadena? (solución)
- ¿Cómo se convierte un String dado en int como el atoi()? (solución)
- ¿Cómo se implementa un algoritmo de ordenación por cubos? (solución)
- ¿Cómo se implementa un algoritmo de ordenación por conteo? (solución)
- ¿Cómo se eliminan los duplicados de un array en su lugar? (solución)
- ¿Cómo se invierte un array in place en Java? (solución)
- ¿Cómo se eliminan los duplicados de un array sin usar ninguna librería? (solución)
- ¿Cómo se implementa un algoritmo de ordenación radix? (solución)
- ¿Cómo se intercambian dos números sin usar la tercera variable? (solución)
- ¿Cómo se comprueba si dos rectángulos se solapan entre sí? (solución)
- ¿Cómo se diseña una máquina expendedora? (solución)
- ¿Cómo se encuentra el número que falta en una matriz de enteros dada del 1 al 100? (solución)
- ¿Cómo se encuentra el número duplicado en una matriz de enteros dada? (solución)
- ¿Cómo encontrar los números duplicados en un array si contiene varios duplicados? (solución)
- ¿Diferencia entre un algoritmo de ordenación estable e inestable? (respuesta)
- ¿Cómo se implementa un algoritmo iterativo de quicksort? (solución)
- ¿Cómo se encuentra el mayor y el menor número de un array de enteros sin ordenar? (solución)
- ¿Cómo se invierte una lista enlazada en su lugar? (solución)
- ¿Cómo añadir un elemento en el centro de la lista enlazada? (solución)
- ¿Cómo se ordena una lista enlazada en Java? (solución)
- ¿Cómo encontrar todos los pares de un array de enteros cuya suma es igual a un número dado? (solución)
- ¿Cómo se implementa un algoritmo de ordenación por inserción? (solución)
- ¿Cómo se eliminan los duplicados de un array dado en Java? (solución)
- ¿Cómo eliminar el carácter duplicado de String? (solución)
- ¿Cómo encontrar el máximo carácter que ocurre en una cadena dada? (solución)
- ¿Cómo se ordena un array de enteros en su lugar utilizando el algoritmo quicksort? (solución)
- ¿Cómo se invierte una cadena dada en su lugar? (solución)
- ¿Cómo se imprimen los caracteres duplicados de una cadena? (solución)
- ¿Cómo se comprueba si dos cadenas son anagramas entre sí? (solución)
- ¿Cómo encontrar todas las permutaciones de una cadena? (solución)
- ¿Cómo se puede invertir una cadena dada utilizando la recursión? (solución)
- ¿Cómo se comprueba si una cadena dada es un palíndromo? (solución)
- ¿Cómo se encuentra la longitud de la subcadena más larga sin repetir caracteres? (solución)
- Dada la cadena str, ¿Cómo se encuentra la subcadena palindrómica más larga de str? (solución)
- ¿Cómo se comprueba si una cadena contiene sólo dígitos? (solución)
- ¿Cómo eliminar el Nodo N del final de una lista enlazada? (solución)
- ¿Cómo fusionar dos listas enlazadas ordenadas? (solución)
- ¿Cómo convertir una lista ordenada en un árbol de búsqueda binario? (solución)
- ¿Cómo encontrar caracteres duplicados en una cadena dada? (solución)
- ¿Cómo se cuenta un número de vocales y consonantes en una cadena dada? (solución)
- ¿Cómo se invierten las palabras de una frase dada sin utilizar ningún método de biblioteca? (solución)
- ¿Cómo se comprueba si dos cadenas son una rotación de la otra? (solución)
- ¿Cómo convertir un array de bytes en String? (solución)
- ¿Cómo eliminar un determinado carácter de String? (solución)
- ¿Cómo encontrar el elemento medio de una lista enlazada en una sola pasada? (solución)
- ¿Cómo se comprueba si una lista enlazada dada contiene un ciclo? Cómo encontrar el nodo inicial del ciclo? (solución)
- ¿Cómo se invierte una lista enlazada? (solución)
- ¿Cómo se invierte una lista enlazada simple sin recursividad? (solución)
- ¿Cómo se eliminan los nodos duplicados en una lista enlazada no ordenada? (solución)
- ¿Cómo se encuentra la longitud de una lista unifilar? (solución)
- ¿Cómo se encuentra el tercer nodo desde el final en una lista unifilar? (solución)
- ¿Cómo encontrar la suma de dos listas enlazadas usando Stack? (solución)
- ¿Cuál es la diferencia entre array y lista enlazada? (respuesta)
- ¿Cómo eliminar los duplicados de una lista enlazada ordenada? (solución)
- ¿Cómo encontrar el nodo en el que comienza la intersección de dos listas unidireccionales? (solución)
- Dada una lista enlazada y un valor x, particionarla de forma que todos los nodos menores que x vengan antes de los nodos mayores o iguales que x. (solución)
- ¿Cómo comprobar si una lista enlazada dada es un palíndromo? (solución)
- ¿Cómo eliminar todos los elementos de una lista enlazada de enteros que coinciden con un valor dado? (solución)
- ¿Cómo se implementa un árbol de búsqueda binario? (solución)
- ¿Cómo se realiza el recorrido de preorden en un árbol binario dado? (solución)
- ¿Cómo se recorre un árbol binario dado en preorden sin recursión? (solución)
- ¿Cómo se realiza un recorrido en inorden en un árbol binario dado? (solución)
- ¿Cómo se imprimen todos los nodos de un árbol binario dado mediante un recorrido de inorden sin recursión? (solución)
- ¿Cómo se implementa un algoritmo de travesía de posorden? (solución)
- ¿Cómo se recorre un árbol binario en postorder traversal sin recursión? (solución)
- ¿Cómo se imprimen todas las hojas de un árbol binario de búsqueda? (solución)
- ¿Cómo se cuenta un número de nodos hoja en un árbol binario dado? (solución)
- ¿Cómo se realiza una búsqueda binaria en un array dado? (solución)
- ¿Cómo intercambiar dos números sin utilizar la tercera variable? (solución)
- ¿Cómo comprobar si dos rectángulos se solapan entre sí? (solución)
- ¿Cómo diseñar una máquina expendedora? (solución)
- ¿Cómo implementar una caché LRU en tu lenguaje de programación favorito? (solución)
- ¿Cómo comprobar si un número dado es un Palíndromo? (solución)
- ¿Cómo comprobar si un número dado es un número Armstrong? (solución)
- ¿Cómo encontrar todos los factores primos de un número dado? (solución)
- ¿Cómo comprobar si un número dado es positivo o negativo en Java? (solución)
- ¿Cómo encontrar el mayor factor primo de un número integral dado? (solución)
- ¿Cómo imprimir todos los números primos hasta un número dado? (solución)
- ¿Cómo imprimir el triángulo de Floyd? (solución)
- ¿Cómo imprimir el triángulo de Pascal? (solución)
- ¿Cómo calcular la raíz cuadrada de un número dado? (solución)
- ¿Cómo comprobar si el número dado es un número primo? (solución)
- ¿Cómo sumar dos números sin usar el operador más en Java? (solución)
- ¿Cómo comprobar si un número dado es par/impar sin utilizar el operador Aritmético? (solución)
- ¿Cómo imprimir una estructura piramidal dada? (solución)
- ¿Cómo encontrar el mayor mundo repetido de un archivo dado en Java? (solución)
- ¿Cómo invertir un entero dado en Java? (solución)
- ¿Cómo convertir un número decimal a binario en Java? (solución)
- ¿Cómo comprobar si un año dado es un año bisiesto en Java? (solución)
- ¿Se puede implementar un Algoritmo de búsqueda binaria sin recursividad? (solución)
- ¿Diferencia entre un algoritmo de ordenación estable e inestable? (respuesta)
- ¿Qué es el Algoritmo de búsqueda de profundidad para un árbol binario? (solución)
- ¿Cómo se implementa un algoritmo iterativo de quicksort? (solución)
- ¿Cómo se implementa un algoritmo de ordenación por inserción? (solución)
- ¿Cómo se implementa un algoritmo de ordenación por fusión? (solución)
- ¿Cuál es la diferencia entre los algoritmos de ordenación por comparación y por no comparación? (respuesta)
- ¿Cómo se implementan los Algoritmos de Cribado de Eratóstenes para números primos? (solución)
Estas preguntas deberían ser suficientes, pero si usted necesita más preguntas de codificación puede tomar la ayuda de libros como Cracking The Code Interview, por Gayle Laakmann McDowell que presenta 189+ preguntas de programación y solución. Un buen libro para preparar las entrevistas de trabajo de programación en poco tiempo.
Ahora estás listo para la entrevista de codificación
Estas son algunas de las preguntas más comunes fuera de la estructura de datos y algoritmos que te ayudan a hacerlo realmente bien en tu entrevista.
También he compartido muchas de estas preguntas en mi blog, así que si estás realmente interesado, siempre puedes ir allí y buscarlas.
Estas preguntas comunes de codificación, estructura de datos y algoritmos son las que necesitas saber para entrevistarte con éxito en cualquier empresa, grande o pequeña, para cualquier nivel de trabajo de programación.
Si estás buscando un trabajo de programación o desarrollo de software en 2019, puedes empezar tu preparación con esta lista de preguntas de codificación y si estás listo para la entrevista, entonces también puedes hacer el test de TripleByte y pasar directamente a la ronda final de entrevistas con las principales empresas tecnológicas como Coursera, Adobe, Dropbox, Grammarly, y muchas más.
Esta lista proporciona buenos temas para preparar y también ayuda a evaluar su preparación para averiguar sus áreas de fortaleza y debilidad.
Un buen conocimiento de la estructura de datos y algoritmos es importante para el éxito en las entrevistas de codificación y es donde debe centrar la mayor parte de su atención.
Aprendizaje adicional
Estructuras de datos y algoritmos: Deep Dive Using Java
10 libros para preparar entrevistas de trabajo de programación/codificación técnica
10 libros de algoritmos que todo programador debería leer
Los 5 mejores libros de estructuras de datos y algoritmos para desarrolladores Java
De 0 a 1: Estructuras de datos &Algoritmos en Java
Análisis de estructuras de datos y algoritmos – Entrevista de trabajo
20+ Problemas de codificación basados en cadenas de las entrevistas
20+ Problemas de listas enlazadas de las entrevistas
20+ Problemas basados en algoritmos básicos de las entrevistas
Apuntes de cierre
Gracias, Has llegado al final del artículo… ¡Suerte con tu entrevista de programación! Seguro que no va a ser fácil, pero siguiendo estas preguntas de algoritmo de búsqueda y ordenación, estás un paso más cerca que los demás. Por cierto, cuantas más preguntas resuelvas en la práctica, mejor será tu preparación.
Así que, si crees que 100 problemas de codificación no son suficientes y necesitas más, entonces echa un vistazo a estas 50 preguntas de programación adicionales para entrevistas telefónicas y a estos libros y cursos para una preparación más completa.
Todo lo mejor para tu entrevista de codificación.
Otros artículos que te pueden gustar: