Programmeerders, gaan na onderhoude

Programmeerders, gaan na onderhoude
Die foto is geneem uit 'n video van die kanaal "Militante Ametiste»

Ek het vir ongeveer 10 jaar as 'n stelselprogrammeerder vir Linux gewerk. Dit is kernmodules (kernspasie), verskeie daemone en werk met hardeware vanaf gebruikersruimte (gebruikersruimte), verskeie selflaailaaiers (u-boot, ens.), kontroleerderfirmware en nog baie meer. Selfs soms het dit gebeur om die webkoppelvlak te sny. Maar meer dikwels het dit gebeur dat ek met 'n soldeerbout moes sit en interaksie het met ontwerpers van gedrukte stroombaanborde. Een van die probleme met sulke werk is dat dit nogal moeilik is om die vlak van jou bekwaamheid te assesseer, aangesien jy dalk een taak baie diep ken, maar jy dalk glad nie 'n ander ken nie. Die enigste voldoende manier om te verstaan ​​waarheen om te gaan en watter strominge daar nou is, is om vir onderhoude te gaan.

In hierdie artikel wil ek graag my ervaring van onderhoudvoering vir 'n vakature as 'n Linux-stelselprogrammeerder opsom, die besonderhede van die onderhoud, die werk, en hoe om jou persoonlike vlak van kennis te assesseer deur met 'n toekomstige werkgewer te kommunikeer en wat jy nie moet nie daarvan verwag.

Die artikel sal 'n klein kompetisie met pryse insluit.

Kenmerke van die beroep

'n Stelselprogrammeerder, in die spesifieke veld waarin ek gewerk het, is 'n volledige algemene: ek moes beide kode skryf en hardeware ontfout. En dikwels was daar 'n behoefte om self iets te soldeer. Van tyd tot tyd het dit gebeur dat my aanpassings aan die hardeware dan na die ontwikkelaars oorgedra is. Daarom, om in hierdie area te werk, benodig jy 'n redelike goeie basis van kennis, beide op die gebied van digitale stroombane en in programmering. As gevolg hiervan lyk onderhoude vir 'n stelselprogrammeerderposisie dikwels soos 'n soektog na 'n elektroniese spesialis.

Programmeerders, gaan na onderhoude
'n Tipiese werkstasie vir 'n stelselprogrammeerder.

Die foto hierbo wys my tipiese werkplek wanneer bestuurders ontfout. Die logiese ontleder toon die korrektheid van die oorgedra boodskappe, die ossilloskoop monitor die vorm van die seinrande. Die jtag-ontfouter is ook nie by die raam ingesluit nie, wat gebruik word wanneer standaard ontfoutingsgereedskap nie meer die hoof bied nie. En jy moet met al hierdie toerusting kan werk.

Dit gebeur dikwels dat dit vinniger en makliker is om sommige elemente weer te soldeer en topologiefoute self reg te stel as om die produk na 'n installeerder te neem. En dan neem 'n soldeerstasie ook intrek by jou werkplek.

Nog 'n kenmerk van ontwikkeling op bestuurder- en hardewarevlak is dat Google nie help nie. Dikwels moet jy inligting oor jou probleem soek, en daar is drie skakels, waarvan twee jou eie vrae op een of ander forum is. Of nog erger, wanneer jy op 'n vraag afkom van dieselfde arme ou wat dit 5 jaar gelede op die kernposlys gevra het en nooit 'n antwoord gekry het nie. In hierdie werk word, benewens foute in die ontwerp van beide hardeware en sagteware, dokumentasiefoute dikwels teëgekom - dit is waarskynlik die ernstigste en onaangenaamste probleme. Soms word registers verkeerd beskryf, of daar is hoegenaamd geen beskrywing daarvoor nie. Sulke probleme kan slegs opgelos word deur ewekansige getalle wetenskaplik in sekere registers te steek ('n soort omgekeerde). Dit gebeur dikwels dat die verwerker 'n sekere funksionaliteit bevat, maar niemand behalwe jy het hierdie funksionaliteit geïmplementeer nie (veral as die verwerker nuut is). En dit beteken om met 'n hark oor die veld te stap, waarvan 70% vir kinders is. Maar wanneer daar dokumentasie is, selfs met foute, is dit reeds vordering. Dikwels gebeur dit dat daar glad nie dokumentasie is nie, en dit is wanneer stap deur mynvelde begin wanneer die yster brand. En ja, ek het sulke probleme ook suksesvol opgelos.

