La guía de entrevistas definitiva para ingenieros de DevOps: qué preguntar y para qué prepararse





Comencé a hacer contactos en la escuela y he trabajado por dinero durante más de 16 años. Conseguí muchos trabajos, en empresas grandes y pequeñas, luego abrí mi propio negocio y yo mismo contrataba gente regularmente. A lo largo de los años y la experiencia, yo y muchos otros desarrollamos la intuición de las entrevistas.



Aquí es cuando no hay un algoritmo claro. Simplemente habla con una persona y comprendes algo por ti mismo. Pregunta qué hizo el candidato en el trabajo anterior, se aferra al tema y ahora solo está discutiendo temas de ingeniería, aproximadamente al mismo nivel que con sus colegas. Si la conversación va bien y a la persona le gusta, entonces todo está bien.



Tal intuición difícilmente se puede aprender de libros y textos, viene por sí sola con la experiencia. Junto con ella, frases como "No me importan los conocimientos específicos tanto como una perspectiva general, la capacidad de buscar información, la comprensión, trabajaremos juntos" y así sucesivamente.



Pero a veces, para no perder el control, aún debe recordarse qué conocimientos debe tener un ingeniero y qué preguntas puede evaluar de manera más objetiva a la persona que ve por primera vez en su vida.




Primero, reviso rápidamente todos los currículums



Mientras reviso las respuestas, presto atención a las palabras clave y los lugares de trabajo. Siempre leo la carta de presentación: en esta etapa se eliminan muchos solicitantes. Publico una publicación de trabajo sobre cómo encontrar un ingeniero de DevOps y obtengo una respuesta de un desarrollador de Python, un desarrollador de Golang o un mensajero actual que está "muy interesado y le gustaría probar".



Pasan los currículums, que indican la experiencia de trabajo en agencias gubernamentales, algo en el espíritu de "el administrador de la primera categoría en el Banco Central de la Federación de Rusia". Todas estas historias prolijas sobre la "administración de sistemas de información" las corté inmediatamente sin dudarlo. Cuanto más oficiosa y burocrática sea la descripción del trabajo anterior, mayor será la probabilidad de que dicho solicitante no haya visto nada en su vida, excepto Windows y las copias de seguridad que utilizan una interfaz gráfica.



En una selección rápida de currículums, la regla ayuda: cuantas más tecnologías conozca, mejor. Si el currículum de una persona dice MySQL, Linux, Postgres, Apache, etc., es probable que exista. La persona al menos ha oído hablar de tecnología y, quién sabe, tal vez incluso haya trabajado con ellos él mismo. Pero seamos honestos, puedes escribir cualquier cosa en tu currículum.



En la entrevista, lo primero que hago es consultar la base de datos.



Cuando me convierta en un anciano frágil y me den una paliza tonta, ¡empezaré a golpear con un palo en la espalda de todos los que no conozcan la red! Esto es imprescindible para cualquier ingeniero. Vivimos en un mundo donde todo sucede en redes. Incluso en un sector público cerrado, hay un contorno local. Y hay un desarrollador que escribe algún servicio de proxy o compone un servicio que funciona con una API y no entiende nada sobre la API.



No necesito conocimientos especiales, no pido configurar MPLS por mí. Pero, ¿qué es una máscara de subred, qué es una dirección IP? En el siglo XXI, todos los especialistas en TI deberían saberlo. No tengo idea de lo que está pasando por la cabeza de una persona cuando no entiende qué es 127.0.0.1. Se sienta en una máquina local, tiene un servicio que se ejecuta en una máquina virtual. El servicio tiene un punto final 127.0.0.1, una conexión a la base de datos. Desde la ignorancia, nuestro héroe impulsa lo mismo. Como resultado: "No puedo conectarme a la base". Por supuesto, maldita sea, ¡no se conecta!



Si una persona tiene un certificado CCNA, está bien, incluso si no lo tomó, no lo recibió físicamente, sino que estaba preparado, este hecho es suficiente para mí.




Por ejemplo, aquí hay un acertijo CCNA estándar para comprender cómo funcionan las redes



Hay dos conmutadores de diferentes redes, hay un enrutador entre ellos. La computadora A quiere enviar datos a la computadora B.



¿Qué pasa en este momento?
: «, , , . , , MAC- , . , , . , ».






Luego pregunto en todas las capas del modelo OSI



