Preguntas y respuestas de la entrevista de ingeniería de software [para principiantes y experimentados]

Publicado: 2020-11-18

La ingeniería de software es una de las opciones profesionales más buscadas en la actualidad. Los profesionales exitosos en este campo competitivo tienen que equilibrar sus habilidades técnicas, comerciales y personales para mantenerse a la vanguardia en el juego.

Además, el avance tecnológico está acelerando y alterando las industrias. Por lo tanto, es fundamental mantenerse al tanto de los conceptos fundamentales. A través de este artículo, abordaremos las principales preguntas y respuestas de la entrevista de ingeniería de software para guiarlo en su preparación.

Antes de pasar a las preguntas y respuestas, primero echemos un vistazo a algunas designaciones de trabajo que puede realizar en este dominio:

  • Diseñador de software
  • Desarrollador de pila completa
  • Programador de software
  • gerente de proyectos de TI
  • gerente de sistemas de informacion
  • científico de datos
  • Ingeniero de aprendizaje automático
  • ingeniero en la nube
  • ingeniero de ciberseguridad

Al entrevistarse para cualquiera de los puestos anteriores, su posible empleador evaluará sus conocimientos y habilidades conceptuales. Por lo tanto, los aspirantes a ingenieros de software pueden beneficiarse de la combinación de sus títulos con la experiencia práctica, ya sea a través de proyectos prácticos o pasantías.

Además, su capacidad de comunicación y su orientación al equipo pueden desempeñar un papel importante para diferenciarlo de sus competidores. Entonces, mientras se prepara para el ciclo de contratación, tenga en cuenta estas cosas.

Aprenda cursos de software en línea de las mejores universidades del mundo. Obtenga programas Executive PG, programas de certificados avanzados o programas de maestría para acelerar su carrera.

Con esto, ahora es el momento de profundizar en las preguntas más frecuentes en las entrevistas de trabajo de ingeniería de software.

Leer: Carrera en Desarrollo de Software

Preguntas y respuestas de la entrevista de ingeniería de software

1. Enumere los diferentes tipos de software.

Los programas informáticos se pueden clasificar en las siguientes categorías:

  • Software del sistema
  • Software de la aplicacion
  • aplicaciones web
  • software integrado
  • software de IA
  • software cientifico

2. Diferenciar entre un programa de computadora y software de computadora.

Un programa de computadora comprende un código de programación capaz de realizar una tarea bien definida al ejecutarse. Por el contrario, el software de computadora incluye archivos (documentación y guía del usuario) además del código de programación. Por lo tanto, tanto el programa como el software contienen un conjunto de instrucciones, pero el alcance del software es más amplio en comparación con un programa.

3. Explicar los pasos principales de SDLC.

SDLC es una forma abreviada del ciclo de vida de desarrollo de software. Se compone de muchas etapas, incluyendo:

  • Planificación: estimación de software y otros aspectos de la planificación de proyectos
  • Análisis de factibilidad: análisis de requisitos, listado de especificaciones de software
  • Diseño de software: decidir patrones de diseño, desarrollar prototipos
  • Desarrollo de software: traducir los requisitos en código de trabajo
  • Pruebas: Comprobación del código para los requisitos establecidos, la calidad, las prácticas de desarrollo seguras, etc.
  • Implementación: implementar el software e integrarlo con diferentes sistemas para crear un producto completamente funcional
  • Documentación del proyecto: reunir los recursos y organizar los archivos de software, incluidos códigos, documentos y licencias.
  • Formación y soporte: Comunicar el uso, funcionalidades y posibilidades de la nueva tecnología y facilitar una transferencia de conocimiento efectiva
  • Operaciones y mantenimiento: informar problemas y realizar mejoras en el producto

4. Enumere algunos modelos y metodologías básicos de SDLC. Segun tu cual es la mejor?

Waterfall, V-Model, Iterative, Spiral, Big-bag y Agile son algunos de los modelos SDLC más populares.

En cuanto a la metodología mejor clasificada, no hay una respuesta única ya que la solución depende de la necesidad del proceso de desarrollo de software. Por ejemplo, el modelo Waterfall es adecuado para proyectos a largo plazo donde se prefiere la flexibilidad. El modelo en forma de V funciona bien cuando hay requisitos desconocidos. El modelo Espiral es ideal para proyectos muy personalizados, etc.

5. ¿Qué entiende por reingeniería de software?

La reingeniería de software tiene como objetivo mejorar un sistema de software. Es el proceso de actualizar el software sin interferir con su funcionalidad actual. Puede incluir tareas de mantenimiento, como agregar nuevas funciones para hacer que el producto de software sea más eficiente y fácil de usar.

