Mga programmer, pumunta sa mga panayam

Mga programmer, pumunta sa mga panayam
Ang larawan ay kinuha mula sa isang video mula sa channel "Mga Militanteng AmethystΒ»

Nagtrabaho ako bilang isang system programmer para sa Linux nang halos 10 taon. Ito ay mga kernel module (kernel space), iba't ibang daemon at nagtatrabaho sa hardware mula sa user space (user space), iba't ibang bootloader (u-boot, atbp.), controller firmware at marami pa. Kahit na minsan nangyari na putulin ang web interface. Ngunit mas madalas na nangyari na kailangan kong umupo sa isang panghinang na bakal at makipag-ugnayan sa mga naka-print na circuit board designer. Ang isa sa mga problema sa naturang gawain ay medyo mahirap masuri ang antas ng iyong kakayahan, dahil maaari mong alam ang isang gawain nang napakalalim, ngunit maaaring hindi mo alam ang isa pa. Ang tanging sapat na paraan upang maunawaan kung saan pupunta at kung anong agos ang mayroon ngayon ay ang pumunta para sa mga panayam.

Sa artikulong ito, nais kong ibuod ang aking karanasan sa pakikipanayam para sa isang bakante bilang isang Linux system programmer, ang mga detalye ng pakikipanayam, trabaho, at kung paano masuri ang iyong personal na antas ng kaalaman sa pamamagitan ng pakikipag-usap sa isang employer sa hinaharap at kung ano ang hindi mo dapat asahan mula dito.

Ang artikulo ay magsasama ng isang maliit na kumpetisyon na may mga premyo.

Mga tampok ng propesyon

Ang isang system programmer, sa partikular na larangan kung saan ako nagtrabaho, ay isang kumpletong generalist: Kinailangan kong parehong magsulat ng code at debug hardware. At madalas ay may pangangailangan na maghinang ng isang bagay sa iyong sarili. Paminsan-minsan, nangyari na ang aking mga pagsasaayos sa hardware ay inilipat sa mga developer. Samakatuwid, upang magtrabaho sa lugar na ito kailangan mo ng isang medyo mahusay na base ng kaalaman, kapwa sa larangan ng digital circuitry at sa programming. Dahil dito, ang mga panayam para sa posisyon ng system programmer ay kadalasang mukhang isang paghahanap para sa isang electronics specialist.

Mga programmer, pumunta sa mga panayam
Isang tipikal na workstation para sa isang system programmer.

Ipinapakita ng larawan sa itaas ang aking karaniwang lugar ng trabaho kapag nagde-debug ng mga driver. Ipinapakita ng logic analyzer ang kawastuhan ng mga ipinadalang mensahe, sinusubaybayan ng oscilloscope ang hugis ng mga gilid ng signal. Gayundin, ang jtag debugger ay hindi kasama sa frame, na ginagamit kapag ang mga karaniwang tool sa pag-debug ay hindi na nakayanan. At kailangan mong magawa ang lahat ng kagamitang ito.

Madalas na nangyayari na mas mabilis at mas madaling magbentang muli ng ilang elemento at itama ang mga error sa topology sa iyong sarili kaysa dalhin ang produkto sa isang installer. At pagkatapos ay ang isang istasyon ng paghihinang ay naninirahan din sa iyong lugar ng trabaho.

