No soy un programador novato y he estado programando durante los últimos 4-5 años, pero todavía no puedo resolver muchas preguntas de la entrevista (dentro de los 10-15 minutos del tiempo dado) a menos que haya visto algo similar o tenga hecho lo mismo antes. ¿Cómo puedo mejorar?

No estoy seguro de qué preguntas estás mirando. Tenga en cuenta que muchos de ellos pueden no estar diseñados para ser respondidos en 10-15 minutos. Cuando entrevisto a personas, generalmente hago una pregunta de calentamiento (aproximadamente 10 minutos, incluida la discusión), luego una pregunta más profunda (aproximadamente 45 minutos, incluida la discusión). Si alguien pudiera responder la pregunta más profunda en 10-15 minutos, me sorprendería e impresionaría: es posible, pero ese no es el objetivo de la pregunta. Así que no se desanime demasiado si le está tomando más tiempo del que cree que debería: asegúrese de que el tiempo que espera sea razonable.

Diría que tienes razón, que no quieres memorizar solo preguntas y respuestas. Pero algunas de las preguntas son cosas comunes que debería poder hacer. El objetivo no es memorizar las preguntas y respuestas, sino poder dar sentido a la pregunta y escribir código para resolverla.

Hay diferentes habilidades involucradas aquí. Una es traducir tus pensamientos en código. A menudo, puedes escribir lo que quieres hacer directamente. Si parte de lo que quiere hacer requiere que encuentre el valor mínimo en un conjunto, puede escribir código

min = FindMinimum (conjunto);

y complete la función FindMinimum más tarde. Esto puede ayudarlo a mantener el rumbo con el panorama general para que no se distraiga por un camino fuera de su objetivo principal.

Otra habilidad es buscar similitudes entre diferentes soluciones. Por ejemplo, cosas como hashsets / diccionarios aparecen mucho en las preguntas de la entrevista. Debe reconocerlo como una herramienta que está listo para sacar cuando la situación lo requiera. Busque otras herramientas similares que desee implementar.

Asegúrese de reconocer algoritmos básicos y estructuras de datos. No debería necesitar conocer todas las estructuras de datos que existen, pero si se le pide que agregue un elemento a una lista doblemente vinculada, eso no debería ser un problema. (Para ese tipo de problema, me ayuda a poder dibujar imágenes para diferentes tipos de inserciones: insertar en una lista vacía, insertar al principio de una lista, insertar en el medio, insertar al final. El código no es ‘ No necesariamente es diferente para todos ellos, pero puede ver el caso general y ver qué no cubre. Hace que escribir su código sea más fácil).

Esté preparado para poner código en la pizarra. Puede practicar en una pizarra o con un editor de texto sin completar la declaración. Si puede hacer eso, obviamente está listo para escribir código en un entorno de programación, pero lo contrario no es necesariamente cierto.

Buena suerte.

Supongo que no hay atajos. Necesitas seguir aprendiendo y codificando.

Aquí está el artículo, espero que pueda obtener algunas luces de él. Realmente me conmovió cuando lo leí.

Enseñate a ti mismo a programar en diez años

Practica específicamente en lo que eres malo. Si surge el algoritmo en el acto, practique inventando algoritmos para 3-5 problemas todos los días.

Si bien es importante practicar la codificación de vez en cuando, si se siente cómodo, centre su práctica más en la resolución de problemas. 3-5 problemas pueden ser difíciles de hacer todos los días con código completo, pero es mucho más factible si solo tiene que encontrar el algoritmo (como suplemento, considere codificar el 1 problema más difícil cada día).

Si no puede encontrar un algoritmo para un problema (lo ha intentado durante un tiempo y está listo para darse por vencido), lea la solución. Si la solución utiliza técnicas con las que no estaba familiarizado, lea sobre esas técnicas (si tiene limitaciones de tiempo, puede reemplazar su práctica habitual con esto durante un par de días).

Puede ayudarlo a practicar con preguntas un poco más difíciles de lo que probablemente enfrentará en la entrevista, para que pueda resolver (la entrevista relativamente más fácil) preguntas reales de la entrevista, incluso cuando está bajo presión.

