Usar preguntas modelo en una entrevista técnica [cerrado]

14

Recientemente tuve una discusión con un colega sobre preguntas técnicas en entrevistas. Como graduado, visité muchas empresas y noté que usaban las mismas preguntas. Un ejemplo es "¿Puedes escribir una función que determine si un número es primo o no?", 4 años después, creo que esa pregunta en particular es bastante común incluso para un desarrollador junior. Puede que no esté mirando esto de la manera correcta, pero ¿no deberían las casas de software ser lo suficientemente inteligentes como para pensar sus propias preguntas de entrevista? He estado en unas 16 entrevistas como graduado y las mismas preguntas surgieron en aproximadamente el 75% de ellas. Esto me lleva a creer que muchas empresas son flojas y simplemente Google: 'Preguntas de plantilla para entrevistar a desarrolladores de software' y creo que se están perjudicando a sí mismas al adoptar este enfoque.

Pregunta: ¿Es mejor utilizar un conjunto de preguntas de alguna plantilla o las casas de software deberían esforzarse por ser más originales y crear su propio material de entrevista?

Desde mi punto de vista, si fracasé en una entrevista y me fui y busqué buenas respuestas a las preguntas en las que me equivoqué, podría pasar por la próxima entrevista si las preguntas son las mismas.

Planeta desolado
fuente
1
Por curiosidad, ¿dónde se originaron las preguntas de estilo FizzBuzz?
Desolate Planet
1
La empresa de software debe tener cuidado de no involucrarse demasiado con la pregunta de que se convierten en la persona que ha pasado miles de horas perfeccionando la solución que la mayoría de las personas tardaría unos días en obtener a menos que hayan estado con la compañía y hayan visto la pregunta. ya.
JB King
2
Use preguntas de plantilla, si está de acuerdo con las respuestas de plantilla.
back2dos

Respuestas:

18

Muchos de esos tipos de preguntas se mantienen precisamente porque es difícil formular preguntas claras, que requieren el menor conocimiento posible del dominio, requieren la capacidad de crear un algoritmo sin ser una pregunta capciosa que alguien " obtener "o" no obtener ", y que las personas tengan antecedentes históricos de respuestas para comparar al candidato. Y las mejores preguntas tienen múltiples niveles de respuestas correctas que permiten al entrevistador evaluar las habilidades de resolución de problemas del candidato. Si alguien sugiere un algoritmo trivial de búsqueda principal, por ejemplo, podemos hablar sobre cómo podría optimizar la implementación o el entrevistador para guiar al candidato hacia uno de los algoritmos más sofisticados.

He estado en grupos donde varios desarrolladores diferentes calificaron cuán difícil sería un problema particular para un conjunto de entrevistados y las estimaciones estaban por todo el mapa. Mucha gente mira FizzBuzz inicialmente y lo descarta como demasiado fácil. Si ingresa a la entrevista sin comprender bien cuán difíciles son las preguntas, la quinta persona que entrevista tiene una gran ventaja sobre la primera persona porque ha aprendido que las personas luchan con FizzBuzz mientras usted formó una impresión negativa de la primera persona. lo entrevistaron porque tuvieron luchas idénticas.

