¿Cómo reaccionar ante preguntas incorrectas / no respondidas durante la entrevista? [cerrado]

31

Hoy he realizado mi primera entrevista con posibles pasantes. Si bien esto ha sido en su mayoría preguntas abiertas, he tenido algunas tareas de programación triviales para ellos:

  • Escriba una función que devuelva verdadero si los lados del triángulo (todos los enteros) a, byc pueden representar un triángulo rectángulo .
  • FizzBuzz.
  • Calcule el enésimo elemento de Fibonacci usando la recursión (si no supieran qué es Fibonacci , incluso les escribiría la definición F (n) = F (n-1) + F (n-2); F (1) = 1; F (0) = 1).
  • Implemente la lista de estructuras para la función de entero y escritura para revertirla.

Obviamente, estas son tareas muy fáciles y no estaba preparado para que alguien no las resolviera.

¿Cómo debo actuar cuando luchan con estas preguntas? ¿Debo renunciar a la respuesta? ¿Dar punta a punta (hice eso y terminé resolviendo el problema yo mismo)? ¿O simplemente seguir adelante (o tal vez simplemente detenerse) con la entrevista?

PD. Al tener problemas con las preguntas, no me refiero a tener un error, me refiero a si ni siquiera pueden comenzar. Este fue un caso con Fibonacci y las preguntas de la Lista.

Mykolas Simutis
fuente
66
Consulte este artículo para obtener un punto de vista alternativo sobre este tipo de preguntas.
Matthieu
2
Están en su último año. pero habría resuelto los problemas incluso antes de unirme a la universidad, así que para mí fue bastante impactante.
Mykolas Simutis
2
Voy a tener que ser duro aquí; Si alguien no puede implementar una estructura de lista, no tiene ninguna razón para programar, o al menos no hay razón para contratarlos. ¿Y luego leí que es su último año en la universidad? Esto implica una educación de varios años, y en ese momento definitivamente deberían saber algo tan básico como eso. Dicho esto, creo que es justo mostrar cortesía y continuar la entrevista. Puede ser una casualidad, y realmente son programadores brillantes.
Max
2
Todo el rechazo contra este tipo de preguntas me hace rascarme la cabeza. Los encuentro agradables y creo que cualquiera que no haya disfrutado este tipo de cuestionarios probablemente no tiene la mentalidad de ser ingeniero. He visto esta serie de artículos quejumbrosos en contra de cuestionarios y estoy bastante confundido sobre todo.
Bill K
3
Espera, ¿por qué hiciste las preguntas si "no estabas preparado para que alguien no las resolviera"? ¡En general, habría pensado que la razón por la que hizo la pregunta fue para discriminar entre programadores "buenos" y "no tan buenos"! Además, como lector de este sitio web, ¡estoy doblemente sorprendido de que pensaras que todos serían capaces de resolverlos! De todos modos, tenga en cuenta que los estudiantes probablemente estarán realmente nerviosos y pueden tener antecedentes diferentes. Además, ¿qué tipo de trabajo van a hacer? Tengo sentimientos encontrados sobre este tipo de preguntas.
Antonio2011a

Respuestas:

36

Dijiste que estás entrevistando para puestos internos en la pregunta, así que esto es desde ese punto de vista, para los desarrolladores a tiempo completo la barra será un poco más alta.

Cuando entreviste a pasantes, debe recordar que es posible que no hayan completado sus estudios y que también hayan ingresado a la universidad sin experiencia previa en programación y ciencias de la computación. Como tal, debe escalar las expectativas a lo que razonablemente puede esperar que alguien conozca y al grado de prestigio de la posición (es decir, Google puede salirse con las expectativas que una empresa de la que la gente no ha oído hablar puede).

Al revisar las preguntas que presentó, probablemente las vería de la siguiente manera en una entrevista:

1) Escriba una función que devuelva verdadero si los lados del triángulo (todos los enteros) a, byc pueden representar un triángulo rectángulo.

Aplicación básica de geometría con codificación simple, la mayoría de los estudiantes deberían poder hacerlo sin mucha dificultad. A lo sumo, podría ser necesario un recordatorio del Teorema de Pitágoras si muestran un poco de estrés por estar en una entrevista. Esto casi podría verse como un problema de "impulso del ego", ya que puede ayudar a calmar a algunas personas si están muy nerviosas antes de la entrevista.

