Programadores, ir a entrevistas

Programadores, ir a entrevistas
La imagen está tomada de un video del canal “Amatistas militantes»

Trabajé como programador de sistemas para Linux durante unos 10 años. Estos son módulos del kernel (espacio del kernel), varios demonios y trabajo con hardware del espacio del usuario (espacio del usuario), varios cargadores de arranque (u-boot, etc.), firmware del controlador y mucho más. Incluso a veces se cortaba la interfaz web. Pero más a menudo sucedía que tenía que sentarme con un soldador e interactuar con los diseñadores de placas de circuito impreso. Uno de los problemas de este tipo de trabajo es que es bastante difícil evaluar el nivel de su competencia, ya que es posible que conozca muy profundamente una tarea, pero es posible que no conozca otra en absoluto. La única forma adecuada de saber adónde ir y qué corrientes hay ahora es acudir a entrevistas.

En este artículo me gustaría resumir mi experiencia al realizar una entrevista para un puesto vacante como programador de sistemas Linux, los detalles de la entrevista, el trabajo y cómo evaluar su nivel personal de conocimientos comunicándose con un futuro empleador y lo que no debe hacer. esperar de ello.

El artículo incluirá un pequeño concurso con premios.

Características de la profesión

Un programador de sistemas, en el campo específico en el que trabajé, es un completo generalista: tenía que escribir código y depurar hardware. Y a menudo era necesario soldar algo usted mismo. De vez en cuando sucedía que mis ajustes en el hardware eran transferidos a los desarrolladores. Por tanto, para trabajar en esta área se necesita una base de conocimientos bastante buena, tanto en el campo de los circuitos digitales como en la programación. Debido a esto, las entrevistas para un puesto de programador de sistemas a menudo parecen una búsqueda de un especialista en electrónica.

Programadores, ir a entrevistas
Una estación de trabajo típica para un programador de sistemas.

La foto de arriba muestra mi lugar de trabajo típico cuando depuro controladores. El analizador lógico muestra la exactitud de los mensajes transmitidos, el osciloscopio monitorea la forma de los bordes de la señal. Además, el depurador jtag no estaba incluido en el marco, que se utiliza cuando las herramientas de depuración estándar ya no dan abasto. Y necesita poder trabajar con todo este equipo.

A menudo sucede que es más rápido y más fácil volver a soldar algunos elementos y corregir errores de topología usted mismo que llevar el producto a un instalador. Además, en su lugar de trabajo también se instala una estación de soldadura.

Otra característica del desarrollo a nivel de controladores y hardware es que Google no ayuda. A menudo tienes que buscar información sobre tu problema y hay tres enlaces, dos de los cuales son tus propias preguntas en algún foro. O peor aún, cuando te encuentras con una pregunta del mismo pobre tipo que la hizo hace 5 años en la lista de correo del kernel y nunca recibió respuesta. En este trabajo, además de los errores en el diseño tanto del hardware como del software, a menudo se encuentran errores en la documentación; estos son probablemente los problemas más graves y desagradables. A veces los registros se describen incorrectamente o no existe ninguna descripción para ellos. Estos problemas sólo pueden resolverse introduciendo científicamente números aleatorios en ciertos registros (una especie de inversión). A menudo sucede que el procesador contiene alguna funcionalidad, pero nadie, excepto usted, implementó esta funcionalidad (especialmente si el procesador es nuevo). Y esto supone caminar por el campo con un rastrillo, el 70% del cual es para niños. Pero cuando hay documentación, incluso con errores, esto ya es un avance. Muchas veces sucede que no hay documentación alguna, y es entonces cuando comienza a caminar por campos minados cuando el hierro arde. Y sí, también resolví con éxito esos problemas.

Entrevistas

Mi opinión es que deberías acudir a una entrevista al menos una vez cada seis meses, incluso si adoras tu trabajo y no quieres cambiarlo. Una entrevista te permite conocer tu nivel como especialista. Creo que las entrevistas más valiosas son las que fracasan. Ellos son los que muestran con mayor precisión qué cuellos de botella en su conocimiento deben mejorarse.

Otra característica interesante es la calidad de las entrevistas. Ésta es mi observación y no es la verdad, admito que simplemente tuve suerte. Si la entrevista va según el escenario:

  • Cuéntanos acerca de tí;
  • Tenemos tales tareas;
  • ¿te gusta?