6. Defina lo siguiente en el contexto del desarrollo de software: (i) verificación (ii) validación (iii) depuración

(i) La verificación implica realizar un conjunto de actividades para garantizar que el software pueda implementar una función específica.

(ii) La validación consiste en confirmar que el software cumple con las necesidades de los clientes.

(iii) La depuración es parte del proceso de prueba, incluida la eliminación de errores.

7. ¿Cómo se aseguraría de que su código sea rápido y seguro?

Si la ejecución del código es lenta, calculará la complejidad temporal del programa. Se refiere a la cantidad de veces que se ejecuta una instrucción, que depende del lenguaje de programación, el sistema operativo y la potencia de procesamiento, entre otros factores.

Además, independientemente del lenguaje de programación que utilice, existen varias formas de proteger su código. Aquí, el conocimiento de las prácticas de codificación segura se vuelve esencial. Por ejemplo, escanear el código con herramientas gratuitas puede ayudarlo a detectar vulnerabilidades en los paquetes de código abierto en GitHub.

8. ¿Cuáles son los requisitos de software funcionales y no funcionales?

Los requisitos son las descripciones del sistema de software, sus características deseadas y las funcionalidades específicas. Se pueden dividir en requisitos funcionales y no funcionales.

Los requisitos funcionales son lo que los usuarios esperan del producto propuesto, y los requisitos no funcionales se relacionan con aspectos como la apariencia, el rendimiento, la seguridad y la interfaz de usuario.

9. ¿Cómo realizaría un seguimiento de los requisitos de software?

Existe una amplia variedad de herramientas disponibles en el mercado para recopilar y administrar los requisitos de software. Los requisitos modernos, ReQtest, Jama Connect y Orcanos son algunos de los software de RM más buscados entre los profesionales de la actualidad. La selección se basa en las metodologías y los objetivos y difiere de un proyecto a otro. Sin embargo, el primer paso en el proceso de seguimiento es enumerar los requisitos y crear una hoja de Excel con detalles como tipo, dependencia, prioridad, etc.

10. ¿Qué sabes sobre modularización y cohesión?

La modularización divide el sistema de software en módulos discretos. Aquí, se espera que cada módulo lleve a cabo tareas específicas de forma independiente. La cohesión mide y define la interdependencia entre los diferentes elementos de un módulo.

11. ¿Qué hace un administrador de proyectos de software?

Un gerente de proyecto tiene responsabilidades como la planificación del proyecto, el seguimiento del progreso y la comunicación. En el proceso de desarrollo de software, el deber principal de un gerente de proyecto es administrar los recursos, equilibrar los riesgos y entregar el producto deseado respetando las limitaciones de tiempo, costo y calidad.

12. ¿Qué es el alcance del software?

El alcance del software incluye todas las actividades requeridas para entregar un producto de software. Define los siguientes aspectos para agilizar el proceso de desarrollo:

  • Qué hará el producto
  • Lo que no es parte del proyecto
  • Estimación de proyectos (con la ayuda de consultores, expertos o fórmulas)

13. ¿Cómo determinará la viabilidad de su proyecto?

Un estudio de viabilidad ayuda a medir los beneficios prácticos que un proyecto de desarrollo de software puede aportar a una organización. Los analizadores de software consideran tres factores principales antes de preparar su informe final. Los hemos explicado en detalle a continuación:

  • Económico: costo de funciones y herramientas adicionales, costos de capacitación y el análisis general de costo-beneficio del proyecto final
  • Técnico: Adecuación de máquinas y software operativo, incluyendo la posibilidad de desarrollar el sistema propuesto con el soporte técnico y recursos humanos disponibles
  • Operacional: Habilidad para hacer ajustes y mantenerse al día con las demandas y la valía del proyecto al costo estimado.

14. Mencione algunas herramientas de análisis y diseño de software.

Los procedimientos de análisis y diseño de software ayudan a traducir las especificaciones de requisitos en implementación. Aquí hay algunas herramientas estándar:

  • diagramas de flujo de datos
  • Diccionario de datos
  • Gráficos estructurados
  • Gráficos HIPO (proceso de entrada y salida jerárquica)
  • Diagramas entidad-relación o ER
  • Mesas de decisión

15. ¿Cuál es la diferencia entre el inglés estructurado y el pseudocódigo?

El idioma inglés nativo utilizado para escribir la estructura de un módulo de programa se conoce como inglés estructurado. Incluye palabras clave del lenguaje de programación.