2) FizzBuzz

Nuevamente, otra aplicación de algunas declaraciones de control básicas. Es posible que los estudiantes que no hayan estado expuestos al operador del módulo, o que no lo hayan usado mucho, necesiten recordarlo, pero no deberían encontrar ningún problema real para resolver el problema.

3) Calcule el enésimo elemento de Fibonacci usando la recursión (si no supieran qué era Fibonacci, incluso les escribiría la definición F (n) = F (n-1) + F (n-2); F (1 ) = 1; F (0) = 1).

Esto tiende a ser un problema bastante común, por lo que la mayoría (si no todos) los estudiantes lo verán en algún momento antes de la graduación. El problema es que generalmente aparece cuando se presenta la recursividad a los estudiantes, ya que se presta bien o es una solución recursiva o en bucle que luego se puede comparar para que los estudiantes de diferentes escuelas puedan verla en diferentes momentos dependiendo de la secuencia de los cursos. En la práctica, si a alguien no se le ocurriera el recursivo, pediría una alternativa usando bucles y si no se le ocurriera eso, me preocuparía más su potencial capacidad.

4) Implemente la lista de estructuras para la función de entero y escritura para revertirla.

Esta pregunta en realidad podría ser demasiado abierta, ya que está escrita, por lo que también podría ser una buena pregunta para ver cómo el candidato busca información adicional (por ejemplo, si se deben incluir funciones de eliminación, conversión a matrices, etc.), pero si enunciado del problema definido ("Implementar una estructura de lista básica para enteros que permita agregar números al final o en un índice arbitrario, eliminarlos e incluir una función para devolver una copia invertida de la lista") que los estudiantes deberían poder resolver El problema siempre y cuando las listas sean una estructura común presentada ya sea en un curso temprano de estructuras de datos o en un curso básico temprano de informática.

En términos de tratar con los candidatos, si tienen dificultades, asegúrese de que estén relajados y permítales un poco de indulgencia, ya que podrían estar teniendo ansiedad por el rendimiento, ya que esta podría ser su primera entrevista real. Es posible que se requieran consejos para resolver los problemas, sobre todo en el caso de los problemas tercero y cuarto en lugar de los dos primeros.

Además, estructure el proceso general de la entrevista para que haya puntos de "salida elegante" incorporados. Por ejemplo, puede tener la siguiente agenda:

  • Conocer y saludar, procedimientos de entrevista.
  • Entrevista corta con programadores del personal, preguntas básicas sobre antecedentes.
  • Presentación de cuestionario de programación.
  • Descanso
  • Regreso del descanso, despido de algunos candidatos que no encajan bien.
  • Entrevista extendida con programadores del personal.
  • Entrevista con recursos humanos (si es necesario).
  • Envolver.

Este flujo de entrevistas tiende a funcionar bien si desea poder despedir a los candidatos antes de tiempo, ya que saben desde el principio que podrían ser despedidos después del descanso. La breve entrevista antes de la prueba también significa que no solo se presentan para tomar el examen, lo que les permite practicar algo de la entrevista y también puede permitirles decidir que no encajan bien. Si hay otros programadores observando el cuestionario o asistiendo al candidato durante el mismo, entonces también les da la oportunidad de aprobar / reprobar al candidato mientras están tomando un breve descanso.

En todo momento, cuando esté entrevistando para una pasantía y los candidatos sean estudiantes, debe recordar que todavía son estudiantes y es posible que no tengan mucha práctica con las entrevistas (lo que conduce a una posible ansiedad por el rendimiento) y que también no hayan llegado al punto en sus estudios para incluso poder responder a las preguntas, lo que significa que podría ser una buena idea enviarlas en su camino con una copia de las "soluciones ideales" a los problemas que se les presentan también.