Y si después de este diálogo se gustan, se ponen a trabajar, entonces, por regla general, la compañía y las tareas resultan muy agradables y adecuadas. Si una entrevista se parece a pasar por 12 círculos del infierno: la primera entrevista con RR.HH., luego una entrevista con un grupo de programadores, luego con el director, más tareas, etc., entonces, por regla general, se trataba de organizaciones fallidas en las que no trabajaba. por mucho tiempo. Nuevamente, esta es una observación personal, pero por regla general, demasiada burocracia y un proceso de contratación prolongado muestran que dentro de la empresa se llevan a cabo exactamente los mismos procesos. Las decisiones se toman de forma lenta e ineficaz. También hubo situaciones opuestas, cuando surgieron círculos de entrevistas infernales y la empresa resultó ser genial, y cuando, después de un tirón de orejas, la empresa resultó ser un pantano, pero estas son raras.

Si crees que el escenario: conocerte, contarte sobre ti y ser contratado sólo existe en empresas pequeñas, entonces no. Lo he visto en empresas muy grandes que emplean a más de cientos de personas y están representadas en los mercados mundiales. Este es un mecanismo normal, especialmente si tiene un amplio historial y tiene la oportunidad de llamar a sus empleadores anteriores y preguntar por usted.

Para mí, es un muy buen indicador de una empresa cuando piden mostrar ejemplos de sus proyectos y código. Inmediatamente se muestra el nivel de formación del solicitante. Y, en lo que a mí respecta, desde el punto de vista de la selección de candidatos, este es el método de selección más eficaz que las entrevistas. De hecho, puedes fracasar en una entrevista por la emoción o, por el contrario, salir por la adrenalina. Pero en el trabajo real no se pueden hacer frente a tareas reales. Y también me encontré con esto cuando yo mismo entrevisté a personas. Viene un especialista, se muestra excelente, me gustó, le gustamos nosotros. Y luché con el problema más simple durante un mes y, como resultado, otro programador lo resolvió en un par de días. Tuve que separarme de ese programador.

Valoro especialmente las tareas de programación en las entrevistas. Y los que hay que solucionar en pleno encuentro, bajo estrés y deberes. El primero muestra qué tan preparado está para resolver problemas de manera rápida y precisa en una situación estresante y de emergencia. El segundo muestra tu nivel de competencia y capacidad para buscar información y resolver problemas actuales.

Los trabajos más interesantes que tuve fueron en el complejo de defensa de nuestro país. En el proceso de trabajo, tuve que resolver problemas simplemente fantásticos con los que los programadores comerciales ni siquiera habían soñado. Supercomputadoras, diseño de enrutadores, varios sistemas de combate de nodos: esto es increíblemente emocionante. Cuando durante el desfile ves un complejo que almacena tu código, es realmente agradable. Curiosamente, las entrevistas con estas empresas suelen ser muy simples, literalmente, se aceptan, se aceptan (probablemente los detalles de los militares, a quienes no les gusta hablar demasiado), se superponen. Los desafíos que enfrenté allí fueron realmente interesantes y desafiantes. Con la experiencia, resultó que son buenos para aprender a ser un programador de sistemas de alta calidad. También hay desventajas, y ni siquiera se trata de salarios bajos. Por el momento, el salario en el complejo de defensa es bastante decente, con bonificaciones y beneficios. Por regla general, hay mucha burocracia, largas jornadas de trabajo, interminables trabajos urgentes y trabajo bajo gran estrés. En determinados casos no se puede descartar el secreto, lo que añade ciertos problemas a la hora de viajar al extranjero. Además, por supuesto, la tiranía de las autoridades, y esto, lamentablemente, también sucede. Aunque mi experiencia de trabajar con un representante de atención al cliente es sumamente placentera. Esta es una impresión colectiva de tres institutos de investigación y empresas diferentes relacionados con las órdenes de defensa estatales.

Tareas de entrevista

Para evitar malentendidos y no exponer a las empresas con las que me entrevisté, no tentaré al destino ni indicaré sus detalles. Pero agradezco cada entrevista, el tiempo que la gente me dedica, la oportunidad de mirarme desde fuera. Sólo puedo decir que las tareas eran para grandes empresas internacionales representadas en diferentes países.

Te diré lo más interesante: qué tareas se asignan durante las entrevistas. En general, las preguntas más habituales para la vacante de programador de sistemas y programador de microcontroladores son las operaciones de bits, en todas las variaciones posibles. Por lo tanto, prepárate mejor en esta área.

