Programmeurs, gean nei ynterviews

Programmeurs, gean nei ynterviews
De foto is nommen út in fideo fan it kanaal "Militante Amethysts»

Ik wurke sawat 10 jier as systeemprogrammeur foar Linux. Dit binne kernelmodules (kernelromte), ferskate daemons en wurkje mei hardware fan brûkersromte (brûkersromte), ferskate bootloaders (u-boot, ensfh.), Controllerfirmware en folle mear. Sels soms barde it om de webynterface te snijen. Mar faker barde it dat ik moast sitte mei in soldeerbout en ynteraksje mei printe circuit board ûntwerpers. Ien fan 'e problemen mei sa'n wurk is dat it frij lestich is om it nivo fan jo kompetinsje te beoardieljen, om't jo ien taak miskien tige djip kenne, mar in oare hielendal net kenne. De ienige adekwate manier om te begripen wêr't te gean en hokker streamingen der no binne is te gean foar ynterviews.

Yn dit artikel wol ik myn ûnderfining fan ynterviewen foar in fakatuere as Linux-systeemprogrammeur gearfetsje, de spesifikaasjes fan it ynterview, de baan, en hoe jo jo persoanlik nivo fan kennis beoardielje kinne troch te kommunisearjen mei in takomstige wurkjouwer en wat jo net moatte derfan ferwachtsje.

It artikel sil in lytse kompetysje mei prizen befetsje.

Skaaimerken fan it berop

In systeemprogrammeur, yn it spesifike fjild wêryn ik wurke, is in folsleine generalist: ik moast sawol koade skriuwe as hardware debuggen. En faaks wie der ferlet om sels wat te solderjen. Ut en troch barde it dat myn oanpassingen oan 'e hardware dan oerdroegen waarden oan de ûntwikkelders. Dêrom, om yn dit gebiet te wurkjen, hawwe jo in frij goede basis fan kennis nedich, sawol op it mêd fan digitale circuits as yn programmearring. Fanwegen dit, ynterviews foar in systeem programmeur posysje faak lykje op in syktocht nei in elektroanikasaak.

Programmeurs, gean nei ynterviews
In typysk wurkstasjonStencils foar in systemen programmeur.

De foto hjirboppe lit myn typyske wurkplak sjen by it debuggen fan bestjoerders. De logika-analyzer toant de krektens fan 'e útstjoerde berjochten, it oscilloskoop kontrolearret de foarm fan' e sinjaalrânen. Ek de jtag debugger waard net opnommen yn it frame, dat wurdt brûkt as standert debuggen ark net mear omgean. En jo moatte kinne wurkje mei al dizze apparatuer.

It bart faak dat it flugger en makliker is om guon eleminten opnij te solderen en topologyflaters sels te korrigearjen dan it produkt nei in ynstallearder te nimmen. En dan nimt ek in soldeerstasjon plak op jo wurkplak.

In oar skaaimerk fan ûntwikkeling op it bestjoerder- en hardwarenivo is dat Google net helpt. Faak moatte jo sykje foar ynformaasje oer jo probleem, en der binne trije keppelings, wêrfan twa binne jo eigen fragen op guon foarums. Of noch slimmer, as jo in fraach tsjinkomme fan deselde earme keardel dy't it 5 jier lyn frege op 'e kernel-mailinglist en noait in antwurd krige. Yn dit wurk, neist flaters yn it ûntwerp fan sawol hardware as software, dokumintaasje flaters wurde faak tsjinkaam - dit binne wierskynlik de meast earnstige en onaangename problemen. Soms wurde registers ferkeard beskreaun, of is der hielendal gjin beskriuwing foar. Sokke problemen kinne allinich oplost wurde troch wittenskiplik willekeurige nûmers yn bepaalde registers te stekken (in soarte fan omkearing). It bart faak dat de prosessor wat funksjonaliteit befettet, mar gjinien útsein jo hawwe dizze funksjonaliteit útfierd (benammen as de prosessor nij is). En dit betsjut oer it fjild rinne mei in hark, wêrfan 70% foar bern is. Mar as der dokumintaasje is, sels mei flaters, is dit al foarútgong. Hiel faak komt it foar dat der hielendal gjin dokumintaasje is, en dan begjint it kuierjen troch mynfjilden as it izer baarnt. En ja, ik haw sokke problemen ek mei súkses oplost.

