Programmeerijad, minge intervjuudele

Programmeerijad, minge intervjuudele
Pilt on võetud kanali "videost"Sõjalised ametüstid»

Töötasin umbes 10 aastat Linuxi süsteemiprogrammeerijana. Need on tuumamoodulid (kernel space), erinevad deemonid ja riistvaraga töötamine kasutajaruumist (kasutajaruum), erinevad alglaadurid (u-boot jne), kontrolleri püsivara ja palju muud. Isegi mõnikord juhtus veebiliidest läbi lõikama. Kuid sagedamini juhtus nii, et pidin istuma jootekolviga ja suhtlema trükkplaatide disaineritega. Üheks probleemiks sellise töö juures on see, et oma pädevuse taset on üsna raske hinnata, kuna ühte ülesannet võid väga sügavalt tunda, aga teist ei pruugi üldse teada. Ainus adekvaatne viis aru saada, kuhu minna ja millised hoovused praegu on, on minna intervjuudele.

Selles artiklis tahaksin võtta kokku oma kogemused vabale Linuxi süsteemi programmeerija töökohale küsitlemisel, intervjuu spetsiifikast, tööst ja sellest, kuidas tulevase tööandjaga suheldes hinnata oma isiklikku teadmiste taset ja mida mitte. sellest oodata.

Artiklis toimub väike auhindadega konkurss.

Elukutse tunnusjooned

Süsteemiprogrammeerija on konkreetses valdkonnas, kus ma töötasin, täielik üldistaja: ma pidin nii koodi kirjutama kui ka riistvara siluma. Ja sageli tekkis vajadus ise midagi jootma hakata. Aeg-ajalt juhtus, et minu riistvara kohandused kandusid seejärel arendajatele üle. Seetõttu vajate selles valdkonnas töötamiseks üsna head teadmistebaasi nii digitaalse vooluringi kui ka programmeerimise vallas. Seetõttu näevad intervjuud süsteemiprogrammeerija ametikohale sageli välja nagu elektroonikaspetsialisti otsimine.

Programmeerijad, minge intervjuudele
Tüüpiline tööjaam süsteemiprogrammeerijale.

Ülaltoodud foto näitab minu tüüpilist töökohta draiverite silumisel. Loogikaanalüsaator näitab edastatud teadete õigsust, ostsilloskoop jälgib signaali servade kuju. Samuti ei sisaldunud raamis jtag silurit, mida kasutatakse siis, kui tavalised silumisriistad enam toime ei tule. Ja kogu selle seadmega peab saama töötada.

Tihti juhtub, et mõni element on kiirem ja lihtsam ise ümber joota ja topoloogiavead parandada, kui toode paigaldaja juurde viia. Ja siis asub teie töökohale elama ka jootejaam.

Veel üks draiveri ja riistvara tasemel arendamise eripära on see, et Google ei aita. Sageli peate oma probleemi kohta teavet otsima ja seal on kolm linki, millest kaks on teie enda küsimused mõnes foorumis. Või mis veelgi hullem, kui satute küsimusele samalt vaese mehelt, kes selle 5 aastat tagasi kerneli meililistis küsis ega saanud kunagi vastust. Selles töös tuleb lisaks vigadele nii riist- kui tarkvara projekteerimisel sageli ette ka dokumentatsioonivigu – need on ilmselt kõige rängemad ja ebameeldivamad probleemid. Mõnikord kirjeldatakse registreid valesti või puudub nende kirjeldus üldse. Selliseid probleeme saab lahendada ainult juhuslike arvude teaduslikult teatud registritesse torkamisega (mingi vastupidine). Sageli juhtub, et protsessor sisaldab mõnda funktsiooni, kuid keegi peale teie ei ole seda funktsiooni rakendanud (eriti kui protsessor on uus). Ja see tähendab üle põllu kõndimist rehaga, millest 70% on mõeldud lastele. Kuid kui dokumentatsioon on olemas, isegi vigadega, on see juba edasiminek. Üsna sageli juhtub, et dokumentatsioon puudub ja see on siis, kui miiniväljadel kõndimine algab siis, kui raud põleb. Ja jah, ma lahendasin ka sellised probleemid edukalt.

Intervjuud

Minu arvamus on, et intervjuudel tuleks käia vähemalt kord poole aasta jooksul, isegi kui jumaldad oma tööd ega taha seda muuta. Intervjuu võimaldab mõista oma taset spetsialistina. Usun, et kõige väärtuslikumad intervjuud on need, mis ebaõnnestuvad. Just nemad näitavad kõige täpsemalt, millised kitsaskohad sinu teadmistes vajavad parandamist.

Teine huvitav omadus on intervjuude kvaliteet. See on minu tähelepanek ja see pole tõde, tunnistan, et mul lihtsalt vedas. Kui intervjuu läheb stsenaariumi järgi:

  • Räägi meile endast;
  • Meil on sellised ülesanded;
  • sulle meeldib?

