¿Cómo se convirtieron las preguntas sobre estructuras de datos y algoritmos en la norma para las entrevistas tecnológicas?

Estaba leyendo la respuesta de Eric Conner a ¿Cuáles son las lecciones de vida más profundas del profesor de Stanford John Ousterhout? el otro día y esta pregunta sobre las prácticas de entrevistas tecnológicas me vino a la mente.

Un poco de pendiente compensa muchas intersecciones en y

Las habilidades de resolución de problemas de un candidato a entrevista son su “pendiente” y su conocimiento es su “intercepción en y”. Cuando los entrevistadores dan a los candidatos problemas algorítmicos para resolver, su enfoque para resolver el problema es realmente lo que se está probando. Obtener la respuesta correcta es solo el resultado de un buen enfoque. Considere la alternativa; preguntas sobre las experiencias y conocimientos de los candidatos. Esto le da al entrevistador una gran comprensión de dónde está el candidato, pero no a dónde va el candidato . Como dice la historia en la respuesta de Conner, las líneas con pendientes más pronunciadas superan incluso las líneas con altas intersecciones en y.

En resumen, las preguntas sobre algoritmos y estructuras de datos son excelentes para medir la aptitud de un candidato para abordar el trabajo por venir. La aptitud es cómo un nuevo empleado puede convertirse rápidamente en un miembro productivo del equipo. Tener muchos conocimientos específicos es una ventaja, pero solo no indica el potencial de un candidato.

Los puestos tecnológicos son únicos en el impacto que tienen en la empresa:

  • Están muy bien pagados
  • Un buen desarrollador de software puede crear un producto sorprendente que haga que la empresa tenga mucho éxito
  • Un mal desarrollador de software puede matar al equipo y dañar el producto, paralizando la empresa.

Compare eso con un vendedor que puede ganar mucho en ventas pero que no va a hundir a la compañía si tiene un mal trimestre. A la luz de estas circunstancias, tiene sentido que una empresa quiera verificar si alguien puede hacer el trabajo. Las preguntas de comportamiento y los currículums son útiles, pero no le dicen si la persona puede usar la tecnología, si pueden trabajar bien con el resto del equipo y si pueden cumplir dentro de un plazo.

Por lo tanto, tiene sentido verificar las habilidades técnicas de alguien. Las entrevistas de estructura de datos y las pruebas de algoritmos se hicieron populares porque mostraron que usted sabía algo sobre el código. Las pruebas de algoritmos, en particular, podrían automatizarse fácilmente, ya que funcionaban como una buena pantalla tecnológica.

Sin embargo, el problema es que tanto las estructuras de datos como los algoritmos no forman parte del día a día del desarrollo de software. De hecho, cualquier desarrollador experimentado tendrá problemas para hacer ambas cosas, mientras que alguien recién salido de su título de CS probablemente lo hará mejor. ¿Porqué es eso?

La mayoría de los desarrolladores usan herramientas como bibliotecas para implementar algoritmos y estructuras de datos para que puedan enfocarse en los problemas más grandes.

Los recién graduados, por otro lado, han tomado recientemente una clase de algoritmo, por lo que el tema está fresco en su mente. La verdad es que ser bueno en una entrevista de estructura de datos o pruebas de algoritmo es una habilidad separada para ser un buen desarrollador de software.

Entonces, ¿por qué no probar las habilidades que te hacen un buen desarrollador de software? Es realmente fácil hacerlo ahora con plataformas como Devskiller. Puede usar Devskiller para darles a sus candidatos de programación una tarea basada en los tipos de problemas comerciales que enfrentarán en su primer día de trabajo. Los candidatos tienen acceso a todos los recursos que normalmente usarían, incluidas bibliotecas, marcos, Stack Overflow y Google, entre otros, y luego se espera que entreguen una solución dentro de un plazo, tal como lo necesitarán.

La prueba se administra y evalúa automáticamente para que puedan ser administrados por reclutadores no técnicos. En lugar de simplemente comprobar si el candidato conoce un algoritmo, el sistema verifica la solución por su eficiencia, simplicidad y limpieza. Al probar un problema del mundo real en condiciones reales, obtienes la mejor indicación de qué tan bien lo hará el desarrollador cuando comience a trabajar para ti.