Si los desarrolladores presentan nuevas preguntas, también tienden a tener conocimiento cultural o de dominio involuntario incrustado en ellos. Harán preguntas sobre un deporte, por ejemplo, que tiende a dar una ventaja a las personas que conocen las reglas de ese deporte que pueden detectar rápidamente una ambigüedad o hacer una suposición "obvia". Alguien que no está familiarizado con el deporte tiene que descubrir las reglas del juego sobre la marcha y es mucho más probable que cometa un error o que obtenga una respuesta menos sofisticada. O harán una pregunta que suponga involuntariamente que los candidatos sabrán / recordarán algún dato relativamente menor. Alguien que ha estado trabajando en sistemas contables durante años, por ejemplo, puede suponer que todo el mundo sabe qué es un sistema de contabilidad de doble entrada o que una pregunta que suponga una definición simple de esquema de sistema de contabilidad de doble entrada sería clara para un desarrollador competente. Pero podría arrojar fácilmente a un buen desarrollador que tiene que entender la idea de un débito en efectivo aumentando el saldo en efectivo y un crédito disminuyendo el saldo en efectivo. Sin embargo, alguien que haya tomado la Contabilidad 101 se daría cuenta rápidamente. Si su intención era probar la familiaridad del candidato con la contabilidad, esta podría ser una pregunta perfectamente razonable. Pero si no está buscando un experto en la materia, sería problemático. Pero podría arrojar fácilmente a un buen desarrollador que tiene que entender la idea de un débito en efectivo aumentando el saldo en efectivo y un crédito disminuyendo el saldo en efectivo. Sin embargo, alguien que haya tomado la Contabilidad 101 se daría cuenta rápidamente. Si su intención era probar la familiaridad del candidato con la contabilidad, esta podría ser una pregunta perfectamente razonable. Pero si no está buscando un experto en la materia, sería problemático. Pero podría arrojar fácilmente a un buen desarrollador que tiene que entender la idea de un débito en efectivo aumentando el saldo en efectivo y un crédito disminuyendo el saldo en efectivo. Sin embargo, alguien que haya tomado la Contabilidad 101 se daría cuenta rápidamente. Si su intención era probar la familiaridad del candidato con la contabilidad, esta podría ser una pregunta perfectamente razonable. Pero si no está buscando un experto en la materia, sería problemático.

Si bien supongo que es posible que alguien pueda memorizar las respuestas a los cientos de preguntas de plantilla "comunes" que la gente usa, eso no me molesta mucho como entrevistador. En primer lugar, sería algo impresionante si lo hicieran y reflejaría un poco de laboriosidad y resolución de problemas. En segundo lugar, generalmente sería una buena capacitación: si el desarrollador sabe cómo invertir una cadena, conoce algunos algoritmos para encontrar primos, sabe cómo escribir bucles e implementar construcciones de control para FizzBuzz, conoce los diversos algoritmos de gráficos que vienen regularmente, etc., es probable que sean un desarrollador bastante completo. Si el desarrollador logra memorizar las respuestas sin aprender nada, quedarían atrapados cuando el entrevistador quisiera profundizar un poco o ellos '

Justin Cave
fuente
7

Creo que hay preguntas fáciles como fizzbuzz, invertir una cadena, etc., y luego hay ciertas preguntas, mientras que si no las ha visto antes, es difícil obtener la solución óptima deseada con la presión adicional de la entrevista y el corto tiempo restricciones La peor parte es que a veces los reclutadores sin conocimientos técnicos hacen algunas de estas preguntas y están buscando una respuesta muy específica ... Si no das la respuesta óptima, piensan que eres un idiota absoluto. Incluso si su respuesta funciona, resuelve el problema, y ​​aunque puede no ser óptimo, no es demasiado ineficiente ...

Algunos ejemplos:
¿Cómo barajarías una baraja de cartas? Buscan el método Fisher-Yates http://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffleotras respuestas son "incorrectas" ... Esto no es algo que probablemente sepa a menos que desee barajar cartas antes y específicamente lo haya buscado. Podría tropezar con eso en el curso de la respuesta, pero por lo que he visto, esperan que conozca este frío, por lo que es dudoso que haya mucho tiempo para permitir encontrar la solución. Otra forma menos eficiente (pero quizás más obvia) es crear una nueva matriz con un puntero a la matriz original y un número que sea un número aleatorio y luego ordenar la matriz por el número aleatorio. Luego use la matriz ordenada para construir una nueva matriz de tarjetas. En cualquier caso, obtuve 0 créditos por presentar eso a un reclutador.

