Programadores, vão às entrevistas



A foto é tirada do vídeo do canal " Militant Amethysts "



Por cerca de 10 anos trabalhei como programador de sistemas para Linux. Estes são módulos do kernel (espaço do kernel), vários daemons e trabalham com hardware do espaço do usuário (espaço do usuário), vários carregadores de inicialização (u-boot, etc.), firmware do controlador e muito mais. Às vezes, até cortou a interface da web. Porém, com mais frequência, eu tinha que sentar com um ferro de solda e interagir com projetistas de placas de circuito impresso. Um dos problemas desse tipo de trabalho é que é muito difícil avaliar o nível de sua competência, uma vez que você pode conhecer uma tarefa muito profundamente, mas pode não saber nada nas proximidades. A única maneira adequada de entender para onde ir e quais são as correntes agora é ir às entrevistas.



Neste artigo, quero resumir minha experiência de entrevistas para a vaga de um programador de sistema Linux, os detalhes das entrevistas, o trabalho e como avaliar o nível pessoal de conhecimento na comunicação com o futuro empregador e o que não se deve esperar disso.



O artigo conterá um pequeno concurso de prêmios.



Características da profissão



Um programador de sistema, nas especificidades em que trabalhei, é um generalista completo: tive que escrever código e depurar hardware. E muitas vezes havia a necessidade de soldar algo por conta própria. De vez em quando, acontecia que minhas correções de hardware eram repassadas aos desenvolvedores. Portanto, trabalhar nesta área requer um bom acervo de conhecimentos, tanto no campo dos circuitos digitais quanto no campo da programação. Por causa disso, as entrevistas para um trabalho de programador de sistemas muitas vezes parecem procurar um especialista em eletrônica.





Um local de trabalho típico de um programador de sistema.



A foto acima é meu local de trabalho típico durante a depuração de drivers. O analisador lógico mostra a exatidão dos sinais transmitidos, o osciloscópio monitora a forma das bordas do sinal. Além disso, o depurador jtag, que é usado quando as ferramentas de depuração padrão não funcionam mais, não entrou no quadro. E você precisa ser capaz de trabalhar com todo esse equipamento.



Muitas vezes acontece que soldar novamente alguns elementos, consertar erros de topologia, é mais rápido e fácil sozinho do que levar o produto a um instalador. E então uma estação de solda também se instala em seu local de trabalho.



Outro recurso de desenvolvimento no nível do driver e do hardware é que o Google não ajuda. Freqüentemente, você precisa procurar informações sobre o seu problema e há três links, dos quais dois são suas perguntas em algum fórum. Ou pior ainda, quando você encontra uma pergunta do mesmo pobre coitado que a fez 5 anos atrás na lista de discussão do kernel, mas nunca obteve uma resposta. Neste trabalho, além de erros no design de hardware e software, erros de documentação são freqüentemente encontrados - esses são provavelmente os problemas mais graves e desagradáveis. Às vezes, os registros são descritos incorretamente ou não há nenhuma descrição para eles. Esses problemas são resolvidos apenas pelo método científico de inserir números aleatórios em certos registros (uma espécie de reverso). Muitas vezes acontece que o processador tem algum tipo de funcionalidade,e além de você, ninguém implementou esta funcionalidade (especialmente se o processador for novo). E isso é andar no campo com um ancinho, dos quais 70% são crianças. Mas quando há documentação, mesmo com erros, já é um progresso. Muitas vezes acontece que não há documentação alguma, e aqui a caminhada já começa nos campos minados, quando o ferro queima. E sim, eu também resolvi esses problemas com sucesso.



Entrevistas



Minha opinião é que vale a pena ir a entrevistas em algum lugar pelo menos uma vez a cada seis meses, mesmo que você adore o seu trabalho e não queira mudá-lo. A entrevista permite que você entenda seu nível de especialista. Acho que as entrevistas mais valiosas são fracassos. São eles que mostram com mais precisão quais gargalos de seu conhecimento vale a pena diminuir.