Ja kui pärast seda dialoogi te üksteisele meeldite, lähete tööle, siis reeglina kujuneb seltskond ja ülesanded väga meeldivaks ja adekvaatseks. Kui intervjuu meenutab 12 põrguringi läbimist: esimene intervjuu HR-iga, siis intervjuu programmeerijate grupiga, siis direktor, veel kodutööd jne, siis reeglina olid need läbikukkunud organisatsioonid, milles ma ei töötanud. väga kauaks. See on jällegi isiklik tähelepanek, kuid reeglina näitab liigne bürokraatia ja veniv värbamisprotsess, et ettevõtte sees toimuvad täpselt samad protsessid. Otsused tehakse aeglaselt ja ebaefektiivselt. Oli ka vastupidiseid olukordi, kui olid intervjuupõrgu ringid ja seltskond osutus suurepäraseks ning kui pärast randmelööki osutus seltskond sootuks, kuid selliseid on harva.

Kui arvate, et stsenaarium: kohtusite, rääkisite endast ja võeti tööle, eksisteerib ainult väikestes ettevõtetes, siis mitte. Olen seda näinud väga suurtes ettevõtetes, mis annavad tööd enam kui sadadele inimestele ja on esindatud maailmaturgudel. See on tavaline mehhanism, eriti kui teil on palju kogemusi ja teil on võimalus helistada oma eelmistele tööandjatele ja küsida teie kohta.

Minu jaoks on see ettevõtte väga hea näitaja, kui nad paluvad näidata näiteid oma projektidest ja koodist. Kohe näidatakse taotleja väljaõppe taset. Ja minu jaoks on see kandidaatide valiku seisukohalt kõige tõhusam valikumeetod kui saateintervjuud. Tegelikult võite intervjuul põnevusest läbi kukkuda või, vastupidi, adrenaliini täis saada. Kuid päris töös ei saa te tegelike ülesannetega hakkama. Ja sellega puutusin kokku ka ise inimesi intervjueerides. Tuleb spetsialist, näitab end suurepärasena, ta meeldis mulle, tema meeldisime meie. Ja ma võitlesin kuu aega kõige lihtsama probleemiga ja selle tulemusena lahendas teine ​​programmeerija selle paari päevaga. Ma pidin sellest programmeerijast lahku minema.

Eriti hindan programmeerimisülesandeid intervjuudel. Ja need, mis tuleb lahendada otse koosoleku ajal, stressi ja kodutööde ajal. Esimene näitab, kui valmis olete stressiolukorras ja hädaolukorras probleeme kiiresti ja täpselt lahendama. Teine näitab teie pädevuse taset ja oskust otsida teavet ja lahendada aktuaalseid probleeme.

Kõige huvitavamad töökohad, mis mul olid, olid meie riigi kaitsekompleksis. Töö käigus pidin lahendama lihtsalt fantastilisi probleeme, millest kommertsprogrammeerijad polnud isegi unistanud. Superarvutid, ruuterite projekteerimine, erinevad sõlmede võitlussüsteemid – see on uskumatult põnev. Kui paraadi ajal näete kompleksi, mis salvestab teie koodi, on see tõesti tore. Kummalisel kombel on intervjuud selliste ettevõtetega tavaliselt väga lihtsad, sõna otseses mõttes tulevad, meeldivad, aktsepteeritakse (ilmselt sõjaväe eripärad, kellele ei meeldi liiga palju rääkida), on peale kantud. Väljakutsed, millega ma seal silmitsi seisin, olid tõeliselt huvitavad ja väljakutseid pakkuvad. Kogemustega selgus, et neist on hea õppida kvaliteetseks süsteemiprogrammeerijaks. On ka puudusi ja see pole isegi madal palk. Hetkel on kaitsekompleksis palk päris korralik, koos lisatasude ja soodustustega. Reeglina on palju bürokraatiat, pikki töötunde, lõputult kiireid töid ja tööd suure pinge all. Teatud juhtudel ei saa välistada ka salastatust, mis lisab välisreisidele teatud probleeme. Lisaks muidugi ülemuste türannia ja paraku juhtub ka seda. Kuigi minu töökogemus kliendiesindajaga on ülimalt meeldiv. See on kollektiivne mulje kolmest erinevast riigikaitsekorraldusega seotud uurimisinstituudist ja ettevõttest.

Intervjuu ülesanded

Et vältida arusaamatusi ja mitte paljastada ettevõtteid, kellega intervjueerisin, ei hakka ma saatust ahvatlema ja näitan nende andmeid. Aga ma olen tänulik iga intervjuu eest, selle aja eest, mille inimesed mulle kulutasid, võimaluse eest vaadata ennast väljastpoolt. Võin vaid öelda, et ülesanded olid suurtele rahvusvahelistele ettevõtetele, kes on esindatud erinevates riikides.

