Programistoj, iru al intervjuoj

Programistoj, iru al intervjuoj
La bildo estas prenita de video de la kanalo "Militantaj Ametistoj»

Mi laboris kiel sistemprogramisto por Linukso dum ĉirkaŭ 10 jaroj. Ĉi tiuj estas kernaj moduloj (kernspaco), diversaj demonoj kaj laborantaj kun aparataro el uzantspaco (uzantspaco), diversaj ekŝargiloj (u-boot, ktp.), regilo-firmvaro kaj multe pli. Eĉ kelkfoje okazis tranĉi la retinterfacon. Sed pli ofte okazis, ke mi devis sidi per lutfero kaj interagi kun dezajnistoj de presitaj cirkvitoj. Unu el la problemoj de tia laboro estas, ke estas sufiĉe malfacile taksi la nivelon de via kompetenteco, ĉar vi eble konas unu taskon tre profunde, sed vi eble tute ne konas alian. La nura adekvata maniero kompreni kien iri kaj kiaj fluoj ekzistas nun estas iri por intervjuoj.

En ĉi tiu artikolo mi ŝatus resumi mian sperton pri intervjuo por vakantaĵo kiel Linuksa sistemprogramisto, la specifaĵoj de la intervjuo, la laboro, kaj kiel taksi vian personan nivelon de scio per komunikado kun estonta dunganto kaj kion vi ne devus. atendi de ĝi.

La artikolo inkludos malgrandan konkurson kun premioj.

Karakterizaĵoj de la profesio

Sistemprogramisto, en la specifa fako en kiu mi laboris, estas kompleta ĝeneralisto: mi devis kaj skribi kodon kaj sencimigi aparataron. Kaj ofte estis neceso luti ion mem. De tempo al tempo, okazis, ke miaj ĝustigoj al la aparataro tiam estis transdonitaj al la programistoj. Tial, por labori en ĉi tiu areo, vi bezonas sufiĉe bonan bazon de scio, kaj en la kampo de cifereca cirkulado kaj en programado. Pro tio, intervjuoj por sistemprogramista posteno ofte aspektas kiel serĉado de elektronika specialisto.

Programistoj, iru al intervjuoj
Tipa laborstacio por sistemprogramisto.

La ĉi-supra foto montras mian tipan laborejon dum senararigado de ŝoforoj. La logika analizilo montras la ĝustecon de la elsenditaj mesaĝoj, la osciloskopo kontrolas la formon de la signalaj randoj. Ankaŭ, la jtag-sencimigilo ne estis inkluzivita en la kadro, kiu estas uzata kiam normaj sencimigaj iloj ne plu eltenas. Kaj vi devas povi labori kun ĉi tiu tuta ekipaĵo.

Ofte okazas, ke estas pli rapide kaj pli facile reludi iujn elementojn kaj korekti topologiajn erarojn mem ol porti la produkton al instalilo. Kaj tiam lutstacio ankaŭ ekloĝas ĉe via laborejo.

Alia trajto de evoluo ĉe la ŝoforo kaj aparataro estas, ke Guglo ne helpas. Ofte vi devas serĉi informojn pri via problemo, kaj estas tri ligiloj, du el kiuj estas viaj propraj demandoj en iu forumo. Aŭ eĉ pli malbone, kiam vi renkontas demandon de la sama kompatindulo, kiu demandis ĝin antaŭ 5 jaroj en la kerna dissendolisto kaj neniam ricevis respondon. En ĉi tiu laboro, krom eraroj en la dezajno de kaj aparataro kaj programaro, dokumentaj eraroj ofte estas renkontitaj - ĉi tiuj verŝajne estas la plej severaj kaj malagrablaj problemoj. Foje registroj estas malĝuste priskribitaj, aŭ tute ne ekzistas priskribo por ili. Tiaj problemoj povas esti solvitaj nur per science enŝovado de hazardaj nombroj en certajn registrojn (ia reverso). Ofte okazas, ke la procesoro enhavas iun funkciojn, sed neniu krom vi efektivigis ĉi tiun funkcion (precipe se la procesoro estas nova). Kaj ĉi tio signifas marŝi tra la kampo kun rastilo, el kiuj 70% estas por infanoj. Sed kiam estas dokumentado, eĉ kun eraroj, tio jam estas progreso. Sufiĉe ofte okazas, ke tute ne ekzistas dokumentado, kaj tiam komenciĝas promenado tra minkampoj, kiam la fero brulas. Kaj jes, ankaŭ mi sukcese solvis tiajn problemojn.