Ynterviews

Myn miening is dat jo op syn minst ien kear yn 'e seis moanne foar ynterviews moatte gean, sels as jo jo baan oanbidde en it net feroarje wolle. In ynterview lit jo jo nivo as spesjalist begripe. Ik leau dat de meast weardefolle ynterviews dejingen binne dy't mislearje. It binne dejingen dy't it meast sekuer sjen litte hokker knelpunten yn jo kennis ferbettere wurde moatte.

In oare nijsgjirrige eigenskip is de kwaliteit fan ynterviews. Dit is myn observaasje, en it is net de wierheid, Ik jou ta dat ik wie gewoan gelok. As it ynterview giet neffens it senario:

  • Fertel ús wat oer dysels;
  • Wy hawwe sokke taken;
  • do meist graach?

En as jo nei dizze dialooch inoar leuk fine, jo geane oan it wurk, dan, as regel, it bedriuw en de taken blike te wêzen hiel noflik en adekwaat. As in ynterview liket te gean troch 12 sirkels fan 'e hel: it earste ynterview mei HR, dan in ynterview mei in groep programmeurs, dan de direkteur, mear húswurk, ensfh., dan wiene dit yn 'e regel mislearre organisaasjes dêr't ik net yn wurke foar hiel lang. Nochris is dit in persoanlike konstatearring, mar yn 'e regel litte tefolle burokrasy en in útlutsen ynhierproses sjen dat deselde krekte prosessen binnen it bedriuw plakfine. Besluten wurde makke stadich en net effektyf. Der wiene ek de tsjinoerstelde situaasjes, doe't der wiene sirkels fan ynterview hel, en it bedriuw blykte te wêzen geweldich, en doe't, nei in klap op 'e pols, it bedriuw blykte te wêzen in sompe, mar dizze binne seldsum.

As jo ​​tinke dat it senario: moete, ferteld oer dysels en waard ynhierd, bestiet allinnich yn lytse bedriuwen, dan nee. Ik haw dit sjoen yn heul grutte bedriuwen dy't mear as hûnderten minsken yn tsjinst hawwe en binne fertsjintwurdige op wrâldmerken. Dit is in normale meganisme, benammen as jo in ryk track record en hawwe de mooglikheid om in belje jo eardere wurkjouwers en freegje oer dy.

Foar my is it in heul goede yndikator fan in bedriuw as se freegje om foarbylden fan har projekten en koade sjen te litten. It nivo fan oplieding fan de oanfreger wurdt fuortendaliks toand. En, wat my oanbelanget, út it eachpunt fan it selektearjen fan kandidaten, is dit de meast effektive metoade fan seleksje dan ynterviews sjen litte. Yn feite kinne jo mislearje by in ynterview fan opwining, of, krekt oarsom, útkomme op adrenaline. Mar yn echte wurk kinne jo net omgean mei echte taken. En dat kaam ik ek tsjin doe't ik sels minsken ynterviewde. In spesjalist komt, lit sjen dat hy poerbêst is, ik mocht him, hy mocht ús. En ik stride mei it ienfâldichste probleem foar in moanne, en as gefolch hat in oare programmeur it yn in pear dagen oplost. Ik moast ôfskied fan dy programmeur.

Ik wurdearje benammen programmeartaken yn ynterviews. En dyjingen dy't direkt moatte wurde oplost tidens de gearkomste, ûnder stress, en húswurk. De earste lit sjen hoe klear jo binne om problemen fluch en sekuer op te lossen yn in stressfolle situaasje en need. De twadde toant jo nivo fan kompetinsje en fermogen om ynformaasje te sykjen en aktuele problemen op te lossen.

