Бағдарламашылар, сұхбатқа барыңыз

Бағдарламашылар, сұхбатқа барыңыз
Сурет « арнасынан алынған бейнеден алындыСоғыс аметисті»

Мен Linux жүйесінде 10 жылдай жүйелік бағдарламашы болып жұмыс істедім. Бұл ядро ​​модульдері (ядро кеңістігі), әртүрлі демондар және пайдаланушы кеңістігіндегі аппараттық құралдармен жұмыс (пайдаланушы кеңістігі), әртүрлі жүктеушілер (u-boot және т.б.), контроллердің микробағдарламасы және т.б. Тіпті кейде веб-интерфейсті қысқарту орын алды. Бірақ көбінесе дәнекерлеу үтікімен отыруға және баспа платасының дизайнерлерімен араласуға тура келді. Мұндай жұмыстағы мәселелердің бірі - сіздің құзыреттілік деңгейін бағалау өте қиын, өйткені сіз бір тапсырманы өте терең білуіңіз мүмкін, ал екіншісін мүлде білмеуіңіз мүмкін. Қазір қайда бару керектігін және қандай ағымдар бар екенін түсінудің жалғыз адекватты жолы - сұхбатқа бару.

Бұл мақалада мен Linux жүйесінің бағдарламашысы ретінде бос жұмыс орнына сұхбат беру тәжірибемді, сұхбаттың ерекшеліктерін, жұмыс орнын және болашақ жұмыс берушімен байланыс жасау арқылы сіздің жеке білім деңгейіңізді қалай бағалауға болатынын және не істеуге болмайтынын қорытындылағым келеді. одан күту.

Мақалада сыйлықтары бар шағын байқау болады.

Мамандықтың ерекшеліктері

Жүйелік бағдарламашы, мен жұмыс істеген нақты салада, толық генералист: мен кодты жазуға және аппараттық құралдарды жөндеуге тура келді. Және жиі бір нәрсені өзіңіз дәнекерлеу қажеттілігі туындады. Уақыт өте келе, менің аппараттық құралдарға түзетулерім әзірлеушілерге берілді. Сондықтан осы салада жұмыс істеу үшін сандық схема саласында да, бағдарламалауда да жеткілікті жақсы білім базасы қажет. Осыған байланысты жүйелік бағдарламашы лауазымына арналған сұхбаттар көбінесе электроника маманын іздеуге ұқсайды.

Бағдарламашылар, сұхбатқа барыңыз
Жүйелік бағдарламашыға арналған типтік жұмыс станциясы.

Жоғарыдағы фотода драйверлерді жөндеу кезіндегі әдеттегі жұмыс орным көрсетілген. Логикалық анализатор жіберілген хабарламалардың дұрыстығын көрсетеді, осциллограф сигнал жиектерінің пішінін бақылайды. Сондай-ақ, jtag отладкасы кадрға қосылмаған, ол стандартты жөндеу құралдары бұдан былай жеңе алмаған кезде пайдаланылады. Және осы жабдықтың барлығымен жұмыс істей білу керек.

Өнімді орнатушыға апарғаннан гөрі, кейбір элементтерді қайта дәнекерлеу және топология қателерін өзіңіз түзету жылдамырақ және оңайырақ болады. Содан кейін сіздің жұмыс орныңызда дәнекерлеу станциясы да орналасады.

Драйвер мен аппараттық деңгейде әзірлеудің тағы бір ерекшелігі - Google көмектеспейді. Көбінесе сіз өзіңіздің мәселеңіз туралы ақпаратты іздеуге тура келеді және үш сілтеме бар, олардың екеуі кейбір форумда сіздің жеке сұрақтарыңыз. Немесе одан да сорақысы, сіз 5 жыл бұрын ядро ​​​​хабарламасында сұраған және ешқашан жауап алмаған сол бір бейшараның сұрағына тап болған кезде. Бұл жұмыста аппараттық және бағдарламалық жасақтаманы жобалаудағы қателерден басқа, құжаттамалық қателер жиі кездеседі - бұл ең ауыр және жағымсыз мәселелер болуы мүмкін. Кейде регистрлер қате сипатталады немесе оларға сипаттама мүлде болмайды. Мұндай мәселелерді ғылыми түрде кездейсоқ сандарды белгілі бір регистрлерге енгізу арқылы ғана шешуге болады (кері). Процессорда кейбір функциялар жиі кездеседі, бірақ сізден басқа ешкім бұл функцияны орындамаған (әсіресе процессор жаңа болса). Ал бұл 70% балаларға арналған тырмамен далада жүру деген сөз. Бірақ құжаттама болған кезде, тіпті қателер болса да, бұл қазірдің өзінде прогресс. Көбінесе құжаттаманың мүлде жоқтығы орын алады, ал миналанған алаңдарды аралау темір жанып жатқан кезде басталады. Иә, мен де осындай мәселелерді сәтті шештім.