Otro ejemplo es la pregunta sobre cómo detectaría un número duplicado en una lista de n números, todos del 1 al n-1. La respuesta obvia (que es relativamente eficiente en una perspectiva de tiempo) es usar una tabla hash para insertar cada elemento y si encuentra uno ya insertado, entonces encontró el duplicado. La respuesta óptima es porque los números están entre 1 yn si no hay duplicados, puede obtener la suma esperada como n (n + 1) / n. Luego, si sumas la matriz, obtienes la suma real, que es nd menor que la suma esperada. Así que básicamente n - (Suma esperada - Suma real) = número duplicado ... Es un caso bastante especial ... En realidad, vi algo antes en una publicación en línea sobre problemas de entrevistas hace mucho tiempo sobre un tema relacionado con el mismo truco, así que Estaba bien ...

Otro, invierte todas las palabras en una cadena sin usar ningún espacio adicional. Tuve que pensarlo y el reclutador se mostró bastante impaciente en los 5 minutos que pensé (dividir y volver a unir la cadena en reversa, o ir palabra por palabra en una nueva matriz son muy fáciles). Se me ocurrió encontrar el borde de la última palabra, encontrar el final de la primera palabra y desplazar constantemente la lista completa por 1 y luego insertar la letra correspondiente. Luego repite hasta que hayas llegado al final de la lista. Este método funcionó y el entrevistador estuvo de acuerdo (era un poco técnico), pero es bastante ineficiente. Cuando llegué a casa busqué la respuesta óptima, y ​​es simplemente revertir la lista, luego revertir cada palabra individual. Algunas personas pueden pensar en eso,

Ahora es cierto una vez que haya visto algunos de estos problemas, puede resolverlos más fácilmente. Porque hay algunas preguntas similares con algunos de los mismos trucos. Sé especialmente que la fórmula n (n-1) / 2 y la lista de números tiene varias variaciones. Pero aún no sé qué prueban estas preguntas. Un FizzBuzz es algo que todos deberían poder hacer (aunque he visto variaciones que no son tan simples, en cuyo caso empiezo a cuestionar si incluso eso es realista para una situación de entrevista sin poder escribir / depurar el código). Algunas de estas preguntas son obvias una vez que las ve, pero si no las ha visto, no lo son. Después de todo lo que alguien mencionó, tardó años en aparecer la primera implementación correcta de la búsqueda binaria ... En este momento, la búsqueda binaria es tan obvia porque todos pueden leer sobre ella.

Sin embargo, creo que la peor parte es cuando las personas no técnicas hacen las preguntas porque no pueden apreciar que su solución es correcta, aunque no óptima. Simplemente saben que su solución no es la presentada y, por lo tanto, todo está mal, no obtiene crédito por el intento. Incluso las soluciones no óptimas a menudo muestran un conocimiento de construcciones de programación. A menos que esté programando juegos de póker, no me importa lo bien que alguien pueda barajar una baraja de cartas. E incluso si lo fuera, después de mostrarles el algoritmo eficiente, estoy seguro de que cualquiera que sea medio decente podría seguirlo.

Las preguntas de plantilla parecen dar una ventaja a los candidatos que han estado entrevistando durante más tiempo, ya que es más probable que hayan visto más de las preguntas de plantilla. Incluso FizzBuzz, la primera vez que lo ves, puedes enloquecer, pero a medida que lo ves una y otra vez te acostumbras más. Lo mejor que puede hacer es presentar un desafío de codificación que requiere una lógica empresarial personalizada. Por ejemplo, cree un conjunto de datos (matriz de objetos / registros) y luego cree algunas reglas comerciales para aplicar a cada objeto y devuelva una respuesta ... por ejemplo, algún tipo de calificación, etc. pero reglas muy personalizadas). Si bien es probable que hayan visto los registros en bucle y apliquen la lógica muchísimas veces, sus reglas serán únicas, por lo que al menos tendrían que comprender e implementar con éxito las reglas que creó.