rjzii
fuente
3
+1 muy buena respuesta. Creo que el resultado del desempeño en tales pruebas solo debería ser "un factor" para decidir si contratar. Podría perderse algunos buenos candidatos para pasantías si usa esto como un estricto filtro de ir / no ir. Los pasantes están, por definición, probando algo nuevo. No solo son nuevos en su profesión, sino que también pueden ser inexpertos al tratar de ser puestos "en el lugar". Hay un componente emocional en eso y las personas lo manejan de diferentes maneras.
Angelo
@Angelo: es por eso que siempre soy fanático de tener una breve entrevista y cuestionarios observados / asistidos, ya que puede darles a las personas suficiente tiempo para ver si quieren seguir adelante con la entrevista o no. El descanso y la salida temprana son más para los candidatos en los que sabes que no quieres seguir adelante en comparación con los que simplemente no lo están haciendo tan bien como te gustaría en el cuestionario.
rjzii
Corto y dulce. Las preguntas enlatadas obtienen respuestas enlatadas. ¿Por qué no hacer una pregunta que determine algunos rasgos más importantes como, dinámica de equipo / colaboración, capacidad para improvisar, motivaciones individuales ...
Evan Plaice
82

Mi objetivo para cualquier entrevista de trabajo, sin importar de qué lado esté, es terminar sintiendo que estoy hablando con un colega. Los colegas entran a mi oficina todo el tiempo cuando están atrapados en un problema. Pido ayuda a mis colegas cuando me atoro. Entonces, en una entrevista, trato de recrear esa dinámica.

En otras palabras, ¿qué diría si un colega necesitara implementar una secuencia de fibonacci y no supiera de qué se trata? Se lo explicaría hasta que lo capten lo suficiente como para continuar por su cuenta. No hay vergüenza en la ignorancia, siempre que no sea permanente.

Si haces ese ejercicio y aún no puedes imaginarte trabajando con esa persona, entonces no son una buena opción para el trabajo.

Karl Bielefeldt
fuente
32
+1: desea recrear una dinámica de trabajo durante la entrevista, no una dinámica de aula.
Matthieu
3
+1: Exactamente correcto. Contrata en equipo, paga por experiencia y habilidades.
pdr
1
Buen punto. En mis entrevistas más exitosas, la gente hizo preguntas sobre los problemas que enfrentaban y pude ayudarlas a llegar a una solución. Sería bueno si pudieras tratar una entrevista como días de consulta.
Bill K
11
+1 para "No hay vergüenza en la ignorancia mientras no sea permanente".
mskfisher
9

El punto de hacer preguntas como esta en una entrevista es determinar si alguien puede descubrir cómo resolver problemas. El trabajo de ser un programador generalmente consiste en dos cosas: "Tomar estos requisitos e implementarlos en código" y "descubrir por qué la implementación no cumple con los requisitos y solucionarlo". Entonces, lo que realmente está buscando no es una solución a estas preguntas específicas, sino la capacidad de resolver las cosas.

Entendiendo esto, daría una o dos pistas para que alguien comience, y tal vez algo más si está claro que están haciendo un progreso real pero faltan detalles en alguna parte. Pero si queda claro que simplemente no pueden descubrir cómo resolver el problema, entonces tiene su respuesta y no hay necesidad de continuar con el ejercicio.

Para dar un ejemplo, cuando entrevisté en mi trabajo actual, me dieron una pregunta sobre cómo encontrar la ruta más corta de un nodo a otro en un gráfico. Respondí que probablemente usaría algo como el Algoritmo de Dijkstra, que recordaba vagamente haber aprendido un día en la universidad y que nunca había usado desde entonces, y di una explicación rápida (e incorrecta) que satisfizo las condiciones específicas dadas por el pregunta. El entrevistador señaló que mi solución terminaría en un bucle infinito si el gráfico se modificara ligeramente, y eso corrió mi memoria, así que le expliqué la forma correcta de evitar este problema. Y terminé consiguiendo el trabajo.

Mason Wheeler
fuente
6

para puestos de interno puede que estés preguntando un poco demasiado.