Outra característica interessante é a qualidade das entrevistas. Esta é a minha observação, e não é verdade, admito que tive muita sorte. Se a entrevista tiver um roteiro:



  • Conte-nos sobre você;
  • temos essas tarefas;
  • você gosta?


E se depois desse diálogo vocês gostarem, vão trabalhar, em geral a empresa e as tarefas acabam sendo muito agradáveis ​​e adequadas. Se a entrevista lembra passar pelos 12 círculos do inferno: a primeira entrevista com o RH, depois a entrevista com um grupo de programadores, depois o diretor, mais dever de casa, etc., então, via de regra, essas eram organizações fracassadas nas quais não trabalhei por muito tempo. Novamente, esta é uma observação pessoal, mas como regra, muita burocracia e um processo de contratação demorado mostram que exatamente os mesmos processos ocorrem dentro da empresa. As decisões são tomadas de forma lenta e ineficaz. Havia também situações opostas, quando havia rodas de entrevistas infernais, e a empresa ficava linda, e quando, depois de um tapa na mão, a empresa era um pântano, mas isso é uma raridade.



Se você acha que o cenário: conheceu, falou sobre você e arrumou um emprego, só existe em pequenas empresas, então não. Já vi isso em empresas muito grandes que empregam mais de centenas de pessoas e são representadas nos mercados mundiais. Este é um mecanismo normal, especialmente se você tem um histórico rico e tem a oportunidade de ligar para seus empregadores anteriores e perguntar sobre você.



Para mim, um indicador muito bom da empresa quando solicitado a mostrar exemplos de seus projetos e código. O nível de treinamento do candidato é mostrado imediatamente. E, quanto a mim, do ponto de vista da seleção dos candidatos, esta é a forma mais eficaz de seleção do que uma entrevista de exibição. Na verdade, em uma entrevista, você pode falhar de empolgação, ou vice-versa, entrar na adrenalina. Mas no trabalho real, você não consegue lidar com tarefas reais. E também descobri isso quando entrevistei pessoas. Vem um especialista, mostra-se perfeitamente, gostei, gostou da gente. E com a tarefa mais simples que sofri durante um mês, como resultado, outro programador resolveu em alguns dias. Eu tive que me separar daquele programador.



Em entrevistas, valorizo ​​especialmente as tarefas de programação. E aquelas que têm que ser resolvidas logo na reunião, no estresse e na lição de casa. O primeiro mostra como você está pronto para resolver problemas de forma rápida e precisa em uma situação estressante e em situações de emergência. O segundo mostra o nível de sua competência e habilidade para buscar informações e resolver problemas atuais.



Os empregos mais interessantes que tive foram no complexo de defesa de nosso país. No processo de trabalho, tive que resolver problemas simplesmente fantásticos que os programadores comerciais nunca sonharam. Supercomputadores, design de roteadores, vários sistemas de combate nodal - é incrivelmente emocionante. Quando, durante o desfile, você vê um complexo que armazena seu código em si, é muito bom. Curiosamente, as entrevistas nessas empresas, em regra, são muito simples, literalmente vieram, gostaram - aceitas (provavelmente, as especificidades dos militares, que não gostam de grind), são sobrepostas. As tarefas que tive de enfrentar lá são realmente interessantes e difíceis. Com a experiência, descobriu-se que é bom aprender com eles para ser um programador de sistemas de qualidade. Também há desvantagens, e isso nem chega a ser salários baixos.No momento, o salário no complexo da defesa é bastante decente, com bônus e pães. Via de regra, essa é uma grande burocracia, horários irregulares de trabalho, intermináveis ​​empregos urgentes, trabalho muito estressado. Em certos casos, o sigilo não pode ser descartado, o que traz alguns problemas para viagens ao exterior. Além, é claro, da tirania das botas-chefe, e isso, infelizmente, também acontece. Embora a experiência de trabalhar com o representante do cliente seja extremamente agradável para mim. Esta é uma impressão coletiva de três diferentes institutos de pesquisa e empresas associadas à ordem de defesa do estado.Claro, a tirania dos chefes-botas, e isso, infelizmente, também acontece. Embora a experiência de trabalhar com o representante do cliente, eu, seja excepcionalmente agradável. Esta é uma impressão coletiva de três diferentes institutos de pesquisa e empresas associadas à ordem de defesa do estado.Claro, a tirania dos chefes-botas, e isso, infelizmente, também acontece. Embora a experiência de trabalhar com o representante do cliente seja extremamente agradável para mim. Esta é uma impressão coletiva de três diferentes institutos de pesquisa e empresas associadas à ordem de defesa do estado.