Ang isa pang tampok ng pag-unlad sa antas ng driver at hardware ay hindi nakakatulong ang Google. Kadalasan kailangan mong maghanap ng impormasyon sa iyong problema, at mayroong tatlong link, dalawa sa mga ito ay sarili mong mga katanungan sa ilang forum. O mas masahol pa, kapag nakatagpo ka ng isang tanong mula sa parehong mahirap na tao na nagtanong nito 5 taon na ang nakakaraan sa kernel mailing list at hindi nakatanggap ng sagot. Sa gawaing ito, bilang karagdagan sa mga error sa disenyo ng parehong hardware at software, ang mga error sa dokumentasyon ay madalas na nakatagpo - ito ay marahil ang pinakamalubha at hindi kasiya-siyang mga problema. Minsan ang mga rehistro ay inilarawan nang hindi tama, o walang paglalarawan para sa kanila. Ang ganitong mga problema ay malulutas lamang sa pamamagitan ng siyentipikong paglalagay ng mga random na numero sa ilang mga rehistro (isang uri ng reverse). Madalas na nangyayari na ang processor ay naglalaman ng ilang pag-andar, ngunit walang sinuman maliban sa iyo ang nagpatupad ng pag-andar na ito (lalo na kung ang processor ay bago). At nangangahulugan ito ng paglalakad sa buong field na may rake, 70% nito ay para sa mga bata. Ngunit kapag mayroong dokumentasyon, kahit na may mga pagkakamali, ito ay umuunlad na. Kadalasan nangyayari na walang dokumentasyon, at iyon ay kapag ang paglalakad sa mga minefield ay nagsisimula kapag ang bakal ay nasusunog. At oo, matagumpay kong nalutas ang mga ganitong problema.

Mga panayam

Ang aking opinyon ay dapat kang pumunta para sa mga panayam kahit isang beses bawat anim na buwan, kahit na mahal mo ang iyong trabaho at ayaw mong baguhin ito. Ang isang panayam ay nagpapahintulot sa iyo na maunawaan ang iyong antas bilang isang espesyalista. Naniniwala ako na ang pinakamahalagang panayam ay ang mga nabigo. Sila ang pinakatumpak na nagpapakita kung aling mga bottleneck sa iyong kaalaman ang kailangang pahusayin.

Ang isa pang kawili-wiling tampok ay ang kalidad ng mga panayam. Ito ang aking obserbasyon, at hindi ito ang katotohanan, inaamin kong sinuwerte lang ako. Kung ang panayam ay naaayon sa senaryo:

  • sabihin sa amin ang tungkol sa iyong sarili;
  • Mayroon kaming ganitong mga gawain;
  • gusto mo?

At kung pagkatapos ng pag-uusap na ito ay gusto mo ang isa't isa, pupunta ka sa trabaho, kung gayon, bilang isang patakaran, ang kumpanya at mga gawain ay naging napaka-kaaya-aya at sapat. Kung ang isang pakikipanayam ay kahawig ng pagdaan sa 12 bilog ng impiyerno: ang unang pakikipanayam sa HR, pagkatapos ay isang pakikipanayam sa isang grupo ng mga programmer, pagkatapos ay ang direktor, higit pang mga araling-bahay, atbp., kung gayon bilang isang patakaran, ang mga ito ay nabigo na mga organisasyon kung saan hindi ako nagtrabaho. nang napakatagal. Muli, ito ay isang personal na obserbasyon, ngunit bilang isang panuntunan, ang masyadong maraming burukrasya at isang mabagal na proseso sa pag-hire ay nagpapakita na ang parehong eksaktong mga proseso ay nagaganap sa loob ng kumpanya. Ang mga desisyon ay ginagawa nang mabagal at hindi epektibo. Mayroon ding mga kabaligtaran na sitwasyon, kapag may mga bilog ng pakikipanayam sa impiyerno, at ang kumpanya ay naging mahusay, at kapag, pagkatapos ng isang sampal sa pulso, ang kumpanya ay naging isang swamp, ngunit ang mga ito ay bihira.

Kung sa tingin mo ang senaryo: nakilala, sinabi tungkol sa iyong sarili at nakuha, ay umiiral lamang sa maliliit na kumpanya, kung gayon hindi. Nakita ko ito sa napakalaking kumpanya na gumagamit ng higit sa daan-daang tao at kinakatawan sa mga merkado sa mundo. Ito ay isang normal na mekanismo, lalo na kung mayroon kang mayamang track record at may pagkakataon na tawagan ang iyong mga dating employer at magtanong tungkol sa iyo.