De meast nijsgjirrige banen dy't ik hie wiene yn it ferdigeningskompleks fan ús lân. Yn it proses fan it wurk moast ik gewoan fantastyske problemen oplosse dêr't kommersjele programmeurs noch noait fan dreamden. Supercomputers, ûntwerpen fan routers, ferskate node-bestridingssystemen - dit is ongelooflijk spannend. As jo ​​yn 'e parade in kompleks sjogge dat jo koade opslacht, is it echt moai. Frjemd genôch, ynterviews mei sokke bedriuwen binne meastentiids hiel ienfâldich, letterlik komme, like it, akseptearre (wierskynlik de spesifikaasjes fan it leger, dy't net graach prate tefolle), wurde boppe. De útdagings dy't ik dêr tsjinkaam wiene wirklik nijsgjirrich en útdaagjend. Mei ûnderfining die bliken dat se goed binne om te learen om in systeemprogrammeur fan hege kwaliteit te wêzen. Der binne ek neidielen, en dit is net iens lege leanen. Op it stuit is it salaris yn it ferdigeningskompleks frij fatsoenlik, mei bonussen en foardielen. Yn 'e regel is d'r in protte burokrasy, lange wurktiden, einleaze rush banen, en wurk ûnder grutte stress. Yn guon gefallen kin geheimhâlding net wurde útsletten, wat bepaalde problemen bykomt foar it bûtenlân reizgjen. Plus, fansels, de tiranny fan bazen, en dit, helaas, ek bart. Hoewol myn ûnderfining fan it wurkjen mei in klantfertsjintwurdiger ekstreem noflik is. Dit is in kollektyf yndruk fan trije ferskillende ûndersyksynstituten en bedriuwen dy't relatearre binne oan oarders foar definsje fan steaten.

Ynterview taken

Om misferstannen te foarkommen en om de bedriuwen dy't ik ynterviewd net bleat te lizzen, sil ik it lot net ferliede en har details oanjaan. Mar ik bin tankber foar elk fraachpetear, foar de tiid dy't minsken oan my bestege, foar de kâns om fan bûten ôf nei mysels te sjen. Ik kin allinnich sizze dat de taken wiene foar grutte ynternasjonale bedriuwen fertsjintwurdige yn ferskate lannen.

Ik sil jo it meast nijsgjirrige ding fertelle: hokker taken wurde jûn tidens ynterviews. Yn 't algemien binne de meast foarkommende fragen foar de fakatuere fan in systeemprogrammeur en mikrocontrollerprogrammeur bitoperaasjes, yn alle mooglike fariaasjes. Tariede jo dêrom it bêste op dit gebiet.

It twadde meast polarisearjende ûnderwerp is paadwizers, dit moat echt fan jo tosken springe. Dat se dy midden yn de nacht wekker meitsje en alles fertelle en sjen litte kinne.

Ik stiel fragen út ferskate ynterviews yn myn holle, en ik sil se hjir presintearje, om't ik se heul ynteressant fyn. Ik jou mei opsetsin gjin antwurden op dizze fragen, sadat lêzers dizze fragen sels yn 'e kommentaren beäntwurdzje kinne en in bytsje poeier hawwe as se troch in echt ynterview gean.

Fragen nr. 1

I. Kennis fan SI. Wat betsjutte de folgjende yngongen:

const char * str;

char const * str;

const * char str;

char * const str;

const char const * str;

Binne alle yngongen korrekt?

II. Wêrom sil dit programma in segmentaasjefout smyt?

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

III. Om tûk te wêzen.

Der is in stôk fan in meter lang. Tsien mieren falle willekeurich op har, krûpend yn ferskate rjochtingen. De bewegingssnelheid fan ien mier is 1 m/s. As in mier in oare mier tsjinkomt, draait er him om en krûpt yn de tsjinoerstelde rjochting. Wat is de maksimale tiid dy't jo moatte wachtsje oant alle mieren fan 'e stok falle?

