¿Es "Explicar el lenguaje RAII" una buena pregunta de detección de C ++? [cerrado]

13

Una empresa con la que trabajo me ha pedido que realice las pruebas de teléfono de los candidatos para asegurarme de que no estén completamente avergonzadas cuando envían a alguien a un posible cliente.

Resulta que un buen número de personas se colocaron para un rol de desarrollador de C ++. No paso mucho tiempo en C ++, pero he hecho algunos proyectos triviales y no triviales en el lenguaje. Pensé que "Explicar el lenguaje RAII" sería una buena pregunta de softbol que la mayoría de los desarrolladores de C ++ podrían responder mientras estaban medio dormidos, y me permitirían pasar a preguntas más interesantes sobre la experiencia. Pero resulta que las personas que tienen más de 10 años de experiencia en C ++ no reconocen el término, incluso si amplío el acrónimo a "La adquisición de recursos es la inicialización". Un candidato llegó al punto de decir que sentía que no siempre era práctico aplicar la técnica en el desarrollo de Windows, lo que pensé que era un sentimiento extraño, pero pude ver un par de ejemplos que posiblemente apoyan esa línea de pensamiento. (Pero realmente solo posiblemente ).

Incluso un par de desarrolladores de C ++ que conozco lo suficiente como para juzgar su competencia dijeron que no reconocían el término, pero al leer un resumen de la técnica dijo "Oh, sí, no sabía que tenía un nombre" . Solo pensé en esas cosas como algo que solo tienes que hacer ". Recuerdo el término de la segunda edición del libro de Stroustrup, a pesar de que el impacto total no se detuvo en ese momento.

Entonces, es "¿Me puedes explicar el lenguaje RAII?" una pregunta de selección justa? ¿Es razonable esperar que todos los desarrolladores de C ++ competentes lo entiendan? ¿Es el término más esotérico de lo que pensaría? Suponiendo que un candidato no conozca el término, ¿hay preguntas de seguimiento que podrían ayudarme a determinar si al menos han internalizado las prácticas que hacen que el RAII funcione? ¿Hay mejores preguntas "alternativas" que le den al candidato cierta libertad para responder y que ayuden al candidato a demostrar su comprensión del desarrollo de C ++?

Edición para agregar : para aclarar, no soy el tipo de entrevistador que descalifica a las personas porque no conocen las palabras de moda ni las siglas. Sin embargo, creo que es razonable esperar que un programador experimentado en C ++ haya internalizado las buenas prácticas para la gestión de recursos. También creo que es importante verificar que un candidato entienda algunos "conceptos básicos" acerca de la tecnología en la que afirma tener experiencia antes de pasar a preguntas más interesantes sobre diseño, resolución de problemas, etc. Creo que lo que busco es una buena manera para hacer una pregunta abierta, adecuada para usar en una evaluación telefónica corta, que puedo usar para juzgar la comprensión básica de un candidato de las buenas prácticas de gestión de recursos en C ++, antes de hacer preguntas "difíciles".

    
pregunta JasonTrue 07.06.2011 - 22:46

6 respuestas

23

Parece que has descubierto que los desarrolladores de C ++ que conoces por experiencia son competentes y no están familiarizados con ese acrónimo o incluso con la expresión completa. Eso solo parece indicar que la pregunta no es adecuada como una pregunta de detección durante una llamada telefónica.

Por otro lado, podría llegar al mismo punto de forma más indirecta planteando un escenario. Algo como: "Estás implementando una clase de registro que escribirá la información de registro en un archivo. Obviamente, necesitarás tener una variable miembro que sea un identificador de archivo (std :: FILE *). ¿Dónde asignas y liberas este archivo? ¿encargarse de?" Si el candidato comienza a hablar sobre la creación de un método open () y close () en lugar de asignar el identificador de archivo en el constructor y desasignar el identificador en el destructor, puede continuar preguntando cómo se comportaría su clase si el llamando al código de excepciones planteadas, etc.

    
respondido por el Justin Cave 07.06.2011 - 23:02
15

No creo que sea una pregunta práctica, ya que se propone. Creo que encontrarás muchos desarrolladores que caerán en el campamento "oh, sí, no sabía que tenía nombre". Le sugiero que pruebe a los candidatos en el concepto y no en el nombre del concepto. Déles un ejemplo de código y pregunte por qué está incompleto o pídales que demuestren que conocen el concepto.

    
respondido por el GEL 07.06.2011 - 22:52
3

Creo que es una pregunta válida. Aunque no sé qué tan popular es el término RAII (en mi equipo, usamos el término RAII todo el tiempo), pero el concepto de manejo de recursos es importante, especialmente si desea una seguridad de múltiples hilos y seguridad excepcional. .

    
respondido por el Armando 07.06.2011 - 23:02
3

Bueno, sé que cuando quiero saber si alguien es competente, lo primero que hago es verificar su conocimiento de las siglas. Una vez que se haya establecido, me aseguro de que sepan los nombres de otras tecnologías que creo que suenan bien. Si todavía siguen ahí después, les pido una lista de sus colores favoritos.

No puedo soportar este tipo de cosas. Quiero decir, en mi final de la entrevista, esto es sirenas y campanas de advertencia. No quiero estar trabajando en un lugar donde realmente importa que conozco mnemotécnicas extrañas que mi jefe cree que son "fundamentales". No puedo molestarme en aprender los nombres de personas con los que he tratado durante años, así que estoy seguro de que no malgastaré el espacio del cerebro con bonitas siglas que describen las mejores prácticas.

Mira mi código. Pregúntame cómo haría las cosas. Dibujaré basura en una pizarra hasta que las vacas vuelvan a casa. Te codificaré una aplicación. No me hagas preguntas de trivialidades. La trivia siempre es impredecible, y nunca es fundamental.

    
respondido por el Satanicpuppy 07.06.2011 - 23:03
1

Si su propósito es eliminar a los incompetentes totales rápidamente, intente algo como esto:

Prueba de FizzBuzz

Luego, puede dejar los conceptos y prácticas de C ++ a quienes estén en una mejor posición para evaluar la experiencia de C ++.

    
respondido por el Harold Bamford 08.06.2011 - 00:19
0

Es una pregunta válida, pero no para la detección. Lo usé como una pregunta escrita, para ser discutida en la entrevista. Puede obtener mucha información sobre los patrones de pensamiento con un aviso previo. Como una pregunta de selección es solo una trampa desagradable.

    
respondido por el david.pfx 25.03.2014 - 11:28

Lea otras preguntas en las etiquetas