Preguntas para Entrevistas de Ingeniero DevOps Junior: Guía Completa

Milad Bonakdar
Autor
Domina los fundamentos esenciales de DevOps con preguntas de entrevista exhaustivas que cubren Linux, Git, CI/CD, Docker, conceptos básicos de la nube e Infraestructura como Código para ingenieros DevOps junior.
Introducción
La ingeniería de DevOps tiende puentes entre el desarrollo y las operaciones, centrándose en la automatización, la colaboración y la mejora continua. Como ingeniero de DevOps junior, necesitarás conocimientos básicos de Linux, control de versiones, pipelines de CI/CD, la contenerización y plataformas en la nube.
Esta guía cubre las preguntas esenciales para una entrevista de ingeniero de DevOps junior, organizadas por temas para ayudarte a prepararte eficazmente. Cada pregunta incluye respuestas detalladas, ejemplos prácticos y fragmentos de código prácticos.
Fundamentos de Linux
1. Explica los comandos comunes de Linux que usas a diario como ingeniero de DevOps.
Respuesta: Comandos esenciales de Linux para el trabajo de DevOps:
Frecuencia: Muy común Dificultad: Fácil
2. ¿Cómo solucionarías un servicio que no se inicia en Linux?
Respuesta: Enfoque sistemático para la resolución de problemas:
Problemas comunes:
- Errores de sintaxis de configuración
- Puerto ya en uso
- Permiso denegado
- Dependencias faltantes
- Espacio en disco insuficiente
Frecuencia: Muy común Dificultad: Media
Control de versiones con Git
3. Explica el flujo de trabajo básico de Git y los comandos comunes.
Respuesta: Flujo de trabajo de Git para las tareas diarias de DevOps:
Buenas prácticas:
- Escribir mensajes de confirmación claros
- Confirmar a menudo, enviar regularmente
- Usar ramas de características
- Obtener antes de enviar
- Revisar los cambios antes de confirmar
Frecuencia: Muy común Dificultad: Fácil
4. ¿Cómo resuelves un conflicto de fusión en Git?
Respuesta: Resolución de conflictos paso a paso:
Marcadores de conflicto:
<<<<<<< HEAD- Tu rama actual=======- Separador>>>>>>> branch-name- Cambios entrantes
Frecuencia: Común Dificultad: Fácil-Media
Fundamentos de CI/CD
5. ¿Qué es CI/CD y por qué es importante?
Respuesta: CI/CD significa Integración Continua y Despliegue/Entrega Continua.
Integración Continua (CI):
- Construir y probar automáticamente el código en cada confirmación
- Detectar los errores al principio
- Asegurarse de que el código se integra correctamente
Despliegue Continuo (CD):
- Desplegar automáticamente en producción después de que las pruebas pasen
- Ciclos de lanzamiento más rápidos
- Reducción de los errores manuales
Beneficios:
- Bucles de retroalimentación más rápidos
- Reducción de los problemas de integración
- Pruebas automatizadas
- Despliegues consistentes
- Tiempo de comercialización más rápido
Frecuencia: Muy común Dificultad: Fácil
6. Explica un pipeline de CI/CD básico usando GitHub Actions.
Respuesta: Ejemplo de flujo de trabajo de GitHub Actions:
Conceptos clave:
- Disparadores: Cuándo se ejecuta el pipeline (push, PR, programación)
- Trabajos: Tareas independientes que pueden ejecutarse en paralelo
- Pasos: Comandos individuales dentro de un trabajo
- Artefactos: Archivos pasados entre trabajos
Frecuencia: Muy común Dificultad: Media
Docker y Contenerización
7. ¿Qué es Docker y por qué usamos contenedores?
Respuesta: Docker es una plataforma para desarrollar, enviar y ejecutar aplicaciones en contenedores.
Contenedores vs VMs:
- Los contenedores comparten el kernel del sistema operativo del host (ligero)
- Las VMs incluyen un sistema operativo completo (pesado)
- Los contenedores se inician en segundos
- Mejor utilización de los recursos
Beneficios:
- Consistencia: El mismo entorno en todas partes
- Aislamiento: Las aplicaciones no interfieren
- Portabilidad: Ejecutar en cualquier lugar
- Eficiencia: Ligero y rápido
Frecuencia: Muy común Dificultad: Fácil
8. Explica los comandos comunes de Docker.
Respuesta: Comandos esenciales de Docker:
Frecuencia: Muy común Dificultad: Fácil
9. Escribe un docker-compose.yml para una aplicación web con una base de datos.
Respuesta: Ejemplo de aplicación multi-contenedor:
Conceptos clave:
- services: Definir contenedores
- depends_on: Dependencias del servicio
- volumes: Almacenamiento de datos persistente
- environment: Variables de entorno
- ports: Mapeo de puertos
- restart: Política de reinicio
Frecuencia: Común Dificultad: Media
Fundamentos de la nube
10. Explica la diferencia entre IaaS, PaaS y SaaS.
Respuesta: Modelos de servicio en la nube:
IaaS (Infraestructura como Servicio):
- Proporciona: Máquinas virtuales, almacenamiento, redes
- Usted gestiona: SO, tiempo de ejecución, aplicaciones
- Ejemplos: AWS EC2, Azure VMs, Google Compute Engine
- Caso de uso: Control total sobre la infraestructura
PaaS (Plataforma como Servicio):
- Proporciona: Entorno de tiempo de ejecución, bases de datos, middleware
- Usted gestiona: Aplicaciones y datos
- Ejemplos: AWS Elastic Beanstalk, Heroku, Google App Engine
- Caso de uso: Centrarse en el código, no en la infraestructura
SaaS (Software como Servicio):
- Proporciona: Aplicaciones completas
- Usted gestiona: Datos y configuración del usuario
- Ejemplos: Gmail, Salesforce, Office 365
- Caso de uso: Aplicaciones listas para usar
Frecuencia: Común Dificultad: Fácil
11. ¿Cuáles son los servicios básicos de AWS que debe conocer un ingeniero de DevOps?
Respuesta: Servicios esenciales de AWS:
Compute:
- EC2: Servidores virtuales
- Lambda: Funciones sin servidor
- ECS/EKS: Orquestación de contenedores
Storage:
- S3: Almacenamiento de objetos
- EBS: Almacenamiento en bloque para EC2
- EFS: Almacenamiento de archivos compartidos
Networking:
- VPC: Nube privada virtual
- Route 53: Servicio DNS
- CloudFront: CDN
- ELB: Balanceo de carga
Database:
- RDS: Bases de datos relacionales gestionadas
- DynamoDB: Base de datos NoSQL
DevOps Tools:
- CodePipeline: Servicio de CI/CD
- CodeBuild: Servicio de construcción
- CloudWatch: Monitorización y registro
- IAM: Gestión de acceso
Ejemplo: Lanzar una instancia EC2 con AWS CLI:
Frecuencia: Muy común Dificultad: Media
Infraestructura como código
12. ¿Qué es la infraestructura como código (IaC) y por qué es importante?
Respuesta: IaC es la gestión de la infraestructura a través del código en lugar de los procesos manuales.
Beneficios:
- Control de versiones: Rastrear los cambios en la infraestructura
- Reproducibilidad: Crear entornos idénticos
- Automatización: Reducir los errores manuales
- Documentación: El código sirve como documentación
- Consistencia: La misma configuración en todas partes
Herramientas populares de IaC:
- Terraform: Aprovisionamiento multi-nube
- Ansible: Gestión de la configuración
- CloudFormation: Específico de AWS
- Pulumi: IaC basada en código
Ejemplo de Terraform:
Frecuencia: Muy común Dificultad: Media
13. Explica el flujo de trabajo básico de Terraform.
Respuesta: Pasos del flujo de trabajo de Terraform:
Estructura de archivos de Terraform:
Ejemplo de variables:
Frecuencia: Común Dificultad: Media
Monitorización y registro
14. ¿Qué métricas monitorizarías para una aplicación web?
Respuesta: Métricas clave de monitorización:
Métricas de la aplicación:
- Tiempo de respuesta / latencia
- Tasa de peticiones (peticiones por segundo)
- Tasa de errores (errores 4xx, 5xx)
- Rendimiento
Métricas del sistema:
- Uso de la CPU
- Uso de la memoria
- E/S del disco
- E/S de la red
Métricas de la infraestructura:
- Estado del contenedor/pod
- Disponibilidad del servicio
- Estado del balanceador de carga
Ejemplo de consulta Prometheus:
Umbrales de alerta:
- Tiempo de respuesta > 500ms
- Tasa de error > 1%
- Uso de la CPU > 80%
- Uso de la memoria > 85%
- Uso del disco > 90%
Frecuencia: Común Dificultad: Media
15. ¿Cómo centralizas los registros de varios servidores?
Respuesta: Arquitectura de registro centralizado:
Pila común (ELK):
- Elasticsearch: Almacenar e indexar los registros
- Logstash/Fluentd: Recoger y procesar los registros
- Kibana: Visualizar y buscar los registros
Ejemplo de configuración de Filebeat:
Buenas prácticas:
- Usar el registro estructurado (JSON)
- Incluir los ID de correlación
- Establecer políticas de retención
- Indexar estratégicamente
- Supervisar el volumen de registros
Frecuencia: Común Dificultad: Media
Fundamentos de Kubernetes
16. ¿Qué es Kubernetes y cuáles son sus componentes básicos?
Respuesta: Kubernetes es una plataforma de orquestación de contenedores que automatiza el despliegue, el escalado y la gestión de aplicaciones contenerizadas.
Componentes básicos:
Plano de control:
- Servidor API: Punto de entrada para todos los comandos
- etcd: Almacén de clave-valor para los datos del clúster
- Planificador: Asigna los pods a los nodos
- Gestor de controladores: Mantiene el estado deseado
Nodos de trabajo:
- kubelet: Gestiona los pods en el nodo
- kube-proxy: Enrutamiento de la red
- Tiempo de ejecución del contenedor: Ejecuta los contenedores (Docker, containerd)
Objetos básicos de Kubernetes:
1. Pod:
2. Despliegue:
3. Servicio:
Comandos comunes de kubectl:
Frecuencia: Muy común Dificultad: Fácil
Gestión de la configuración
17. Explica los fundamentos de Ansible y escribe un playbook sencillo.
Respuesta: Ansible es una herramienta de gestión de la configuración sin agente que utiliza SSH para configurar los servidores.
Conceptos clave:
- Inventario: Lista de servidores a gestionar
- Playbook: Archivo YAML que define las tareas
- Módulos: Unidades de trabajo reutilizables
- Roles: Colección organizada de tareas
Archivo de inventario:
Playbook sencillo:
Ejemplo de plantilla:
Ejecutar playbooks:
Estructura de los roles de Ansible:
Usar roles:
Comandos ad-hoc:
Frecuencia: Común Dificultad: Media
Scripting y automatización
18. Escribe un script bash para automatizar una tarea común de DevOps.
Respuesta: Los scripts Bash son esenciales para la automatización en DevOps.
Ejemplo 1: Script de copia de seguridad
Ejemplo 2: Script de comprobación del estado