Hay dos tipos de contratación que hacen las empresas:

  1. Primer tipo de contratación contratamos candidatos con buena capacidad de resolución de problemas. Asumimos que si son buenos como DS y Algo, se les puede enseñar cualquier idioma / plataforma / tecnología y pueden aprender y resolver nuestros problemas fácilmente. Además, el entrevistador necesita una prueba común para juzgar a varios candidatos de diferentes orígenes.
  2. El segundo tipo de contratación de la compañía está buscando algún tipo específico de conjunto de habilidades y publicarán el trabajo de acuerdo con él. Los candidatos que mejor se ajusten a ese puesto serán seleccionados.

Cuando acaba de salir del collage o tiene una experiencia inferior a 5 años, se lo considera nuevo y se lo juzga utilizando sus alféizares DS y Algo, ya que queremos candidatos que puedan aprender nuestra tecnología rápidamente y ser productivos. A medida que aumenta la experiencia, el patrón cambia más a la segunda categoría.

Había visto preguntas de DS hechas a partir de 10 años de experiencia, pero a medida que su experiencia aumentaba la importancia de la capacidad de diseño del sistema de un candidato aumenta.

Si buscas preparación para la entrevista. Puede comenzar con “ Resolución de problemas en estructuras de datos y algoritmos ” escrito en varios lenguajes como C, C ++, Java, C #, Python, Go, etc. Estos libros son fáciles de seguir y están escritos para el punto de vista de la entrevista . Además, estos libros tienen el último capítulo sobre Diseño de sistemas , que también se requiere en las entrevistas.

Los enlaces de los libros en Amazon están abajo:

1. Resolución de problemas en estructuras de datos y algoritmos utilizando C

2. Resolución de problemas en estructuras de datos y algoritmos usando C ++

3. Resolución de problemas en estructuras de datos y algoritmos utilizando Java

4. Resolución de problemas en estructuras de datos y algoritmos utilizando C #

5. Resolución de problemas en estructuras de datos y algoritmos usando Python

6. Estructuras de datos y algoritmos en Go

Descargo de responsabilidad: soy autor de todos los libros anteriores.

Las empresas tecnológicas necesitan solucionadores de problemas.

Las matemáticas (álgebra, trigonometría, geometría, cálculo, probabilidad, …) han estado ayudando al hombre a resolver problemas durante siglos. Sin embargo, no todas las soluciones se capturan en “fórmulas”. Algunas soluciones requieren realizar una secuencia de operaciones inteligentes utilizando computadoras (algoritmos) después de almacenar entradas / datos de una manera particular en la memoria (estructuras de datos).

De hecho, cualquiera que haya estudiado algoritmos podrá clasificar todas las soluciones que tienen una fórmula matemática directa como O (1) o “algoritmos de tiempo constante”.

Entonces, DS&A es realmente una extensión de Matemáticas cuando se trata de resolver problemas. No es de extrañar que se convirtiera en la columna vertebral de las entrevistas tecnológicas.

More Interesting

¿Cómo me preparo para una entrevista de programación cuando tengo 7-8 meses?

¿Por qué los entrevistadores siempre te hacen sentir tonto en la entrevista de programación?

Cómo abordar sistemáticamente los problemas de retroceso

Cómo encontrar la matriz definida positiva más cercana a una matriz dada

¿Cuáles son las preguntas que se le hacen a un ingeniero de instrumentación en una entrevista técnica?

¿Cómo se borra una entrevista de codificación algorítmica una vez que ya se encuentra en la industria del software y ha perdido totalmente el contacto de la codificación algorítmica / Programación competitiva?

¿Cuáles son los tutoriales que proporcionan la comprensión profunda de los conceptos básicos de Java?

¿Es un factor decisivo que, durante mis entrevistas en Google, cuando terminé de resolver un problema, el tiempo casi había terminado y el entrevistador no podía hacerme una segunda pregunta?

¿Qué puedo esperar en la evaluación en línea SDE de Amazon? ¿Puede alguien que haya realizado la evaluación darme ejemplos de los tipos de preguntas formuladas?

En entrevistas tecnológicas, ¿cómo podemos escribir un código que sea limpio, conciso, optimizado en tiempo y espacio y que cubra todos los casos básicos y de borde de una vez?

Cómo prepararse para la entrevista de Microsoft Skype para el puesto de consultor asociado

Cómo medir la calidad del código

¿Cómo se puede dividir una secuencia de enteros 'n' en particiones contiguas y no vacías 'm' de manera eficiente de modo que la suma de los máximos de todas las particiones 'm' sea mínima (m <n)?

¿Cuáles son las preguntas que se hacen en una TI (entrevista técnica) y una PI (entrevista personal) en el sistema de reclutamiento de Dell?

Soy por naturaleza un pensador analítico lento y solucionador de problemas. ¿De todos modos puedo pasar una entrevista de programación?