Programadores, ir ás entrevistas

Programadores, ir ás entrevistas
A imaxe está tomada dun vídeo da canle "Amatistas militantes»

Traballei como programador de sistemas para Linux durante uns 10 anos. Estes son módulos do núcleo (espazo do núcleo), varios daemons e que traballan con hardware desde o espazo do usuario (espazo do usuario), varios cargadores de arranque (u-boot, etc.), firmware do controlador e moito máis. Incluso ás veces ocorreu cortar a interface web. Pero máis a miúdo ocorreu que tiña que sentarme cun soldador e interactuar cos deseñadores de placas de circuíto impreso. Un dos problemas deste tipo de traballo é que é bastante difícil avaliar o nivel da túa competencia, xa que podes coñecer unha tarefa moi a fondo, pero pode que non coñezas outra. A única forma adecuada de entender a onde ir e que correntes hai agora é acudir ás entrevistas.

Neste artigo gustaríame resumir a miña experiencia de entrevista para unha vacante como programador de sistemas Linux, os detalles da entrevista, o traballo e como avaliar o teu nivel persoal de coñecemento comunicándose cun futuro empregador e o que non deberías. esperar dela.

O artigo incluirá un pequeno concurso con premios.

Características da profesión

Un programador de sistemas, no campo específico no que traballei, é un completo xeneralista: tiven que escribir código e depurar hardware. E moitas veces había a necesidade de soldar algo vostede mesmo. De cando en vez, ocorreu que os meus axustes no hardware foron trasladados aos desenvolvedores. Polo tanto, para traballar nesta área é preciso unha base de coñecementos bastante boa, tanto no ámbito dos circuítos dixitais como na programación. Por iso, as entrevistas para un posto de programador de sistemas adoitan parecer unha busca dun especialista en electrónica.

Programadores, ir ás entrevistas
Unha estación de traballo típica para un programador de sistemas.

A foto de arriba mostra o meu lugar de traballo típico ao depurar controladores. O analizador lóxico mostra a corrección das mensaxes transmitidas, o osciloscopio supervisa a forma dos bordos do sinal. Ademais, o depurador jtag non se incluíu no marco, que se usa cando as ferramentas de depuración estándar xa non funcionan. E cómpre poder traballar con todo este equipo.

Adoita ocorrer que é máis rápido e sinxelo volver soldar algúns elementos e corrixir os erros de topoloxía vostede mesmo que levar o produto a un instalador. E entón unha estación de soldadura tamén se instala no teu lugar de traballo.

Outra característica do desenvolvemento a nivel de controlador e hardware é que Google non axuda. Moitas veces tes que buscar información sobre o teu problema e hai tres ligazóns, dúas das cales son as túas propias preguntas nalgún foro. Ou aínda peor, cando te atopas cunha pregunta do mesmo pobre que a fixo hai 5 anos na lista de correo do núcleo e nunca recibiu resposta. Neste traballo, ademais dos erros no deseño do hardware e do software, adoitan atoparse erros de documentación: estes son probablemente os problemas máis graves e desagradables. Ás veces, os rexistros descríbense incorrectamente ou non hai ningunha descrición para eles. Estes problemas só poden resolverse introducindo cientificamente números aleatorios en certos rexistros (unha especie de reverso). Adoita ocorrer que o procesador contén algunha funcionalidade, pero ninguén agás ti implementou esta funcionalidade (especialmente se o procesador é novo). E isto supón camiñar polo campo cun anciño, o 70% dos cales son para nenos. Pero cando hai documentación, aínda que teña erros, isto xa é progreso. Moitas veces ocorre que non hai documentación en absoluto, e é entón cando comeza a andar polos campos de minas cando arde o ferro. E si, tamén resolvín con éxito tales problemas.

Entrevistas

A miña opinión é que debes ir a entrevistas polo menos unha vez cada seis meses, aínda que che guste o teu traballo e non queiras cambialo. Unha entrevista permíteche comprender o teu nivel como especialista. Creo que as entrevistas máis valiosas son as que fallan. Son os que mostran con maior precisión cales son os pescozos de botella no teu coñecemento que hai que mellorar.

