TOP 48 preguntas de entrevistas de programación y algoritmos, ¡increíble!

Pila de tecnología Java

www.javastack.cn

Siga para leer más artículos de calidad

Autor: javinpaul

Original: https://hackernoon.com/50-data-structure-and-algorithms-interview-questions-for-programmers-b4b1ac61f5b0

Este artículo se reimprime con la autorización del corazón de la máquina (cuenta pública de WeChat: almosthuman2014) y se prohíbe la reimpresión secundaria.

Muchos graduados y programadores en ciencias de la computación van a Uber, empresas unicornio como Toutiao o gigantes tecnológicos como Amazon, Microsoft y Google para postularse para puestos de programación y desarrollo de software. Cuando solicite estos trabajos, debe preguntarse qué preguntas hará el entrevistador.

En este artículo, el autor compartirá algunas preguntas comunes de entrevistas de programación, estas preguntas provienen de la entrevista para programadores de diferentes niveles de experiencia, desde recién graduados hasta programadores con uno o dos años de experiencia.

Las preguntas de la entrevista de programación suelen contener preguntas basadas en algoritmos y estructura de datos, así como algunas preguntas lógicas, como: ¿Cómo intercambiar dos números enteros sin utilizar variables temporales?

Para mayor claridad, las preguntas de la entrevista de programación deben dividirse en diferentes temas. Las áreas que vemos a menudo en las entrevistas son matrices, listas enlazadas, cadenas, árboles binarios y problemas relacionados con algoritmos (como algoritmos de cadenas, ordenación rápida o ordenación por base y otros algoritmos de ordenación). Este artículo los presentará.

Aunque este artículo no puede cubrir todas las preguntas que enfrentará en la entrevista, puede proporcionarle suficientes ideas para prepararse para varios desafíos durante la entrevista.

Una vez resueltos estos problemas, podrá afrontar cualquier entrevista telefónica o in situ con confianza.

Por supuesto, si no tiene suficiente conocimiento de las estructuras y algoritmos de datos básicos, el contacto directo con las siguientes preguntas no lo ayudará.

Preguntas de entrevistas de programación y algoritmos TOP 48

Sin más preámbulos, aquí hay una "lista de las preguntas más comunes en las entrevistas de programación":

1. Preguntas de la entrevista sobre programación de matrices

Array es la estructura de datos más básica, almacena elementos en un espacio de memoria continuo. Las matrices son también uno de los temas favoritos de los entrevistadores. Puede escuchar muchas preguntas sobre matrices en cualquier entrevista de programación, como invertir matrices, ordenar matrices o buscar elementos de matriz.

La principal ventaja de la estructura de datos de la matriz es que si se proporciona un índice, proporcionará una búsqueda de complejidad O (1), que es muy rápida. Pero agregar o eliminar elementos de la matriz es lento, porque una vez que se crea la matriz, es difícil cambiar su tamaño. Si necesitamos una matriz más larga o más corta, necesitamos recrear la nueva matriz y copiar todos los elementos de la matriz anterior a la nueva matriz.

La clave para resolver el problema de la matriz es tener una comprensión más profunda de la estructura de datos de la matriz. Al mismo tiempo, también es necesario comprender las estructuras de programación comunes, como bucles, recursividad y operadores básicos. A continuación, se muestran algunas preguntas comunes de entrevistas sobre programación de matrices:

1. ¿Cómo buscar elementos faltantes en una matriz de enteros con elementos del 1 al 100?

  • Solución: http://javarevisited.blogspot.com/2014/11/how-to-find-missing-number-on-integer-array-java.html

2. Dada una matriz, ¿cómo buscar elementos duplicados?

  • Solución: http://javarevisited.blogspot.com/2014/01/how-to-remove-duplicates-from-array-java-without-collection-API.html

3. Dada una matriz desordenada, ¿cómo buscar los elementos más grandes y más pequeños?

  • Solución: http://java67.blogspot.com/2014/02/how-to-find-largest-and-smallest-number-array-in-java.html

4. Dado un valor, ¿cómo buscar los elementos emparejados en una matriz de enteros cuya suma es el valor?

  • Solución: http://javarevisited.blogspot.com/2014/08/how-to-find-all-pairs-in-array-of-integers-whose-sum-equal-given-number-java.html

5. Si la matriz contiene varios valores duplicados, ¿cómo buscar todos los valores duplicados?

  • Solución: http://javarevisited.blogspot.com/2014/03/3-ways-to-find-first-non-repeated-character-String-programming-problem.html