En contraste, la metodología de Pseudo Código se parece mucho al lenguaje de programación pero sin ninguna sintaxis específica.

Lea también: Ideas de proyectos de desarrollo de software

16. ¿Cómo encontrará el tamaño de un producto de software?

Puede calcular el tamaño del software calculando las líneas de código entregado o los puntos de función. Los puntos de función se consideran una medida relevante ya que representan las características que ofrece un producto de software.

17. ¿Qué son las métricas de software?

Las métricas de software se refieren a las mediciones de los requisitos y del producto en sí.

  • Las métricas de requisitos incluyen aspectos como la longitud y la integridad.
  • Las métricas del producto se relacionan con el número de líneas de codificación, diseño, métricas de prueba, métricas orientadas a objetos, etc.

18. ¿Cuáles son algunas técnicas útiles de estimación de proyectos?

La estimación de proyectos es una parte integral de la buena planificación de proyectos de software. Aquí hay algunos métodos ampliamente utilizados:

  • Descomposición (Técnicas de dimensionamiento de software, basadas en problemas y basadas en procesos)
  • Empírica (análisis de regresión, modelo de costo constructivo y la ecuación del software)

19. ¿Cómo mediría la ejecución del proyecto?

La revisión de la implementación del software implicaría el monitoreo de actividades, listas de verificación de hitos e informes de estado.

Las herramientas de gestión de proyectos proporcionan una forma cómoda de comprobar el progreso. El diagrama de Gantt, el diagrama Pert y el histograma de recursos son algunos otros ejemplos.

20. Defina la gestión de la configuración del software.

La gestión de la configuración se trata de rastrear y controlar los cambios en un proyecto de software. Es vital mantener la coherencia del sistema de software con las normas y reglamentos de la organización.

21. ¿Cuál es la diferencia entre garantía de calidad y control de calidad?

Se realizan controles de control de calidad para averiguar si se siguió el proceso de desarrollo adecuado. Por otro lado, el control de calidad se ocupa de mantener la calidad del producto final.

22. Comparar la programación orientada a interfaz, orientada a objetos y orientada a aspectos.

La programación de interfaz es un patrón arquitectónico basado en contratos que se aplica para lograr un diseño modular a nivel de componente.

La programación orientada a objetos se ocupa de escribir objetos granulares que tienen un propósito singular.

La programación orientada a aspectos tiene como objetivo segregar el código para que varios objetos realicen las tareas principales y los objetos independientes realicen las tareas secundarias.

23. ¿Cuándo declarar una clase como abstracta?

No se puede instanciar una clase que contenga una palabra clave abstracta en su declaración. Es mejor declarar una clase como abstracta en las situaciones mencionadas a continuación.

  • Cuando al menos uno de los métodos de la clase se declara como abstracto.
  • Cuando una clase heredada de una clase abstracta todavía incluye métodos abstractos.

24. Mencione la principal diferencia entre: (i) Pila y cola (ii) Diseño orientado a objetos y orientado a componentes (iii) Hilo y proceso (iv) EXE y DLL (v) Etiquetas y ramas

(i) Stack sigue el principio Last In, First Out (LIFO). Mientras que la cola siempre es FIFO, es decir, primero en entrar, primero en salir.

(ii) El diseño orientado a objetos se puede incorporar en el diseño basado en componentes hasta cierto punto. Sin embargo, lo contrario no es posible.

(iii) 'Proceso' se refiere a una instancia de un programa de computadora en ejecución. Es más pesado y requiere más cambio de contexto. Un 'hilo' es un proceso ligero que un planificador gestiona de forma independiente. Un solo programa puede tener más de un hilo.

(iv) Tanto EXE como DLL son programas que requieren espacio de almacenamiento para ejecutarse. Mientras que EXE es un programa ejecutable básico, DLL es más dinámico. Es un repositorio de código externo que puede cargar y ejecutar, por lo que ocupa menos espacio.

(v) Las etiquetas permanecen en una versión específica del código y, por lo general, no cambian. Actúan como lugares de espera temporales para versiones de versiones. Las ramas siempre apuntan a la parte superior de la línea de desarrollo. Por lo tanto, se eliminan una vez que se envía una nueva confirmación o cuando los cambios se fusionan en el tronco.

25. ¿Es buena idea usar catch (excepción)?

Catch (excepción) debe usarse cuando se conocen los tipos de excepción. Es una mala idea ya que no puede leer la excepción cuando no se ha definido ninguna variable.

26. ¿Cuál es preferible entre los dos: tipeo fuerte o tipeo débil?