Intervjuoj

Mia opinio estas, ke vi devus iri por intervjuoj almenaŭ unufoje ĉiun sesmonaton, eĉ se vi adoras vian laboron kaj ne volas ŝanĝi ĝin. Intervjuo permesas vin kompreni vian nivelon kiel specialisto. Mi kredas, ke la plej valoraj intervjuoj estas tiuj, kiuj malsukcesas. Ili estas tiuj, kiuj plej precize montras, kiajn botelojn en via scio necesas plibonigi.

Alia interesa trajto estas la kvalito de intervjuoj. Ĉi tio estas mia konstato, kaj ne estas la vero, mi konfesas, ke mi estis nur bonŝanca. Se la intervjuo iras laŭ la scenaro:

  • rakontu al ni pri vi mem;
  • Tiajn taskojn ni havas;
  • vi ŝatas?

Kaj se post ĉi tiu dialogo vi ŝatas unu la alian, vi iras al laboro, tiam, kiel regulo, la kompanio kaj taskoj montriĝas tre agrablaj kaj taŭgaj. Se intervjuo similas trairi 12 rondojn de la infero: la unua intervjuo kun HR, poste intervjuo kun grupo de programistoj, poste la direktoro, pli da hejmtasko ktp., tiam kutime ĉi tiuj estis malsukcesaj organizaĵoj, en kiuj mi ne laboris. tre longe. Denove, ĉi tio estas persona observo, sed kutime tro da burokratio kaj longedaŭra dungado montras, ke la samaj ĝustaj procezoj okazas ene de la kompanio. La decidoj estas faritaj malrapide kaj neefike. Estis ankaŭ la kontraŭaj situacioj, kiam estis rondoj de intervjua infero, kaj la kompanio montriĝis bonega, kaj kiam, post vangofrapo sur la pojno, la kompanio montriĝis marĉo, sed ĉi tiuj estas maloftaj.

Se vi pensas, ke la scenaro: renkontita, rakontita pri vi mem kaj dungita, ekzistas nur en malgrandaj kompanioj, tiam ne. Mi vidis tion en tre grandaj kompanioj, kiuj dungas pli ol centojn da homoj kaj estas reprezentitaj sur mondaj merkatoj. Ĉi tio estas normala mekanismo, precipe se vi havas riĉan spuron kaj havas la ŝancon voki viajn antaŭajn dungantojn kaj demandi pri vi.

Por mi, ĝi estas tre bona indikilo de kompanio kiam ili petas montri ekzemplojn de siaj projektoj kaj kodo. La nivelo de trejnado de la kandidato tuj montriĝas. Kaj, koncerne min, el la vidpunkto de elektado de kandidatoj, ĉi tiu estas la plej efika metodo de elekto ol montri intervjuojn. Fakte, vi povas malsukcesi ĉe intervjuo pro ekscito, aŭ, male, eliri adrenalino. Sed en reala laboro, vi ne povas trakti realajn taskojn. Kaj mi ankaŭ renkontis ĉi tion kiam mi mem intervjuis homojn. Specialisto venas, montras sin bonega, mi ŝatis lin, li ŝatis nin. Kaj mi luktis kun la plej simpla problemo dum monato, kaj kiel rezulto, alia programisto solvis ĝin en kelkaj tagoj. Mi devis disiĝi de tiu programisto.

Mi precipe taksas programajn taskojn en intervjuoj. Kaj tiuj, kiuj devas esti solvitaj ĝuste dum la renkontiĝo, sub streso, kaj hejmtasko. La unua montras, kiel vi pretas rapide kaj precize solvi problemojn en streĉa situacio kaj krizo. La dua montras vian nivelon de kompetenteco kaj kapablon serĉi informojn kaj solvi aktualajn problemojn.