It folgjende ynterview wie in mislearring foar my, en ik achtsje it it nuttichst yn myn programmearpraktyk. It liet de djipte fan myn ûnkompetens sjen. Foardat dit fraachpetear wie ik bekend mei elk fan dizze fragen en se kamen hieltyd op yn myn praktyk, mar op ien of oare manier haw ik der net folle belang oan hechte, en dêrom begriep ik se net goed. Dêrom haw ik dit eksamen yn skande mislearre. En ik bin tige tankber dat sa'n mislearring barde; it hie it meast soberjende effekt op my. Jo tinke dat jo in koele spesjalist binne, jo kenne circuitûntwerp, ynterfaces en wurkje mei de kernel. En dan hawwe jo echte fragen en jo driuwe. Sa litte wy sjen.

Ynterviewfragen #2

Hardware problemen.

  • Hoe linux-systeemoproppen wurde regele yn gearstallingstaal op in ARM-prosessor, op x86. Wat is it ferskil?
  • Hokker syngronisaasje-ark binne d'r? Hokker syngronisaasje-ark kinne brûkt wurde binnen in ûnderbrekkingskontekst, wat kin net, en wêrom?
  • Wat is it ferskil tusken i2c bus en spi bus?
  • Wêrom binne d'r terminators op 'e i2c-bus en wat is har wearde?
  • Kin de RS-232-ynterface allinich wurkje op twa draden: RX en TX? Hjir sil ik it antwurd jaan: It docht bliken dat it min is, op 9600, mar it kin!!!
  • En no de twadde fraach: wêrom?
  • Wat is de bêste manier om sinjaallinen en macht te regeljen yn multilayer boards en wêrom? Power binnen de lagen, of sinjaal rigels binnen de lagen? (De fraach is oer it algemien suver oer circuit design).
  • Wêrom hawwe differinsjaaloperator linen tracks dy't geane tegearre oeral?
  • RS-485 bus. Meastal binne der terminators op sa'n line. Lykwols, wy hawwe in stjer circuit, mei in fariabele oantal plug-in modules. Hokker middels moatte brûkt wurde om botsingen en ynterferinsje te foarkommen?
  • Wat binne reade en binêre beammen?
  • Hoe wurkje mei cmake?
  • Fragen oer it bouwen fan yocto Linux.

Doelen foar dit ynterview:

1. Skriuw in funksje dy't omkeart nei uint32_t alle biten. (wurkje mei bits is heul populêr by ynterviews, ik advisearje it)
2.

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

Wat sil dizze funksje werombringe? (oplossing op papier, sûnder kompjûter)

3. Funksje foar it berekkenjen fan it arithmetysk gemiddelde fan twa getallen int32_t.

4. Wat binne de útfier metoaden yn programma, incl. yn in stream fan flaters.

De tredde seleksje wie relatyf resint, en it soe my net fernuverje as d'r noch sa'n fragelist is, dus ik sil it bedriuw net iepenbierje om se net út te lizzen... Mar yn algemiene termen sil ik in foarbyld jaan fan mooglike fragen, en as jo jo fragen werkenne, dan sis ik hallo :).

Ynterviewfragen #3

  1. In foarbyld fan beamtraversalkoade wurdt jûn; it is needsaaklik om te fertellen wat der dien wurdt yn dizze koade en flaters oanwize.
  2. Skriuw in foarbyld fan it ls-helpprogramma. Mei de ienfâldichste opsje "-l".
  3. Jou in foarbyld fan hoe't jo statyske en dynamyske keppeling kinne dwaan. Wat is it ferskil?
  4. Hoe wurket RS-232? Wat is it ferskil tusken RS-485 en RS-232? Wat is it ferskil tusken RS-232 en RS-485 út it eachpunt fan in programmeur?
  5. Hoe wurket USB (út it eachpunt fan in programmeur)?
  6. Oersetting fan technyske tekst út it Russysk yn it Ingelsk.

In suksesfolle ynterview is gjin garânsje foar suksesfol wurk

Dit haadstik is wierskynlik net iens foar programmeurs (hoewol foar har ek), mar mear foar HR. De meast adekwate bedriuwen sjogge net sekuer nei de resultaten fan ynterviews. It is normaal om flaters te meitsjen; meastentiids sjogge se nei hoe't in persoan wit hoe't problemen en reden op te lossen.

