una tipos preguntas para investigacion hacer entrevistas entrevista como caracteristicas c++

tipos - ¿Qué tipo de preguntas de entrevista son apropiadas para una pantalla de teléfono con C++?



tipos de preguntas en una entrevista (4)

Me gusta averiguar si las personas realmente saben algo sobre las herramientas que están usando. Y también encuentro que los desarrolladores "senior" pueden tener graves lagunas en su conocimiento.

Podrías considerar preguntar

  • Qué es un vtable
  • Cómo funcionan las plantillas
  • Cuál es la diferencia entre el montón y la pila. ¡La profundidad de la respuesta a esta podría ser bastante esclarecedora!

La respuesta "realmente necesitas entrevistarme" a la última pregunta cubriría

  • asignación - límites, casos de uso, modos de falla, eficiencia, limpieza de recursos, destructores
  • stack call-frames: qué sucede cuando se llama a una función, parámetros, backtraces

Curioso por obtener los pensamientos de las personas. Realizo entrevistas frecuentes y he tenido suficiente en mi carrera para reflexionar sobre ellas, y he notado una amplia gama de preguntas. Hice este c ++ específico, pero vale la pena señalar que la gente me hizo preguntas de complejidad algorítmica por teléfono, y ni siquiera quiero decir cuál es la complejidad de una búsqueda hash frente a un árbol binario, me refiero más a analítica problemas, como "imagina que hay 4 abejorros, cada zumbido bla bla bla".

Ahora, personalmente, prefiero mantener las pantallas del teléfono un poco más concretas, y dejar las preguntas abstractas para la pizarra. Entonces, cuando realiza entrevistas telefónicas en c ++, ¿qué tipo de temas cubre, especialmente para los desarrolladores sénior?

Sé que hay otro hilo similar a esto, pero, francamente, parece haberse olvidado por completo de que se trata de pantallas de teléfonos, no de entrevistas cara a cara. Además, esto es más específico de C ++.


Preguntaría acerca de la administración de recursos / memoria, porque es un tema importante en C ++, y no requiere código concreto. Simplemente dibuje un escenario hipotético simple y pregúnteles cómo garantizarían que se libere algún recurso vital incluso frente a errores / excepciones. Supongamos que están desarrollando una aplicación de red, ¿cómo se aseguran de que cerremos nuestros enchufes correctamente? Por supuesto, la respuesta correcta sería envolverlo en un objeto RAII, pero no se lo pregunte directamente (es fácil buscar en Google "RAII", mientras que la pregunta anterior "¿cómo garantizaría que los recursos se liberen correctamente?" Realmente le muestra si o no, conocen las técnicas apropiadas. Si responden "envolver todo en try / catch", pueden tener un problema. Y esto se relaciona muy bien con las preguntas sobre las diferencias entre el montón y la pila.

Es posible que también pueda formular una pregunta simple sobre la seguridad de excepciones, que no requiere ningún código real. En general, diría que una discusión de todos los diversos modismos de C ++ podría ser una buena idea, porque muchos de ellos no requieren mucho código real, pero siguen siendo conceptos vitales específicos del lenguaje.

Ver si saben sobre punteros inteligentes (de nuevo, preferiblemente al darles una situación en la que se requieren punteros inteligentes, y ver cómo resolverían el problema), y tal vez plantillas / metaprogrammin (en este último caso, probablemente solo averigüen si '' tenga en cuenta que es posible, en lugar de exigirles que codifiquen metaprogramas reales en el teléfono)

También es posible que desee preguntar acerca de algunas áreas comunes de comportamiento indefinido (¿cuáles son los valores de ayb después de ejecutar a = b++ + b++? ??), O asignar una matriz de 10 elementos y agregar 10 u 11 al puntero de la matriz , y pregunte cuál es el resultado en cada caso (+ = 10 es legal, le da un puntero pasado, + = 11 no está definido). O denles un escenario en el que necesiten copiar muchos objetos y pregúnteles cómo lo harían (copia simple para cada elemento a la vez, memcpy o std :: copy son respuestas obvias. Tenga en cuenta las advertencias con memcpy , que no es seguro para objetos que no sean POD)

O pregunte sobre su estilo de codificación en general. ¿Cómo se sienten acerca de los iteradores? ¿Prefieren los viejos for-loops? ¿Saben cómo usar std :: for_each o std :: transform?

Editar: Parece que la sugerencia a a = b++ + b++ (la respuesta es comportamiento indefinido, por cierto) en particular generó muchos comentarios. Tal vez las personas leen demasiado. Como OP dijo que prefería hacer preguntas concretas (no abstractas, y fáciles de explicar / responder / discutir por teléfono), eso revelaría un poco acerca de las habilidades C ++ del entrevistado, y esto es simple (y sí, quizás quisquilloso) ) ejemplo de eso. El razonamiento detrás de esto es que 1) tiene un significado intuitivo, que es incorrecto, y 2) debes tener un cierto nivel de experiencia con C ++ antes de darte cuenta de esto. Y por supuesto 3), es corto y fácil de preguntar por teléfono. No requiere que nadie escriba código desglosado. No, no revelará si el candidato es un "gran programador", pero como entendí la pregunta, ese tampoco era el objetivo. Si alguien se equivoca, no significa mucho, pero si lo hacen bien, puede estar bastante seguro de que conocen un poco de C ++. Pero si vuelves a leer mi respuesta, verás que fue solo un ejemplo rápido de una categoría de preguntas que pensé que deberían representarse. C ++ está lleno de comportamiento indefinido, incluso en un código que parece completamente inofensivo e intuitivo. Pedirle al candidato que reconozca alguna instancia de esto puede ser útil, ya sea el ejemplo "modificar la misma variable dos veces en la misma expresión" anterior, o algo diferente.


  • Patrones de diseño
  • Conceptos básicos de C / C ++
  • Funciones virtuales
  • Polimorfismo
  • Conceptos de la serie de Scott Mayer
  • Acerca de las plantillas (No en orden particular)

Por último pero no menos importante. Les daré un ejemplo de problema. Les digo que diseñen las clases. Solo las interfaces.


Como parte de la pantalla de un teléfono para las posiciones en C ++, me he preguntado ''¿Quién es Bjarne Stroustrup?''.

Me parece sorprendente que muchas personas que afirman ser desarrolladores senior de C ++ no puedan identificarse. Sugerencia para hablantes de inglés: vaya a su sección de Preguntas frecuentes y escuche la pronunciación correcta antes de hacer la pregunta.