No tengo idea de lo que quieres decir con la cuarta pregunta. en cuanto a hacer una pregunta de recursión, es un poco poco práctico, revise su propia base de código y determine la cantidad de áreas que se usa la recursión, estoy dispuesto a apostar que es poca. Las situaciones de la entrevista son estresantes, y esperar que los candidatos implementen estrategias raramente utilizadas que son al revés en comparación con la mayoría de las cosas que programarás es injusto para ellos, especialmente al comienzo de una entrevista. Personalmente, estaría haciendo preguntas donde tienen que explicar qué significan los conceptos importantes / cómo se usan, proporcionando ejemplos enlatados. Me interesaría mucho más que los candidatos que pueden decirle que X book o Google Y search proporcionarán todo lo necesario para implementar algo en su base de código.

Ryathal
fuente
Gracias, pero déjame agregar algunas cosas. He estado en la misma facultad que ellos y hemos cubierto estas tareas en el primer semestre y aunque están en el último año, todavía creo que es una buena evaluación ver cómo son capaces de pensar y resolver problemas ( vamos, el Fibonacci es prácticamente regalado por ellos). Sobre la pregunta de la Lista, sí, no lo expliqué bien aquí, pero para ellos tomé más de una línea. ¡Y también tuvimos una discusión abierta sobre otras cosas de desarrollo de software, su motivación, etc.!
Mykolas Simutis
4

En mi humilde opinión, sus dos primeras preguntas deben poder resolverse para cualquiera que se llame a sí mismo programador, ya sea junior o senior, directamente de la escuela o autodidacta.

Si veo que el entrevistador está luchando con alguno de estos, trataría de reformular el problema y verificar si lo entendió completamente. Luego, aliéntela a usar lápiz y papel, pizarra, dibujar figuras o cualquier enfoque que prefiera para abordar el problema. También le pido que piense en voz alta, que vea su proceso de pensamiento y, si es necesario, que le dé pequeños indicios si está en el camino correcto, simplemente no se atreve a avanzar o tiene algún obstáculo. Pero si incluso varios consejos no ayudan, o, como mencionó anteriormente, termino resolviendo el problema para ella, probablemente terminaría la entrevista para detener el desperdicio de nuestro tiempo. En una entrevista, siempre me esfuerzo por ver y centrarme en lo que el candidato sabe, en lugar de lo que ella no sabe, pero si parece que no puedo encontrar ningún conocimiento significativo, me rindo después de un tiempo.

El tercero y el cuarto son un poco más difíciles, por lo que podría aceptar si un junior no puede obtenerlos, si de lo contrario demostró un buen enfoque y entusiasmo para resolver problemas. Pero para una persona mayor, todavía son una necesidad.

Péter Török
fuente
4

Tenía que buscar lo que querías decir con "FizzBuzz"; Resulta que había oído hablar del juego y sus reglas, pero no por ese nombre y no en mucho tiempo. Por lo tanto, no piense que no tiene que dar NINGUNA información a los entrevistados.

Dicho esto, todos estos son problemas de codificación básicos que esperaría que alguien entrevistando incluso para un puesto de codificación de nivel de entrada pueda pensar, si no pueden codificar una respuesta mediante inspección. Entonces estamos en la misma página allí. La respuesta a su problema depende de cómo se equivoquen:

  • Problemas menores de sintaxis: si espera código en un idioma determinado, no cuente demasiado si omiten un punto y coma o escriben mal un uso de algún identificador. La mayoría de los IDE lo detectarán de inmediato, y todos hacen errores tipográficos de vez en cuando. En casi todas las entrevistas en las que se esperaba que codificara algo, "pseudo-C-ish" era aceptable siempre que el algoritmo se comunicara correctamente al entrevistador y la lógica fuera sólida.

  • Defecto de lógica menor: si el algoritmo se comportara como se esperaba en la mayoría de los escenarios esperados, pero no en todos (digamos que al codificar FizzBuzz, 15 solo daría como resultado "Fizz" o "Buzz", pero no ambos como se supone que debería), entonces ser el "probador de la unidad" y señalar que el algoritmo fallaría en esa instancia, y ver si pueden solucionarlo. Es posible que hayan pasado por alto ese caso en particular o que no hayan entendido los requisitos lo suficiente. Ambos son nuevamente entendibles, ocurrencias cotidianas en la codificación, que deben superarse fácilmente simplemente proporcionando información adicional o comentarios.

  • Principales fallas lógicas: si el algoritmo no pasa la mayoría de los escenarios de prueba que se le dio, indíquelo también y vea si pueden solucionarlo. Esto es más un problema; o entendieron mal algún requisito muy básico del sistema, o pasaron por alto algún agujero lógico abierto. Pero, si pueden solucionarlo con más detalles del problema, sin que se les diga exactamente dónde está fallando su código, acéptelo a requisitos poco claros y continúe.

  • No sé por dónde comenzar / respuesta codificada a casos específicos / no puedo entender su pseudocódigo: Estas son las señales de alerta. Si le pide a alguien que codifique un algoritmo que sigue las reglas de FizzBuzz, explicándoles esas reglas, y obtiene una mirada en blanco, la entrevista ha terminado. Del mismo modo, si pueden poner ALGO en el tablero pero falla en grandes partes del espacio del problema, y ​​usted debe tomar su mano para ilustrar el fallo y cómo solucionarlo, no continuaría con una segunda entrevista. .