Para evitar mal-entendidos e para não expor as empresas que entrevistei, não tentarei o destino e indicarei os seus dados. Mas sou grato por cada entrevista, pelo tempo que as pessoas me deram, pela oportunidade de me olhar de fora. Só posso dizer que as tarefas foram para grandes empresas internacionais representadas em diferentes países.



Vou te contar o mais interessante: quais tarefas são dadas nas entrevistas. Em geral, as dúvidas mais frequentes para a vaga de um programador de sistema e de um programador de microcontrolador são as operações de bit, em todos os tipos de variações. Portanto, prepare-se melhor nessa direção.



O segundo tópico em termos de polaridade são os ponteiros, este deve ricochetear nos dentes. Para que você seja acordado no meio da noite e possa contar e mostrar tudo.



De várias entrevistas, tirei as perguntas da minha cabeça, e vou apresentá-las aqui, pois as acho bastante interessantes. Eu deliberadamente não dou respostas a essas perguntas, para que os leitores possam responder de forma independente a essas perguntas nos comentários e havia um pouco de pólvora ao passar uma entrevista real.



Questões número 1

I. Conhecimento de SI. O que significam as seguintes entradas:



const char * str;

char const * str;

const * char str;

char * const str;

const char const * str;


Todas as entradas estão corretas?



II. Por que este programa lançará uma falha de segmentação?



int main ()
{
       fprintf(0,"hello\n");
       fork();
       return(0);
}


III. .



. , . 1 /. , . , .



A próxima entrevista foi um fracasso para mim e acho que foi a mais gratificante na minha prática de programação. Isso mostrou a profundidade da minha incompetência. Antes desta entrevista, eu estava familiarizado com cada uma dessas questões e elas se encontravam constantemente em minha prática, mas de alguma forma eu não lhes atribuía muita importância e, portanto, não as entendia nas cinco primeiras. Portanto, neste exame, falhei em desgraça. E estou muito grato que tal falha aconteceu, teve o efeito mais preocupante sobre mim. Você se acha um especialista bacana, conhece circuitos, interfaces, trabalha com o kernel. E então você tem perguntas reais e flutua. Então vamos ver.



Perguntas da entrevista # 2



Problemas de hardware.



  • Como as chamadas do sistema Linux são organizadas em linguagem assembly em um processador ARM, em x86. Qual é a diferença?
  • ? , ?
  • i2c spi?
  • i2c ?
  • RS-232 : RX TX? : , , 9600, !!!
  • : ?
  • ? , ? ( ).
  • ?
  • RS-485. . , , . ?
  • ?
  • Como trabalhar com cmake?
  • Perguntas sobre a construção do yocto linux.


Objetivos desta entrevista:



1. Escreva uma função que inverta uint32_ttodos os bits. (eles adoram trabalhar com batidas em entrevistas, eu recomendo)

2.



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


O que essa função retornará? (solução em papel, sem computador)



3. A função de cálculo da média aritmética de dois números int32_t.



4. Quais são os métodos de saída em programas, incl. no fluxo de erros.


