50 preguntas y respuestas principales de la entrevista de ingeniería de software

Anonim

Descargar PDF

1) ¿Cuáles son las categorías importantes de software?

  • Software del sistema
  • Software de la aplicacion
  • Software integrado
  • Aplicaciones web
  • Software de inteligencia artificial
  • Software científico.

2) ¿Cuál es la principal diferencia entre un programa de computadora y un software de computadora?

Un programa de computadora es un fragmento de código de programación. Realiza una tarea bien definida. Por otro lado, el software incluye código de programación, documentación y guía de usuario.

3) ¿Qué es la reingeniería de software?

Es un proceso de desarrollo de software que se realiza para mejorar la capacidad de mantenimiento de un sistema de software.

4) Describe brevemente el proceso de desarrollo de software:

El desarrollo de software es un ciclo de vida que se compone de las siguientes etapas:

  • Análisis de requisitos
  • Especificación
  • Arquitectura de software
  • Implementación
  • Pruebas
  • Documentación
  • Capacitación y apoyo
  • Mantenimiento

5) ¿Cuáles son los modelos SDLC disponibles?

El modelo de cascada, el modelo de espiral, el modelo de big-bag, el modelo iterativo y el modelo en V son algunos de los famosos modelos SDLC.

6) ¿Qué es verificación y validación?

Verificación:

La verificación es un término que se refiere al conjunto de actividades que aseguran que el software implemente una función específica.

Validación:

Se refiere al conjunto de actividades que aseguran que el software ha sido construido de acuerdo con las necesidades de los clientes.

7) En el proceso de desarrollo de software, ¿cuál es el significado de depuración?

La depuración es el proceso que da como resultado la eliminación del error. Es una parte muy importante del éxito de las pruebas.

8) ¿Cómo puede asegurarse de que su código sea seguro y rápido?

En el software, la seguridad del desarrollo siempre es lo primero. Entonces, si la ejecución del programa es lenta, intentaré identificar las razones de su complejidad de tiempo.

9) Nombre dos herramientas que se utilizan para realizar un seguimiento de los requisitos de software.

Hay muchas formas de realizar un seguimiento de los requisitos.

Dos de uso común son:

  • Haga un documento de especificaciones de requisitos para enumerar todos los requisitos.
  • Cree una hoja de Excel con la lista de requisitos, tipo, dependencia, prioridad, etc.

10) ¿Cuál es la principal diferencia entre un talón, un simulacro?

Un stub es una implementación mínima de una interfaz que generalmente devuelve datos codificados, mientras que el simulacro generalmente verifica los resultados contra las expectativas. Esas expectativas se establecen en la prueba.

11) ¿Qué lenguaje te gusta para escribir algoritmos de programación?

Cada desarrollador tiene sus puntos de vista cuando se trata de la elección del lenguaje de programación. Sin embargo, se deberían preferir los lenguajes de alto nivel porque son dinámicos. Como lenguajes C y C ++.

12) ¿Qué es el software de computadora?

El software de computadora es un paquete que incluye un programa de software, su documentación y una guía del usuario sobre cómo usar el software.

13) Según usted, ¿qué modelo SDLC es el mejor?

No existe tal clasificación, ya que los modelos SDLC se adoptan según la necesidad del proceso de desarrollo. Puede diferir de software a software.

14) ¿Quién es el gerente de proyectos de software? Cual es su papel?

Un gerente de proyecto de software es una persona responsable de administrar el proyecto de desarrollo de software.

El gerente de proyecto está haciendo la planificación del proyecto, monitoreando el progreso, la comunicación. También gestiona los riesgos y los recursos para entregar el proyecto dentro de las limitaciones de tiempo, costo y calidad.

15) ¿Qué se entiende por alcance del software?

El alcance del software es un límite bien definido. Incluye todo tipo de actividades que se realizan para desarrollar y entregar el producto de software.