La plej interesaj laboroj kiujn mi havis estis en la defenda komplekso de nia lando. En la laboro, mi devis solvi simple fantaziajn problemojn, pri kiuj komercaj programistoj neniam eĉ sonĝis. Superkomputiloj, projektado de enkursigiloj, diversaj nodaj batalsistemoj - ĉi tio estas nekredeble ekscita. Kiam dum la parado vi vidas komplekson, kiu konservas vian kodon, ĝi estas vere agrable. Kurioze, intervjuoj kun tiaj kompanioj estas kutime tre simplaj, laŭvorte venas, kiel ĝi, akceptitaj (verŝajne la specifaĵoj de la militistaro, kiuj ne ŝatas paroli tro multe), estas supermetitaj. La defioj kiujn mi renkontis tie estis vere interesaj kaj defiaj. Kun sperto, montriĝis, ke ili estas bonaj por lerni esti altkvalita sistemprogramisto. Estas ankaŭ malavantaĝoj, kaj ĉi tio eĉ ne estas malaltaj salajroj. Nuntempe, la salajro en la defenda komplekso estas sufiĉe deca, kun gratifikoj kaj avantaĝoj. Kiel regulo, estas multe da burokratio, longaj labortempoj, senfinaj rapidaj laboroj kaj laboro sub granda streĉo. En iuj kazoj, sekreteco ne povas esti ekskludita, kio aldonas iujn problemojn por vojaĝi eksterlanden. Krome, kompreneble, la tiraneco de estroj, kaj ĉi tio, ve, ankaŭ okazas. Kvankam mia sperto labori kun klienta reprezentanto estas ege agrabla. Ĉi tio estas kolektiva impreso de tri malsamaj esplorinstitutoj kaj kompanioj rilataj al ŝtataj defendaj ordonoj.

Intervjuaj taskoj

Por eviti miskomprenojn kaj por ne elmontri la kompaniojn, kun kiuj mi intervjuis, mi ne tentos la sorton kaj indikos iliajn detalojn. Sed mi dankas por ĉiu intervjuo, por la tempo, kiun homoj pasigis por mi, por la ŝanco rigardi min de ekstere. Mi povas nur diri, ke la taskoj estis por grandaj internaciaj kompanioj reprezentitaj en diversaj landoj.

Mi diros al vi la plej interesan aferon: kiajn taskojn oni donas dum intervjuoj. Ĝenerale, la plej oftaj demandoj por la vakantaĵo de sistemprogramisto kaj mikroregila programisto estas bitoperacioj, en ĉiuj eblaj varioj. Tial, preparu vin plej bone en ĉi tiu areo.

La dua plej polariza temo estas vojmontriloj, ĉi tio vere devus salti de viaj dentoj. Por ke ili veku vin meze de la nokto kaj vi povu rakonti kaj montri ĉion.

Mi ŝtelis demandojn de pluraj intervjuoj en mia kapo, kaj mi prezentos ilin ĉi tie, ĉar mi trovas ilin sufiĉe interesaj. Mi intence ne donas respondojn al ĉi tiuj demandoj, por ke legantoj povu respondi ĉi tiujn demandojn mem en la komentoj kaj havi iom da pulvoro dum vera intervjuo.

Demandoj n-ro 1

I. Kono de SI. Kion signifas la sekvaj enskriboj:

const char * str;

char const * str;

const * char str;

char * const str;

const char const * str;

Ĉu ĉiuj enskriboj estas ĝustaj?

II. Kial ĉi tiu programo ĵetos segmentan misfunkciadon?

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

III. Esti inteligenta.

Estas bastono longa unu metron. Dek formikoj hazarde falas sur ŝin, rampante en malsamaj direktoj. La movrapideco de unu formiko estas 1 m/s. Se formiko renkontas alian formikon, ĝi turnas sin kaj rampas en la kontraŭa direkto. Kiom estas la maksimuma tempo, kiun vi bezonas por atendi, ke ĉiuj formikoj falos de la bastono?

