Solía tener bastante miedo a los problemas de programación dinámica en las entrevistas, porque este es un tema avanzado y muchas personas me han dicho lo difíciles que son. A primera vista, son desafiantes y más difíciles que la mayoría de las preguntas de la entrevista. Sin embargo, puedo decir que finalmente lo supere y me permita compartir mi experiencia.
En primer lugar, creo que es extremadamente importante tener claro qué es la programación dinámica. Veo que muchas personas comienzan a practicar con problemas, pero se atascan al preguntar qué es realmente la programación dinámica. Con eso en mente, he realizado muchas búsquedas en Google sobre preguntas como la diferencia entre DP y recursividad, cuándo usar programación dinámica, etc. Si solo lee un par de hilos en Stackoverflow, rápidamente obtendrá una mejor comprensión del tema.
En segundo lugar, aunque la programación dinámica es difícil en general, pero no puede ser muy difícil en las entrevistas (en la mayoría de los casos). He visto tantos problemas difíciles en TopCoder y para algunas preguntas, ni siquiera puedo entender la solución. Sin embargo, este no es el caso en las entrevistas en general porque solo tiene una hora y las preguntas que son demasiado difíciles no serán resueltas por nadie.
- Escriba un programa para verificar si un elemento dado está en una matriz ordenada. ¿Cuál es su complejidad temporal?
- ¿Cuáles son las mejores respuestas a las preguntas formuladas en una entrevista que explican quién es usted?
- Soy estudiante de ECE de primer año. Me voy a preparar mucho para una programación competitiva. ¿Google me considerará y me brindará una oportunidad de entrevista?
- Para entrevistas técnicas en empresas tecnológicas de primer nivel, ¿cuánto tiempo tienen los candidatos para cada pregunta de programación?
- ¿Cómo fue el proceso de entrevista para un puesto de pasantía en ingeniería de software con SoundCloud?
Como resultado, con un poco de práctica en las preguntas de la entrevista DP, descubrí que la mayoría de ellas son bastante similares en algunos aspectos y, por lo general, con una sola matriz como memorización, puede convertir fácilmente una solución de recursión en un enfoque de programación dinámica. He aprendido mucho de Una guía paso a paso para la programación dinámica.
Además, tuve una entrevista simulada sobre Gainlo de un entrevistador de Facebook y recibí toneladas de sugerencias no solo para una programación dinámica, sino también para la preparación de la entrevista en general.
Yo diría que no se preocupe demasiado por este tema, ya que es mucho más fácil de lo que la mayoría de la gente pensaba. Además, con suficiente práctica, descubrirá el patrón.