¿Alguien ha oído hablar del protocolo Spanning Tree? ¿Sobre el protocolo raíz, sobre la capa IP? Ok, ¿cómo funciona todo? ¿Entiende cómo ocurre el enrutamiento? Bueno, a granel: tablas de enrutamiento, protocolo de enrutamiento dinámico, capa de transporte TCP. Y así sucesivamente y así sucesivamente.



Quiero escuchar la diferencia entre TCP y UDP. Un buen especialista me responderá por qué los sistemas críticos (por ejemplo, el sistema de nombres de dominio) utilizan el protocolo sin entrega de mensajes garantizada (UDP).



La respuesta es simple: es más rápido de esta manera. Mientras organiza una sesión TCP, puede enviar un paquete UDP 3 veces allí y recibirlo. Y sin gastos generales.



Hago preguntas sobre DNS



¿Cuáles son los tipos de grabación? ¿Mi interlocutor sabe qué es un registro MX, cómo funciona spf o cómo funciona DKIM?



Sí, este conocimiento puede no ser útil en el trabajo. Pero es importante para mí saber si una persona comprende la esencia de la tecnología, si estaba interesado en leer sobre ella. ¿Agregó algunos registros al DNS y google qué es un registro spf, o no?



El protocolo HTTP se usa absolutamente en todas partes ahora, y estoy preguntando al respecto.



Empiezo por hacer las preguntas estándar sobre las diferencias entre las versiones de http 1.0, 1.1 y la versión dos. Estoy interesado en qué son los encabezados y por qué se necesitan. ¿Cómo entiende el servidor web que recibió una solicitud para un host virtual específico y no para ningún otro? Y siempre hago un par de preguntas sobre Nginx.



Luego cambio mi atención sin problemas al protocolo TLS



¿Cómo funciona SSL \ TLS? Un ingeniero debe comprender esto al menos a un nivel básico: hay una autoridad de certificación raíz, él firmó el certificado y el certificado se usa en algún lugar.



En TLS, generalmente estoy interesado en el proceso de establecer una conexión. ¿Por qué necesitamos claves públicas y privadas y cómo interactúan? Si una persona se equivoca, le hago una pregunta capciosa: ¿es posible tener varios certificados diferentes en una IP-shnik?



Responde bajo el spoiler
, TLS-, HTTP-, - , HTTP-, . Nginx , , . TLS-, , TLS-. . , IP- SSL.



Pasando a Linux y BASH



Necesita saber todo Unix, todos los sistemas similares a Unix. Necesita poder trabajar con Shell y Bash, conocer los comandos básicos. ls, mkdir, etc.



Bueno, si el candidato puede hacer un pequeño guión en BASH, significa que trató de automatizar de alguna manera esta historia.



En Linux, le preguntaré cómo reemplazar líneas en un archivo con otras líneas. O cómo analizar algunos access.log en Nginx usando BASH. Para que una persona hable sobre awk, sobre gato, sobre sort, sobre todo lo que ayuda al trabajo rápido.



Hay archivos de texto en todas partes, necesita trabajar con ellos correctamente. Si el solicitante ofrece copiarlos a Excel y hacer algo allí, entonces me sentiré avergonzado.



Luego, debe averiguar cómo van las cosas con la virtualización.



Virtualización convencional, virtualización a través del hipervisor. Si un candidato comienza a hablar de paravirtualización, significa que sabe algo.



Mi pregunta principal es: ¿cuál es la diferencia entre la virtualización de contenedores y la virtualización de hipervisor normal? Es bueno si una persona compara qué es mejor, qué es peor, dónde es apropiado usarlo.



Pasando a los contenedores



¿Averigüe si la persona con la que está hablando ha trabajado con Docker? ¿Compiló imágenes, escribió archivos de Docker, usó la composición de Docker, implementó con él? ¿Por qué son necesarios estos contenedores y cómo funcionan? ¿Nuestro solicitante ha mencionado el sistema de orquestación de contenedores Swarm o Kubernetes? Puede hacer todo un bloque de preguntas, pero lo principal es comprender si la persona hizo el trabajo con sus propias manos con contenedores o no.



Preguntar sobre la implementación de CI / CD