Onderhoude

My mening is dat jy minstens een keer elke ses maande vir onderhoude moet gaan, al is jy mal oor jou werk en wil jy dit nie verander nie. 'n Onderhoud laat jou toe om jou vlak as 'n spesialis te verstaan. Ek glo die mees waardevolle onderhoude is dié wat misluk. Dit is hulle wat die akkuraatste wys watter knelpunte in jou kennis verbeter moet word.

Nog 'n interessante kenmerk is die kwaliteit van onderhoude. Dit is my waarneming, en dit is nie die waarheid nie, ek erken dat ek net gelukkig was. As die onderhoud volgens die scenario verloop:

  • Vertel ons oor jouself;
  • Ons het sulke take;
  • jy hou van?

En as julle na hierdie dialoog van mekaar hou, gaan werk toe, dan blyk die geselskap en take in die reël baie aangenaam en voldoende te wees. As 'n onderhoud lyk soos om deur 12 kringe van hel te gaan: die eerste onderhoud met HR, dan 'n onderhoud met 'n groep programmeerders, dan die direkteur, meer huiswerk, ens., dan was dit as 'n reël mislukte organisasies waarin ek nie gewerk het nie. vir baie lank. Weereens, dit is 'n persoonlike waarneming, maar in die reël wys te veel burokrasie en 'n uitgerekte aanstellingsproses dat presies dieselfde prosesse binne die maatskappy plaasvind. Besluite word stadig en ondoeltreffend geneem. Daar was ook die teenoorgestelde situasies, wanneer daar kringe van onderhoudshel was, en die maatskappy was wonderlik, en wanneer die maatskappy, na 'n klap op die pols, 'n moeras was, maar dit is skaars.

As jy dink dat die scenario: ontmoet, van jouself vertel en aangestel is, net in klein maatskappye bestaan, dan nie. Ek het dit gesien in baie groot maatskappye wat meer as honderde mense in diens het en op wêreldmarkte verteenwoordig is. Dit is 'n normale meganisme, veral as jy 'n ryk rekord het en die geleentheid het om jou vorige werkgewers te bel en oor jou te vra.

Vir my is dit 'n baie goeie aanduiding van 'n maatskappy wanneer hulle vra om voorbeelde van hul projekte en kode te wys. Die vlak van opleiding van die aansoeker word onmiddellik getoon. En, wat my betref, uit die oogpunt van die keuring van kandidate, is dit die mees effektiewe metode van keuring as skouonderhoude. Trouens, jy kan van opgewondenheid by 'n onderhoud druip, of inteendeel, op adrenalien uitkom. Maar in regte werk kan jy nie werklike take hanteer nie. En ek het dit ook teëgekom toe ek self mense ondervra het. 'n Spesialis kom, wys homself as uitstekend, ek het van hom gehou, hy het van ons gehou. En ek het 'n maand lank met die eenvoudigste probleem gesukkel, en gevolglik het 'n ander programmeerder dit binne 'n paar dae opgelos. Ek moes met daardie programmeerder deel.

Ek waardeer veral programmeringstake in onderhoude. En dié wat reg opgelos moet word tydens die vergadering, onder stres en huiswerk. Die eerste wys hoe gereed jy is om probleme in 'n stresvolle situasie en nood vinnig en akkuraat op te los. Die tweede wys jou vlak van bevoegdheid en vermoë om inligting te soek en huidige probleme op te los.