KeithS
fuente
¿Usa una aplicación práctica para evaluar a un entrevistador sobre las preguntas enlatadas que recibió en la escuela? Qué idea tan novedosa. +1
Evan Plaice
3

Si realmente tienes un pasante potencial que actúa como un ciervo en el faro porque nunca ha sido entrevistado, tiene problemas de ansiedad, nunca ha estado en una situación de la vida real como esa (generalmente lo notas en su lenguaje corporal), puedes comenzar por preguntándoles en qué trabajaron por última vez.

Entonces será su territorio, por lo que podría no estar locamente nervioso. Cuando encuentre un lugar apropiado, pregunte: "Oye, ¿cómo implementaste eso?". Si él puede explicar, podría darte una idea de su forma de pensar.

Pon tus propias pruebas en la agenda después de eso.

Raku
fuente
2

Fizzbuzz es un requisito absoluto. Si no pueden codificar Fizzbuzz, no debes contratarlos.

Por lo general, le pido al candidato una sesión de código previa a la entrevista, donde usamos Google Docs para resolver un problema de programación (generalmente Fizzbuzz + un problema de nivel superior si pueden completar Fizzbuzz fácilmente).

Normalmente estoy hablando por teléfono o en skype con ellos durante esto, y dado que los estoy viendo completar el problema (y hablando con ellos sobre lo que están pensando en ciertos momentos), puedo estar razonablemente seguro de que no lo hicieron. No busques en Google la respuesta.

Mientras sus otros problemas estén bien especificados (es decir, les dé la fórmula para cada uno), entonces sus preguntas estarán bien.

Cuando entrevisto a los candidatos, trato de mantener los problemas de programación que probablemente encuentren. Me encantan los problemas de manipulación de cadenas porque cuando estás en la web, casi todo lo que el usuario enfrenta tiene que ver con algún tipo de manipulación de cadenas. Cómo manejan eso es importante.

George Stocker
fuente
1

Depende del calibre de la posición que está tratando de llenar.

Si vas por un desarrollador senior, entonces esperaría que supieran todo eso. Si se equivocaban y me sentía mal, simplemente detendría la entrevista, gracias y adiós. Si estuviera de un humor más cortés, simplemente les agradecería y me apresuraría por el resto de la entrevista.

Si iba por un desarrollador junior, esas preguntas podrían considerarse bastante difíciles. Me interesaría más explorar su capacidad y disposición para aprender. Así que intentaría darles pistas y guiarlos y ver cómo responden.

Mongus Pong
fuente
Eran pasantes en su último año en la universidad, por lo que fui amable con ellos, sin embargo, no esperaba que hubiera problemas y ahora siento que he sido demasiado suave ..
Mykolas Simutis
No hay nada malo en detener la entrevista antes de tiempo y excusarlos si no tienen la oportunidad de conseguir el trabajo, solo asegúrese de ser cortés al respecto, el nivel del puesto no debería importar realmente.
rjzii
1

Las entrevistas internas son una clase diferente de entrevistas. Lo que normalmente hago es usar mis preguntas estándar de desarrollador (como las que usted proporcionó) para evaluar en qué nivel se encuentran en su educación. La capacidad de resolver estos problemas variará enormemente de estudiantes de segundo año a adultos mayores.