El alcance del software define todas las funcionalidades y artefactos que se entregarán como parte del software. El alcance también identifica lo que hará el producto. ¿Qué no es parte del proyecto? ¿Qué es la estimación de proyectos?

Este proceso es útil para estimar varios aspectos del producto de software. Esta estimación puede decidirse consultando a expertos o utilizando fórmulas predefinidas.

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

El tamaño del producto de software se puede calcular siguiendo dos métodos

  • Contando las líneas de código entregado
  • Contando puntos de función entregados

17) ¿Qué son los puntos de función?

Los puntos de función son las características que proporciona el producto de software. Se considera una de las medidas más importantes para el tamaño del software.

18) ¿Cuáles son las técnicas de estimación de proyectos de software disponibles?

Las técnicas de estimación más utilizadas son:

  • Técnica de descomposición
  • Técnica empírica

19) ¿Qué es la gestión de la configuración del software?

La gestión de la configuración del software es un proceso de seguimiento y control de los cambios que ocurren en el software.

El control de cambios es una función que garantiza que todos los cambios realizados en el sistema de software sean coherentes y se creen utilizando las reglas y regulaciones de la organización.

20) ¿Cómo se puede medir la ejecución del proyecto?

Podemos medir la ejecución del proyecto mediante el seguimiento de la actividad, los informes de estado y las listas de verificación de hitos.

21) Cuéntame sobre algunas herramientas de gestión de proyectos.

Hay muchos tipos de herramientas de gestión que se utilizan según la necesidad de un proyecto de software. Algunos de ellos son el diagrama de Pert, el diagrama de Gantt, el histograma de recursos, los informes de estado, etc.

22) ¿Cuáles son los requisitos de software?

Los requisitos de software son una descripción funcional de un sistema de software propuesto. Se supone que es la descripción del sistema de destino, sus funcionalidades y características.

23) ¿Qué es un estudio de viabilidad?

Es una medida para descubrir qué tan práctico y beneficioso resultará para la organización el desarrollo del proyecto de software. El analizador de software realiza un estudio para conocer la viabilidad económica, técnica y operativa del proyecto.

  1. Económico: Incluye el costo de capacitación, costo de herramientas adicionales y estimación general de costos y beneficios del proyecto.

  2. Técnico: Evalúa aspecto técnico. ¿Es posible desarrollar este sistema? Evaluar la idoneidad de la (s) máquina (s) y el sistema operativo en el que se ejecutará el software, el conocimiento del desarrollo de software y las herramientas disponibles para este proyecto.

  3. Operacional: Aquí el analista debe evaluar que la organización podrá adaptarse sin problemas a los cambios realizados según la demanda del proyecto. ¿Vale la pena resolver el problema al costo estimado?

Posteriormente, estudiando todo esto se crea el informe final de viabilidad.

24) ¿Qué son los requisitos funcionales y no funcionales?

Los requisitos funcionales son características funcionales que los usuarios esperan del producto de software propuesto.

Los requisitos no funcionales están relacionados con la seguridad, el rendimiento, la apariencia y el funcionamiento de la interfaz de usuario.

25) ¿Qué es la métrica del software?

Software Metrics ofrece medidas para varios aspectos del proceso de software que se dividen en:

  1. Métricas de requisitos: requisitos de longitud, integridad
  2. Métricas de producto: número de líneas de codificación, métricas orientadas a objetos, métricas de diseño y prueba.

26) ¿Qué es la modularización?

La modularización es una técnica que se utiliza para dividir un sistema de software en varios módulos discretos. Se espera que lleve a cabo las tareas de forma independiente.

27) ¿Qué es la cohesión?

La cohesión es una medida que define la intradependencia entre los elementos del módulo.

28) ¿Menciona algunas herramientas de análisis y diseño de software?

