Test cuestionario de ingeniería de software - the question form
Preguntas: 16 · 10 minutos
1. Un servicio debe ejecutarse en varias instancias intercambiables detrás de un balanceador de carga. ¿Qué diseño facilita más directamente el escalamiento horizontal?
Mantener las instancias del servicio sin estado cuando sea práctico y colocar el estado compartido en un almacén externo adecuado
Almacenar los archivos subidos únicamente en el disco local de una instancia
Exigir que cada solicitud regrese a un servidor seleccionado manualmente
Mantener la sesión de cada usuario únicamente en la memoria de la primera instancia con la que se comunique
2. ¿Qué diseño demuestra mejor una alta cohesión?
Una clase de utilidades se encarga de la autenticación, las facturas, el correo electrónico y las copias de seguridad de la base de datos
Un módulo agrupa responsabilidades estrechamente relacionadas con el cálculo de facturas
Cada función puede modificar directamente cualquier parte del estado de la aplicación
Un módulo cambia cada vez que cambia cualquier funcionalidad del sistema
3. Una solicitud de incorporación de cambios contiene miles de líneas que mezclan una refactorización, una funcionalidad y cambios de formato. ¿Qué mejoraría más la facilidad de revisión?
Agregar más revisores y mantener todos los cambios en una sola solicitud
Eliminar las pruebas para que los revisores puedan concentrarse en el código de producción
Separarla en cambios más pequeños y específicos, con propósitos claros
Fusionarla primero y revisar los cambios después
4. Una fusión en Git produce conflictos en un archivo que editaron dos desarrolladores. ¿Cuál es el siguiente paso más apropiado?
Revisar las secciones en conflicto, elegir o combinar los cambios deseados, probar el resultado y confirmar la resolución
Eliminar el archivo y restaurar la rama que se haya creado primero
Forzar el envío de la rama local para que Git seleccione automáticamente su versión
Hacer rebase repetidamente hasta que los marcadores de conflicto desaparezcan sin editar nada
5. Un cliente puede repetir la misma solicitud después de que se agote el tiempo de espera. ¿Qué operación HTTP está diseñada para reemplazar un recurso en un URI conocido y ser idempotente?
CONNECT
POST
PUT
PATCH en todas las implementaciones posibles
6. Una solicitud falla en producción después de pasar por varios servicios. ¿Qué configuración de observabilidad ayudaría más a rastrear el recorrido de la solicitud?
Un archivo de texto no estructurado independiente en la computadora de cada desarrollador
Solo el número total de solicitudes recibidas cada día
Un panel que muestre la cantidad actual de archivos de código fuente
Registros correlacionados o trazas distribuidas que lleven el mismo identificador de solicitud entre los servicios
7. ¿Cómo debería una aplicación almacenar, por lo general, las contraseñas de los usuarios?
Como hashes únicos con sal, mediante un algoritmo específico para contraseñas como Argon2 o bcrypt
Cifradas con una única clave reversible compartida por todas las cuentas
Como texto sin formato en una base de datos con permisos restringidos para la tabla
Como hashes sin sal mediante un algoritmo rápido de propósito general
8. Una prueba falla de manera impredecible en la integración continua, pero por lo general pasa localmente. ¿Cuál es la mejor primera respuesta de ingeniería?
Volver a ejecutarla automáticamente hasta que pase e ignorar permanentemente el fallo original
Investigar fuentes de comportamiento no determinista, como los tiempos, el estado compartido, el orden y las dependencias no controladas
Clasificar cada fallo como un problema de infraestructura sin investigarlo
Eliminar la aserción que falla con mayor frecuencia
9. ¿Qué característica es la más importante para una prueba unitaria confiable?
Comprueba una pequeña unidad de comportamiento mientras mantiene bajo control las dependencias externas
Ejecuta el sistema desplegado completo, incluidos los servicios externos en producción
Depende de que las pruebas se ejecuten en un orden específico
Verifica varios comportamientos no relacionados en un único escenario extenso
10. Dos hilos incrementan el mismo contador compartido, pero se pierden algunos incrementos. ¿Cuál es la causa más probable?
Una fuga de memoria causada por el uso de un tipo numérico demasiado pequeño para el contador
Un error de sintaxis que el compilador ignoró
Una condición de carrera porque la operación de lectura, modificación y escritura no está sincronizada ni es atómica
Un interbloqueo causado únicamente por el hecho de que ambos hilos hayan terminado
11. Una aplicación web crea una consulta SQL concatenando texto proporcionado por un usuario. ¿Qué cambio reduce más directamente el riesgo de inyección SQL?
Ocultar los mensajes de error de la base de datos en la interfaz de usuario
Ejecutar la consulta mediante un pool de conexiones a la base de datos más rápido
Escapar las comillas mediante código personalizado de reemplazo de cadenas
Usar consultas parametrizadas y vincular la entrada del usuario como valores
12. Una clase de lógica de negocio crea directamente un cliente de base de datos específico, lo que dificulta las pruebas aisladas. ¿Qué rediseño aplica mejor la inversión de dependencias?
Convertir el cliente de base de datos en una variable global compartida por todas las clases
Exponer la contraseña de la base de datos para que las pruebas puedan conectarse directamente
Copiar el código de acceso a la base de datos en cada método de negocio
Hacer que la clase dependa de una abstracción a la que se le puedan proporcionar distintas implementaciones
13. Un requisito indica que un panel debe cargar «rápidamente», pero no establece un objetivo medible. ¿Qué debe hacer el equipo antes de considerar que el requisito se puede probar?
Suponer que «rápidamente» significa la respuesta más veloz obtenida durante el desarrollo
Acordar criterios de aceptación medibles, incluidas las condiciones y un tiempo de respuesta objetivo
Reemplazar el requisito por un lenguaje de programación preferido
Esperar hasta que los usuarios se quejen y entonces definir el rendimiento esperado
14. ¿Cuál es la complejidad temporal típica de la búsqueda binaria en un arreglo ordenado?
O(n)
O(1)
O(log n)
O(n log n)
15. Después de agregar una caché, a veces los usuarios ven información antigua de su perfil inmediatamente después de una actualización. ¿Qué respuesta aborda más directamente el problema de consistencia?
Aumentar la capacidad de la caché para poder conservar más valores antiguos
Comprimir los valores almacenados en caché antes de devolverlos
Eliminar los índices de la base de datos de la tabla de perfiles
Definir una política de invalidación o actualización cuando cambien los datos del perfil
16. Un cliente llama a una API externa que ocasionalmente falla debido a breves interrupciones de red. ¿Qué estrategia de reintento suele ser la más apropiada?
Reintentar continuamente y sin demora hasta que la llamada tenga éxito
Usar un número limitado de reintentos con espera exponencial y variación aleatoria para los errores que permiten reintentos
Reintentar cada solicitud de inmediato, incluidas las que no sea seguro repetir
Desactivar los tiempos de espera para que cada solicitud pueda esperar indefinidamente