Жұмыс сұхбаттары

Менің ойымша, сіз өз жұмысыңызды жақсы көретін болсаңыз және оны өзгерткіңіз келмесе де, кем дегенде жарты жылда бір рет сұхбатқа баруыңыз керек. Сұхбат маман ретінде өз деңгейіңізді түсінуге мүмкіндік береді. Менің ойымша, ең құнды сұхбаттар сәтсіз болып табылады. Олар сіздің біліміңіздегі қандай кедергілерді жақсарту керек екенін дәл көрсететіндер.

Тағы бір қызықты ерекшелігі - сұхбат сапасы. Бұл менің байқауым, және бұл шындық емес, мен жай ғана жолым болғанын мойындаймын. Егер сұхбат сценарий бойынша өтсе:

  • бізге өзіңіз туралы айтыңыз;
  • Бізде осындай міндеттер бар;
  • сізге ұнайды?

Егер осы диалогтан кейін сіз бір-біріңізді ұнатсаңыз, сіз жұмысқа барасыз, онда, әдетте, компания мен тапсырмалар өте жағымды және барабар болып шығады. Егер сұхбат тозақтың 12 шеңберінен өтуге ұқсайтын болса: HR-мен бірінші сұхбат, содан кейін бағдарламашылар тобымен сұхбат, содан кейін директор, қосымша үй тапсырмасы және т.б., әдетте бұл мен жұмыс істемеген сәтсіз ұйымдар болды. өте ұзақ уақытқа. Тағы да, бұл жеке бақылау, бірақ әдетте тым көп бюрократиялық және созылған жалдау процесі компания ішінде дәл осындай процестер орын алатынын көрсетеді. Шешімдер баяу және нәтижесіз қабылданады. Қарама-қарсы жағдайлар да болды, әңгімелесу тозақтың шеңберлері болды және компания керемет болып шықты, ал білек сыбағасынан кейін компания батпаққа айналды, бірақ бұл сирек.

Егер сіз сценарий: танысқан, өзіңіз туралы айтқан және жұмысқа қабылданған, тек шағын компанияларда бар деп ойласаңыз, онда жоқ. Мен мұны жүздеген адам жұмыс істейтін және әлемдік нарықта ұсынылған өте ірі компанияларда көрдім. Бұл қалыпты механизм, әсіресе сіздің бай тәжірибеңіз болса және бұрынғы жұмыс берушілеріңізге қоңырау шалып, сіз туралы сұрау мүмкіндігі болса.

Мен үшін бұл олардың жобалары мен кодтарының мысалдарын көрсетуді сұраған кезде бұл компанияның өте жақсы көрсеткіші. Өтініш берушінің дайындық деңгейі бірден көрсетіледі. Ал, маған келетін болсақ, үміткерлерді іріктеу тұрғысынан алғанда, бұл шоу сұхбаттан гөрі іріктеудің ең тиімді әдісі. Шын мәнінде, сіз толқудан сұхбатта сәтсіздікке ұшырай аласыз немесе, керісінше, адреналиннен құтыла аласыз. Бірақ нақты жұмыста сіз нақты тапсырмаларды орындай алмайсыз. Мұны мен адамдардан сұхбат алған кезде де кездестірдім. Маман келеді, өзін тамаша көрсетеді, маған ұнады, бізге ұнады. Ал мен бір ай бойы ең қарапайым мәселемен күресіп, нәтижесінде басқа бағдарламашы оны бір-екі күнде шешіп берді. Сол бағдарламашымен қоштасуға тура келді.

Мен сұхбат кезіндегі бағдарламалау тапсырмаларын ерекше бағалаймын. Жиналыс кезінде, стресс жағдайында және үй тапсырмасын шешуге тура келетіндер. Біріншісі стресстік жағдайда және төтенше жағдайда мәселелерді тез және дәл шешуге қаншалықты дайын екеніңізді көрсетеді. Екіншісі сіздің құзыреттілік деңгейіңізді және ақпаратты іздеу және өзекті мәселелерді шешу қабілетін көрсетеді.