Ma ütlen teile kõige huvitavama asja: milliseid ülesandeid intervjuude ajal antakse. Üldjuhul on süsteemi programmeerija ja mikrokontrolleri programmeerija vaba koha puhul kõige levinumad küsimused bitioperatsioonid, kõigis võimalikes variatsioonides. Seetõttu valmistage end selles valdkonnas kõige paremini ette.

Teine kõige polariseeriv teema on suunaviidad, see peaks tõesti hammastelt hüppama. Et nad sind keset ööd üles ärataks ja sa saaksid kõike rääkida ja näidata.

Varastasin pähe küsimused mitmest intervjuust ja esitan need siin, kuna need on minu arvates päris huvitavad. Nendele küsimustele ma meelega vastuseid ei anna, et lugejad saaksid ise kommentaarides neile küsimustele vastata ja tõelist intervjuud läbides veidi puudrit oleks.

Küsimused nr 1

I. SI tundmine. Mida tähendavad järgmised kirjed:

const char * str;

char const * str;

const * char str;

char * const str;

const char const * str;

Kas kõik sissekanded on õiged?

II. Miks see programm segmenteerimisvea tekitab?

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

III. Et olla tark.

Seal on ühe meetri pikkune kepp. Tema peale kukub juhuslikult kümme sipelgat, roomates eri suundades. Ühe sipelga liikumiskiirus on 1 m/s. Kui sipelgas kohtab teist sipelgat, pöördub ta ümber ja roomab vastupidises suunas. Kui kaua peate ootama, kuni kõik sipelgad pulga küljest lahti kukuvad?

Järgmine intervjuu oli minu jaoks läbikukkumine ja pean seda oma programmeerimispraktikas kõige kasulikumaks. See näitas minu ebakompetentsuse sügavust. Enne seda intervjuud olin kõigi nende küsimustega tuttav ja need kerkisid minu praktikas pidevalt esile, kuid millegipärast ei omistanud ma neile erilist tähtsust ja seetõttu ei saanud ma neist hästi aru. Seetõttu kukkusin sellel eksamil häbiväärselt läbi. Ja ma olen väga tänulik, et selline ebaõnnestumine juhtus, see mõjus mulle kõige kainestavamalt. Arvate, et olete lahe spetsialist, tunnete vooluringi disaini, liideseid ja tuumaga töötamist. Ja siis on teil tõelisi küsimusi ja te hõljute. Nii et vaatame.

Intervjuu küsimused nr 2

Riistvaraprobleemid.

  • Kuidas korraldatakse Linuxi süsteemikutsed montaažikeeles ARM-protsessoris x86-l. Mis vahe on?
  • Millised sünkroonimisvahendid on olemas? Milliseid sünkroonimistööriistu saab katkestuse kontekstis kasutada, milliseid mitte ja miks?
  • Mis vahe on i2c siinil ja spi siinil?
  • Miks on i2c siinil terminaatorid ja mis on nende väärtus?
  • Kas RS-232 liides võib töötada AINULT kahel juhtmel: RX ja TX? Siin ma annan vastuse: Selgub, et see on halb, 9600 juures, aga saab!!!
  • Ja nüüd teine ​​küsimus: miks?
  • Kuidas on parim viis signaaliliinide ja toite korraldamiseks mitmekihilistes plaatides ja miks? Toide kihtides või signaaliliinid kihtide sees? (Küsimus puudutab üldiselt puhtalt vooluringi disaini).
  • Miks on diferentsiaalliinidel rajad, mis lähevad kõikjal kokku?
  • RS-485 buss. Tavaliselt on sellisel liinil terminaatorid. Meil on aga tähtahel, millel on muutuv arv pistikmooduleid. Milliseid vahendeid tuleks kasutada kokkupõrgete ja häirete vältimiseks?
  • Mis on punased ja kahendpuud?
  • Kuidas cmake'iga töötada?
  • Küsimused yocto Linuxi loomise kohta.

Selle intervjuu eesmärgid:

1. Kirjutage funktsioon, mis inverteerib uint32_t kõik tükid. (bittidega töötamine on intervjuudel väga populaarne, soovitan)
2.

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

Mida see funktsioon tagastab? (lahendus paberil, ilma arvutita)

3. Funktsioon kahe arvu aritmeetilise keskmise arvutamiseks int32_t.

4. Millised on väljundmeetodid programmides, sh. vigade voogu.

Kolmas valik oli suhteliselt värske ja ma ei imestaks, kui selline küsimustik seal veel on, nii et ma firmat ei avalda, et neid mitte paljastada... Aga üldiselt toon näite võimalikest küsimustest ja kui tunned oma küsimused ära, siis ütlen tere :).