Para sa akin, ito ay isang napakahusay na tagapagpahiwatig ng isang kumpanya kapag hiniling nilang magpakita ng mga halimbawa ng kanilang mga proyekto at code. Ang antas ng pagsasanay ng aplikante ay agad na ipinapakita. At, para sa akin, mula sa punto ng view ng pagpili ng mga kandidato, ito ang pinaka-epektibong paraan ng pagpili kaysa sa palabas na mga panayam. Sa katunayan, maaari kang mabigo sa isang pakikipanayam mula sa kaguluhan, o, sa kabaligtaran, lumabas sa adrenaline. Ngunit sa totoong trabaho, hindi mo makayanan ang mga totoong gawain. And I also encountered this when I interviewed people myself. Dumating ang isang espesyalista, ipinapakita ang kanyang sarili na mahusay, nagustuhan ko siya, nagustuhan niya kami. At nakipaglaban ako sa pinakasimpleng problema sa loob ng isang buwan, at bilang isang resulta, nalutas ito ng isa pang programmer sa loob ng ilang araw. Kinailangan kong makipaghiwalay sa programmer na iyon.

Lalo kong pinahahalagahan ang mga gawain sa programming sa mga panayam. At ang mga kailangang lutasin sa mismong pulong, sa ilalim ng stress, at takdang-aralin. Ang una ay nagpapakita kung gaano ka handa sa mabilis at tumpak na paglutas ng mga problema sa isang nakababahalang sitwasyon at emergency. Ang pangalawa ay nagpapakita ng iyong antas ng kakayahan at kakayahang maghanap ng impormasyon at malutas ang mga kasalukuyang problema.

Ang pinaka-kagiliw-giliw na mga lugar ng trabaho na mayroon ako ay sa defense complex ng ating bansa. Sa proseso ng trabaho, kinailangan kong lutasin ang mga kamangha-manghang problema na hindi kailanman pinangarap ng mga komersyal na programmer. Mga supercomputer, pagdidisenyo ng mga router, iba't ibang node combat system - ito ay hindi kapani-paniwalang kapana-panabik. Kapag sa panahon ng parada nakakita ka ng isang complex na nag-iimbak ng iyong code, ito ay talagang maganda. Kakatwa, ang mga panayam sa mga naturang kumpanya ay kadalasang napaka-simple, literal na dumating, tulad nito, tinanggap (marahil ang mga detalye ng militar, na hindi gustong makipag-usap ng masyadong maraming), ay superimposed. Ang mga hamon na kinaharap ko doon ay talagang kawili-wili at mapaghamong. Sa karanasan, naging mahusay sila para sa pag-aaral na maging isang de-kalidad na system programmer. Mayroon ding mga disadvantages, at ito ay hindi kahit na mababang sahod. Sa ngayon, medyo disente ang mga suweldo sa defense complex, may mga bonus at benepisyo. Bilang isang patakaran, mayroong maraming burukrasya, mahabang oras ng pagtatrabaho, walang katapusang mga trabahong nagmamadali, at trabaho sa ilalim ng matinding stress. Sa ilang partikular na kaso, hindi maitatanggi ang pagiging lihim, na nagdaragdag ng ilang problema sa paglalakbay sa ibang bansa. Dagdag pa, siyempre, ang paniniil ng mga boss, at ito, sayang, nangyayari din. Kahit na ang aking karanasan sa pakikipagtulungan sa isang kinatawan ng customer ay lubhang kaaya-aya. Ito ay isang kolektibong impresyon ng tatlong magkakaibang mga instituto ng pananaliksik at mga kumpanyang nauugnay sa mga order ng pagtatanggol ng estado.

Mga gawain sa pakikipanayam

Upang maiwasan ang hindi pagkakaunawaan at upang hindi malantad ang mga kumpanyang aking kinapanayam, hindi ko tutuksuhin ang tadhana at ipahiwatig ang kanilang mga detalye. Ngunit nagpapasalamat ako sa bawat panayam, para sa oras na ginugol ng mga tao sa akin, para sa pagkakataong tingnan ang aking sarili mula sa labas. Masasabi ko lang na ang mga gawain ay para sa malalaking internasyonal na kumpanyang kinakatawan sa iba't ibang bansa.