Después de tener esa información, enfoco la entrevista en otras habilidades como, por ejemplo, si podrán trabajar en un equipo, se les puede enseñar, se beneficiarán de la pasantía en nuestra empresa, si les apasiona el desarrollo / aprendizaje, etc.

Para mí, son las cosas no técnicas las que realmente diferencian a un interno de los otros candidatos. Preferiría pasar unos meses entrenando / asesorando a alguien que se esfuerza por aprender y crecer, que alguien que solo quiere un trabajo para el semestre.

Brian Dishaw
fuente
Tal vez sí, pero al no resolver estas preguntas, ¡realmente sentí que las estaría cubriendo desde lo más básico!
Mykolas Simutis
Es cierto, contratar a estudiantes de segundo año con poca o ninguna experiencia podría no funcionar para todas las organizaciones.
Brian Dishaw
1

Pregúntese qué valor puede agregar el entrevistado a su empresa. Tenga en cuenta el costo de involucrar a un mentor, especialmente si no pueden resolver los problemas a nivel fizzbuzz. Si la respuesta no es proporcional al salario previsto, entonces tiene un buen caso económico para no contratarlos.

No tenga miedo de volver a su gerente y decirle "no hubo candidatos que agregarían suficiente valor a nuestra empresa para que valiera la pena contratarlos". Esto tiene que ser un mejor curso de acción que terminar con alguien que en realidad tiene un valor negativo, debido al costo de tener a alguien que lo ayude constantemente.

Dawood dice que reinstalar a Monica
fuente
0

Mi respuesta puede parecer un poco desagradable o despectiva, pero creo que funciona bien. Para empezar, le doy al candidato una pregunta que es muy fácil, que sirve como una pregunta de calentamiento para ayudar a construir su confianza. Ya sea que tengan éxito o no, paso a una pregunta que es menos trivial y que está directamente relacionada con lo que implica el trabajo.

En este punto, es todo o nada. Si navegan por él, genial, no hay problema. Si luchan un poco, no hay problema, los ayudaré a seguir adelante y luego pasaré a otras preguntas para evaluar otras habilidades.

Sin embargo, si carecen por completo de la capacidad de resolverlo, continúo y quemo el resto del tiempo de la entrevista ayudándoles. El candidato todavía se siente involucrado en la entrevista, pero no tengo que dirigir la entrevista en direcciones diferentes e irrelevantes. También es bueno para el candidato, ya que puede ser educativo.

Kevin Hsu
fuente
0
  1. Intenta ser amable con ellos. Por sus preguntas se ve que no está tratando de ser amable incluso aquí. ¿Crees que todos deberían conocer este término "fizzbuzz"? ¿O deberíamos buscar en la red porque eras flojo para escribirlo tú mismo? Por el contrario, creo que todos aquí saben cuál es el triángulo rectángulo.
  2. ¿Qué es la "Lista de estructura"? No lo sé. Sé "la estructura de la lista". ¿Qué significa: Lista para entero? ¿Lista de enteros que quieres decir? Yo tampoco sabría cómo empezar. Y por favor, no hables, no eres inglés. Yo también. E incluso yo nunca había estado en un país de habla inglesa. Seguramente sabes que entero en plural será entero s . Si no estás tratando de ser comprensible con tus iguales aquí, puedo imaginar cómo te va allí .
  3. Cualquier programador alfabetizado sabe que la fila de Fibonacci es un ejemplo de libro de lo que no debe hacerse por recursividad. ¿Los estás probando para que se opongan a ti o para que codifiquen? Haga su trabajo y encuentre un mejor ejemplo para evaluar las habilidades en el uso de la recursividad.
  4. "Capacidad para trabajar bajo estrés" para un programador significa que podría trabajar por las noches cuando sea necesario. Pero si quieres tener buenos programadores, esperarán que su jefe sea un tipo muy amable, comprensivo y servicial. Si no lo eres, nunca tendrás buenos programadores. No son machos de ratas alfa. Si sienten alguna agresión, simplemente se cerrarán en sus caparazones y no harán nada.

Entonces, mi respuesta es: prepárate mejor.

PD: Ya eres un gerente, por lo que deberías tener mucho estrés.

Gangnus
fuente