Intervjuu küsimused nr 3

  1. Toodud on näide puu läbimise koodist, on vaja öelda, mida selles koodis tehakse ja vead välja tuua.
  2. Kirjutage utiliidi ls näide. Lihtsaima valikuga “-l”.
  3. Tooge näide, kuidas teha staatilist ja dünaamilist linkimist. Mis vahe on?
  4. Kuidas RS-232 töötab? Mis vahe on RS-485 ja RS-232 vahel? Mis vahe on RS-232 ja RS-485 vahel programmeerija seisukohast?
  5. Kuidas USB töötab (programmeerija vaatevinklist)?
  6. Tehnilise teksti tõlkimine vene keelest inglise keelde.

Edukas intervjuu ei garanteeri edukat tööd

See peatükk pole ilmselt isegi mitte programmeerijatele (kuigi ka neile), vaid pigem personalile. Kõige adekvaatsemad ettevõtted ei vaata intervjuude tulemusi pedantselt. Vigu teha on normaalne, enamasti vaadeldakse, kuidas inimene oskab probleeme lahendada ja arutleda.

Üks põhiprobleeme on see, et kandidaat lahendab edukalt probleeme intervjuude käigus, näitab end suurepärase spetsialistina, kuid ebaõnnestub esimese reaalse ülesande täitmisel. Ma ei valeta, see juhtus ka minuga. Läbisin edukalt kõik põrguringid, lahendasin kõik testiülesanded, kuid reaalsetes tingimustes osutus töö lihtsa kogenematuse tõttu liiga karmiks. Pardale pääsemine pole just kõige raskem ülesanne. Kõige keerulisem on selle ettevõtte pardal püsida.

Seetõttu usaldan rohkem ettevõtteid, kes teevad kandidaadiga lihtsaid intervjuusid ja ütlevad: pärast esimest töökuud on selge, kas sobid meile või mitte. See on kõige adekvaatsem lähenemine, jah, võib-olla veidi kulukas, aga kohe on selge, kes on kes.

Vestluste jaoks on veel üks võimalus: kui läbid selle edukalt, kuid intervjuu tulemuste põhjal saad aru, et tööandja on täiesti ebaadekvaatne. Keeldun kohe tööst, kui mulle pakutakse suuri sissetulekuid lubades töötada üksikettevõtjana. See on tegutseva organisatsiooni jaoks maksudest kõrvalehoidmise vorm ja miks peaksid tööandja probleemid mind kui programmeerijat muretsema? Teine võimalus on erinevad riigiasutused. Käisin intervjuul, mille tulemusel pakuti head palka, aga seal öeldi, et eelmine programmeerija lõpetas töö, jäi haigeks, suri, läks töökoormuse tõttu jooma ja sinu tööpäev algab kell 8 hommikul. . Sellisest kohast ta jooksis ka nii, et kontsad särasid. Jah, HR, pange tähele, et programmeerijad on valmis keelduma ka kõige maitsvamast tööst, kui tööpäev peab algama varahommikul.

Lõpus annan suurepärase video programmeerija valikust, mille ekraanipilt on antud artikli alguses. Mul oli ka selline intervjuu rohkem kui korra. Kui näete küsimuste staadiumis türanniat, siis austage ennast, tõuske püsti, võtke asjad ja lahkuge - see on normaalne. Kui personalijuht ja juht end vestlusel teie kulul maksma panevad, näitab see, et ettevõte on mürgine ja te ei tohiks seal töötada, kui teile just ebaadekvaatsed ülemused ei meeldi.

Järeldused

Programmeerijad, minge intervjuudele! Ja proovige alati edutada. Oletame, et kui saate N raha, siis minge intervjuule vähemalt N*1,2 või parem N*1,5 eest. Isegi kui te seda vaba kohta kohe ei võta, saate aru, mida selle palgataseme jaoks vaja on.
Minu tähelepanekud on näidanud, et otsustavad hea inglise keele oskus, piisavalt rikkalik kogemus tööstuses ja enesekindlus. Viimane on peamine kvaliteet, nagu igal pool elus. Reeglina suudab enesekindlam kandidaat isegi rohkemate vigadega intervjuul paremini esineda kui suurepärane, kuid häbelikum ja proaktiivsem kandidaat. Edu teile intervjuudel!

P/S võistlus

Kui teil on huvitavaid näiteid probleemidest, millega HR on teid koormanud, siis tere tulemast kommentaaridesse. Oleme ette valmistanud väikese konkursi - tingimused on lihtsad: kirjutate intervjuu ajal kõige ebatavalisema ülesande, lugejad hindavad seda (pluss) ja nädala pärast võtame tulemused kokku ja premeerime võitjat lõbusate maiuspaladega.

Programmeerijad, minge intervjuudele

Programmeerijad, minge intervjuudele

Allikas: www.habr.com

Lisa kommentaar