Outra característica interesante é a calidade das entrevistas. Esta é a miña observación, e non é a verdade, recoñezo que tiven sorte. Se a entrevista transcorre segundo o escenario:

  • fálanos de ti;
  • Temos tales tarefas;
  • Gústache?

E se despois deste diálogo vos gustan os uns os outros, ides traballar, entón, por regra xeral, a empresa e as tarefas resultan moi agradables e adecuadas. Se unha entrevista semella pasar por 12 círculos do inferno: a primeira entrevista con RRHH, despois unha entrevista cun grupo de programadores, despois o director, máis deberes, etc., entón, por regra xeral, eran organizacións fallidas nas que non traballaba. por moito tempo. Unha vez máis, trátase dunha observación persoal, pero como regra xeral, demasiada burocracia e un proceso de contratación prolongado demostran que os mesmos procesos exactos teñen lugar dentro da empresa. As decisións tómanse lentamente e de forma ineficaz. Tamén houbo situacións opostas, cando houbo círculos de inferno de entrevistas, e a empresa resultou ser xenial, e cando, tras unha palmada no pulso, a empresa resultou ser un pantano, pero estes son raros.

Se pensas que o escenario: coñecín, falou de si mesmo e foi contratado, só existe en pequenas empresas, entón non. Eu vin isto en empresas moi grandes que empregan a máis de centos de persoas e están representadas nos mercados mundiais. Este é un mecanismo normal, especialmente se tes un rico historial e tes a oportunidade de chamar aos teus empregados anteriores e preguntar por ti.

Para min, é un moi bo indicador dunha empresa cando piden mostrar exemplos dos seus proxectos e código. O nivel de formación do solicitante móstrase inmediatamente. E, en canto a min, desde o punto de vista da selección de candidatos, este é o método de selección máis eficaz que as entrevistas de exhibición. De feito, pode fallar nunha entrevista por emoción ou, pola contra, saír con adrenalina. Pero no traballo real, non podes facer fronte a tarefas reais. E tamén me atopei con isto cando entrevistei á xente. Vén un especialista, móstrase excelente, gustoume, gustábanos. E loitei co problema máis sinxelo durante un mes e, como resultado, outro programador resolveuno nun par de días. Tiven que separarme dese programador.

Valoro especialmente as tarefas de programación nas entrevistas. E as que hai que resolver xusto durante a reunión, baixo estrés e deberes. O primeiro mostra o preparado que estás para resolver problemas con rapidez e precisión nunha situación estresante e de emerxencia. A segunda mostra o teu nivel de competencia e capacidade para buscar información e resolver problemas actuais.

Os traballos máis interesantes que tiven foron no complexo de defensa do noso país. No proceso de traballo, tiven que resolver problemas simplemente fantásticos que os programadores comerciais nunca soñaran. Supercomputadoras, deseño de enrutadores, varios sistemas de combate de nodos: isto é incriblemente emocionante. Cando durante o desfile ves un complexo que almacena o teu código, é moi agradable. Curiosamente, as entrevistas con tales empresas adoitan ser moi sinxelas, literalmente veñen, como iso, aceptadas (probablemente as particularidades dos militares, que non lles gusta falar demasiado), están superpostas. Os retos aos que me enfrontei alí foron verdadeiramente interesantes e desafiantes. Coa experiencia, resultou que son bos para aprender a ser un programador de sistemas de alta calidade. Tamén hai desvantaxes, e non se trata nin de salarios baixos. Polo momento, o soldo no complexo da defensa é bastante decente, con bonificacións e beneficios. Como regra xeral, hai moita burocracia, longas xornadas de traballo, traballos precipitados interminables e traballos baixo un gran estrés. En determinados casos non se pode descartar o segredo, o que engade certos problemas para viaxar ao estranxeiro. Ademais, por suposto, a tiranía dos xefes, e isto, por desgraza, tamén pasa. Aínda que a miña experiencia de traballar cun representante do cliente é moi agradable. Esta é unha impresión colectiva de tres institutos de investigación e empresas diferentes relacionados coas ordes de defensa do Estado.

Tarefas de entrevista

Para evitar malentendidos e para non expoñer as empresas coas que entrevistei, non tentarei o destino e indicarei os seus datos. Pero agradezo cada entrevista, o tempo que a xente dedica a min, a oportunidade de mirarme dende fóra. Só podo dicir que as tarefas eran para grandes empresas internacionais representadas en distintos países.

