L'image est tirée de la vidéo de la chaîne " Militant Amethysts "
Pendant environ 10 ans, j'ai travaillé comme programmeur système pour Linux. Ce sont des modules du noyau (espace noyau), divers démons et fonctionnent avec du matériel de l'espace utilisateur (espace utilisateur), divers chargeurs de démarrage (u-boot, etc.), le micrologiciel du contrôleur et bien plus encore. Parfois, il arrivait même de couper l'interface Web. Mais le plus souvent, je devais m'asseoir avec un fer à souder et interagir avec des concepteurs de circuits imprimés. L'un des problèmes d'un tel travail est qu'il est assez difficile d'évaluer le niveau de vos compétences, car vous connaissez peut-être une tâche très profondément, mais vous ne savez peut-être pas du tout à proximité. La seule manière adéquate de comprendre où aller et quels sont les courants actuels est de se rendre aux entretiens.
Dans cet article, je souhaite résumer mon expérience d'entrevue pour le poste vacant de programmeur système Linux, les spécificités des entretiens, du travail et comment évaluer le niveau personnel de connaissances dans la communication avec le futur employeur et ce qu'il ne faut pas attendre de cela.
L'article contiendra un petit concours avec des prix.
Caractéristiques de la profession
Un programmeur système, dans les spécificités dans lesquelles j'ai travaillé, est un généraliste complet: j'ai dû à la fois écrire du code et déboguer du matériel. Et souvent, il était nécessaire de souder quelque chose par eux-mêmes. De temps en temps, il arrivait que mes ajustements matériels soient ensuite transférés aux développeurs. Par conséquent, travailler dans ce domaine nécessite une assez bonne réserve de connaissances, à la fois dans le domaine des circuits numériques et dans le domaine de la programmation. Pour cette raison, les entretiens pour un emploi de programmeur de systèmes ressemblent souvent à la recherche d'un spécialiste en électronique.
Un lieu de travail typique d'un programmeur système.
La photo ci-dessus est mon lieu de travail typique lors du débogage des pilotes. L'analyseur logique montre l'exactitude des signaux transmis, l'oscilloscope surveille la forme des fronts du signal. De plus, le débogueur jtag, qui est utilisé lorsque les outils de débogage standard ne font plus face, n'est pas entré dans le cadre. Et vous devez pouvoir travailler avec tous ces équipements.
Il arrive souvent que le ressoudage de certains éléments, la correction des erreurs de topologie soit plus rapide et plus simple que de porter le produit à un installateur. Et puis une station de soudage s'installe également sur votre lieu de travail.
Une autre caractéristique du développement au niveau du pilote et du matériel est que Google n'aide pas. Souvent, vous devez rechercher des informations sur votre problème, et il existe trois liens, dont deux sont vos questions sur un forum. Ou pire encore, lorsque vous rencontrez une question du même pauvre type qui l'a posée il y a 5 ans sur la liste de diffusion du noyau, mais qui n'a jamais obtenu de réponse. Dans ce travail, en plus des erreurs dans la conception du matériel et des logiciels, des erreurs de documentation sont souvent rencontrées - ce sont probablement les problèmes les plus graves et les plus désagréables. Parfois, les registres sont mal décrits ou il n'y a pas du tout de description pour eux. De tels problèmes ne sont résolus que par la méthode de typage scientifique de nombres aléatoires dans certains registres (une sorte d'inverse). Il arrive souvent que le processeur ait une sorte de fonctionnalité,et à part vous, personne n'a implémenté cette fonctionnalité (surtout si le processeur est neuf). Et c'est marcher dans le champ avec un râteau, dont 70% sont des enfants. Mais quand il y a de la documentation, même avec des erreurs, c'est déjà un progrès. Il arrive assez souvent qu'il n'y ait aucune documentation du tout, et ici, la marche commence déjà dans les champs de mines, lorsque le fer brûle. Et oui, j'ai également résolu avec succès ces problèmes.
Entrevues
Mon opinion est qu'il vaut la peine de passer des entretiens quelque part au moins une fois tous les six mois, même si vous adorez votre travail et ne voulez pas le changer. L'entretien vous permet de comprendre votre niveau de spécialiste. Je pense que les entretiens les plus précieux sont les échecs. Ce sont eux qui montrent le plus précisément quels goulots d'étranglement de leurs connaissances méritent d'être resserrés.
Une autre caractéristique intéressante est la qualité des entretiens. C'est mon observation, et ce n'est pas vrai, j'avoue que j'ai eu tellement de chance. Si l'entretien est scénarisé:
- Parlez nous de vous;
- nous avons de telles tâches;
- vous aimez?
Et si, après ce dialogue, vous vous aimez, vous allez au travail, alors en règle générale, l'entreprise et les tâches se révèlent très agréables et adéquates. Si une interview ressemble à passer par les 12 cercles de l'enfer: le premier entretien avec les RH, puis un entretien avec un groupe de programmeurs, puis un directeur, plus de devoirs, etc., alors en règle générale, il s'agissait d'organisations en échec dans lesquelles je n'ai pas travaillé très longtemps. Encore une fois, c'est une observation personnelle, mais en règle générale, trop de bureaucratie et un long processus de recrutement montrent que exactement les mêmes processus ont lieu au sein de l'entreprise. Les décisions sont prises lentement et de manière inefficace. Il y a eu aussi des situations inverses, quand il y avait des cercles d'enfer des interviews, et que la société s'est avérée magnifique, et quand, après une gifle, la société s'est avérée être un marais, mais c'est une rareté.
Si vous pensez que le scénario: rencontré, parlé de vous et embauché, n'existe que dans les petites entreprises, alors non. J'ai vu cela dans de très grandes entreprises qui emploient plus de centaines de personnes et sont représentées sur les marchés mondiaux. Il s'agit d'un mécanisme normal, surtout si vous avez une riche feuille de route et que vous avez la possibilité d'appeler vos anciens employeurs et de vous poser des questions sur vous.
Pour moi, un très bon indicateur de l'entreprise lorsqu'on lui demande de montrer des exemples de ses projets et de son code. Le niveau de formation du candidat est immédiatement indiqué. Et, quant à moi, du point de vue de la sélection des candidats, c'est le moyen de sélection le plus efficace que les entretiens ostentatoires. En fait, lors d'une interview, vous pouvez échouer avec excitation, ou vice versa, sortir sur l'adrénaline. Mais dans le vrai travail, vous ne pouvez pas faire face à de vraies tâches. Et je suis également tombé sur cela lorsque j'ai moi-même interviewé des gens. Un spécialiste vient, se montre parfaitement, je l'ai aimé, il nous a aimés. Et avec la tâche la plus simple que j'ai subie pendant un mois, un autre programmeur l'a résolue en quelques jours. J'ai dû me séparer de ce programmeur.
Dans les entretiens, j'apprécie particulièrement les tâches de programmation. Et ceux qui doivent être résolus pendant la réunion, dans le stress et les devoirs. Le premier montre à quel point vous êtes prêt à résoudre rapidement et avec précision les problèmes dans une situation stressante et des situations d'urgence. Le second montre votre niveau de compétence et votre capacité à rechercher des informations et à résoudre les problèmes actuels.
Les emplois les plus intéressants que j'ai occupés étaient dans le complexe de défense de notre pays. Dans le processus de travail, j'ai dû résoudre des problèmes tout simplement fantastiques dont les programmeurs commerciaux n'avaient jamais rêvé. Supercalculateurs, conception de routeurs, divers systèmes de combat nodaux - c'est incroyablement excitant. Quand, pendant le défilé, vous voyez un complexe qui stocke votre code en lui-même, c'est vraiment sympa. Curieusement, les entretiens dans de telles entreprises, en règle générale, sont très simples, littéralement venus, ont aimé - acceptés (probablement, les spécificités de l'armée, qui n'aiment pas moudre), se superposent. Les tâches auxquelles j'ai dû faire face sont vraiment intéressantes et difficiles. Avec l'expérience, il est devenu bon d'apprendre d'eux pour être un programmeur système de haute qualité. Il y a aussi des inconvénients, et ce ne sont même pas des bas salaires.Pour le moment, le salaire dans le complexe de la défense est assez correct, avec des bonus et des petits pains. En règle générale, c'est une grosse bureaucratie, des horaires de travail irréguliers, des emplois urgents sans fin, un travail très stressé. Dans certains cas, le secret ne peut être exclu, ce qui ajoute certains problèmes pour voyager à l'étranger. De plus, bien sûr, la tyrannie des chefs-bottes, et cela, hélas, arrive aussi. Bien que l'expérience de travail avec le représentant du client soit extrêmement agréable pour moi. C'est une impression collective de trois instituts de recherche et entreprises différents associés à l'ordre de défense de l'État.Bien sûr, la tyrannie des chefs-bottes, et cela, hélas, arrive aussi. Bien que l'expérience de travail avec le représentant du client, je l'ai, est exceptionnellement agréable. C'est une impression collective de trois instituts de recherche et entreprises différents associés à l'ordre de défense de l'État.Bien sûr, la tyrannie des chefs-bottes, et cela, hélas, arrive aussi. Bien que l'expérience de travail avec le représentant du client, je l'ai, est exceptionnellement agréable. C'est une impression collective de trois instituts de recherche et entreprises différents associés à l'ordre de défense de l'État.
Pour éviter les malentendus et pour ne pas exposer les entreprises dans lesquelles j'ai interviewé, je ne tenterai pas le destin et n'indiquerai pas leurs données. Mais je suis reconnaissant pour chaque entretien, pour le temps que les gens m'ont accordé, pour l'opportunité de me regarder de l'extérieur. Je peux seulement dire que les tâches concernaient de grandes entreprises internationales représentées dans différents pays.
Je vais vous dire la chose la plus intéressante: quelles tâches sont données dans les interviews. En général, les questions les plus courantes pour la vacance d'un programmeur système et d'un programmeur de microcontrôleur sont les opérations sur les bits, dans toutes sortes de variations. Par conséquent, préparez-vous au mieux dans cette direction.
Le deuxième sujet en termes de polarité est celui des pointeurs, celui-ci devrait rebondir sur les dents. Pour que vous soyez réveillé au milieu de la nuit et que vous puissiez tout dire et tout montrer.
De plusieurs entretiens, j'ai tiré les questions dans ma tête, et je vais les donner ici, car je les trouve assez intéressantes. Je ne donne délibérément pas de réponses à ces questions, afin que les lecteurs puissent répondre de manière indépendante à ces questions dans les commentaires et il y avait un peu de poudre à canon lors du passage d'une véritable interview.
Questions n ° 1
I. Connaissance du SI. Que signifient les entrées suivantes:
const char * str; char const * str; const * char str; char * const str; const char const * str;
Toutes les entrées sont-elles correctes?
II. Pourquoi ce programme lancera-t-il une erreur de segmentation?
int main () { fprintf(0,"hello\n"); fork(); return(0); }
III. .
. , . 1 /. , . , .
La prochaine interview a été un échec pour moi et je la trouve la plus enrichissante dans ma pratique de la programmation. Cela montrait la profondeur de mon incompétence. Avant cet entretien, je connaissais chacune de ces questions et elles se rencontraient constamment dans ma pratique, mais je n'y attachais pas beaucoup d'importance, et par conséquent je ne les comprenais pas pour les cinq premiers. Par conséquent, cet examen, j'ai échoué dans la disgrâce. Et je suis très reconnaissant qu'un tel échec se soit produit, cela a eu l'effet le plus décevant sur moi. Vous pensez que vous êtes un spécialiste sympa, vous connaissez les circuits, les interfaces, vous travaillez avec le noyau. Et puis vous avez de vraies questions et vous avez flotté. Alors voyons.
Questions d'entretien n ° 2
Problèmes matériels.
- Comment les appels système Linux sont organisés en langage assembleur sur un processeur ARM, sur x86. Quelle est la différence?
- ? , ?
- i2c spi?
- i2c ?
- RS-232 : RX TX? : , , 9600, !!!
- : ?
- ? , ? ( ).
- ?
- RS-485. . , , . ?
- ?
- Comment travailler avec cmake?
- Questions sur la construction de yocto linux.
Objectifs de cet entretien:
1. Ecrire une fonction qui inverseuint32_t
tous les bits. (ils adorent travailler avec des rythmes lors des interviews, je recommande)
2.
int32_t a = -200; uint32_t b = 200; return *(uint32_t) * (&a)) > b;
Que retournera cette fonction? (solution sur papier, sans ordinateur)
3. La fonction de calcul de la moyenne arithmétique de deux nombresint32_t
.
4. Quelles sont les méthodes de sortie dans les programmes, incl. dans le flot des erreurs.
La troisième sélection était relativement récente, et je ne serais pas surpris qu'il y ait encore un tel questionnaire là -bas, donc je ne divulguerai pas l'entreprise pour ne pas l'exposer ... Mais en termes généraux je vais donner un exemple de questions possibles, et si vous avez trouvé vos questions, alors je vous dis bonjour :).
Questions d'entretien n ° 3
- , .
- ls. “-l”.
- . ?
- RS-232? RS-485 RS-232? RS-232 RS-485 ?
- USB ( )?
- .
—
Ce chapitre n'est même pas pour les programmeurs (mais pour eux aussi), mais plus pour les RH. Les entreprises les plus adéquates ne regardent pas méticuleusement les résultats des interviews. Il est normal de faire des erreurs, le plus souvent, ils regardent exactement comment une personne peut résoudre les problèmes et la raison.
L'un des problèmes clés est que le candidat résout avec succès les problèmes lors des entretiens, se montre comme un excellent spécialiste, mais fusionne sur la toute première tâche réelle. Je ne vais pas dissimuler, j'avais ça aussi. Il a réussi à traverser tous les cercles de l'enfer, a résolu toutes les tâches de test, mais dans des conditions réelles, le travail s'est avéré trop difficile en raison d'une inexpérience banale. Monter à bord n'est pas encore la tâche la plus difficile. Le plus difficile est de rester à bord de cette entreprise.
Par conséquent, je fais confiance à plus d'entreprises qui mènent des entretiens simples avec un candidat et disent: après le premier mois de travail, il sera clair si vous êtes adapté pour nous ou non. C'est l'approche la plus adéquate, oui, peut-être un peu chère, mais il est immédiatement clair qui est qui.
Il existe une autre option pour les entretiens: lorsque vous réussissez, mais d'après les résultats de l'entretien, vous comprenez que l'employeur est complètement insuffisant. Je refuse immédiatement de travailler si on me propose de travailler en tant qu'entrepreneur individuel, promettant de gros revenus. C'est une forme d'évasion fiscale pour l'organisation actuelle, et pourquoi les problèmes de l'employeur devraient-ils m'inquiéter en tant que programmeur? Une autre option est diverses agences gouvernementales. J'ai eu une entrevue, à la suite de laquelle on m'a offert un bon salaire, mais ils ont dit que le programmeur précédent avait démissionné, était tombé malade, était décédé, était entré dans une frénésie à cause de la charge de travail et que votre journée de travail commençait à 8 heures. J'ai aussi couru d'un tel endroit pour que mes talons brillent. Oui, les RH veillent à ce que les programmeurs soient prêts à abandonner même le poste le plus délicieux si la journée de travail doit commencer tôt le matin.
À la fin, je donnerai une excellente vidéo de la sélection d'un programmeur, dont une capture d'écran est donnée au début de cet article. J'ai également eu une telle interview plus d'une fois. Si vous voyez la tyrannie au stade des questions, respectez-vous, levez-vous, prenez les choses et partez - c'est normal. Si les RH et le manager lors de l'entretien s'affirment à vos frais, cela indique la toxicité de l'entreprise et vous ne devriez pas y travailler, à moins que vous n'aimiez des patrons inadéquats.
conclusions
Programmeurs, allez aux interviews! Et essayez de toujours monter. Par exemple, si vous recevez N d'argent, passez à un entretien pour au moins N * 1,2, et de préférence N * 1,5. Même si vous ne prenez pas ce poste tout de suite, vous comprendrez ce qui est nécessaire pour ce niveau de rémunération.
Mes observations ont montré qu'une bonne connaissance de la langue anglaise, une grande expérience dans l'industrie et la confiance en soi sont déterminantes. Cette dernière est la principale qualité, comme ailleurs dans la vie. En règle générale, un candidat plus confiant peut réussir un entretien avec plus de succès, même avec plus d'erreurs, qu'un candidat excellent, mais plus timide et proactif. Bonne chance avec vos interviews!
Concours P / S
Si vous avez des exemples intéressants de tâches que les RH vous ont chargées, alors bienvenue dans les commentaires. Nous avons préparé un petit concours - les conditions sont simples: vous écrivez la tâche la plus inhabituelle que vous ayez eue dans une interview, les lecteurs l'évaluent (plus), et en une semaine, nous résumons les résultats et récompensons le gagnant avec des goodies amusants.