La sekva intervjuo estis fiasko por mi, kaj mi konsideras ĝin la plej utila en mia programa praktiko. Ĝi montris la profundon de mia nekompetenteco. Antaŭ ĉi tiu intervjuo, mi konis ĉiun el ĉi tiuj demandoj kaj ili konstante aperis en mia praktiko, sed iel mi ne donis al ili multe da graveco, kaj sekve, mi ne bone komprenis ilin. Tial mi malsukcesis ĉi tiun ekzamenon malhonore. Kaj mi tre dankas, ke tia malsukceso okazis; ĝi havis la plej sobrigan efikon al mi. Vi pensas, ke vi estas bonega specialisto, vi konas cirkvito-dezajnon, interfacojn kaj labori kun la kerno. Kaj tiam vi havas verajn demandojn kaj vi flosas. Do ni vidu.

Intervjuaj Demandoj #2

Problemoj pri aparataro.

  • Kiel linuksaj sistemvokoj estas aranĝitaj en asembla lingvo sur ARM-procesoro, sur x86. Kio estas la diferenco?
  • Kiuj sinkronigaj iloj ekzistas? Kiuj sinkronigaj iloj povas esti uzataj ene de interrompa kunteksto, kiuj ne povas, kaj kial?
  • Kio estas la diferenco inter i2c-buso kaj spi-buso?
  • Kial estas terminatoroj sur la i2c-buso kaj kio estas ilia valoro?
  • Ĉu la interfaco RS-232 povas funkcii NUR sur du dratoj: RX kaj TX? Ĉi tie mi donos la respondon: Montriĝas, ke ĝi estas malbona, ĉe 9600, sed ĝi povas!!!
  • Kaj nun la dua demando: kial?
  • Kio estas la plej bona maniero aranĝi signalliniojn kaj potencon en plurtavolaj tabuloj kaj kial? Potenco ene de la tavoloj, aŭ signallinioj ene de la tavoloj? (La demando ĝenerale temas nur pri cirkvitodezajno).
  • Kial diferencigaj linioj havas spurojn, kiuj iras kune ĉie?
  • RS-485 buso. Kutime estas terminatoroj sur tia linio. Tamen ni havas stelcirkviton, kun ŝanĝiĝema nombro da aldonaj moduloj. Kiajn rimedojn por eviti koliziojn kaj interferojn oni uzu?
  • Kio estas ruĝaj kaj binaraj arboj?
  • Kiel labori kun cmake?
  • Demandoj pri konstruado de yocto Linukso.

Celoj por ĉi tiu intervjuo:

1. Skribu funkcion kiu inversigas al uint32_t ĉiuj pecoj. (labori kun pecoj estas tre populara ĉe intervjuoj, mi rekomendas ĝin)
2.

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

Kion redonos ĉi tiu funkcio? (solvo surpapere, sen komputilo)

3. Funkcio por kalkulado de la aritmetika meznombro de du nombroj int32_t.

4. Kio estas la eligmetodoj en programoj, inkl. en fluon da eraroj.

La tria elekto estis relative lastatempa, kaj mi ne surprizus, se tie ankoraŭ ekzistas tia demandaro, do mi ne malkaŝos la kompanion por ne elmontri ilin... Sed ĝenerale mi donos ekzemplon. de eblaj demandoj, kaj se vi rekonas viajn demandojn, tiam mi salutas :).

Intervjuaj Demandoj #3

  1. Ekzemplo de arbo-traversa kodo estas donita; necesas rakonti, kio estas farita en ĉi tiu kodo kaj indiki erarojn.
  2. Skribu ekzemplon de la utileco ls. Kun la plej simpla opcio "-l".
  3. Donu ekzemplon pri kiel fari statikan kaj dinamikan ligon. Kio estas la diferenco?
  4. Kiel funkcias RS-232? Kio estas la diferenco inter RS-485 kaj RS-232? Kio estas la diferenco inter RS-232 kaj RS-485 el la vidpunkto de programisto?
  5. Kiel funkcias USB (el vidpunkto de programisto)?
  6. Traduko de teknika teksto el la rusa al la angla.

Sukcesa intervjuo ne estas garantio de sukcesa laboro

Ĉi tiu ĉapitro verŝajne estas eĉ ne por programistoj (kvankam ankaŭ por ili), sed pli por HR. La plej adekvataj kompanioj ne zorge rigardas la rezultojn de intervjuoj. Estas normale fari erarojn; plej ofte oni rigardas kiel homo scias solvi problemojn kaj rezoni.