Маған ең қызықты жұмыстар еліміздің қорғаныс кешенінде болды. Жұмыс барысында мен коммерциялық бағдарламашылар ешқашан армандамаған фантастикалық мәселелерді шешуге тура келді. Суперкомпьютерлер, маршрутизаторларды жобалау, әртүрлі түйінді жауынгерлік жүйелер - бұл керемет қызықты. Шеру кезінде сіз кодты сақтайтын кешенді көргенде, бұл өте жақсы. Бір қызығы, мұндай компаниялармен сұхбаттар әдетте өте қарапайым, сөзбе-сөз келеді, ұнайды, қабылданады (мүмкін, тым көп сөйлескенді ұнатпайтын әскерилердің ерекшеліктері) қабаттасады. Ол жерде мен кездескен қиындықтар шынымен де қызықты және қиын болды. Тәжірибе көрсеткендей, олар жоғары сапалы жүйелік бағдарламашы болуды үйренуге жақсы. Кемшіліктері де бар, бұл тіпті төмен жалақы емес. Қазіргі уақытта қорғаныс кешеніндегі жалақы өте жақсы, бонустар мен жеңілдіктер бар. Әдетте, бюрократия көп, ұзақ жұмыс уақыты, бітпейтін асығыс жұмыс және үлкен стресс жағдайында жұмыс. Белгілі бір жағдайларда құпиялылықты жоққа шығаруға болмайды, бұл шетелге бару үшін белгілі бір қиындықтарды қосады. Оған қоса, әрине, бастықтардың озбырлығы, өкінішке орай, бұл да болады. Менің тұтынушы өкілімен жұмыс істеу тәжірибем өте жағымды. Бұл мемлекеттік қорғаныс тапсырыстарымен байланысты үш түрлі ғылыми-зерттеу институттары мен компаниялардың ұжымдық әсері.

Әңгімелесу тапсырмалары

Түсініспеушіліктерді болдырмау және сұхбат берген компанияларды әшкерелеп алмау үшін мен тағдырды азғырмаймын және олардың егжей-тегжейлерін көрсетемін. Бірақ мен әрбір сұхбатыма, адамдардың маған арнаған уақытына, өзіме сырттай қарауға мүмкіндік бергені үшін ризамын. Мен тек әртүрлі елдерде ұсынылған ірі халықаралық компанияларға міндеттер қойылды деп айта аламын.

Мен сізге ең қызықтысын айтайын: сұхбат кезінде қандай тапсырмалар беріледі. Жалпы алғанда, жүйелік бағдарламашы мен микроконтроллер бағдарламашысының вакансиясына қойылатын ең көп тараған сұрақтар барлық ықтимал вариацияларда разрядтық операциялар болып табылады. Сондықтан осы салада өзіңізді жақсы дайындаңыз.

Екінші ең поляризацияланған тақырып - жол белгілері, бұл сіздің тістеріңізден секіруі керек. Олар сені түн ортасында оятуы үшін және сіз бәрін айтып, көрсете аласыз.

Мен бірнеше сұхбаттардың сұрақтарын ұрлап алдым, мен оларды осында ұсынамын, өйткені мен оларды өте қызықты деп санаймын. Мен бұл сұрақтарға оқырмандар түсініктемелерде өздері жауап беруі және шынайы сұхбаттан өткен кезде аздап ұнтақ алуы үшін әдейі жауап бермеймін.

№1 сұрақтар

I. СИ туралы білім. Келесі жазбалар нені білдіреді:

const char * str;

char const * str;

const * char str;

char * const str;

const char const * str;

Барлық жазбалар дұрыс па?

II. Неліктен бұл бағдарлама сегменттеу қатесін шығарады?

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

III. Ақылды болу үшін.

Ұзындығы бір метр таяқша бар. Он құмырсқа оның үстіне кездейсоқ түсіп, әртүрлі бағытта жорғалайды. Бір құмырсқаның қозғалыс жылдамдығы 1 м/с. Егер құмырсқа басқа құмырсқаға тап болса, ол бұрылып, қарсы бағытта жорғалайды. Барлық құмырсқалар таяқтан құлағанша күту үшін ең көп уақыт қанша?