Sasabihin ko sa iyo ang pinaka-kagiliw-giliw na bagay: anong mga gawain ang ibinibigay sa panahon ng mga panayam. Sa pangkalahatan, ang pinakakaraniwang tanong para sa bakante ng isang system programmer at microcontroller programmer ay mga bit operation, sa lahat ng posibleng variation. Samakatuwid, ihanda ang iyong sarili nang pinakamahusay sa lugar na ito.

Ang pangalawang pinaka-polarizing na paksa ay mga signpost, ito ay dapat talagang tumalon sa iyong mga ngipin. Para gisingin ka nila sa kalagitnaan ng gabi at masabi mo at maipakita mo ang lahat.

Nagnakaw ako ng mga tanong mula sa ilang mga panayam sa aking isipan, at ipapakita ko ang mga ito dito, dahil nakita kong medyo kawili-wili ang mga ito. Sinadya kong hindi magbigay ng mga sagot sa mga tanong na ito upang ang mga mambabasa ay masagot mismo sa mga komento at magkaroon ng kaunting pulbos kapag dumaan sa isang tunay na panayam.

Mga Tanong Blg. 1

I. Kaalaman sa SI. Ano ang ibig sabihin ng mga sumusunod na entry:

const char * str;

char const * str;

const * char str;

char * const str;

const char const * str;

Tama ba lahat ng entry?

II. Bakit ang program na ito ay magtapon ng isang segmentation fault?

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

III. Para maging matalino.

May isang stick na isang metro ang haba. Sampung langgam ang random na nahuhulog sa kanya, gumagapang sa iba't ibang direksyon. Ang bilis ng paggalaw ng isang langgam ay 1 m/s. Kung ang langgam ay nakatagpo ng isa pang langgam, ito ay tumalikod at gumagapang sa kabilang direksyon. Ano ang maximum na oras na kailangan mong maghintay para sa lahat ng mga langgam na mahulog sa stick?

Ang susunod na panayam ay isang kabiguan para sa akin, at itinuturing kong ito ang pinakakapaki-pakinabang sa aking pagsasanay sa programming. Ipinakita nito ang lalim ng aking kawalan ng kakayahan. Bago ang panayam na ito, pamilyar ako sa bawat isa sa mga tanong na ito at palagi silang lumalabas sa aking pagsasanay, ngunit sa paanuman ay hindi ko sila binibigyang importansya, at nang naaayon, hindi ko sila naiintindihan ng mabuti. Samakatuwid, bumagsak ako sa pagsusulit na ito sa kahihiyan. At ako ay lubos na nagpapasalamat na ang gayong kabiguan ay nangyari; ito ay may pinakamahinang epekto sa akin. Sa tingin mo na ikaw ay isang cool na espesyalista, alam mo ang disenyo ng circuit, mga interface, at nagtatrabaho sa kernel. At pagkatapos ay mayroon kang totoong mga katanungan at lumulutang ka. Kaya tingnan natin.

Mga Tanong sa Panayam #2

Mga isyu sa hardware.

  • Paano isinasaayos ang mga linux system call sa assembly language sa isang ARM processor, sa x86. Ano ang pagkakaiba?
  • Anong mga tool sa pag-synchronize ang mayroon? Aling mga tool sa pag-synchronize ang maaaring gamitin sa loob ng isang interrupt na konteksto, na hindi, at bakit?
  • Ano ang pagkakaiba ng i2c bus at spi bus?
  • Bakit may mga terminator sa i2c bus at ano ang halaga nito?
  • Maaari bang gumana LAMANG ang interface ng RS-232 sa dalawang wire: RX at TX? Dito ko ibibigay ang sagot: Masama pala, sa 9600, pero pwede!!!
  • At ngayon ang pangalawang tanong: bakit?
  • Ano ang pinakamahusay na paraan upang ayusin ang mga linya ng signal at kapangyarihan sa mga multilayer board at bakit? Power sa loob ng mga layer, o mga linya ng signal sa loob ng mga layer? (Ang tanong sa pangkalahatan ay puro tungkol sa disenyo ng circuit).
  • Bakit ang mga differential lines ay may mga track na magkakasama sa lahat ng dako?
  • RS-485 bus. Kadalasan may mga terminator sa naturang linya. Gayunpaman, mayroon kaming star circuit, na may variable na bilang ng mga plug-in module. Anong mga paraan ng pag-iwas sa mga banggaan at panghihimasok ang dapat gamitin?
  • Ano ang pula at binary tree?
  • Paano magtrabaho sa cmake?
  • Mga tanong tungkol sa pagbuo ng yocto Linux.

