¿Por qué las compañías de software preguntan a ingenieros experimentados sobre estructuras de datos y algoritmos (por ejemplo, los detalles de Quicksort)?

Soy programador profesional en Norteamérica por más de dos décadas. Aprendí a clasificar algos en 1994 como parte de mi maestría en CS. Pero, sinceramente, no he escrito una sola función de clasificación profesionalmente. Los algoritmos de clasificación están disponibles de fábrica en la mayoría de los desarrolladores. ambientes. También lo son la mayoría de las otras estructuras de datos. Para los desarrolladores experimentados, el conocimiento del funcionamiento interno de estos algos es insignificante cuando se desarrollan aplicaciones grandes. Lo más importante es saber qué algo debe usarse en qué situación.

Hay varias otras dimensiones (en una entrevista técnica) que se utilizan para determinar si el desarrollador es un desarrollador experimentado. Rutinariamente pregunto a los candidatos sobre:

  • Multithreading
  • Patrones de diseño
  • Bases de datos (relacionales y documentos)
  • Conceptos ORM
  • Lenguajes (C ++, Java, mecanografiado, C #)
  • Computación distribuída
  • Servicios web
  • Métodos de implementación
  • Recopilación de requisitos
  • Diseño orientado a objetos
  • Conceptos de diseño de interfaz de usuario
  • Seguridad de la aplicación
  • Conocimiento relacionado con el dominio.
  • Metodologías y experiencia de desarrollo de casos de prueba
  • Habilidades de solución de problemas de producción
  • Habilidades generales para resolver problemas
  • Y varios otros temas

Utilizo la pregunta de estructura de datos solo para desarrolladores junior que acaban de salir de la escuela y los aprendieron recientemente. Muchas veces los principiantes también carecen del conocimiento de la mayoría de los aspectos anteriores del desarrollo de software. En tales situaciones, los temas que han aprendido en la escuela son indicativos de qué tan bien y con cuánto interés, estudiaron CS.

Por un momento, suponga que las compañías no le piden a Ds & Algo a ingenieros experimentados.

Digamos que un empleado Ramesh (experimentado) está trabajando en un inicio como SDE . La compañía trabaja principalmente en el marco Django ( lenguaje Python ). Ramesh quiere dejar el trabajo por una mejor oportunidad y salario. Solicitó gigantes tecnológicos como Google, Amazon, Microsoft, Facebook. Afortunadamente su currículum está en la lista de la empresa. El departamento de recursos humanos de la compañía programó la entrevista.

La compañía quiere contratarlo como empleado para los micro servicios cuyo idioma principal es java

Durante la entrevista:

I: Cuéntame sobre ti

R: bla bla bla ………….

I: ¿Qué son las colecciones en java?

R: Aa … en realidad … esto es … (no puede responder mientras trabajaba en Python)

I: Ok, entonces, ¿qué es el micro servicio?

R: Lo siento, pero pertenezco al fondo de Python. Mi código base es monolítico

I: Pero necesitamos a alguien que tenga experiencia en Java

**Situación incómoda**

Debería haber una plataforma / tema común para saber qué empleado es mejor, trabajador, óptimo para la empresa y no creo que haya ningún reemplazo de Ds y Algo para los chicos de software.

Aquí hay algunas razones:

  • Si le pregunta a un desarrollador cuántos días le llevará aprender un nuevo idioma a un buen nivel (no experto), principalmente un mes
  • Si le pregunta a un codificador cuántos días le tomará ser un buen codificador, como mínimo un año
  • Casi todos saben que la mayoría de las compañías hacen preguntas que están disponibles en Geeks For Geeks. Pero, ¿cuántos seleccionados? En mi universidad, alrededor de 10 en 120. ¿Solo pensar por qué?

Depende.

Incluso si lo hacen en algunas situaciones, para candidatos experimentados ese no será el factor decisivo.

DS y Algo son una forma muy imprecisa, cruda y poco confiable de evaluar a un candidato. Es la forma más rápida y transparente de realizar pruebas para ser justos.

Si tuviera que juzgar a dos candidatos, uno CSE y otro no CSE, el candidato CSE tendrá ventaja.

Un candidato CSE llegará a la estructura de datos y al algoritmo correctos en el primer intento, el candidato que no sea CSE alcanzará la solución óptima después del éxito y la prueba.

En el mundo real, el desarrollo de software se realiza para muchos casos de uso y verticales de la industria, de los cuales un importante CSE ni siquiera ha oído hablar. Por lo general, las personas de dichos dominios realizan el desarrollo de software específico para sus dominios.

También considere el hecho de que los lenguajes más comunes / convencionales tienen bibliotecas bien desarrolladas que proporcionan estructuras de datos y algoritmos comunes. La mayoría no practica DS y Algo para sus deberes profesionales. Entonces, no entiendo cuán realista es pedirle a alguien que implemente un RBT de repente. De todos modos, tenemos mano de obra excedente en TI, por lo que los empleadores son selectivos.

Si .

Preguntaron sobre las estructuras de datos porque ahora la era se trata de Big Data y para Big Data, las estructuras de datos son la raíz del procesamiento de datos.

Algoritmo: tal vez tienes mucho miedo de esta palabra,

Esto es lo más hermoso que has escuchado y aprendido.

Los algoritmos son encontrar las soluciones óptimas para los problemas.

En empresas basadas en productos como Google, Amazon, Microsoft y todas las grandes empresas gestionan grandes datos. Sus requisitos principales son el conocimiento sobre estructuras de datos y algoritmos.

Así que primero crea algoritmos para problemas y codifícalo.

No se requiere un conocimiento profundo en la compañía de software, sino un conocimiento básico de las estructuras de datos.

Aunque en las empresas no tiene que trabajar de acuerdo con usted, debe trabajar de acuerdo con ellas.

Piénselo dos veces, codifique los.

Bueno, soy CEO en el negocio de desarrollo web y móvil y soy responsable de contratar desarrolladores en mi empresa. Entiendo que el conocimiento de quicksort no es vital para realizar el trabajo de desarrollo en nuestra empresa, pero al hacer esa pregunta puedo:

  1. Comprenda el nivel del candidato cuando se trata de cosas fundamentales, no solo algunos conocimientos de “thingy.js”. Les ayuda a resolver problemas complicados relacionados con la optimización y el rendimiento del software.
  2. Siga el razonamiento del candidato cuando la pregunta es difícil para él / ella que le ayuda a comprender cómo trabajar juntos en el futuro. El candidato solo puede darse por vencido / dar una respuesta incorrecta rápida / pensar por algún tiempo.
  3. A veces entiendo el razonamiento de los candidatos sobre si deberían / ​​no deberían saber tales cosas.
  4. Verifique si el candidato tiene la curiosidad de preguntar cómo funciona y aprender.

Mi consejo es no contratar personas a largo plazo basándose únicamente en sus conocimientos técnicos. Una persona con personalidad molesta puede arruinar a su equipo incluso si él / ella es un buen desarrollador. Somos sociales después de todo.

Espero que ayude.

Porque la habilidad para resolver problemas es un buen denominador común. Cuando entrevista a cientos de candidatos todos los días en todas las oficinas globales, tiene que haber una forma estándar y objetiva de evaluarlos. Las personas migran a través de equipos y ubicaciones dentro de una empresa y no debería ser necesario reevaluarlas por completo cuando eso suceda.

La industria ha decidido adherirse a las estructuras de datos y algoritmos, ya que se espera que casi todos los ingenieros de software los conozcan y los traten en el lugar de trabajo. Además, la mayor parte de la contratación ocurre a nivel de entrada y los entrevistados pueden no tener experiencia en CS.

Importancia de Matemáticas, DS y Algoritmos

Dos razones, una para comprender qué tan bien puede explicar e implementar un algoritmo simple como quicksort. Otra es que están bastante atrapados en este proceso de entrevista. Nadie podría encontrar una mejor para filtrar a los candidatos. Casi todos los procesos están sesgados hacia algún conjunto de candidatos, por lo que aquí hay uno que no es perfecto pero que ciertamente ayuda a filtrar candidatos.

Para responder a su pregunta en su forma más simple: se ha puesto de moda. Esa es una gran razón por la que muchos lo hacen. Desafortunadamente eso es solo eso.

Pero hay muchos que no. Esta es la parte más detallada. Y hay buenas razones. No solo para esta pregunta, sino para cualquier cosa que involucre algoritmos o estructuras de datos.

Una de las cosas que hace es decirle como gerente de contratación dónde está la persona con respecto al conocimiento de CS. Te da una idea de su curiosidad. Sus habilidades para resolver problemas.

Incluso cuando no saben la respuesta, francamente, muchos de estos algoritmos no son necesarios para el trabajo en cuestión, pero les da la oportunidad de ver si lo saben, y si no lo hacen, ¿cómo reaccionan? ¿Qué tipo de curiosidad muestran? ¿Hacen preguntas si no lo hacen? ¿Parecen querer saber más?

Si les das una parte, ¿podrán descubrir el resto? Si es así, estos son buenos indicadores de las habilidades para resolver problemas. Que es realmente lo que quieres en un buen desarrollador. Alguien con grandes habilidades para resolver problemas. Esa es toda la razón para hacer muchas de las preguntas que se encuentran en este sentido.

Las estructuras de datos y los algoritmos son útiles para las aplicaciones basadas en el escritorio (softwares que funcionan en la computadora). Las cosas de datos juegan un papel importante en la recuperación y búsqueda de datos rápidamente. ¿Qué colección funciona mejor para la situación? El tipo de información etc. será útil para diseñar una aplicación de escritorio con cualidades de alto rendimiento. Los algoritmos son una forma general de escribir código. Los empleados con experiencia deben saber cómo funciona la Estructura de datos. Si el empleado no tiene idea de cómo recuperar / buscar datos más rápido según la situación, ¿cómo puede ese candidato ser un experimentado?

El 95 por ciento de los ingenieros de software no tienen conocimientos básicos sobre los temas principales. No podemos culparlos por la universidad privada que había repetido el 90 por ciento de las conferencias de ese 95 por ciento de ingeniero. Entonces, ¿cómo sería el producto resultante? Es para verificar de qué porcentaje eres.

¡SI!

Hoy en día, las empresas se centran más en el conocimiento práctico que en el conocimiento académico y las calificaciones. Si tiene experiencia o certificación en los campos que solicita, tendrá más oportunidades de obtener un mejor trabajo.

Las estructuras de datos y los algoritmos son conceptos básicos de codificación y desarrollo. Si es un ingeniero experimentado, significa que tiene un sólido conocimiento de las estructuras y algoritmos de datos. Todas las grandes compañías tecnológicas preguntan sobre esto a cada ingeniero que van a contratar.

¿Cómo se supone que deben saber si realmente son ingenieros experimentados si no les hacen estas preguntas? Ese es el punto de las preguntas de la entrevista: evaluar y verificar la habilidad y la experiencia de los candidatos. Si todos confiaran en lo que sea que estuviera en el currículum, entonces las entrevistas no existirían. Pero lo hacen porque los entrevistadores tienen preguntas adicionales basadas en lo que dice el currículum y a menudo quieren verificar esa información personalmente. Esto se ha convertido en un proceso tan estándar que a menudo se automatiza con preguntas de entrevistas de programación en línea. Los candidatos reciben estas pruebas y se filtran según los resultados para que los entrevistadores puedan centrarse en los mejores programadores.

Bueno, sí depende de la especialización que desea seguir.

Sin embargo, las estructuras de datos y los algoritmos son el libro de reglas básico al que se hará referencia en todo tipo de técnicas de resolución de problemas que puede necesitar aplicar en casi todos los demás campos relacionados con la informática.

En un intento por averiguar si son ingenieros experimentados. Quiero decir que puede que lo sepas, ¡pero no van a tomar tu palabra!

¿Por qué las entrevistas de ventas tienen alguna variante de “venderme este bolígrafo”?

Misma razón.

More Interesting

Tengo 36 años. Dispara directamente conmigo. La industria tecnológica es notoriamente ageista. ¿Es demasiado tarde para comenzar una carrera como desarrollador de software?

Soy un desarrollador de software que trabaja en asp.net MVC. ¿Qué tecnología web debo aprender a continuación?

Soy estudiante de ingeniería mecánica y me encargo del desarrollo de software. ¿Me equivoco?

¿Cuáles son algunas prácticas básicas de administración de bases de datos relacionales que un desarrollador de software debe adoptar desde el principio?

Como desarrollador de software con 8 años de experiencia, me siento desesperado y frustrado ya que me despidieron 5 veces debido a mis pobres habilidades de programación. ¿Qué tengo que hacer?

Cómo obtener una visa para el trabajo de un desarrollador de software en Canadá, ser ciudadano de la UE y no tener un título relevante

Siento que la programación se trata de unir piezas de código y rezar para que funcione. ¿Este sentimiento de caos y suciedad desaparecerá cuando me convierta en un programador senior?

¿Qué tan difícil es hacer un servidor web completo con todas las características necesarias por ti mismo?

¿Qué cosas han mejorado los niveles de habilidad de los desarrolladores de software o los han hecho profesionales? ¿Cuáles son algunas historias?

Cómo comenzar con el desarrollo de software independiente

¿Qué puede hacer un ingeniero de software por su país?

¿Cuál es el potencial (monetario) de un negocio de desarrollo de software personalizado, una tienda de consultoría de software para ser precisos?

¿Prefieres hacer una programación competitiva (o) trabajar en tus propios proyectos (o) tomar algunos buenos cursos en Coursera para mejorar tus habilidades de codificación? ¿Por qué?

¿Cómo puedo trabajar como buen desarrollador de software?

¿Es el desarrollo de software una mala elección de carrera si quieres permanecer en el medio oeste?