Vouche dicir o máis interesante: que tarefas se dan durante as entrevistas. En xeral, as preguntas máis habituais para a vacante dun programador de sistemas e programador de microcontroladores son as operacións de bits, en todas as variacións posibles. Polo tanto, prepárate mellor nesta área.

O segundo tema máis polarizador son os postes sinalizadores, isto realmente debería saltar dos dentes. Para que te esperten no medio da noite e poidas contar e mostrar todo.

Roubei na cabeza preguntas de varias entrevistas, e aquí as presentarei, xa que me parecen bastante interesantes. Deliberadamente non dou respostas a estas preguntas para que os lectores poidan responder eles mesmos nos comentarios e ter un pouco de po ao pasar unha entrevista real.

Preguntas no 1

I. Coñecemento de SI. Que significan as seguintes entradas:

const char * str;

char const * str;

const * char str;

char * const str;

const char const * str;

Todas as entradas son correctas?

II. Por que este programa producirá un fallo de segmentación?

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

III. Para ser intelixente.

Hai un pau dun metro de longo. Dez formigas caen sobre ela aleatoriamente, arrastrándose en diferentes direccións. A velocidade de movemento dunha formiga é de 1 m/s. Se unha formiga atopa outra formiga, esta dá a volta e arrastra na dirección oposta. Cal é o tempo máximo que necesitas para esperar a que todas as formigas caian do pau?

A seguinte entrevista foi un fracaso para min, e considero que é a máis útil na miña práctica de programación. Mostrou a profundidade da miña incompetencia. Antes desta entrevista, estaba familiarizado con cada unha destas preguntas e apareceron constantemente na miña práctica, pero dalgún xeito non lles daba moita importancia e, en consecuencia, non as entendía ben. Polo tanto, suspendín este exame en desgraza. E estou moi agradecido de que ocorrera un fracaso así; tivo o efecto máis aleccionador para min. Pensas que es un gran especialista, coñeces o deseño de circuítos, as interfaces e o traballo co núcleo. E entón tes preguntas reais e flotas. Entón, imos ver.

Preguntas da entrevista nº 2

Problemas de hardware.

  • Como se organizan as chamadas do sistema Linux en linguaxe ensamblador nun procesador ARM, en x86. Cal é a diferenza?
  • Que ferramentas de sincronización hai? Que ferramentas de sincronización se poden usar nun contexto de interrupción, cales non e por que?
  • Cal é a diferenza entre o bus i2c e o bus spi?
  • Por que hai terminadores no bus i2c e cal é o seu valor?
  • A interface RS-232 pode funcionar SÓ en dous cables: RX e TX? Aquí darei a resposta: Resulta que está mal, no 9600, pero pode!!!
  • E agora a segunda pregunta: por que?
  • Cal é a mellor forma de organizar as liñas de sinal e a alimentación en placas multicapa e por que? Poder dentro das capas ou liñas de sinal dentro das capas? (A pregunta é xeralmente puramente sobre o deseño de circuítos).
  • Por que as liñas diferenciais teñen vías que van xuntas por todas partes?
  • Bus RS-485. Normalmente hai terminadores nesta liña. Porén, temos un circuíto en estrela, cun número variable de módulos enchufables. Que medios se deben utilizar para evitar colisións e interferencias?
  • Que son as árbores vermellas e as binarias?
  • Como traballar con cmake?
  • Preguntas sobre a creación de yocto Linux.

Obxectivos desta entrevista:

1. Escribe unha función que inverte a uint32_t todos os bits. (Traballar con bits é moi popular nas entrevistas, recoméndoo)
2.

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

Que devolverá esta función? (solución en papel, sen ordenador)

3. Función de cálculo da media aritmética de dous números int32_t.

4. Cales son os métodos de saída nos programas, incl. nunha corrente de erros.

A terceira selección foi relativamente recente, e non me estrañaría que aínda exista un cuestionario así, polo que non desvelarei a empresa para non expoñelos... Pero en liñas xerais vou poñer un exemplo. de posibles preguntas, e se recoñeces as túas preguntas, saúdo :).