El segundo tema más polarizador son las señales, esto realmente debería llamar la atención. Para que te despierten en mitad de la noche y puedas contarlo y mostrarlo todo.

Robé preguntas de varias entrevistas en mi cabeza y las presentaré aquí, ya que las encuentro bastante interesantes. Deliberadamente no doy respuestas a estas preguntas para que los lectores puedan responderlas ellos mismos en los comentarios y tener un poco de polvo al pasar por una entrevista real.

Preguntas número 1

I. Conocimiento del SI. ¿Qué significan las siguientes entradas?

const char * str;

char const * str;

const * char str;

char * const str;

const char const * str;

¿Son todas las entradas correctas?

II. ¿Por qué este programa arrojará un error de segmentación?

int main ()
{
       fprintf(0,"hellon");
       fork();
       return(0);
}

III. Para ser inteligente.

Hay un palo de un metro de largo. Diez hormigas caen al azar sobre ella, arrastrándose en diferentes direcciones. La velocidad de movimiento de una hormiga es 1 m/s. Si una hormiga se encuentra con otra hormiga, se da vuelta y se arrastra en la dirección opuesta. ¿Cuál es el tiempo máximo que debes esperar hasta que todas las hormigas se caigan del palo?

La siguiente entrevista fue un fracaso para mí y la considero la más útil en mi práctica de programación. Mostró la profundidad de mi incompetencia. Antes de esta entrevista, estaba familiarizado con cada una de estas preguntas y surgían constantemente en mi práctica, pero de alguna manera no les daba mucha importancia y, en consecuencia, no las entendía bien. Por lo tanto, reprobé este examen con vergüenza. Y estoy muy agradecido de que se haya producido tal fracaso; tuvo el efecto más aleccionador en mí. Crees que eres un gran especialista, conoces el diseño de circuitos, las interfaces y el trabajo con el kernel. Y luego tienes preguntas reales y flotas. Así que veamos.

Preguntas de la entrevista n.° 2

Problemas de hardware.

  • Cómo se organizan las llamadas al sistema Linux en lenguaje ensamblador en un procesador ARM, en x86. ¿Cuál es la diferencia?
  • ¿Qué herramientas de sincronización existen? ¿Qué herramientas de sincronización se pueden utilizar dentro de un contexto de interrupción, cuáles no y por qué?
  • ¿Cuál es la diferencia entre el bus i2c y el bus spi?
  • ¿Por qué hay terminadores en el bus i2c y cuál es su valor?
  • ¿La interfaz RS-232 puede funcionar SÓLO con dos cables: RX y TX? Aquí daré la respuesta: Resulta que es malo, a 9600, ¡¡¡pero se puede!!!
  • Y ahora la segunda pregunta: ¿por qué?
  • ¿Cuál es la mejor manera de organizar las líneas de señal y potencia en placas multicapa y por qué? ¿Energía dentro de las capas o líneas de señal dentro de las capas? (La pregunta generalmente es puramente sobre el diseño del circuito).
  • ¿Por qué las líneas diferenciales tienen pistas que van juntas en todas partes?
  • Autobús RS-485. Por lo general, hay terminadores en dicha línea. Sin embargo, tenemos un circuito en estrella, con un número variable de módulos enchufables. ¿Qué medios se deben utilizar para evitar colisiones e interferencias?
  • ¿Qué son los árboles rojos y binarios?
  • ¿Cómo trabajar con cmake?
  • Preguntas sobre la construcción de yocto Linux.

Objetivos de esta entrevista:

1. Escribe una función que se invierta a uint32_t todos los bits. (Trabajar con bits es muy popular en las entrevistas, lo recomiendo)
2.

int32_t a = -200;
uint32_t b = 200;
return *(uint32_t) * (&a)) > b;

¿Qué devolverá esta función? (solución en papel, sin ordenador)

3. Función para calcular la media aritmética de dos números. int32_t.

4. ¿Cuáles son los métodos de salida en los programas, incl. en una corriente de errores.

La tercera selección fue relativamente reciente, y no me sorprendería que todavía existiera un cuestionario así, así que no revelaré la empresa para no exponerlos... Pero en términos generales daré un ejemplo. de posibles preguntas, y si reconoces tus preguntas, entonces te saludo :).