Die interessantste werke wat ek gehad het, was in die verdedigingskompleks van ons land. In die proses van werk moes ek eenvoudig fantastiese probleme oplos waarvan kommersiële programmeerders nooit eers gedroom het nie. Superrekenaars, die ontwerp van routers, verskeie nodus-gevegstelsels - dit is ongelooflik opwindend. Wanneer jy tydens die parade 'n kompleks sien wat jou kode stoor, is dit baie lekker. Vreemd genoeg is onderhoude met sulke maatskappye gewoonlik baie eenvoudig, letterlik kom, soos dit, aanvaar (waarskynlik die besonderhede van die weermag, wat nie daarvan hou om te veel te praat nie), word op mekaar geplaas. Die uitdagings wat ek daar te staan ​​gekom het, was werklik interessant en uitdagend. Met ondervinding het dit geblyk dat hulle goed is om te leer om 'n stelselprogrammeerder van hoë gehalte te wees. Daar is ook nadele, en dit is nie eens lae lone nie. Op die oomblik is die salaris in die verdedigingskompleks redelik skaflik, met bonusse en voordele. As 'n reël is daar baie burokrasie, lang werksure, eindelose haastige werke en werk onder groot stres. In sekere gevalle kan geheimhouding nie uitgesluit word nie, wat sekere probleme byvoeg vir die reis na die buiteland. Plus natuurlik die tirannie van base, en dit gebeur helaas ook. Alhoewel my ervaring van werk met 'n kliënteverteenwoordiger uiters aangenaam is. Dit is 'n gesamentlike indruk van drie verskillende navorsingsinstellings en maatskappye wat verband hou met staatsverdedigingsbevele.

Onderhoudstake

Om misverstande te vermy en om nie die maatskappye met wie ek 'n onderhoud gevoer het bloot te lê nie, sal ek nie die noodlot versoek en hul besonderhede aandui nie. Maar ek is dankbaar vir elke onderhoud, vir die tyd wat mense aan my spandeer het, vir die geleentheid om van buite na myself te kyk. Ek kan net sê dat die take vir groot internasionale maatskappye was wat in verskillende lande verteenwoordig is.

Ek sal jou die interessantste ding vertel: watter take tydens onderhoude gegee word. Oor die algemeen is die mees algemene vrae vir die vakature van 'n stelselprogrammeerder en mikrobeheerderprogrammeerder bisbewerkings, in alle moontlike variasies. Berei jouself dus die beste voor op hierdie gebied.

Die tweede mees polariserende onderwerp is wegwysers, dit behoort regtig van jou tande af te spring. Sodat hulle jou in die middel van die nag wakker maak en jy alles kan vertel en wys.

Ek het vrae uit verskeie onderhoude in my kop gesteel, en ek sal dit hier aanbied, aangesien ek dit nogal interessant vind. Ek gee doelbewus nie antwoorde op hierdie vrae nie sodat lesers self hierdie vrae in die kommentaar kan beantwoord en 'n bietjie poeier kan hê wanneer hulle deur 'n regte onderhoud gaan.

Vrae nr 1

I. Kennis van SI. Wat beteken die volgende inskrywings:

const char * str;

char const * str;

const * char str;

char * const str;

const char const * str;

Is alle inskrywings korrek?

II. Hoekom sal hierdie program 'n segmenteringsfout gooi?

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

III. Om slim te wees.

Daar is 'n stok van een meter lank. Tien miere val lukraak op haar en kruip in verskillende rigtings. Die spoed van beweging van een mier is 1 m/s. As 'n mier 'n ander mier teëkom, draai hy om en kruip in die teenoorgestelde rigting. Wat is die maksimum tyd wat jy nodig het om te wag vir al die miere om van die stok af te val?

