¿Cuáles son algunas buenas preguntas para la entrevista de programación que incorporan principios de programación funcional?

Hay un montón de problemas que permiten soluciones funcionales muy naturales; idealmente, alguien sin mucha experiencia en FP pero con la mentalidad correcta aún escribiría un programa bastante funcional. Por otro lado, alguien que aprende y escribe un programa imperativo relativamente feo probablemente no tiene la mentalidad correcta.

Los problemas con las estructuras de los árboles tienden a comportarse así. Por ejemplo, recientemente tuve una pregunta de entrevista (para un puesto de programación funcional) que involucra gramáticas libres de contexto. Usar un CFG produce un árbol. Por lo tanto, puede pedirle al candidato que diseñe un tipo para representar un CFG y luego pedirle que escriba un código para responder algunas preguntas sobre la gramática en sí o analizar los árboles que produce.

Otra opción interesante sería darle al candidato un código escrito en un estilo funcional idiomático y pedirle que encuentre errores en él. Esto puede darle una buena idea de cuán bueno es el candidato para leer el código funcional.

  1. ¿Qué es la recursión de la cola?
  2. La función List.map de OCaml no es recursiva de la cola, y claramente esta es una mala idea para listas grandes. ¿Se te ocurre alguna razón por la que quieras implementarlo sin recursión de cola? (consulte http://groups.google.com/group/f …)
  3. Pregúntele al candidato si ha escrito algún software en un lenguaje no funcional (muy probablemente un lenguaje orientado a objetos) y, de ser así, pregunte cómo transferirlo a un lenguaje funcional.

– ¿Qué cosas has llegado a apreciar en los proyectos de software? (con relación a la programación funcional preferiblemente) ¿cómo cambiaron estas preferencias con el tiempo y por qué?

– ¿Qué son las funciones puras, la inmutabilidad, los tipos algebric, las mónadas, las continuaciones, las llamadas de cola, la evaluación diferida, la evaluación de expresiones frente a la ejecución de instrucciones? las ventajas de ellos? ¿Cuándo usaste alguno o dónde crees que brillan? alternativas, compensaciones

– ¿Cómo implementaría el patrón de visitante funcionalmente? (un HOF probablemente) ¿qué pasa con otros patrones?

– ¿Cuáles son los efectos (secundarios)? ¿Es posible programar sin efectos? ¿Qué opciones tienes para lidiar con los efectos? (implícito / explícito, aislando el código que trata los efectos en mónadas y pequeñas partes dedicadas del código, como la función principal)

– ¿Cómo haces explícitos los efectos? ¿pros contras? ¿Cómo contiene la superficie del código expuesta a los efectos? (por ejemplo, usar funciones puras, mónadas, etc. para la mayoría de la lógica)

– ¿Qué es la programación funcional, la programación reactiva, la programación declarativa, qué otros paradigmas conoces? ¿flujo de datos?

– se dice que la programación declarativa (incluida la programación funcional y lógica) se centra en el “qué”, en lugar de la programación imperativa que trata sobre “cómo” lo hacemos. ¿Puedes arrojar más luz sobre esto y cómo te beneficias de esto?

¿Algún momento ajá con estos paradigmas de programación declarativa?

– ¿Pros y contras de la mutabilidad?

– ¿Qué es una lista de contras? ¿Por qué la lista de contras solo antepone elementos, pero no tiene una función de agregar anunciada? ¿Qué pasaría si lo hicieran?

– ¿Qué es un HOF? ejemplos de funciones de alto orden? ¿Cuándo los usarías?

– ¿Qué es una estructura de datos persistente? ejemplos? alternativas, pros / contras?

– ¿Cómo implementaría el mapa en la lista de contras? alguna compensación por cada solución?

– cuáles son algunos conjuntos conflictivos de vectores de calidad y qué compensaciones realizó entre requisitos no funcionales conflictivos (incluidos los suyos, por ejemplo, simplicidad, rendimiento, reutilización de código, legibilidad de código, cohesión, estabilidad, tipado estático vs dinámico, etc.)

More Interesting

¿Trabajar en Rakuten como ingeniero de software se ve bien en su CV (Japón)?

¿Por qué Apple cambió su sistema de compilación de GCC a Clang?

¿Cómo amplifica el reproductor VLC el volumen a casi el 400% del volumen predeterminado cuando otros jugadores no pueden?

¿Por qué el desarrollo iterativo de software produce la mejor experiencia de usuario?

¿Existe una cámara de tráfico resistente a la intemperie basada en Arduino que sea de código abierto?

¿Dónde podría conseguir un trabajo con mis habilidades?

¿Cómo se puede extraer el contenido textual principal de una lista de sitios heterogéneos sin conocer de antemano la estructura de la página?

¿Qué es la prueba de regresión? ¿Cuáles son algunos ejemplos?

¿Puede un probador de automatización con buenos conocimientos de programación solicitar la Ingeniería de software para Australia PR bajo la Subclase 189?

¿Por qué los teléfonos inteligentes y algunos otros dispositivos de grabación de video capaces de grabar [correo electrónico protegido] no pueden grabar [correo electrónico protegido] o [correo electrónico protegido] ?

¿Cuáles son algunas de las dificultades que un candidato experimentado (10-15) debe tener en cuenta en una entrevista de diseño de sistemas de software?

¿Cuál es el alcance de las pruebas de software en el futuro?

¿Qué tipo de trabajo pueden ofrecer las empresas basadas en productos como Flipkart, Facebook, etc. a los ingenieros / desarrolladores de software que se unen cada año? ¿Cuál es el tipo de trabajo que uno puede esperar después de unirse a esas compañías cuando el producto con el que la compañía ya está creada?

¿Debería esperar mucho estrés si me cambio a un trabajo de desarrollador de software de EE?

¿Existe una correlación entre los diseñadores de software / juegos y los científicos sociales?