Usted mencionó que ya conoce los algoritmos y las estructuras de datos.
Entonces conoce la parte del “qué” y el “cómo” de la resolución de problemas. Lo que puede faltar / faltar parcialmente es el ‘por qué’, ‘cuándo’ y ‘dónde’ partes de la resolución del problema.

Lo que parece ser el quid del problema es
1) Enfoque de resolución de problemas para nuevos problemas. Lo más importante es adaptar soluciones a problemas ligeramente diferentes.
Vea mi respuesta aquí sobre formas de trabajar en la resolución de problemas: la respuesta del usuario de Quora a ¿Cómo puede mejorar sus habilidades para resolver problemas?

2) Habilidades de entrevista para mostrarle al entrevistador

  • análisis del problema,
  • la profundidad y amplitud de sus elecciones para resolver el problema,
  • Cómo elige diferentes opciones para que coincidan con los diferentes escenarios sugeridos por el entrevistador
  • Cómo llevas a cabo tu plan en código real
  • Cómo te desatascas cuando te enfrentas a algo que no entiendes
  • Qué suposiciones hace y cómo protege contra hacer suposiciones incorrectas.
  • Cómo se comunica exhibe / verbaliza / visualiza o dibuja su pensamiento en la pizarra.

La clave es “practicar mucho, no solo algunas veces”

Primero domina los conceptos básicos. Es más fácil decirlo que hacerlo.

Una vez que haya dominado los conceptos básicos, tome 5 problemas de entrevista y resuélvalos diariamente. Si practicas mucho, durante las entrevistas, tu cerebro podrá unir patrones más rápido y resolverlo usando las técnicas que aprendiste.

Extienda sus sesiones de práctica durante todo el año para que su cerebro esté constantemente conectado y no olvide lo que aprendió.

Después de todo, solo hay de 5 a 6 estructuras de datos importantes y de 7 a 10 técnicas algorítmicas. Entonces, todos los problemas de la entrevista tienen que girar en torno a ellos.

También asista a las entrevistas incluso si no desea cambiar, pero le dará una experiencia real y lo ayudará a comprender lo que se espera. Incluso si te equivocas, puedes aplicar después de 6 meses a 1 año.

Un consejo: la mayoría de los problemas de la entrevista podrían resolverse utilizando una tabla hash.

More Interesting

¿De qué manera contribuir a proyectos de código abierto y hacer que mis propios proyectos vayan en contra de la programación competitiva en un currículum o en una entrevista?

¿Es aceptable contar las opiniones poco ortodoxas de un candidato sobre el desarrollo de software en su contra?

¿Qué debo decir cuando alguien me pregunta sobre mí en una entrevista?

¿Cuáles son las preguntas comunes que se le hacen a una persona con experiencia de un año en una entrevista para Java?

¿Cómo son las entrevistas de consultoría?

¿Cómo es la entrevista para un pasante en MapR?

¿Es normal recibir un proyecto durante el proceso de entrevista?

¿Qué debo decir en una entrevista de IIM cuando preguntan sobre la ausencia de la sección 'Premios y logros' en mi CV, si no tengo ninguno?

Cómo comenzar con TopCoder para descifrar mi entrevista con Google

Si una publicación acepta solicitudes de forma continua, ¿cuántos días o semanas debo esperar para una llamada de entrevista?

¿Cómo se prepara para una entrevista con un científico de investigación de visión por computadora?

¿Cuáles son las preguntas y respuestas generalmente formuladas durante una entrevista de visa de estudiante?

Cómo venderme mejor durante una entrevista de trabajo

En India, desde un barrendero hasta un oficial de IAS, todos son examinados antes de que le den el trabajo (entrevista, verificación de antecedentes y demás). ¿No debería aplicarse el proceso en política?

¿Por qué he sido rechazado de JP Morgan persigue a Mumbai consecutivamente para una llamada de entrevista? ¿Cuál podría ser la razón? por qué ? Estoy tenso