Келесі сұхбат мен үшін сәтсіз болды, мен оны бағдарламалау тәжірибемдегі ең пайдалы деп санаймын. Бұл менің қабілетсіздігімнің тереңдігін көрсетті. Осы сұхбатқа дейін мен бұл сұрақтардың әрқайсысымен таныс болдым және олар менің тәжірибемде үнемі пайда болды, бірақ әйтеуір мен оларға онша мән бермедім, сәйкесінше мен оларды жақсы түсінбедім. Сондықтан мен бұл емтиханнан масқара болып өте алмадым. Мен осындай сәтсіздіктің орын алғанына өте ризамын, бұл маған қатты әсер етті. Сіз өзіңізді керемет маманмын деп ойлайсыз, сіз схема дизайнын, интерфейстерді және ядромен жұмыс істеуді білесіз. Содан кейін сізде нақты сұрақтар туындайды және сіз қалқыңыз. Ендеше көрейік.

Сұхбат сұрақтары №2

Аппараттық мәселелер.

  • Linux жүйесінің қоңыраулары x86 жүйесінде ARM процессорында ассемблер тілінде қалай реттеледі. Қандай айырмашылық бар?
  • Қандай синхрондау құралдары бар? Үзу контекстінде қандай синхрондау құралдарын пайдалануға болады, қайсысы мүмкін емес және неге?
  • I2c автобусы мен spi автобусының айырмашылығы неде?
  • Неліктен i2c шинасында терминаторлар бар және олардың мәні қандай?
  • RS-232 интерфейсі ТЕК екі сымда жұмыс істей ала ма: RX және TX? Міне, мен жауап беремін: 9600-де нашар екені белгілі болды, бірақ мүмкін!!!
  • Ал енді екінші сұрақ: неге?
  • Көп қабатты тақталардағы сигнал желілері мен қуатын реттеудің ең жақсы жолы қандай және неге? Қабаттар ішіндегі қуат немесе қабаттар ішіндегі сигналдық сызықтар? (Сұрақ негізінен схеманың дизайнына қатысты).
  • Неліктен дифференциалдық сызықтардың барлық жерде бірге жүретін жолдары бар?
  • RS-485 автобусы. Әдетте мұндай жолда терминаторлар болады. Дегенмен, бізде қосылатын модульдердің айнымалы саны бар жұлдыз тізбегі бар. Соқтығыстар мен кедергілерді болдырмаудың қандай құралдарын қолдану керек?
  • Қызыл және екілік ағаштар дегеніміз не?
  • cmake-мен қалай жұмыс істеуге болады?
  • yocto Linux құру туралы сұрақтар.

Бұл сұхбаттың мақсаттары:

1. Төңкерілетін функцияны жазыңыз uint32_t барлық бит. (биттермен жұмыс сұхбатта өте танымал, мен оны ұсынамын)
2.

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

Бұл функция нені қайтарады? (қағаздағы шешім, компьютерсіз)

3. Екі санның арифметикалық ортасын есептеу функциясы int32_t.

4. Бағдарламалардағы шығару әдістері қандай, соның ішінде. қателер ағынына айналады.

Үшінші іріктеу салыстырмалы түрде жақында болды, мен мұндай сауалнама әлі бар болса, мен таң қалмас едім, сондықтан оларды әшкерелеп алмау үшін компанияны ашпаймын... Бірақ жалпы алғанда мен мысал келтіремін. мүмкін сұрақтар, егер сіз өз сұрақтарыңызды білсеңіз, мен сәлем айтамын :).

Сұхбат сұрақтары №3

  1. Ағаштан өту кодының мысалы келтірілген, осы кодта не істеп жатқанын айтып, қателерді көрсету керек.
  2. ls қызметтік бағдарламасына мысал жазыңыз. Ең қарапайым «-l» опциясымен.
  3. Статикалық және динамикалық байланыстырудың мысалын келтіріңіз. Айырмашылық неде?
  4. RS-232 қалай жұмыс істейді? RS-485 пен RS-232 арасындағы айырмашылық неде? Бағдарламалаушы көзқарасы бойынша RS-232 мен RS-485 арасындағы айырмашылық неде?
  5. USB қалай жұмыс істейді (бағдарламашының көзқарасы бойынша)?
  6. Техникалық мәтінді орыс тілінен ағылшын тіліне аудару.

Сәтті сұхбат сәтті жұмыстың кепілі емес

Бұл тарау тіпті бағдарламашылар үшін де емес (бірақ олар үшін де), бірақ HR үшін көбірек. Ең адекватты компаниялар сұхбат нәтижелеріне мұқият қарамайды. Қателік жасау қалыпты жағдай, олар көбінесе адамның проблемаларды қалай шешуге болатынын және пайымдауын біледі.