Die volgende onderhoud was vir my 'n mislukking, en ek beskou dit as die nuttigste in my programmeringspraktyk. Dit het die diepte van my onbevoegdheid gewys. Voor hierdie onderhoud was ek vertroud met elkeen van hierdie vrae en hulle het voortdurend in my praktyk na vore gekom, maar op een of ander manier het ek nie veel waarde daaraan geheg nie, en dienooreenkomstig het ek dit nie goed verstaan ​​nie. Daarom het ek hierdie eksamen in skande gedruip. En ek is baie dankbaar dat so 'n mislukking gebeur het; dit het die ontnugterendste uitwerking op my gehad. Jy dink jy is 'n gawe spesialis, jy ken stroombaanontwerp, koppelvlakke en werk met die kern. En dan het jy regte vrae en jy dryf. So kom ons kyk.

Onderhoudsvrae #2

Hardeware kwessies.

  • Hoe Linux-stelseloproepe in samestellingstaal op 'n ARM-verwerker op x86 gerangskik word. Wat is die verskil?
  • Watter sinchronisasie-instrumente is daar? Watter sinchronisasie-instrumente kan binne 'n onderbrekingskonteks gebruik word, watter kan nie, en hoekom?
  • Wat is die verskil tussen i2c-bus en spi-bus?
  • Hoekom is daar terminators op die i2c-bus en wat is hul waarde?
  • Kan die RS-232-koppelvlak SLEGS op twee drade werk: RX en TX? Hier sal ek die antwoord gee: Dit blyk dat dit sleg is, by 9600, maar dit kan!!!
  • En nou die tweede vraag: hoekom?
  • Wat is die beste manier om seinlyne en krag in meerlaagborde te rangskik en hoekom? Krag binne die lae, of seinlyne binne die lae? (Die vraag gaan oor die algemeen bloot oor stroombaanontwerp).
  • Hoekom het differensiële lyne spore wat oral saamloop?
  • RS-485 bus. Gewoonlik is daar terminators op so 'n lyn. Ons het egter 'n sterstroombaan, met 'n veranderlike aantal inpropmodules. Watter middele om botsings en inmenging te vermy moet gebruik word?
  • Wat is rooi en binêre bome?
  • Hoe om met cmake te werk?
  • Vrae oor die bou van yocto Linux.

Doelwitte vir hierdie onderhoud:

1. Skryf 'n funksie wat omkeer na uint32_t al die stukkies. (om met stukkies te werk is baie gewild by onderhoude, ek beveel dit aan)
2.

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

Wat sal hierdie funksie teruggee? (oplossing op papier, sonder 'n rekenaar)

3. Funksie vir die berekening van die rekenkundige gemiddelde van twee getalle int32_t.

4. Wat is die uitsetmetodes in programme, inkl. in 'n stroom van foute.

Die derde seleksie was relatief onlangs, en ek sal nie verbaas wees as daar nog so 'n vraelys daar is nie, so ek sal nie die maatskappy bekend maak om dit nie bloot te stel nie... Maar in algemene terme gee ek 'n voorbeeld van moontlike vrae, en as jy jou vrae herken, dan sê ek hallo :).