Algunas de las herramientas de análisis y diseño de software más importantes son:

  • Diagramas de flujo de datos
  • Gráficos estructurados
  • Ingles estructurado
  • Diccionario de datos
  • Diagramas de salida de proceso de entrada jerárquica
  • Diagramas de relación de entidades y tablas de decisión

29) ¿Qué se entiende por diagrama de flujo de datos de nivel 0?

El nivel de abstracción más alto se denomina Nivel 0 de DFD. También se denomina DFD de nivel de contexto. Representa todo el sistema de información como un diagrama.

30) ¿Cuál es la principal diferencia entre el inglés estructurado y el pseudocódigo?

El inglés estructurado es el idioma nativo del inglés. Se utiliza para escribir la estructura de un módulo de programa. Utiliza palabras clave en lenguaje de programación. Por otro lado, Pseudo Code se parece más al lenguaje de programación sin sintaxis de ningún lenguaje específico.

31) ¿Qué es el diseño estructurado?

El diseño estructurado es una conceptualización del problema. También se denomina diseño de soluciones y se basa en la estrategia de "divide y vencerás".

32) ¿Qué es la programación funcional?

Es un método de programación, que utiliza los conceptos de una función matemática. Proporciona medios de cálculo como funciones matemáticas, que también producen resultados independientemente del estado del programa.

33) ¿Qué es la garantía de calidad frente al control de calidad?

El Control de calidad verifica si se sigue el proceso adecuado mientras se desarrolla el software, mientras que el Control de calidad se ocupa de mantener la calidad del producto de software.

34) ¿Qué son las herramientas CASE?

CASE significa Ingeniería de Software Asistida por Computadora. Son un conjunto de programas de aplicación de software automatizados, que se utilizan para respaldar, mejorar y fortalecer las actividades de SDLC.

35) ¿Qué modelo de proceso elimina los defectos antes de que el software se meta en problemas?

El método de ingeniería de software de sala limpia elimina los defectos antes de que el software se meta en problemas.

36) Resuelve este problema

Hay veinte calcetines diferentes de dos tipos en un cajón en una habitación oscura. ¿Cuál es la cantidad mínima de calcetines que debe llevar para asegurarse de tener un par a juego? "

Si elige tres calcetines, es posible que sean del mismo tipo, incluso si las probabilidades son del 50%. Las probabilidades nunca son una realidad igual. Por lo tanto, la única forma de 'asegurarse de tener un par coincidente' es captar al menos 11 descargas.

37) ¿Cómo puede asegurarse de que su código escrito pueda manejar varios tipos de situaciones de error?

Puedo escribir pruebas que definan las situaciones de error esperadas.

38) ¿Explica las diferencias entre un hilo y un proceso?

Un proceso es una instancia del programa de computadora. En un solo programa es posible tener uno o más subprocesos.

39) ¿Dime la diferencia entre un EXE y un DLL?

Un exe es un programa ejecutable, mientras que una DLL es un archivo que los programas pueden cargar y ejecutar de forma dinámica. Es un repositorio de código externo para programas. Como ambos son programas diferentes, reutilice la misma DLL en lugar de tener ese código en su archivo. También reduce el espacio de almacenamiento requerido.

40) ¿Qué son los tipos fuertes y débiles? ¿Cuál es el preferido? ¿Por qué?

La escritura segura verifica los tipos de variables en tiempo de compilación. Por otro lado, la escritura débil verifica los tipos de sistema en tiempo de ejecución. Entre ellos, siempre se prefiere la escritura fuerte porque minimiza los errores.

41) Describa la diferencia entre programación orientada a interfaz, orientada a objetos y orientada a aspectos.

  • La programación de la interfaz se basa en contratos.
  • Orientado a objetos es una forma de escribir objetos granulares que tienen un solo propósito.
  • La Programación Orientada a Aspectos consiste en segregar el código de tal manera que varios objetos lleven a cabo las tareas principales y las tareas subsidiarias sean realizadas por objetos independientes.

42) ¿Por qué usar catch (excepción) es siempre una mala idea?