Estoy interesado en una gran lista de cosas: ¿cómo configura la implementación automática, cómo configura la integración continua? Cómo se ensamblan sus aplicaciones, ¿utiliza sistemas de análisis de código (PVS-Studio, SonarQube)? Cómo escribe las pruebas o cómo integra las pruebas escritas por los desarrolladores.



¿Realiza algún tipo de prueba de integración en estos ensamblados? ¿Qué pasa después con lo que recogió? ¿De alguna manera se suma a artfecates o está empaquetado en contenedores docker, empujado al registro? Deje que le diga qué sistemas utilizó para configurar el proceso de CI / CD. Puede ser GitLab CI, Circle CI y algunas soluciones en la nube. Quizás Jenkins, bueno, no debería olvidarse de los scripts escritos por usted mismo en PowerShell.



Dime cómo se despliega una persona y lo entenderé todo. Se puede implementar usando Helm en Kubernetes, Ansible, scripts o algo más escrito por usted mismo.



Acerca del sistema de gestión de la configuración



Hablamos Ansible con mayor frecuencia. Porque la mayoría de la gente lo conoce. Entonces, ¿por qué necesitamos roles, cómo cifrar y almacenar datos secretos, cómo cargar contraseñas en un repositorio de Git? Y cosas como esa.



Más información sobre la capacidad de escribir código



Es importante comprender el desarrollo para comprender cómo interactúan los servicios, por qué necesita API, protocolos de autenticación, autorización. Es bueno que el candidato haya escrito algo él mismo. Incluso los scripts básicos en Python o Shell son suficientes para mí. Lo que importa no es el código, sino qué tareas quería resolver la persona, qué quería lograr.



Se necesita codificación para respaldar la infraestructura, escribir scripts locales para copias de seguridad, monitoreo personalizado, para extraer métricas con calma. A menudo sucede en el trabajo que simplemente no existe una solución estándar para alguna tarea.



Las preguntas finales de la entrevista son sobre el almacenamiento de la base de datos.



SQL, NoSQL: ¿cuáles son las diferencias, con qué trabajaste? Más a menudo me encuentro con personas con experiencia en PostgreSQL, con menos frecuencia - MySQL. Hago preguntas sobre índices, si un solicitante puede configurar una réplica, si puede configurar una réplica lógica entre tablas o solo datos. ¿Y qué vigilará en este caso? ¿Cómo acelerar la base?






Por cierto, esta es una buena pregunta. Digamos que la base ahora está sentada y descansando sobre el disco. Y no se puede hacer nada con él, nadie más comprará el servidor. ¿Cómo puede hacer que funcione más rápido ahora?



Sólo...
: fsync, , . Linux , , . , , . , . . . , .





Para resumir -



  • redes
  • Nivel de API
  • capa de transporte TCP \ UDP
  • Protocolos DNS y HTTP
  • Linux
  • virtualización de contenedores e hipervisores
  • CI / CD
  • sistema de gestión de la configuración
  • contenedores
  • Base de datos


Todo esto te permite hacer una imagen completa de una persona.



Lo más importante de mi lista son los conocimientos básicos. Si no conoce la base, es hora de terminar su seguro social.



Si una persona no puede responderme qué es una máscara de subred, o no entiende por qué se necesitan encabezados en HTTP, en la mayoría de los casos, dicho solicitante obtiene el signo negativo más gordo en mi cuaderno. ¿No tenías curiosidad por saber cómo funcionan todas estas cosas de puntas de ratón?



Es muy difícil trabajar con personas que simplemente repiten mecánicamente lo que han aprendido, en lugar de averiguar cómo funciona todo. Un principiante que no conozca a Docker puede resolverlo fácilmente si comprende qué son HTTP, TLS y las redes.



Pero finalmente, el punto más importante: esta lista completa no es necesaria para seguirla en una entrevista real. Debe revisar esta lista usted mismo antes de contratar personas.



Y si todo sale bien, llame al candidato para una entrevista y hágale solo una pregunta: cuál fue el mayor fracaso que cometió en el trabajo, cómo lo solucionó y qué conclusiones extrajo de sus errores.



Cuando una persona tiene algo que contar, esa sesión de seguridad social transcurrirá como una conversación amistosa entre dos ingenieros con cerveza.



Bueno, por tradición, los invito a unirse a nuestra comunidad en el carrito , allí analizamos regularmente todos estos temas y muchos otros que serán útiles tanto en la entrevista como en el trabajo.



All Articles