A terceira seleção foi relativamente recente, e não me surpreenderia se ainda existisse tal questionário, então não divulgarei a empresa para não expô-la ... Mas em linhas gerais darei um exemplo de possíveis perguntas, e se você descobriu suas dúvidas, então eu digo alô :).



Perguntas da entrevista # 3

  1. , .
  2. ls. “-l”.
  3. . ?
  4. RS-232? RS-485 RS-232? RS-232 RS-485 ?
  5. USB ( )?
  6. .




Este capítulo não é nem mesmo para programadores (embora para eles também), mas mais para RH. As empresas mais adequadas não acompanham meticulosamente os resultados das entrevistas. É normal cometer erros, na maioria das vezes eles procuram exatamente como uma pessoa pode resolver problemas e raciocinar.



Um dos principais problemas é que um candidato resolve problemas com sucesso nas entrevistas, mostra-se como um excelente especialista, mas se funde na primeira tarefa real. Não serei astuto, também tive isso. Ele passou com sucesso por todos os círculos do inferno, resolveu todas as tarefas de teste, mas em condições reais o trabalho acabou sendo muito difícil por causa da inexperiência banal. Subir a bordo ainda não é a tarefa mais difícil. O mais difícil é permanecer a bordo desta empresa.



Por isso, confio em mais empresas que fazem entrevistas simples com um candidato e dizem: depois do primeiro mês de trabalho, vai ficar claro se você é adequado para nós ou não. Esta é a abordagem mais adequada, sim, talvez um pouco cara, mas fica imediatamente claro quem é quem.



Existe outra opção para as entrevistas: quando você passa com sucesso, mas de acordo com o resultado da entrevista, você entende que o empregador é totalmente inadequado. Recuso-me imediatamente a trabalhar se me oferecerem para trabalhar como empresário individual, prometendo grandes rendimentos. Esta é uma forma de evasão fiscal para a organização atual, e por que os problemas do empregador deveriam me preocupar como programador? Outra opção são várias agências governamentais. Tive uma entrevista, com o que me ofereceram um bom salário, mas disseram que o programador anterior pediu demissão, adoeceu, morreu, entrou em apuros por causa da carga de trabalho e sua jornada de trabalho começa às 8h. Eu também corri de um lugar assim para que meus saltos brilhassem. Sim, o RH preste atenção, pois os programadores estão prontos para abrir mão até da mais deliciosa vaga se a jornada de trabalho tiver que começar cedo pela manhã.



No final, darei um excelente vídeo da seleção de um programador, cuja captura de tela é fornecida no início deste artigo. Eu também tive essa entrevista mais de uma vez. Se você vir a tirania no estágio das perguntas, respeite-se, levante-se, pegue as coisas e vá embora - isso é normal. Se o RH e o gerente na entrevista se afirmarem às suas custas, isso indica a toxicidade da empresa e você não deve trabalhar lá, a menos que goste de chefes inadequados.





conclusões



Programadores, vão às entrevistas! E tente sempre subir. Por exemplo, se você receber N em dinheiro, vá para uma entrevista por pelo menos N * 1,2 pagamento ou melhor N * 1,5. Mesmo se você não aceitar essa vaga imediatamente, entenderá o que é necessário para esse nível de remuneração.

Minhas observações mostraram que um bom conhecimento da língua inglesa, uma experiência bastante rica no setor e autoconfiança são decisivos. Esta última é a qualidade principal, como em outras partes da vida. Como regra, um candidato mais confiante pode ser aprovado em uma entrevista com mais sucesso, mesmo com mais erros, do que um candidato excelente, porém mais tímido e pró-ativo. Boa sorte com suas entrevistas!



Competição P / S



Se você tiver exemplos interessantes de tarefas que o RH carregou, seja bem-vindo nos comentários. Preparamos um pequeno concurso - as condições são simples: você escreve a tarefa mais incomum que teve em uma entrevista, os leitores avaliam (mais) e em uma semana resumimos os resultados e recompensamos o vencedor com guloseimas engraçadas.










All Articles