Digamos el salario proyectado y una lista de candidatos y sus 3 mejores videojuegos favoritos, y tal vez un salario inicial. Los candidatos a los que les gusta Zelda reciben una penalización de 300, los candidatos a los que les gusta la sirenita obtienen una bonificación de 200. Los candidatos que gustan de Donkey Kong y Super Mario Brothers pero no el Dr. Mario obtienen un bono de 300. Los candidatos a los que les gusta Metroid o Kid Icarus obtienen un bono de 200, etc. Parece un poco loco, pero les mostrará su capacidad para traducir las reglas de negocios en construcciones lógicas de programas y probar su comprensión de la lógica booleana. En general, no es muy diferente a fizzbuzz, excepto que no usa módulos y bucles. Por supuesto, podría darles la lista y hacer que la recorran e impriman los resultados en la pantalla utilizando también criterios de salida específicos.

Cervo
fuente
4

En mi última búsqueda de empleo, estaba en una situación muy similar. Creo que tenía la misma pregunta de la lista vinculada en todas las empresas, excepto en una (en la que actualmente estoy empleado).

Una cosa que noté fue que estas preguntas se dieron en la primera entrevista.

Desde el punto de vista de los entrevistadores, si una persona no puede responder estas preguntas correctamente, entonces no se preparó para la entrevista, entonces ¿por qué perder más tiempo con ellas? Sin embargo, no creo que esta sea la idea correcta. La compañía obtendrá un montón de personas que pueden recitar respuestas de Google para pasar a la siguiente ronda, pero no necesariamente un grupo de personas que sean desarrolladores competentes.

Encontré personalmente las preguntas repetitivas de FizzBuzz molestas, pero fue una entrevista fácil. Me gusta una entrevista desafiante. Cuando entrevisto a empleados potenciales, me gusta asegurarme de saber que pueden pensar y resolver problemas. Espero que puedan usar Google.

¿Debería una empresa tener una plantilla de preguntas? Si. Ayuda a evaluar candidatos para las primeras rondas. ¿Debería la plantilla estar compuesta de problemas genéricos que se pueden encontrar fácilmente a través de Google? No. Eso solo cambia a todos los involucrados.

Tyanna
fuente
4

"¿Deben las casas de software esforzarse por ser más originales y crear su propio material de entrevista?"

Sí, deberían, pero prácticamente lo que sucede es que usted entra al trabajo y encuentra un correo electrónico de RR. HH. Que dice que está en el ciclo de entrevistas para dos candidatos mañana. Ya estás preparado para caimanes, y tu gerente no te agradecerá que te hayas tomado medio día para formular nuevas y buenas preguntas para la entrevista. Presionado por el tiempo, recurres a las preguntas que te han hecho o que puedes encontrar rápidamente en Google.

Charles E. Grant
fuente
2
sí, y entonces estás muy contento de tener un documento lleno de buenas preguntas para la entrevista, mientras que de lo contrario podrías estar mirando al tipo que lucha por algo significativo que preguntar
Doug T.
3

Las preguntas como usted menciona normalmente son preguntas de fizzbuzz y no son una pregunta utilizada para la contratación; son una pregunta negativa (es decir, las respuestas correctas no te darán trabajo de ninguna manera, pero las respuestas incorrectas te arrojarán a la basura). Entonces no son muy valiosos.

Son las preguntas que vienen más tarde las que necesitan pensar y, a menudo, tienen una fuerte relación con el tipo de trabajo que realiza la empresa y cómo es la dinámica del equipo.

Entonces la respuesta es: ambos.

Steven Evers
fuente
44
Estoy de acuerdo en que las preguntas al estilo fizzbuzz son preguntas negativas ... ¡pero no golpees a las personas equivocadas fuera del autobús!
Peter K.
2

Si la mayoría o todas sus preguntas son iguales, de hecho es algo malo (para ellos, eso es). Eso probablemente muestra que el entrevistador no está bien preparado para la tarea.

Tenga en cuenta que el uso de preguntas de nivel de entrada de "plantilla" como la prueba FizzBuzz puede ser aceptable para eliminar al totalmente inepto rápidamente, sin invertir demasiado tiempo y esfuerzo. Aunque incluso entonces, las variaciones en el tema son útiles para evitar escuchar respuestas directamente de Google. Por otra parte, es fácil preguntarle al candidato qué hace realmente el código escrito y por qué funciona (o no). Creo que un entrevistador técnicamente competente puede detectar rápidamente si alguien solo finge saber la respuesta.