Se supone que la tipificación fuerte supera la tipificación débil, ya que verifica las variables en el momento de la compilación. Además, puede minimizar considerablemente los errores del sistema. Un lenguaje escrito débilmente realiza conversiones solo en tiempo de ejecución y puede producir resultados impredecibles.

27. ¿Qué es un diseño estructurado?

El diseño estructurado conceptualiza el problema siguiendo la estrategia de 'divide y vencerás'. Este enfoque sistemático implica desglosar el problema en sus subelementos y tratar estos problemas más pequeños individualmente. Debido a esta táctica, también se le llama método de diseño de soluciones.

28. Describa la programación funcional.

El método de programación funcional implica la aplicación de conceptos matemáticos. Proporciona una forma de calcular funciones matemáticas, generando así resultados independientemente del estado del programa.

29. ¿Cómo prioriza los requisitos?

En primer lugar, debe evaluar la estructura de datos. Luego, necesitaría formular una estructura de código para admitir lo mismo.

30. ¿Qué sabes sobre las herramientas CASE?

CASE es el término abreviado para ingeniería de software asistida por computadora. Consiste en un conjunto de aplicaciones de software automatizadas que respaldan las actividades de SDLC. Las herramientas CASE pueden mejorar y fortalecer los proyectos de software al ofrecer estos servicios:

  • Análisis de requisitos
  • Análisis de estructura
  • Codigo de GENERACION
  • Generación de casos de prueba
  • Producción de documentos
  • Ingeniería inversa

la comida para llevar

La Oficina de Estadísticas Laborales (Estados Unidos) proyecta que la demanda de desarrolladores de software crecerá un 22 por ciento durante la próxima década. Y es probable que India experimente el mismo aumento de la demanda.

Según el 'Informe de la fuerza laboral para la India' de LinkedIn, las ofertas de trabajo de ingeniería de software en su plataforma fueron las más altas en múltiples industrias en la primera mitad de 2018. A medida que avanzamos, las oportunidades en sectores destacados como educación, legal y diseño seguir subiendo. Lea sobre el salario de los desarrolladores de software en la India.

Como se observó a través de las preguntas enumeradas anteriormente, alguien que busque ingresar a esta profesión necesitaría una amplia gama de competencias interrelacionadas. Aquí hay una instantánea de las habilidades duras que se le pedirá que comprenda:

  • C++, C#, Java
  • HTML, CSS JavaScript
  • SQL, Python, Bootstrap
  • Diseño orientado a objetos
  • Software de prueba y depuración
  • Codificación en lenguajes modernos (Ruby, Go, R, etc.)
  • Conocimiento de proyectos de inteligencia artificial, etc.

Además de estas habilidades técnicas, deberá dominar el arte de la multitarea, la comunicación, la gestión del tiempo, la atención a los detalles y el trabajo en equipo.

En cuanto a las calificaciones educativas, una licenciatura en informática o campos relacionados generalmente cubre los criterios mínimos de elegibilidad para trabajos de nivel de entrada. Pero la trayectoria profesional de todos resulta un poco diferente. Algunos pueden haber ingresado a la fuerza laboral a través del autoaprendizaje, cursos en línea o campamentos de codificación. Otros pueden haber obtenido un título avanzado después de haber trabajado en TI durante algunos años.

Tener credenciales de nivel de posgrado puede ayudarlo a impulsar su carrera e incluso obtener una codiciada promoción laboral. Echa un vistazo a la Maestría en Ciencias de la Computación de upGrad certificada por la Universidad John Moores de Liverpool. Su objetivo es equiparlo con habilidades relevantes para la industria a través de una pedagogía altamente interactiva.

También puede optar por el Programa Ejecutivo PG en Desarrollo de Software - Especialización en Desarrollo Full Stack por IIIT-B o una certificación PG especializada, según sus intereses y aspiraciones profesionales. Dichos certificados tienen un compromiso de tiempo más corto en comparación con los cursos de maestría y diploma. Le permiten demostrar sus habilidades en un área en particular, como desarrollo back-end, desarrollo front-end, ciberseguridad, DevOps, big data y computación en la nube.

Con esto, hemos cubierto las principales preguntas y respuestas de la entrevista de ingeniería de software . Intentamos incluir temas tanto generales como técnicos. Además, mencionamos las posibles opciones de carrera y brindamos una descripción general de las tendencias y perspectivas en la industria de TI. ¡Use esta información como una señal para su viaje de aprendizaje y optimice su estrategia de preparación!

Aterrice en el trabajo de sus sueños

Solicitar Maestría en Ciencias en Ciencias de la Computación