Unu el la ĉefaj problemoj estas, ke kandidato sukcese solvas problemojn dum intervjuoj, montras sin bonega specialisto, sed malsukcesas ĉe la unua reala tasko. Mi ne mensogos, tio okazis ankaŭ al mi. Mi sukcese trapasis ĉiujn rondojn de la infero, solvis ĉiujn testajn taskojn, sed en realaj kondiĉoj la laboro montriĝis tro malfacila pro simpla malsperto. Enŝipiĝi ne estas la plej malfacila tasko. La plej malfacila afero estas resti surŝipe de ĉi tiu kompanio.

Tial mi fidas pli da kompanioj, kiuj faras simplajn intervjuojn kun la kandidato kaj diras: post la unua monato de laboro, estos klare ĉu vi taŭgas por ni aŭ ne. Ĉi tiu estas la plej taŭga aliro, jes, eble iom multekosta, sed tuj estas klare, kiu estas kiu.

Estas alia eblo por intervjuoj: kiam vi sukcese pasas ĝin, sed surbaze de la rezultoj de la intervjuo vi komprenas, ke la dunganto estas tute neadekvata. Mi tuj rifuzas laboron, se oni proponas al mi labori kiel individua entreprenisto, promesante grandajn enspezojn. Ĉi tio estas formo de impostfraŭdo por operacia organizo, kaj kial la problemoj de la dunganto devus zorgi min kiel programisto? Alia eblo estas diversaj registaraj agentejoj. Mi havis intervjuon, rezulte de kiu oni proponis al mi bonan salajron, sed oni diris, ke la antaŭa programisto ĉesis, malsaniĝis, mortis, eksonis pro la laborŝarĝo, kaj via labortago komenciĝas je la 8-a matene. . De tia loko li ankaŭ kuris tiel, ke liaj kalkanoj ekbrilis. Jes, HR, bonvolu noti, ke programistoj pretas rifuzi eĉ la plej bongustan laboron, se la labortago devas komenci frue matene.

Al la fino, mi donos bonegan videon pri elekto de programistoj, kies ekrankopio estas donita komence de ĉi tiu artikolo. Ankaŭ mi havis tian intervjuon pli ol unufoje. Se vi vidas tiranecon en la stadio de demandoj, tiam respektu vin, leviĝu, prenu viajn aferojn kaj foriru - tio estas normala. Se HR kaj la administranto asertas sin je via kosto dum la intervjuo, ĉi tio indikas, ke la kompanio estas venena kaj vi ne devus labori tie krom se vi ŝatas netaŭgajn estrojn.

trovoj

Programistoj, iru al intervjuoj! Kaj ĉiam provu esti promociita. Ni diru, se vi ricevas N-monon, tiam iru por intervjuo por almenaŭ N*1,2, aŭ pli bone N*1,5. Eĉ se vi ne prenas ĉi tiun vakantan postenon tuj, vi komprenos, kio estas necesa por ĉi tiu nivelo de salajro.
Miaj observoj montris, ke bona scio de la angla lingvo, sufiĉe riĉa sperto en la industrio kaj memfido decidas. Ĉi-lasta estas la ĉefa kvalito, kiel ĉie en la vivo. Kiel regulo, pli memcerta kandidato povas rezulti pli bone en intervjuo, eĉ kun pli da eraroj, ol bonega, sed pli timema kaj iniciatema kandidato. Bonŝancon kun viaj intervjuoj!

P/S Konkurado

Se vi havas interesajn ekzemplojn de problemoj, per kiuj HR ŝarĝis vin, tiam bonvenon en la komentoj. Ni preparis malgrandan konkurson - la kondiĉoj estas simplaj: vi skribas la plej nekutiman taskon, kiun vi havis dum intervjuo, legantoj taksas ĝin (plus), kaj post semajno ni resumas la rezultojn kaj rekompencas la gajninton per amuzaj bonaĵoj.

Programistoj, iru al intervjuoj

Programistoj, iru al intervjuoj

fonto: www.habr.com

Aldoni komenton