Y lo más importante, si alguien pasa la prueba de nivel de entrada, las preguntas más difíciles deberían surgir, donde ya no es suficiente recitar respuestas enlatadas. Personalmente, estoy más interesado en los procesos de pensamiento y las habilidades de resolución de problemas del entrevistado en general, en lugar de la solución específica a un acertijo. El otro tema importante serían los procesos y enfoques de desarrollo: inicio una discusión abierta en lugar de preguntas concretas sobre estos temas. No hay una respuesta correcta o incorrecta sobre estos temas, por lo que no hay posibilidad de prepararse con anticipación. Pero de una discusión, aprendo mucho sobre si yo y el equipo estaríamos cómodos trabajando con este candidato.

Por lo tanto, una cantidad limitada de preguntas de "plantilla" está bien, pero una buena entrevista es un proceso fluido, donde el entrevistador debe adaptarse a la situación, incluido el nivel de habilidad del candidato (anunciado y real), el estado mental (nerviosismo / cansancio), etc.

Péter Török
fuente
Sí, pero digamos que le das la prueba de FizzBuzz a alguien que no es adecuado y falla. Podrían buscar buenas respuestas y pasar esa pregunta en otra compañía, esto es lo que me molesta y creo que las compañías deberían tener la obligación de no usar preguntas de plantilla. Cualquier buen desarrollador senior de software debería ser capaz de pensar buenas preguntas, que van desde fácil a difícil.
Desolate Planet
2
@Desolate Planet: Sin embargo, sospecho que las personas que fallan en fizzbuzz no son del tipo que busca las respuestas ... solo esperan no recibir la pregunta en la próxima entrevista.
Steven Evers
Hmm ... pero incluso después de que estropean 3 o 4 entrevistas, serán lo suficientemente inteligentes como para detectar patrones en las preguntas que se les hagan. Nuevamente, esto es solo un pensamiento que he tenido sobre las entrevistas técnicas en general y me parece una mala manera de hacerlo.
Desolate Planet
1
@Desolate, entonces pueden conseguir un trabajo en una empresa que aparentemente ni siquiera se preocupa por filtrar bien a los solicitantes de empleo ... así que ambos obtienen lo que se merecen.
Péter Török
@ Peter, estoy de acuerdo con lo que dices, pero es bastante injusto para otros solicitantes que pueden ser adecuados para el trabajo y tienen algo que pueden contribuir a la empresa. Es posible que no tengan la oportunidad porque alguien ha buscado excelentes respuestas y ha pasado por el proceso. No digo que todas las compañías sean así, pero generalmente cuando me uno a una compañía, tienen un documento de Word en la unidad de red con una lista de preguntas de entrevistas y se ven más o menos iguales. Simplemente me parece muy vago.
Desolate Planet
2

Mi plantilla de entrevista en pseudocódigo:

si la pregunta (FizzBuzz_type_question) == correcta entonces

para cada (pregunta q en array_of_more_interesting_questions) pregunta (q) else

entrevista final

Jim en Texas
fuente
1

Creo que la entrevista debería dividirse en:

  • Aspecto social (aparte de los recursos humanos): ¿esta persona encaja bien en nuestra organización? ¿Tiene la actitud correcta? ¿Está dispuesto a seguir nuestro estilo de gestión? Esto debe ser original ya que las empresas y los equipos son diferentes.

  • Idoneidad general para el rol: una vez más, esto debería diferir de un lugar a otro

  • Núcleo: preguntas de materia que se centran en el área principal del trabajo: esto es científico y no necesita ser original, ya que es científico.

  • Idoneidad laboral diaria: Estas son preguntas sobre temas que espera que el candidato haga diariamente. Puede ser científico, pero es mejor que sea por el trabajo real que se espera que haga. Esta parte variará de un lugar a otro.

Ninguna posibilidad
fuente