Onderhoudsvrae #3

  1. 'n Voorbeeld van boomdeurkruisingskode word gegee; dit is nodig om te vertel wat in hierdie kode gedoen word en foute uit te wys.
  2. Skryf 'n voorbeeld van die ls-nutsprogram. Met die eenvoudigste opsie "-l".
  3. Gee 'n voorbeeld van hoe om statiese en dinamiese skakeling te doen. Wat is die verskil?
  4. Hoe werk RS-232? Wat is die verskil tussen RS-485 en RS-232? Wat is die verskil tussen RS-232 en RS-485 vanuit 'n programmeerder se oogpunt?
  5. Hoe werk USB (uit 'n programmeerder se oogpunt)?
  6. Vertaling van tegniese teks uit Russies in Engels.

'n Suksesvolle onderhoud is nie 'n waarborg vir suksesvolle werk nie

Hierdie hoofstuk is waarskynlik nie eers vir programmeerders nie (hoewel vir hulle ook), maar meer vir HR. Die mees toereikende maatskappye kyk nie noukeurig na die resultate van onderhoude nie. Dit is normaal om foute te maak; hulle kyk meestal na hoe 'n persoon weet hoe om probleme op te los en te redeneer.

Een van die sleutelprobleme is dat 'n kandidaat probleme tydens onderhoude suksesvol oplos, homself as 'n uitstekende spesialis toon, maar by die eerste werklike taak misluk. Ek sal nie lieg nie, dit het ook met my gebeur. Ek het suksesvol deur al die kringe van die hel gegaan, al die toetstake opgelos, maar in werklike omstandighede het die werk te moeilik geblyk te wees weens eenvoudige onervarenheid. Om aan boord te klim is nie die moeilikste taak nie. Die moeilikste ding is om aan boord van hierdie maatskappy te bly.

Daarom vertrou ek meer maatskappye wat eenvoudige onderhoude met die kandidaat voer en sê: ná die eerste maand van werk sal dit duidelik wees of jy geskik is vir ons of nie. Dit is die mees toereikende benadering, ja, miskien 'n bietjie duur, maar dit is dadelik duidelik wie is wie.

Daar is nog 'n opsie vir onderhoude: wanneer jy dit suksesvol slaag, maar op grond van die resultate van die onderhoud verstaan ​​jy dat die werkgewer heeltemal ontoereikend is. Ek weier dadelik werk as ek aangebied word om as 'n individuele entrepreneur te werk, wat groot inkomste belowe. Dit is 'n vorm van belastingontduiking vir 'n bedryfsorganisasie, en hoekom moet die werkgewer se probleme my as programmeerder bekommer? Nog 'n opsie is verskeie staatsagentskappe. Ek het 'n onderhoud gehad, as gevolg waarvan ek 'n goeie salaris aangebied is, maar hulle het gesê dat die vorige programmeerder opgehou het, siek geword het, gesterf het, op 'n binge gegaan het as gevolg van die werklading, en jou werksdag begin om 8 uur in die oggend . Van so 'n plek af hardloop hy ook so dat sy hakskene blink. Ja, HR, let asseblief daarop dat programmeerders gereed is om selfs die lekkerste werk te weier as die werksdag vroeg in die oggend moet begin.

Aan die einde sal ek 'n uitstekende video van programmeerderkeuse gee, waarvan 'n skermkiekie aan die begin van hierdie artikel gegee word. Ek het ook meer as een keer so 'n onderhoud gehad. As jy tirannie op die stadium van vrae sien, respekteer jouself dan, staan ​​op, neem jou goed en gaan - dit is normaal. As HR en die bestuurder hulself op jou onkoste laat geld tydens die onderhoud, dui dit daarop dat die maatskappy giftig is en dat jy nie daar moet werk nie, tensy jy van onvoldoende base hou.

Bevindinge

Programmeerders, gaan na onderhoude! En probeer altyd bevorder word. Kom ons sê as jy N geld kry, gaan dan vir 'n onderhoud vir ten minste N*1,2, of beter N*1,5. Selfs as jy nie dadelik hierdie vakature aanvaar nie, sal jy verstaan ​​wat nodig is vir hierdie vlak van betaling.
My waarnemings het getoon dat goeie kennis van die Engelse taal, voldoende ryk ervaring in die bedryf en selfvertroue beslis. Laasgenoemde is die belangrikste eienskap, soos oral in die lewe. As 'n reël kan 'n meer selfversekerde kandidaat beter presteer in 'n onderhoud, selfs met meer foute, as 'n uitstekende, maar meer skaam en proaktiewe aansoeker. Sterkte met jou onderhoude!

P/S Kompetisie

As jy interessante voorbeelde het van probleme waarmee HR jou gelaai het, welkom in die kommentaar. Ons het 'n klein kompetisie voorberei - die voorwaardes is eenvoudig: jy skryf die mees ongewone taak wat jy tydens 'n onderhoud gehad het, lesers evalueer dit (plus), en na 'n week som ons die resultate op en beloon die wenner met prettige goedjies.

Programmeerders, gaan na onderhoude

Programmeerders, gaan na onderhoude

Bron: will.com

Voeg 'n opmerking