Preguntas de la entrevista n.° 3

  1. Se da un ejemplo de código transversal de árbol; es necesario decir qué se está haciendo en este código y señalar los errores.
  2. Escribe un ejemplo de la utilidad ls. Con la opción más sencilla “-l”.
  3. Dé un ejemplo de cómo realizar enlaces estáticos y dinámicos. ¿Cuál es la diferencia?
  4. ¿Cómo funciona RS-232? ¿Cuál es la diferencia entre RS-485 y RS-232? ¿Cuál es la diferencia entre RS-232 y RS-485 desde el punto de vista de un programador?
  5. ¿Cómo funciona el USB (desde el punto de vista de un programador)?
  6. Traducción de textos técnicos del ruso al inglés.

Una entrevista exitosa no es garantía de un trabajo exitoso

Probablemente este capítulo ni siquiera sea para programadores (aunque también para ellos), sino más bien para RRHH. Las empresas más adecuadas no miran meticulosamente los resultados de las entrevistas. Es normal cometer errores, la mayoría de las veces se deben a cómo una persona sabe resolver problemas y razonar.

Uno de los problemas clave es que el candidato resuelve con éxito los problemas durante las entrevistas, demuestra ser un excelente especialista, pero fracasa en la primera tarea real. No mentiré, esto también me pasó a mí. Pasé con éxito por todos los círculos del infierno, resolví todas las tareas de prueba, pero en condiciones reales el trabajo resultó demasiado difícil debido a la simple inexperiencia. Subirse a bordo no es la tarea más difícil. Lo más difícil es permanecer a bordo de esta empresa.

Por eso, confío más en empresas que realizan entrevistas sencillas con el candidato y le dicen: después del primer mes de trabajo, quedará claro si eres apto para nosotros o no. Este es el enfoque más adecuado, sí, quizás un poco caro, pero inmediatamente queda claro quién es quién.

Hay otra opción para las entrevistas: cuando la apruebas con éxito, pero según los resultados de la entrevista comprendes que el empleador es completamente inadecuado. Inmediatamente rechazo el trabajo si me ofrecen trabajar como empresario individual, prometiéndome grandes ingresos. Esta es una forma de evasión fiscal para una organización operativa, y ¿por qué deberían preocuparme como programador los problemas del empleador? Otra opción son varias agencias gubernamentales. Tuve una entrevista, como resultado de la cual me ofrecieron un buen salario, pero dijeron que el programador anterior renunció, se enfermó, murió, se emborrachó debido a la carga de trabajo y su jornada laboral comienza a las 8 de la mañana. . Desde ese lugar también corrió para que sus talones brillaran. Sí, RR.HH., tenga en cuenta que los programadores están dispuestos a rechazar incluso el trabajo más delicioso si la jornada laboral tiene que empezar temprano en la mañana.

Al final, daré un excelente video de selección de programadores, cuya captura de pantalla se muestra al comienzo de este artículo. También tuve una entrevista así más de una vez. Si ves tiranía en la etapa de preguntas, respétate a ti mismo, levántate, toma tus cosas y vete; esto es normal. Si RRHH y el jefe se imponen a su costa durante la entrevista, esto indica que la empresa es tóxica y que no debería trabajar allí a menos que le gusten los jefes inadecuados.

Hallazgos

¡Programadores, vayan a las entrevistas! Y siempre trata de conseguir un ascenso. Digamos que si obtiene N dinero, entonces vaya a una entrevista por al menos N*1,2, o mejor N*1,5. Incluso si no acepta esta vacante de inmediato, comprenderá lo que se necesita para este nivel salarial.
Mis observaciones han demostrado que un buen conocimiento del idioma inglés, una experiencia suficientemente rica en el sector y la confianza en uno mismo son lo que deciden. Esta última es la cualidad principal, como en todas partes de la vida. Como regla general, un candidato más seguro puede desempeñarse mejor en una entrevista, incluso con más errores, que un candidato excelente, pero más tímido y proactivo. ¡Buena suerte con tus entrevistas!

Competencia P/S

Si tiene ejemplos interesantes de problemas que le han cargado RR.HH., bienvenido a los comentarios. Hemos preparado un pequeño concurso: las condiciones son simples: escribes la tarea más inusual que tuviste durante una entrevista, los lectores la evalúan (más) y después de una semana resumimos los resultados y recompensamos al ganador con obsequios divertidos.

Programadores, ir a entrevistas

Programadores, ir a entrevistas

Fuente: habr.com

Añadir un comentario