Preguntas da entrevista nº 3

  1. Dáse un exemplo de código de percorrido en árbore; é necesario dicir o que se está a facer neste código e sinalar os erros.
  2. Escribe un exemplo da utilidade ls. Coa opción máis sinxela "-l".
  3. Pon un exemplo de como facer ligazóns estáticas e dinámicas. Cal é a diferenza?
  4. Como funciona o RS-232? Cal é a diferenza entre RS-485 e RS-232? Cal é a diferenza entre RS-232 e RS-485 desde o punto de vista dun programador?
  5. Como funciona o USB (desde o punto de vista dun programador)?
  6. Tradución de textos técnicos do ruso ao inglés.

Unha entrevista exitosa non é garantía dun traballo exitoso

Este capítulo probablemente nin sequera sexa para programadores (aínda que tamén para eles), senón máis para RRHH. As empresas máis adecuadas non miran meticulosamente os resultados das entrevistas. É normal cometer erros, a maioría das veces miran como unha persoa sabe resolver problemas e razoa.

Un dos problemas fundamentais é que un candidato resolve con éxito os problemas durante as entrevistas, se mostra como un excelente especialista, pero falla na primeira tarefa real. Non vou mentir, isto tamén me pasou. Pasei con éxito por todos os círculos do inferno, resolvín todas as tarefas de proba, pero en condicións reais o traballo resultou demasiado difícil debido á simple inexperiencia. Subir a bordo non é a tarefa máis difícil. O máis difícil é manterse a bordo desta empresa.

Por iso, confío en máis empresas que realizan entrevistas sinxelas co candidato e din: despois do primeiro mes de traballo, quedará claro se é adecuado para nós ou non. Este é o enfoque máis axeitado, si, quizais un pouco caro, pero de inmediato queda claro quen é quen.

Hai outra opción para as entrevistas: cando a superas con éxito, pero en función dos resultados da entrevista entendes que o empresario é completamente inadecuado. Rexeito inmediatamente o traballo se me ofrecen traballar como empresario individual, prometendo grandes ingresos. Esta é unha forma de evasión fiscal para unha organización operativa, e por que os problemas do empresario deberían preocuparme como programador? Outra opción son varias axencias gobernamentais. Tiven unha entrevista, como resultado da cal ofrecéronme un bo salario, pero dixeron que o programador anterior abandonou, enfermou, morreu, atracoume pola carga de traballo e a túa xornada de traballo comeza ás 8 da mañá. . De tal lugar tamén corría para que lle brillasen os talóns. Si, RH, ten en conta que os programadores están preparados para rexeitar ata o traballo máis delicioso se a xornada laboral ten que comezar de mañá cedo.

Ao final, darei un excelente vídeo de selección de programadores, cuxa captura de pantalla se dá ao comezo deste artigo. Tamén tiven unha entrevista deste tipo máis dunha vez. Se ves tiranía na fase de preguntas, respeta a ti mesmo, érguese, toma as túas cousas e marcha, isto é normal. Se RRHH e o xerente se afirman ás túas costas durante a entrevista, isto indica que a empresa é tóxica e que non deberías traballar alí a menos que che gusten os xefes inadecuados.

Descubrimentos

Programadores, vai ás entrevistas! E sempre intenta ascender. Digamos que se obtén N diñeiro, vai a unha entrevista polo menos por N*1,2 ou mellor N*1,5. Aínda que non aceptes esta praza de inmediato, entenderás o que se necesita para este nivel de soldo.
As miñas observacións demostraron que o bo coñecemento da lingua inglesa, a experiencia suficientemente rica na industria e a confianza en si mesmo deciden. Esta última é a principal calidade, como en todas partes da vida. Como regra xeral, un candidato con máis confianza pode rendir mellor nunha entrevista, mesmo con máis erros, que un candidato excelente, pero máis tímido e proactivo. Moita sorte coas túas entrevistas!

Concurso P/S

Se tes exemplos interesantes de problemas cos que RH te cargaron, benvido nos comentarios. Preparamos un pequeno concurso: as condicións son sinxelas: escribes a tarefa máis inusual que tiveches durante unha entrevista, os lectores avalíana (máis) e despois dunha semana resumimos os resultados e premiamos ao gañador con golosinas divertidas.

Programadores, ir ás entrevistas

Programadores, ir ás entrevistas

Fonte: www.habr.com

Engadir un comentario