Mga layunin para sa panayam na ito:

1. Sumulat ng isang function na inverts sa uint32_t lahat ng bit. (Ang pagtatrabaho sa bits ay napakapopular sa mga panayam, inirerekomenda ko ito)
2.

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

Ano ang ibabalik ng function na ito? (solusyon sa papel, walang computer)

3. Function para sa pagkalkula ng arithmetic mean ng dalawang numero int32_t.

4. Ano ang mga pamamaraan ng output sa mga programa, kasama. sa isang stream ng mga error.

Ang pangatlong seleksyon ay medyo kamakailan lamang, at hindi ako magtataka kung mayroon pa ring ganoong palatanungan doon, kaya hindi ko ibunyag ang kumpanya upang hindi malantad ang mga ito ... Ngunit sa pangkalahatan ay magbibigay ako ng isang halimbawa ng mga posibleng tanong, at kung nakilala mo ang iyong mga tanong, pagkatapos ay kumusta ako :).

Mga Tanong sa Panayam #3

  1. Ang isang halimbawa ng tree traversal code ay ibinigay; ito ay kinakailangan upang sabihin kung ano ang ginagawa sa code na ito at ituro ang mga error.
  2. Sumulat ng isang halimbawa ng ls utility. Gamit ang pinakasimpleng opsyon na "-l".
  3. Magbigay ng halimbawa kung paano gawin ang static at dynamic na pag-link. Ano ang pagkakaiba?
  4. Paano gumagana ang RS-232? Ano ang pagkakaiba sa pagitan ng RS-485 at RS-232? Ano ang pagkakaiba sa pagitan ng RS-232 at RS-485 mula sa punto ng view ng programmer?
  5. Paano gumagana ang USB (mula sa punto ng view ng programmer)?
  6. Pagsasalin ng teknikal na teksto mula sa Ruso sa Ingles.

Ang matagumpay na pakikipanayam ay hindi ang susi sa matagumpay na trabaho

Ang kabanatang ito ay malamang na hindi kahit para sa mga programmer (bagaman para sa kanila rin), ngunit higit pa para sa HR. Ang pinaka-sapat na mga kumpanya ay hindi maingat na tumitingin sa mga resulta ng mga panayam. Normal na magkamali; kadalasan ay tinitingnan nila kung paano alam ng isang tao kung paano lutasin ang mga problema at pangangatuwiran.

Ang isa sa mga pangunahing problema ay ang matagumpay na malulutas ng isang kandidato ang mga problema sa panahon ng mga panayam, ipinapakita ang kanyang sarili bilang isang mahusay na espesyalista, ngunit nabigo sa unang tunay na gawain. Hindi ako magsisinungaling, nangyari din ito sa akin. Matagumpay kong nalampasan ang lahat ng mga bilog ng impiyerno, nalutas ang lahat ng mga gawain sa pagsubok, ngunit sa totoong mga kondisyon ang trabaho ay naging napakahirap dahil sa simpleng kawalan ng karanasan. Ang pagsakay ay hindi ang pinakamahirap na gawain. Ang pinakamahirap na bagay ay ang manatili sa board ng kumpanyang ito.