6. Dada una matriz, ¿cómo eliminar elementos duplicados en Java? ¿Cómo eliminar elementos duplicados en una matriz sin usar la biblioteca?

  • Solución: http://javarevisited.blogspot.com/2014/01/how-to-remove-duplicates-from-array-java-without-collection-API.html

7. ¿Cómo ordenar una matriz de números enteros usando el algoritmo de ordenación rápida?

  • Solución: http://javarevisited.blogspot.com/2014/08/quicksort-sorting-algorithm-in-java-in-place-example.html

8. ¿Cómo invertir una matriz usando Java?

  • Solución: http://javarevisited.blogspot.com/2013/03/how-to-reverse-array-in-java-int-String-array-example.html

Estos problemas no solo nos ayudan a mejorar nuestra capacidad para resolver problemas, sino que también mejoran nuestra comprensión de las estructuras de datos de matrices.

Si necesita obtener más información sobre problemas en profundidad basados ​​en matrices, puede encontrar más cursos y materiales sobre estructuras de datos en GitHub o Coursera. Por ejemplo, hay muchos materiales de aprendizaje sobre matrices en GitHub. A continuación, presentamos uno Una versión china de los materiales de entrevistas de Google, tiene más de 60.000 colecciones en GitHub.

Dirección del proyecto: https://github.com/jwasham/coding-interview-university/blob/master/translations/README-cn.md

2. Preguntas de la entrevista de programación de listas vinculadas

Las listas enlazadas son otra estructura de datos común que complementa la estructura de datos de la matriz. Similar a una matriz, también es una estructura de datos lineal, que almacena elementos de manera lineal.

Sin embargo, a diferencia de una matriz, no almacena elementos en ubicaciones consecutivas, sino que los almacena dispersos en la memoria y conectados entre sí a través de nodos. La lista vinculada es una lista de nodos, donde cada nodo contiene el valor almacenado y la dirección del siguiente nodo.

Debido a esta estructura, agregar o eliminar elementos en la lista vinculada se vuelve muy simple, porque solo necesita cambiar el enlace en lugar de crear una matriz, pero esto dificultará la búsqueda y, a menudo, requiere una complejidad de tiempo O (n). Un elemento se encuentra en una única lista vinculada.