Es una mala idea porque:

  • Como no hay una variable definida, no es posible leer la excepción
  • Es bueno usar una excepción cuando tiene tipos de excepción conocidos.

43) ¿Qué tipo de datos se pasan a través de los encabezados HTTP?

Script y metadatos pasados ​​a través de encabezados HTTP.

44) ¿Cómo prioriza los requisitos?

Primero, necesita diseñar un sistema evaluando la estructura de datos. Luego, debe pasar a la estructura de código necesaria para respaldarlo.

45) ¿Me dan las diferencias entre el diseño orientado a objetos y el diseño basado en componentes?

El diseño orientado a objetos se puede encapsular fácilmente hasta cierto punto en el diseño basado en componentes.

46) ¿Cuándo usas polimorfismo?

El polimorfismo se usa cuando existe la necesidad de anular la funcionalidad al heredar la clase. Se trata de clases compartidas y contratos compartidos.

47) ¿Cuál es la diferencia entre pila y cola?

  • La cola es siempre el primero en entrar, el primero en salir
  • La pila es siempre el último en entrar, el primero en salir

48) ¿Qué es esencial para probar la calidad del código?

Según yo, el marco de pruebas unitarias es esencial para probar la calidad del código.

49) ¿Crees que el mantenimiento del software es caro?

Según yo, el mantenimiento del software nunca será costoso si usamos un proceso de desarrollo adecuado.

50) ¿Darme diferencias entre etiquetas y ramas?

Las etiquetas son para versiones de versiones que son lugares de espera temporales para hacer tal cosa. Sin embargo, las ramas se eliminan cuando esos cambios se combinan en el tronco.

51) ¿Dónde está disponible una variable protegida a nivel de clase?

Las variables protegidas a nivel de clase están disponibles para cualquier subclase derivada de la clase base.

52) ¿Es posible ejecutar múltiples bloques de captura para una sola declaración de intento?

Si. Se pueden ejecutar varios bloques de captura para una sola instrucción try.

53) ¿Cuándo es necesario declarar una clase como abstracta?

Deberíamos declarar una clase como abstracta en las siguientes situaciones:

  1. Cuando la clase se hereda de una clase abstracta, pero no se han anulado todos los métodos abstractos.
  2. En el caso de que al menos uno de los métodos de la clase se declare como abstracto.

54) Desarrolle un algoritmo que genere su ubicación actual y una lista de ubicaciones de cajeros automáticos en esa área. Consiga los cajeros automáticos K más cercanos a su ubicación.

Cree un método getDistance (a, b) que calcule la distancia entre ay b.

Código:

import java.util.HashMap;import java.util.Map;import java.util.PriorityQueue;public class PrioRQueueExample {public static void main(String[] args){PriorityQueue pq = new PriorityQueue((x,y)-> {Double z = y-x;return z.intValue(); });PrioRQueueExample pqe = new PrioRQueueExample();//Number of ATMs to return i.e. Kint num_ATMs = 3;double curr_loc = 0.00;Map nallATMLocs = new HashMap();//Map of ATM names and their distance co-ordinatesnallATMLocs.put("atm1",45.0);nallATMLocs.put("atm2",78.0);nallATMLocs.put("atm3",54.0);nallATMLocs.put("atm4",64.0);nallATMLocs.put("atm5",35.0);nallATMLocs.put("atm6",42.0);nallATMLocs.put("atm7",57.0);nallATMLocs.put("atm7",1.00);nallATMLocs.forEach((atm,dist) ->{if(pq.size() < num_ATMs){pq.add(pqe.getLocation(curr_loc,dist));}else{if( pq.peek() > pqe.getLocation(curr_loc,dist)){pq.poll();pq.add(pqe.getLocation(curr_loc,dist));}}});pq.forEach(atmLoc -> System.out.println(atmLoc));}private double getLocation(double curr,double atm){return atm - curr;}}