Негізгі мәселелердің бірі – кандидаттың сұхбат барысында мәселелерді сәтті шешуі, өзін тамаша маман ретінде көрсетуі, бірақ бірінші нақты тапсырманы орындай алмауы. Өтірік айтпаймын, бұл менің де басымнан өтті. Мен тозақтың барлық шеңберлерінен сәтті өттім, барлық тест тапсырмаларын шештім, бірақ нақты жағдайда қарапайым тәжірибесіздіктен жұмыс тым қиын болып шықты. Бортқа отыру ең қиын тапсырма емес. Ең қиыны – осы компанияның бортында қалу.

Сондықтан мен үміткермен қарапайым сұхбат жүргізетін және: жұмыстың бірінші айынан кейін бізге сәйкес келетін-келмейтіндігіңіз белгілі болады деп айтатын компанияларға көбірек сенемін. Бұл ең адекватты тәсіл, иә, мүмкін сәл қымбат, бірақ кімнің кім екені бірден түсінікті.

Әңгімелесудің тағы бір нұсқасы бар: сіз оны сәтті тапсырған кезде, бірақ сұхбат нәтижелеріне сүйене отырып, сіз жұмыс берушінің мүлдем жеткіліксіз екенін түсінесіз. Егер маған үлкен табыс уәде етіп, жеке кәсіпкер ретінде жұмыс істеу ұсынылса, мен бірден жұмыстан бас тартамын. Бұл операциялық ұйым үшін салық төлеуден жалтарудың бір түрі және неге бағдарламашы ретінде жұмыс берушінің мәселелері мені алаңдатуы керек? Тағы бір нұсқа - әртүрлі мемлекеттік органдар. Сұхбат алдым, нәтижесінде маған жақсы жалақы ұсынылды, бірақ олар алдыңғы программист жұмысын тастады, ауырып қалды, қайтыс болды, жұмыстың көптігіне байланысты ішіп-жеп кетті, ал сіздің жұмыс күніңіз таңғы 8-де басталады деп айтты. . Сондай жерден ол да өкшелері жылтылдайтындай жүгірді. Иә, HR, егер жұмыс күні таңертең ерте басталуы керек болса, бағдарламашылар тіпті ең дәмді жұмыстан бас тартуға дайын екенін ескеріңіз.

Соңында мен бағдарламашыны таңдаудың тамаша бейнесін беремін, оның скриншоты осы мақаланың басында берілген. Мен де мұндай сұхбатты бір емес бірнеше рет өткізгенмін. Егер сіз сұрақтар сатысында тиранияны көрсеңіз, өзіңізді құрметтеңіз, тұрыңыз, заттарыңызды алыңыз және кетіңіз - бұл қалыпты жағдай. Әңгімелесу кезінде HR және менеджер өздерін сіздің есебінен растайтын болса, бұл компанияның уытты екенін көрсетеді және егер сізге сәйкес келмейтін бастықтарды ұнатпасаңыз, онда жұмыс істемеуіңіз керек.

қорытындылар

Бағдарламашылар, сұхбатқа барыңыз! Және әрқашан жоғарылатуға тырысыңыз. Айталық, егер сіз N ақша алсаңыз, кем дегенде N * 1,2 немесе жақсырақ N * 1,5 сұхбатқа барыңыз. Егер сіз бұл бос орынды бірден қабылдамасаңыз да, сіз осы жалақы деңгейі үшін не қажет екенін түсінесіз.
Менің бақылауларым көрсеткендей, ағылшын тілін жақсы білу, саладағы жеткілікті бай тәжірибе және өзіне деген сенімділік шешуші болады. Соңғысы өмірдің барлық жеріндегі сияқты басты қасиет. Әдетте, өзіне сенімдірек үміткер сұхбатта тамаша, бірақ ұялшақ және белсенді үміткерге қарағанда, қателері көп болса да жақсы нәтиже көрсете алады. Сұхбаттарыңызға сәттілік!

P/S сайысы

Егер сізде HR сізге жүктеген мәселелердің қызықты мысалдары болса, түсініктемелерде қош келдіңіз. Біз кішігірім байқау дайындадық – шарттары қарапайым: сіз сұхбатта болған ең ерекше тапсырманы жазасыз, оқырмандар оны бағалайды (плюс), және бір аптадан кейін біз нәтижелерді шығарып, жеңімпазды қызықты сыйлықтармен марапаттаймыз.

Бағдарламашылар, сұхбатқа барыңыз

Бағдарламашылар, сұхбатқа барыңыз

Ақпарат көзі: www.habr.com

пікір қалдыру