Este artículo (https://javarevisited.blogspot.com/2013/07/difference-between-array-and-linked-list-java.html) proporciona más información sobre las diferencias entre matrices y estructuras de datos de listas vinculadas.

También hay muchas variantes de listas enlazadas, como las listas enlazadas individualmente, que le permiten atravesar en una dirección (adelante o atrás); las listas enlazadas dobles le permiten atravesar en dos direcciones (adelante o atrás); la última son listas enlazadas circulares, Forma un bucle.

Para resolver problemas sobre listas vinculadas, es importante dominar el conocimiento recursivo, porque las listas vinculadas son estructuras de datos recursivas.

Si toma un nodo de la lista vinculada, la estructura de datos restante sigue siendo una lista vinculada, por lo que la solución recursiva de muchos problemas de lista vinculada es más simple que las soluciones iterativas.

A continuación, se muestran algunos problemas y soluciones comunes acerca de las listas vinculadas:

9. ¿Cómo encontrar el elemento intermedio de la lista enlazada individualmente en una sola pasada?

  • Solución: http://javarevisited.blogspot.sg/2012/12/how-to-find-middle-element-of-linked-list-one-pass.html

10. ¿Cómo comprobar si una determinada lista enlazada contiene ciclos? ¿Cómo encontrar el nodo inicial del bucle?

  • Solución: http://javarevisited.blogspot.sg/2013/05/find-if-linked-list-contains-loops-cycle-cyclic-circular-check.html

11. ¿Cómo revertir una lista enlazada?

  • Solución: http://www.java67.com/2016/07/how-to-reverse-singly-linked-list-in-java-example.html

12. ¿Cómo revertir una lista enlazada individualmente sin recursividad?

  • Solución: http://javarevisited.blogspot.sg/2017/03/how-to-reverse-linked-list-in-java-using-iteration-and-recursion.html

13. ¿Cómo eliminar nodos duplicados en la lista enlazada desordenada?

  • Solución: https://www.geeksforgeeks.org/remove-duplicates-from-an-unsorted-linked-list/

14. ¿Cómo medir la longitud de una lista enlazada individualmente?

  • Solución: http://javarevisited.blogspot.sg/2016/05/how-do-you-find-length-of-singly-linked.html

15. ¿Cómo encontrar el tercer nodo del final de la lista enlazada individualmente?

  • Solución: http://javarevisited.blogspot.sg/2016/07/how-to-find-3rd-element-from-end-in-linked-list-java.html

16. ¿Cómo usar la pila para calcular la suma de dos listas enlazadas?

  • Solución: https://www.geeksforgeeks.org/sum-of-two-linked-lists/

Estas preguntas le ayudarán a desarrollar habilidades para resolver problemas y mejorar su comprensión de las estructuras de datos de listas vinculadas. Hay muchos recursos disponibles para ayudarnos a comprender las listas vinculadas. Por ejemplo, en una práctica de codificación interactiva en GitHub, utiliza Jupyter Notebook para proporcionar varios ejercicios sobre estructuras de datos y algoritmos, incluidos muchos problemas y prácticas de listas vinculadas.

Dirección del proyecto: https://github.com/donnemartin/interactive-coding-challenges

3. Preguntas de la entrevista de codificación de cadenas

Además de las matrices y las estructuras de datos de listas vinculadas, las cadenas son otro tema candente en la programación de entrevistas de trabajo. La mayoría de las entrevistas de codificación en las que participé han hecho preguntas sobre cadenas. 5 preguntas complicadas de la entrevista de String , te recomiendo que las leas.

Si comprende las matrices, puede resolver fácilmente problemas basados ​​en cadenas, porque una cadena es una matriz de caracteres. Por lo tanto, todas las habilidades que aprenda al resolver problemas de programación de matrices también se pueden utilizar para resolver problemas de programación de cadenas.

La siguiente es una lista de preguntas de programación de cadenas que se hacen con frecuencia en entrevistas de trabajo de programación:

17. ¿Cómo imprimir caracteres repetidos en una cadena?

  • Solución: http://java67.blogspot.sg/2014/03/how-to-find-duplicate-characters-in-String-Java-program.html

18. ¿Cómo comprobar si dos cadenas están en orden inverso?

  • Solución: http://javarevisited.blogspot.sg/2013/03/Anagram-how-to-check-if-two-string-are-anagrams-example-tutorial.html

19. ¿Cómo imprimir el primer carácter no repetido de una cadena?

  • Solución: http://javarevisited.blogspot.sg/2014/03/3-ways-to-find-first-non-repeated-character-String-programming-problem.html

20. ¿Cómo revertir una cadena dada usando recursividad?

  • Solución: http://javarevisited.blogspot.sg/2012/01/how-to-reverse-string-in-java-using.html

21. ¿Cómo comprobar si una cadena contiene solo números?

  • Solución: http://javarevisited.blogspot.sg/2012/10/regular-expression-example-in-java-to-check-String-number.html

22. ¿Cómo buscar caracteres repetidos en una cadena?

  • Solución: http://java67.blogspot.sg/2014/03/how-to-find-duplicate-characters-in-String-Java-program.html

23. Dada una cadena, ¿cómo contar el número de vocales y consonantes?

  • Solución: http://java67.blogspot.sg/2013/11/how-to-count-vowels-and-consonants-in-Java-String-word.html

24. Dado un carácter, ¿como contar el número de veces que aparece en una cadena?

  • Solución: http://javarevisited.blogspot.sg/2012/12/how-to-count-occurrence-of-character-in-String.html

25. ¿Cómo buscar todas las permutaciones de una cadena?

  • Solución: http://javarevisited.blogspot.com/2015/08/how-to-find-all-permutations-of-string-java-example.html

26. ¿Cómo invertir las palabras en una oración dada sin usar ninguna biblioteca?

  • Solución: http://java67.blogspot.com/2015/06/how-to-reverse-words-in-string-java.html

27. ¿Cómo comprobar si dos cadenas son rotaciones?

  • Solución: http://www.java67.com/2017/07/string-rotation-in-java-write-program.html

28. Dada una cuerda, ¿cómo comprobar si es un palíndromo?

  • Solución: http://java67.blogspot.com/2015/06/how-to-check-is-string-is-palindrome-in.html

Estas preguntas pueden mejorar su comprensión de las estructuras de datos de cadenas. Si puede resolver todos estos problemas de cuerdas de forma independiente, está en buena forma.

Si desea obtener más información sobre problemas más complejos, le recomiendo que lea el "Manual de diseño de algoritmos" de Steven Skiena, este libro contiene los problemas de algoritmos más difíciles.

La versión PDF del libro también está disponible en línea, dirección de descarga: http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.471.4772&rep=rep1&type=pdf

Si necesita más práctica, aquí hay otras 20 preguntas sobre la programación de cadenas:

http://javarevisited.blogspot.sg/2015/01/top-20-string-coding-interview-question-programming-interview.html

4. Preguntas de la entrevista sobre programación de árbol binario

Ahora solo entendemos el problema de la estructura de datos lineal, pero toda la información del mundo real no puede ser totalmente lineal, lo que requiere una estructura de datos de árbol.

La estructura de datos de árbol permite que los datos se almacenen de forma jerárquica. Según la forma de almacenar los datos, existen muchos tipos de árboles, como los árboles binarios.

Al igual que su pariente cercano, el árbol de búsqueda binario, también es una de las estructuras de datos de árbol más populares. Por lo tanto, verá muchas preguntas relacionadas e interesantes. Por ejemplo, cómo atravesar el árbol, contar el número de nodos, averiguar la profundidad y verificar el equilibrio.

La clave para resolver el problema del árbol binario radica en un conocimiento teórico profundo, como el tamaño o la profundidad del árbol binario, qué es un nodo hoja, qué es un nodo y comprender los algoritmos transversales populares.

Las siguientes son las preguntas de programación relacionadas con árboles binarios comunes en las entrevistas de trabajo de ingeniero de software o desarrollo:

29. ¿Cómo implementar un árbol de búsqueda binario?

  • Solución: http://javarevisited.blogspot.sg/2015/10/how-to-implement-binary-search-tree-in-java-example.html#axzz4wnEtnNB3

30. ¿Cómo realizar un recorrido de preorden en un árbol binario dado?

  • Solución: http://javarevisited.blogspot.sg/2016/07/binary-tree-preorder-traversal-in-java-using-recursion-iteration-example.html#axzz5ArdIFI7y

31. ¿Cómo realizar un recorrido de preorden en un árbol binario dado sin recursividad?

  • Solución: http://www.java67.com/2016/07/binary-tree-preorder-traversal-in-java-without-recursion.html

32. ¿Cómo realizar un recorrido en orden de un árbol binario dado?

  • Solución: http://www.java67.com/2016/08/binary-tree-inorder-traversal-in-java.html

33. ¿Cómo imprimir todos los nodos realizando un recorrido en orden en un árbol binario dado sin recursividad?

  • Solución: http://www.java67.com/2016/08/binary-tree-inorder-traversal-in-java.html

34. ¿Cómo implementar el algoritmo de recorrido posterior al pedido?

  • Solución: http://www.java67.com/2016/10/binary-tree-post-order-traversal-in.html

35. ¿Cómo realizar un recorrido posterior al pedido en un árbol binario determinado sin recursividad?

  • Solución: http://www.java67.com/2017/05/binary-tree-post-order-traversal-in-java-without-recursion.html

36. ¿Cómo imprimir todos los nodos hoja de un árbol de búsqueda binario?

  • Solución: http://www.java67.com/2016/09/how-to-print-all-leaf-nodes-of-binary-tree-in-java.html

37. ¿Cómo calcular el número de nodos hoja en un árbol binario dado?

  • Solución: http://javarevisited.blogspot.sg/2016/12/how-to-count-number-of-leaf-nodes-in-java-recursive-iterative-algorithm.html

38. ¿Cómo realizar una búsqueda binaria en una matriz dada?

  • Solución: http://javarevisited.blogspot.sg/2015/10/how-to-implement-binary-search-tree-in-java-example.html#axzz4wnEtnNB3

Si cree que tiene un conocimiento insuficiente de la programación de árboles binarios para resolver estos problemas, le sugiero que primero domine el conocimiento de la estructura de datos y los algoritmos, por ejemplo, puede tomar este curso "De 0 a 1: Estructuras de datos y algoritmos en Java". Del mismo modo, también puede consultar un conjunto completo de manuales para prepararse para las entrevistas de Google. Este conjunto de manuales de GitHub se ha presentado antes, pero en realidad tiene muchos casos y tutoriales sobre estructuras de datos como árboles binarios.

Dirección del proyecto: https://github.com/jwasham/coding-interview-university

Si necesita más recomendaciones, puede consultar:

  • http://javarevisited.blogspot.sg/2015/07/5-data-structure-and-algorithm-books-best-must-read.html

  • http://javarevisited.blogspot.sg/2018/01/top-5-free-data-structure-and-algorithm-courses-java—c-programmers.html

5. Otras preguntas de la entrevista de programación

Además de las preguntas sobre la estructura de datos, la mayoría de las entrevistas de trabajo de programación también harán preguntas sobre algoritmos, diseño, operaciones de bits y lógica general. Prestar atención a la pila de tecnología Java de la cuenta pública de WeChat también puede obtener los tutoriales sobre el algoritmo N y la estructura de datos que he compilado, todos los cuales son productos secos.

Los ejercicios específicos son importantes porque a veces pueden ser un poco difíciles de entender en entrevistas reales. Practicar de antemano no solo lo familiarizará con estas preguntas, sino que también lo hará más seguro al explicar las respuestas al entrevistador.

39. ¿Cómo realizar el algoritmo de clasificación de burbujas (algoritmo de clasificación de burbujas)?

  • Solución: http://javarevisited.blogspot.sg/2014/08/bubble-sort-algorithm-in-java-with.html#axzz5ArdIFI7y

40. ¿Cómo implementar el algoritmo iterativo de clasificación rápida?

  • Solución: http://javarevisited.blogspot.sg/2016/09/iterative-quicksort-example-in-java-without-recursion.html#axzz5ArdIFI7y

41. ¿Cómo implementar el algoritmo de ordenación por inserción (algoritmo de ordenación por inserción)?

  • Solución: http://www.java67.com/2014/09/insertion-sort-in-java-with-example.html

42. ¿Cómo implementar el algoritmo de clasificación por fusión (algoritmo de clasificación por fusión)?

  • Solución: http://www.java67.com/2018/03/mergesort-in-java-algorithm-example-and.html

43. ¿Cómo implementar el algoritmo de clasificación de cubos (algoritmo de clasificación de cubos)?

  • Solución: http://javarevisited.blogspot.sg/2017/01/bucket-sort-in-java-with-example.html

44. ¿Cómo implementar el algoritmo de clasificación de conteo (algoritmo de clasificación de conteo)?

  • Solución: http://www.java67.com/2017/06/counting-sort-in-java-example.html

45. ¿Cómo implementar el algoritmo de ordenación por radix?

  • Solución: http://www.java67.com/2018/03/how-to-implement-radix-sort-in-java.html

46. ​​¿Cómo intercambiar dos números sin usar la tercera variable?

  • Solución: http://www.java67.com/2015/08/how-to-swap-two-integers-without-using.html

47. ¿Cómo confirmar si dos rectángulos se superponen?

  • Solución: http://javarevisited.blogspot.sg/2016/10/how-to-check-if-two-rectangle-overlap-in-java-algorithm.html

48. ¿Cómo diseñar una máquina expendedora?

  • Solución: http://javarevisited.blogspot.sg/2016/06/design-vending-machine-in-java.html

Si desea ver más preguntas de programación de este tipo, puede leer este libro "Cómo descifrar la entrevista de codificación: 189 preguntas y soluciones de programación", que es adecuado para prepararse para una entrevista de trabajo de programación en poco tiempo.

Enlace de descarga: http://lib1.org/_ads/fcb49f53d5e943ce8acdc4469f63dc5d

Cuantas más preguntas practique, más preparado estará. Por lo tanto, si cree que 48 preguntas no son suficientes, puede verificar:

  • https://javarevisited.blogspot.com/2015/02/50-programmer-phone-interview-questions-answers.html

  • http://javarevisited.blogspot.sg/2016/06/top-5-books-for-programming-coding-interviews-best.html

  • http://javarevisited.blogspot.sg/2018/02/10-courses-to-prepare-for-programming-job-interviews.html

Ahora estás listo para la entrevista.

Esta parte presentará algunos problemas comunes además de las estructuras de datos y los algoritmos, que pueden ayudarlo a lograr un mejor desempeño en la entrevista.

Hay muchas preguntas de este tipo en mi blog, consulte: http://www.java67.com/

Estos problemas comunes de programación, estructura de datos y algoritmos son los que debe conocer cuando acude a cualquier empresa para una entrevista, ya sea una empresa grande o una empresa pequeña, independientemente del puesto de la entrevista.

Si está buscando trabajo de programación o desarrollo de software, puede usar estas preguntas de programación para comenzar. Esta lista proporciona algunos buenos temas para la preparación de entrevistas que pueden ayudarlo a evaluar si la preparación de su entrevista es adecuada.

La competencia en la estructura de datos y el conocimiento de algoritmos es la clave para una entrevista de trabajo de programación exitosa, debe prestar más atención a estos problemas.

Preste atención a la pila de tecnología Java para ver más productos secos

¡Haga clic en el texto original para obtener más beneficios!

Supongo que te gusta

Origin blog.csdn.net/youanyyou/article/details/108480375
Recomendado
Clasificación