Ien fan 'e wichtichste problemen is dat in kandidaat mei súkses problemen oplost tidens ynterviews, lit himsels sjen as in poerbêste spesjalist, mar mislearret by de earste echte taak. Ik sil net lige, dit is my ek oerkommen. Ik gie mei súkses troch alle sirkels fan 'e hel, oploste alle testtaken, mar yn echte omstannichheden blykte it wurk te hurd te wêzen fanwegen ienfâldige ûnerfarenheid. Oan board komme is net de dreechste taak. It dreechste is om oan board fan dit bedriuw te bliuwen.

Dêrom fertrou ik mear bedriuwen dy't ienfâldige ynterviews mei de kandidaat hâlde en sizze: nei de earste moanne fan wurk sil it dúdlik wêze oft jo geskikt binne foar ús of net. Dit is de meast adekwate oanpak, ja, miskien in bytsje djoer, mar it is fuort dúdlik wa't wa is.

D'r is in oare opsje foar ynterviews: as jo it mei súkses trochjaan, mar op basis fan 'e resultaten fan it ynterview begripe jo dat de wurkjouwer folslein ûnfoldwaande is. Ik wegerje daliks wurk as ik oanbean wurdt om te wurkjen as in yndividuele ûndernimmer, tasizzend grutte ynkommens. Dit is in foarm fan belestingûntdûking foar in bestjoeringssysteem organisaasje, en wêrom moatte de wurkjouwer syn problemen soargen my as programmeur? In oare opsje is ferskate oerheidsynstânsjes. Ik hie in ynterview, wêrfan ik in goed salaris oanbean waard, mar se seine dat de foarige programmeur ophâlde, siik waard, stoar, gie op in binge fanwegen de wurkdruk, en jo wurkdei begjint om 8 moarns . Fan sa'n plak rûn er ek sa dat syn hakken fonkelden. Ja, HR, tink derom dat programmeurs ree binne om sels de lekkerste baan te wegerjen as de wurkdei moarns betiid moat begjinne.

Oan 'e ein sil ik in poerbêste fideo jaan fan seleksje fan programmeur, in skermôfbylding wêrfan wurdt jûn oan it begjin fan dit artikel. Sa'n ynterview hie ik ek faker as ien kear. As jo ​​tiranny sjogge op it poadium fan fragen, respektearje josels dan, stean op, nim jo dingen en gean fuort - dit is normaal. As HR en de manager harsels op jo kosten beweare tidens it ynterview, jout dit oan dat it bedriuw giftig is en dat jo dêr net moatte wurkje, útsein as jo fan ûnfoldwaande bazen hâlde.

befinings

Programmeurs, gean nei ynterviews! En besykje altyd te promovearjen. Litte wy sizze as jo N jild krije, gean dan foar in ynterview foar op syn minst N * 1,2, of better N * 1,5. Sels as jo dizze fakatuere net direkt nimme, sille jo begripe wat nedich is foar dit nivo fan lean.
Myn observaasjes hawwe sjen litten dat goede kennis fan 'e Ingelske taal, genôch rike ûnderfining yn' e yndustry en selsbetrouwen beslisse. Dat lêste is de wichtichste kwaliteit, lykas oeral yn it libben. As regel kin in mear selsbetrouwen kandidaat better prestearje yn in ynterview, sels mei mear flaters, dan in poerbêste, mar ferlegener en proaktive oanfreger. Good luck mei dyn ynterviews!

P / S Kompetysje

As jo ​​​​ynteressante foarbylden hawwe fan problemen wêrmei HR jo hat laden, dan wolkom yn 'e kommentaren. Wy hawwe in lytse kompetysje taret - de betingsten binne ienfâldich: jo skriuwe de meast ûngewoane taak dy't jo hiene tidens in ynterview, lêzers evaluearje it (plus), en nei in wike gearfetsje wy de resultaten en beleanje de winner mei leuke goodies.

Programmeurs, gean nei ynterviews

Programmeurs, gean nei ynterviews

Boarne: www.habr.com

Add a comment