Samakatuwid, nagtitiwala ako sa higit pang mga kumpanya na nagsasagawa ng mga simpleng panayam sa kandidato at nagsasabi: pagkatapos ng unang buwan ng trabaho, magiging malinaw kung angkop ka para sa amin o hindi. Ito ang pinaka-sapat na diskarte, oo, marahil ay medyo mahal, ngunit agad na malinaw kung sino.

May isa pang opsyon para sa mga panayam: kapag matagumpay mong naipasa ito, ngunit batay sa mga resulta ng panayam naiintindihan mo na ang employer ay ganap na hindi sapat. Agad akong tumanggi sa trabaho kung ako ay inaalok na magtrabaho bilang isang indibidwal na negosyante, na nangangako ng malaking kita. Ito ay isang paraan ng pag-iwas sa buwis para sa isang operating organization, at bakit ako dapat mag-alala sa mga problema ng employer bilang isang programmer? Ang isa pang pagpipilian ay ang iba't ibang ahensya ng gobyerno. Nagkaroon ako ng isang panayam, bilang isang resulta kung saan inalok ako ng isang magandang suweldo, ngunit sinabi nila na ang dating programmer ay huminto, nagkasakit, namatay, nabigla dahil sa dami ng trabaho, at ang iyong araw ng trabaho ay magsisimula ng 8 ng umaga . Mula sa ganoong lugar ay tumakbo rin siya kaya kumikinang ang kanyang mga takong. Oo, HR, pakitandaan na ang mga programmer ay handang tanggihan kahit ang pinakamasarap na trabaho kung ang araw ng trabaho ay kailangang magsimula nang maaga sa umaga.

Sa dulo, magbibigay ako ng isang mahusay na video ng pagpili ng programmer, isang screenshot na ibinigay sa simula ng artikulong ito. Nagkaroon din ako ng ganoong panayam ng higit sa isang beses. Kung nakikita mo ang paniniil sa yugto ng mga tanong, pagkatapos ay igalang ang iyong sarili, bumangon, kunin ang iyong mga bagay at umalis - ito ay normal. Kung ang HR at ang manager ay igiit ang kanilang sarili sa iyong gastos sa panahon ng pakikipanayam, ito ay nagpapahiwatig na ang kumpanya ay nakakalason at hindi ka dapat magtrabaho doon maliban kung gusto mo ng hindi sapat na mga boss.

Natuklasan

Mga programmer, pumunta sa mga panayam! At laging subukang pagbutihin. Sabihin nating kung nakakuha ka ng N pera, pagkatapos ay pumunta para sa isang pakikipanayam para sa hindi bababa sa N*1,2, o mas mahusay na N*1,5. Kahit na hindi mo agad kunin ang bakanteng ito, mauunawaan mo kung ano ang kailangan para sa antas ng suweldong ito.
Ang aking mga obserbasyon ay nagpakita na ang mahusay na kaalaman sa wikang Ingles, sapat na mayamang karanasan sa industriya at tiwala sa sarili ang nagpapasya. Ang huli ay ang pangunahing kalidad, tulad ng saanman sa buhay. Bilang isang tuntunin, ang isang mas may kumpiyansa na kandidato ay maaaring gumanap nang mas mahusay sa isang pakikipanayam, kahit na may mas maraming pagkakamali, kaysa sa isang mahusay, ngunit mas mahiyain at proactive na aplikante. Good luck sa iyong mga panayam!

P/S Competition

Kung mayroon kang mga kagiliw-giliw na halimbawa ng mga problema na na-load sa iyo ng HR, pagkatapos ay maligayang pagdating sa mga komento. Naghanda kami ng isang maliit na kumpetisyon - ang mga kundisyon ay simple: isinulat mo ang pinaka-hindi pangkaraniwang gawain na mayroon ka sa panahon ng isang pakikipanayam, sinusuri ito ng mga mambabasa (plus), at pagkatapos ng isang linggo ay ibubuod namin ang mga resulta at ginagantimpalaan ang nanalo ng mga masasayang goodies.

Mga programmer, pumunta sa mga panayam

Mga programmer, pumunta sa mga panayam

Pinagmulan: www.habr.com

Magdagdag ng komento