¿Cuál es una buena forma concreta de evaluar la capacidad de codificación C ++ de un candidato a trabajo?

Creo que la mejor manera de evaluar la capacidad de codificación de C ++ de un candidato es tener su código en C ++. A menudo combinamos múltiples habilidades durante las entrevistas. Para centrarse en la capacidad de codificación, elimine tantas otras variables como pueda.

  • No hagas que el candidato descubra el algoritmo.
  • No haga que el candidato busque los requisitos del caso límite o los verdaderos significados de las especificaciones vagas.
  • No hagas el programa de pares candidato.
  • No presente a la candidata ni defienda su solución ante un grupo.

En lugar:

  • Deletree exactamente lo que desea que codifique el candidato, incluido su comportamiento normal, casos extremos, requisitos de rendimiento e interfaces (esta es la parte concreta ).
  • Déle una computadora conectada a Internet, un IDE o entorno de shell de su elección (dentro de lo razonable) y acceda a los recursos que necesite.
  • Dale un tiempo razonable para completar la tarea.
  • Tenga casos de prueba preconstruidos para ejecutar contra su código terminado, estilo caja negra, para su corrección.
  • Realice una revisión formal del código de su código fuente, uno a uno, con ella, y espere que entienda completamente el código que escribió.

No tiene que escalar lo que le pide al candidato al nivel del trabajo. Todo lo que quiere saber es si el candidato puede codificar algo que esté completamente especificado en un período de tiempo razonable usando C ++.


Para una entrevista reciente, me pidieron que escribiera el juego de la vida en C ++, con algunos giros. Esto no fue solo una prueba de codificación: tuve que descubrir estructuras de datos, algoritmos y casos extremos, y tuve que presentar y defender mi solución ante media docena de desarrolladores senior.

El estudio me dio mucho tiempo para escribir el juego fuera del sitio, solo y con cualquier recurso que quisiera usar. Decidí probar algunas características de C ++ 11 que no eran totalmente compatibles con los entornos predeterminados, así que utilicé los compiladores alternativos clang ++ / MINGW.

El uso de esos compiladores alternativos me permitió escribir un código C ++ más compacto y fresco, pero molestó al equipo que me entrevistó. ¿Quién quiere instalar un nuevo entorno solo para comprobar la prueba de codificación de alguien?

En general, me gusta la forma en que este estudio maneja la etapa de codificación de su proceso de entrevista. Lo he visto de muchas maneras, la mayoría inferiores. Sin embargo, la conclusión aquí es que, aunque lo llaman un “desafío de codificación”, se trata de mucho más que la codificación. Si realmente quieres saber si una persona puede codificar, solo haz que codifiquen.

A2A.

Recomiendo el enfoque tradicional de estructuras de datos y algoritmos. Por razones simples, crea solucionadores de problemas sobre aquellos que pueden verse tentados a aprender de memoria. es decir. Algunos problemas que resuelvo en realidad no sabía cómo resolverlos antes de analizar la pregunta.

Ese es el objetivo de la ingeniería y el aprendizaje, los reclutadores quieren a alguien que pueda resolver un problema rápidamente y no necesariamente un candidato que haya aprendido material de ingeniería de memoria.

De hecho, recomiendo el enfoque de entrevista de estructuras de datos porque generalmente identifica solucionadores de problemas inteligentes y rápidos y los separa de los aprendices de memoria.

Una entrevista de algoritmos le dará un candidato que puede resolver problemas rápidamente, incluso cuando el candidato no haya conocido ese tipo de material antes.

Estamos tratando de evitar este aprendizaje de memoria.

Gracias por el A2A.

No puede haber una sola respuesta a esta pregunta. Los trabajos son diferentes, los entornos de desarrollo son diferentes, incluso “codificar” significa cosas diferentes en diferentes lugares.

Un lugar podría estar construyendo middleware de alto rendimiento y espera un candidato que esté en casa en perf y vtune, que pueda tomar la pila sin bloqueo de Concurrency in Action y mostrar varias formas de hacerlo más rápido (pregunta real que respondí una vez, bolígrafo y -papel).

Otro lugar podría estar buscando un candidato que pueda salir de una doble libertad o corrupción y que al menos haya oído hablar de shmat y msgsnd o que pueda demostrar que no les llevará mucho tiempo aprender a ser productivos en ese ambiente

Sin embargo, otro lugar podría estar construyendo algo nuevo y buscando un candidato bien versado en tecnologías disponibles, bibliotecas y sus compensaciones.

Otro lugar podría estar buscando a alguien que entienda cómo funcionan los números de punto flotante y pueda escribir código numéricamente estable (supongo que la suma de Kahan y todo lo que está mal es una buena pregunta inicial)

Otro lugar podría estar buscando la manipulación de documentos, alguien que pueda lidiar con el análisis, los grupos de grafemas o la edición (supongo que es justo pedir crear una estructura de datos para representar de manera eficiente el texto grande mientras se está editando)

Algún otro lugar podría estar buscando a alguien que prometa a quién moldearía en el entorno corporativo, siempre que sea bueno en lógica, informática y atención a los detalles.

No creo que haya una única forma concreta que pueda ser útil, al igual que no hay una certificación C ++ útil.

Comience por definir el dominio de C ++ que sea de mayor valor para la organización. C ++ es un lenguaje de paradigmas múltiples y necesita comparar manzanas con manzanas. A continuación, comenzaría preguntando al candidato sobre su experiencia anterior en programación en C ++ y cómo sería de valor para resolver problemas en el dominio que le interesa a su organización. Utilizando la información obtenida del candidato hasta este punto, haga que esbocen en una pizarra cómo podrían abordar el diseño de diversas soluciones a problemas que son importantes para su organización.

Para mí, me gustaría ver un proyecto de digamos 2000–5000 líneas que ellos mismos han hecho completamente. Desde el código fuente, luego haría preguntas.

Creo que eso diría mucho sobre la capacidad de organizar el código, usar algoritmos, etc., y sería mucho más útil que preguntas específicas sobre este o aquel aspecto del lenguaje.

More Interesting

¿Qué quiere decir un gerente de contratación cuando dice 'definitivamente eres un contendiente para el trabajo'?

¿Alguien ha rechazado una oferta para trabajar en Google?

¿Por qué algunas agencias de reclutamiento en línea me piden que solicite un puesto de alto nivel cuando mi experiencia está por debajo de los requisitos?

Cómo conseguir un trabajo de reclutamiento independiente

¿Son efectivos los desafíos de codificación para evaluar a un candidato de ingeniería de software?

¿Cuáles son algunas historias de rechazo interesantes debido a la sobrecualificación?

¿Cuál es la descripción del trabajo de un procesador de préstamos hipotecarios?

¿Por qué los reclutadores le preguntan al entrevistado cómo fue la entrevista?

Cómo comenzar a prepararse para el proceso de reclutamiento del campus

¿Puede un reclutador interno detener el proceso de solicitud una vez que pasa información al gerente de contratación por 'razones personales'?

¿Cómo podemos hacer reclutamientos sin portales de trabajo remunerados?

¿Cuál puede ser la próxima generación o el siguiente nivel de proceso de contratación que podemos adoptar para hacerlo mejor?

¿Qué te emociona sobre el futuro de la búsqueda de ejecutivos?

¿Cómo es contratar a la persona equivocada? ¿Y qué haces después?

¿Por qué las firmas consultoras siempre reclutan a los candidatos más brillantes? ¿Qué es lo que estos brillantes candidatos de las mejores universidades poseen que un estudiante universitario normal no posee?