Proqramçılar, müsahibələrə gedin

Proqramçılar, müsahibələrə gedin
Şəkil kanaldan bir videodan götürülüb "Militant Ametistlər»

Təxminən 10 il Linux üçün sistem proqramçısı kimi çalışmışam. Bunlar kernel modulları (kernel space), müxtəlif demonlar və istifadəçi sahəsindən (istifadəçi sahəsi) aparatla işləmək, müxtəlif yükləyicilər (u-boot və s.), nəzarətçi proqram təminatı və s. Hətta bəzən veb-interfeysin kəsilməsi baş verirdi. Ancaq daha tez-tez belə oldu ki, mən bir lehimləmə dəmiri ilə oturmalı və çap dövrə lövhələrinin dizaynerləri ilə əlaqə qurmalı oldum. Bu cür işlərlə bağlı problemlərdən biri də odur ki, səriştənizin səviyyəsini qiymətləndirmək olduqca çətindir, çünki siz bir işi çox dərindən bilirsiniz, digərini isə ümumiyyətlə bilmirsiniz. Hara getmək lazım olduğunu və hazırda hansı cərəyanların olduğunu başa düşməyin yeganə adekvat yolu müsahibələrə getməkdir.

Bu yazıda mən Linux sistem proqramçısı kimi vakansiya üçün müsahibə təcrübəmi, müsahibənin xüsusiyyətlərini, işi və gələcək işəgötürənlə ünsiyyət quraraq şəxsi bilik səviyyənizi necə qiymətləndirməyi və nə etməməli olduğunuzu ümumiləşdirmək istərdim. ondan gözləyin.

Məqalədə hədiyyələrlə kiçik bir müsabiqə olacaq.

Peşə xüsusiyyətləri

İşlədiyim xüsusi sahədə bir sistem proqramçısı tam bir ümumi mütəxəssisdir: həm kod yazmalı, həm də hardware debug etməli idim. Və tez-tez özünüz bir şey lehimləmək ehtiyacı var idi. Zaman zaman belə oldu ki, mənim aparatdakı düzəlişlərim daha sonra tərtibatçılara ötürülürdü. Buna görə də, bu sahədə işləmək üçün həm rəqəmsal sxemlər, həm də proqramlaşdırma sahəsində kifayət qədər yaxşı bilik bazasına ehtiyacınız var. Bu səbəbdən, sistem proqramçısı vəzifəsi üçün müsahibələr tez-tez elektronika mütəxəssisi axtarışına bənzəyir.

Proqramçılar, müsahibələrə gedin
Sistem proqramçısı üçün tipik iş stansiyası.

Yuxarıdakı fotoşəkildə sürücülərin səhvlərini aradan qaldırarkən tipik iş yerim göstərilir. Məntiq analizatoru ötürülən mesajların düzgünlüyünü göstərir, osiloskop siqnal kənarlarının formasına nəzarət edir. Həmçinin, standart sazlama vasitələrinin öhdəsindən gəlmədikdə istifadə olunan jtag sazlayıcı çərçivəyə daxil edilməyib. Və bütün bu avadanlıqla işləməyi bacarmaq lazımdır.

Tez-tez olur ki, məhsulu quraşdırıcıya aparmaqdansa, bəzi elementləri yenidən lehimləmək və topologiya səhvlərini özünüz düzəltmək daha sürətli və asandır. Və sonra bir lehimləmə stansiyası da iş yerinizdə məskunlaşır.

Sürücü və aparat səviyyəsində inkişafın başqa bir xüsusiyyəti Google-un kömək etməməsidir. Çox vaxt probleminizlə bağlı məlumat axtarmaq lazımdır və üç keçid var, onlardan ikisi bəzi forumlarda öz suallarınızdır. Və ya daha da pisi, 5 il əvvəl kernel poçt siyahısında soruşan və heç vaxt cavab almayan eyni zavallı adamın sualına rast gələndə. Bu işdə həm aparat, həm də proqram təminatının dizaynındakı səhvlərlə yanaşı, tez-tez sənədləşmə xətalarına da rast gəlinir - bu, yəqin ki, ən ağır və xoşagəlməz problemlərdir. Bəzən registrlər səhv təsvir edilir və ya onlar üçün heç bir təsvir yoxdur. Bu cür problemlər yalnız təsadüfi ədədləri müəyyən registrlərə (bir növ tərs) elmi şəkildə daxil etməklə həll edilə bilər. Tez-tez olur ki, prosessorda bəzi funksionallıq var, lakin sizdən başqa heç kim bu funksiyanı həyata keçirməyib (xüsusilə prosessor yenidirsə). Bu isə 70%-i uşaqlar üçün nəzərdə tutulmuş dırmıqla tarlada gəzmək deməkdir. Ancaq sənədlər olduqda, hətta səhvlərlə belə, bu, artıq irəliləyişdir. Çox vaxt belə olur ki, heç bir sənəd yoxdur və dəmir yanarkən minalanmış ərazilərdə gəzinti başlayır. Bəli, mən də bu cür problemləri uğurla həll etdim.

Müsahibələr

Mənim fikrim budur ki, işinizə pərəstiş etsəniz və onu dəyişdirmək istəməsəniz də, ən azı altı ayda bir dəfə müsahibələrə getməlisiniz. Müsahibə bir mütəxəssis kimi səviyyənizi anlamağa imkan verir. İnanıram ki, ən dəyərli müsahibələr uğursuz olanlardır. Biliklərinizdəki hansı darboğazların təkmilləşdirilməsi lazım olduğunu ən dəqiq göstərənlər onlardır.

Digər maraqlı cəhət müsahibələrin keyfiyyətidir. Bu mənim müşahidəmdir və bu həqiqət deyil, etiraf edirəm ki, sadəcə bəxtim gətirib. Müsahibə ssenari üzrə gedirsə:

  • bizə özünüz haqqında məlumat verin;
  • Bizim belə vəzifələrimiz var;
  • Sən xoşlayırsan?

Və bu dialoqdan sonra bir-birinizi bəyənirsinizsə, işə gedirsiniz, o zaman, bir qayda olaraq, şirkət və tapşırıqlar çox xoş və adekvat olur. Əgər müsahibə cəhənnəmin 12 dairəsindən keçməyə bənzəyirsə: HR ilə ilk müsahibə, sonra bir qrup proqramçı ilə müsahibə, sonra direktor, daha çox ev tapşırığı və s. çox uzun müddət. Yenə də bu, şəxsi müşahidədir, lakin bir qayda olaraq, həddindən artıq bürokratiya və uzadılmış işə qəbul prosesi göstərir ki, şirkət daxilində eyni dəqiq proseslər gedir. Qərarlar yavaş və səmərəsiz qəbul edilir. Əks hallar da var idi, müsahibə cəhənnəm dairələri var idi və şirkət böyük olduğu ortaya çıxdı və biləkdəki bir yumruqdan sonra şirkət bataqlığa çevrildi, lakin bunlar nadirdir.

Düşünürsən ki, ssenari: tanış olub, özün haqqında danışıb və işə götürülüb, yalnız kiçik şirkətlərdə mövcuddur, deməli yox. Mən bunu yüzlərlə insanı çalışdıran və dünya bazarlarında təmsil olunan çox böyük şirkətlərdə görmüşəm. Xüsusilə zəngin təcrübəniz varsa və əvvəlki işəgötürənlərinizə zəng edib sizin haqqınızda soruşmaq imkanınız varsa, bu normal mexanizmdir.

Mənim üçün layihə və kod nümunələrini göstərmək istəyəndə bu, şirkətin çox yaxşı göstəricisidir. Ərizəçinin hazırlıq səviyyəsi dərhal göstərilir. Mənə gəlincə, namizədlərin seçilməsi nöqteyi-nəzərindən bu, şou müsahibələrindən daha effektiv seçim üsuludur. Əslində, həyəcandan müsahibədə uğursuz ola bilərsən, ya da əksinə, adrenalindən çıxa bilərsən. Ancaq real işdə real işlərin öhdəsindən gələ bilməzsiniz. Mən özüm də insanlardan müsahibə alanda bununla rastlaşdım. Mütəxəssis gəlir, özünü əla göstərir, mən onu bəyəndim, o da bizi bəyəndi. Və mən bir ay ən sadə məsələ ilə mübarizə apardım və nəticədə başqa bir proqramçı onu bir-iki günə həll etdi. Həmin proqramçıdan ayrılmalı oldum.

Müsahibələrdə proqramlaşdırma tapşırıqlarını xüsusilə qiymətləndirirəm. Və görüş zamanı, stres altında və ev tapşırığı zamanı həll edilməli olanlar. Birincisi, stresli vəziyyətdə və fövqəladə vəziyyətdə problemləri tez və dəqiq şəkildə həll etməyə nə qədər hazır olduğunuzu göstərir. İkincisi, məlumat axtarmaq və cari problemləri həll etmək bacarığınızı və bacarıq səviyyənizi göstərir.

Ən maraqlı iş yerlərim ölkəmizin müdafiə kompleksində olub. İş prosesində kommersiya proqramçılarının heç xəyalına belə gətirmədiyi sadəcə fantastik problemləri həll etməli oldum. Superkompüterlər, marşrutlaşdırıcıların dizaynı, müxtəlif node döyüş sistemləri - bu inanılmaz dərəcədə həyəcanlıdır. Parad zamanı kodunuzu saxlayan bir kompleks görəndə, bu, həqiqətən gözəldir. Qəribədir ki, bu cür şirkətlərlə müsahibələr adətən çox sadədir, sözün əsl mənasında gəlir, bəyənilir, qəbul edilir (yəqin ki, çox danışmağı sevməyən hərbçilərin xüsusiyyətləri) üst-üstə düşür. Orada qarşılaşdığım çətinliklər həqiqətən maraqlı və çətin idi. Təcrübə ilə, yüksək keyfiyyətli sistem proqramçısı olmağı öyrənmək üçün yaxşı olduqları ortaya çıxdı. Mənfi cəhətləri də var və bu, hətta aşağı əmək haqqı deyil. Hazırda müdafiə kompleksində maaş kifayət qədər münasibdir, bonuslar və müavinətlər verilir. Bir qayda olaraq, çoxlu bürokratiya, uzun iş saatları, sonsuz tələsik iş və böyük stress altında iş var. Bəzi hallarda məxfiliyi istisna etmək olmaz ki, bu da xaricə səyahət üçün müəyyən problemlər yaradır. Üstəlik, əlbəttə ki, müdirlərin zülmü və bu, təəssüf ki, baş verir. Baxmayaraq ki, müştəri nümayəndəsi ilə işləmək təcrübəm son dərəcə xoşdur. Bu, dövlət müdafiə sifarişləri ilə bağlı üç müxtəlif tədqiqat institutu və şirkətin kollektiv təəssüratıdır.

Müsahibə tapşırıqları

Anlaşılmazlığın qarşısını almaq və müsahibə aldığım şirkətləri ifşa etməmək üçün taleyi sınağa çəkməyəcəyəm və onların təfərrüatlarını göstərəcəyəm. Amma hər müsahibəyə, insanların mənə sərf etdiyi vaxta, özümə kənardan baxmaq fürsətinə görə minnətdaram. Sadəcə onu deyə bilərəm ki, tapşırıqlar müxtəlif ölkələrdə təmsil olunan iri beynəlxalq şirkətlər üçün idi.

Mən sizə ən maraqlısını deyim: müsahibə zamanı hansı tapşırıqlar verilir. Ümumiyyətlə, bir sistem proqramçısı və mikrokontroller proqramçısı vakansiyasına dair ən çox yayılmış suallar bütün mümkün variasiyalarda bit əməliyyatlarıdır. Buna görə də özünüzü bu sahədə ən yaxşı şəkildə hazırlayın.

İkinci ən qütbləşdirici mövzu yol nişanlarıdır, bu, həqiqətən, dişlərinizdən atılmalıdır. Gecənin bir yarısı səni oyatsınlar və hər şeyi danışıb göstərə bilsinlər.

Beynimdə bir neçə müsahibənin suallarını oğurladım və onları olduqca maraqlı hesab etdiyim üçün burada təqdim edəcəyəm. Mən qəsdən bu suallara cavab vermirəm ki, oxucular özləri şərhlərdə bu suallara cavab versinlər və real müsahibədən keçəndə bir az pudra olsunlar.

Suallar №1

I. SI bilikləri. Aşağıdakı qeydlər nə deməkdir:

const char * str;

char const * str;

const * char str;

char * const str;

const char const * str;

Bütün qeydlər düzgündürmü?

II. Niyə bu proqram seqmentasiya xətası atacaq?

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

III. Ağıllı olmaq.

Bir metr uzunluğunda bir çubuq var. On qarışqa təsadüfi olaraq müxtəlif istiqamətlərdə sürünərək onun üzərinə düşür. Bir qarışqanın hərəkət sürəti 1 m/s-dir. Qarışqa başqa bir qarışqa ilə qarşılaşarsa, dönüb əks istiqamətdə sürünür. Bütün qarışqaların çubuqdan düşməsini gözləmək üçün maksimum nə qədər vaxt lazımdır?

Növbəti müsahibə mənim üçün uğursuz oldu və onu proqramlaşdırma təcrübəmdə ən faydalısı hesab edirəm. Bu, mənim bacarıqsızlığımın dərinliyini göstərdi. Bu müsahibədən əvvəl mən bu sualların hər biri ilə tanış idim və onlar mənim praktikamda daim gündəmə gəlirdi, amma nədənsə mən onlara çox əhəmiyyət vermirdim və buna görə də yaxşı başa düşmürdüm. Ona görə də biabırçılıqla bu imtahandan kəsildim. Və mən çox minnətdaram ki, belə bir uğursuzluq baş verdi, bu, mənə ən çox təsir etdi. Siz sərin mütəxəssis olduğunuzu düşünürsünüz, sxem dizaynını, interfeysləri və nüvə ilə işləməyi bilirsiniz. Və sonra sizin real suallarınız var və siz uçursunuz. Beləliklə, görək.

Müsahibə Sualları №2

Aparat problemləri.

  • Linux sistem zəngləri x86-da ARM prosessorunda montaj dilində necə təşkil edilir. Fərq nədir?
  • Hansı sinxronizasiya vasitələri var? Hansı sinxronizasiya alətləri kəsmə kontekstində istifadə edilə bilər, hansıları istifadə edə bilməz və niyə?
  • i2c avtobusu ilə spi avtobusu arasındakı fərq nədir?
  • Niyə i2c avtobusunda terminatorlar var və onların dəyəri nədir?
  • RS-232 interfeysi YALNIZ iki naqildə işləyə bilərmi: RX və TX? Burada cavab verim: 9600-da pis olduğu ortaya çıxdı, amma ola bilər!!!
  • İndi ikinci sual: niyə?
  • Çox qatlı lövhələrdə siqnal xətlərini və gücü təşkil etməyin ən yaxşı yolu nədir və niyə? Qatların içərisində güc, yoxsa təbəqələrin içərisində siqnal xətləri? (Sual ümumiyyətlə sırf dövrə dizaynına aiddir).
  • Niyə diferensial xətlərin hər yerdə birləşən izləri var?
  • RS-485 avtobusu. Adətən belə bir xəttdə terminatorlar olur. Bununla belə, dəyişən sayda plug-in modulları olan bir ulduz dövrəmiz var. Toqquşmaların və müdaxilələrin qarşısını almaq üçün hansı vasitələrdən istifadə edilməlidir?
  • Qırmızı və ikili ağaclar nədir?
  • cmake ilə necə işləmək olar?
  • yocto Linux qurmaq haqqında suallar.

Bu müsahibənin məqsədləri:

1. Tərs olan funksiyanı yazın uint32_t bütün bitlər. (bitlərlə işləmək müsahibələrdə çox populyardır, tövsiyə edirəm)
2.

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

Bu funksiya nə qaytaracaq? (həll kağız üzərində, kompüter olmadan)

3. İki ədədin arifmetik ortasını hesablamaq funksiyası int32_t.

4. Proqramlarda çıxış üsulları hansılardır, o cümlədən. səhvlər axınına çevrilir.

Üçüncü seçim nisbətən yeni idi və hələ də orada belə bir anket olsa, təəccüblənmərəm, ona görə də onları ifşa etməmək üçün şirkəti açıqlamayacam... Amma ümumi mənada bir misal çəkəcəm. mümkün suallar və suallarınızı tanıyırsınızsa, mən salam deyirəm :).

Müsahibə Sualları №3

  1. Ağac keçid koduna bir nümunə verilmişdir, bu kodda nə edildiyini söyləmək və səhvləri göstərmək lazımdır.
  2. ls yardım proqramının nümunəsini yazın. Ən sadə seçim "-l" ilə.
  3. Statik və dinamik əlaqənin necə ediləcəyinə dair bir nümunə verin. Fərq nədir?
  4. RS-232 necə işləyir? RS-485 və RS-232 arasındakı fərq nədir? Proqramçı baxımından RS-232 ilə RS-485 arasındakı fərq nədir?
  5. USB necə işləyir (proqramçı baxımından)?
  6. Texniki mətnin rus dilindən ingilis dilinə tərcüməsi.

Uğurlu müsahibə uğurlu işin təminatı deyil

Bu fəsil, yəqin ki, hətta proqramçılar üçün deyil (baxmayaraq ki, onlar üçün də), daha çox HR üçündür. Ən adekvat şirkətlər müsahibələrin nəticələrinə diqqətlə baxmırlar. Səhv etmək normaldır, əksər hallarda bir insanın problemləri necə həll edəcəyini və səbəbini necə bildiyinə baxırlar.

Əsas problemlərdən biri odur ki, namizəd müsahibə zamanı problemləri uğurla həll edir, özünü əla mütəxəssis kimi göstərir, lakin ilk real tapşırığı yerinə yetirə bilmir. Yalan deməyəcəyəm, bu mənim də başıma gəldi. Mən cəhənnəmin bütün dairələrini uğurla keçdim, bütün test tapşırıqlarını həll etdim, amma real şəraitdə sadə təcrübəsizlik səbəbindən iş çox çətin oldu. Gəmiyə minmək ən çətin iş deyil. Ən çətini bu şirkətin idarə heyətində qalmaqdır.

Ona görə də mən daha çox namizədlə sadə müsahibə aparan şirkətlərə güvənirəm və deyirəm: ilk iş ayından sonra bəlli olacaq ki, bizim üçün uyğun olub-olmamısınız. Bu, ən adekvat yanaşmadır, bəli, bəlkə də bir az bahalıdır, amma kimin kim olduğu dərhal aydın olur.

Müsahibələr üçün başqa bir seçim var: onu uğurla keçəndə, lakin müsahibənin nəticələrinə əsasən, işəgötürənin tamamilə qeyri-adekvat olduğunu başa düşürsən. Mənə böyük gəlirlər vəd edən fərdi sahibkar kimi işləmək təklif olunarsa, dərhal işdən imtina edirəm. Bu, fəaliyyət göstərən təşkilat üçün vergidən yayınmanın bir formasıdır və işəgötürənin problemləri niyə bir proqramçı kimi məni narahat etməlidir? Başqa bir seçim müxtəlif dövlət qurumlarıdır. Müsahibə verdim, nəticədə mənə yaxşı maaş təklif etdilər, amma dedilər ki, əvvəlki proqramçı işdən çıxdı, xəstələndi, öldü, işin çoxluğuna görə eybəcərliyə getdi, iş gününüz səhər saat 8-də başlayır. . Elə yerdən o da qaçdı ki, dabanları parıldayırdı. Bəli, HR, qeyd edin ki, iş günü səhər tezdən başlamalıdırsa, proqramçılar ən dadlı işdən belə imtina etməyə hazırdırlar.

Sonda bu məqalənin əvvəlində ekran görüntüsü verilmiş proqramçı seçiminin əla videosunu verəcəyəm. Mən də dəfələrlə belə müsahibə almışam. Suallar mərhələsində tiranlığı görürsənsə, özünə hörmət et, ayağa qalx, əşyalarını götür və get - bu normaldır. Müsahibə zamanı HR və menecer özlərini sizin hesabına iddia edirlərsə, bu, şirkətin zəhərli olduğunu göstərir və qeyri-adekvat müdirləri sevməsəniz, orada işləməməlisiniz.

Tapıntılar

Proqramçılar, müsahibələrə gedin! Və həmişə yüksəlməyə çalışın. Deyək ki, əgər siz N pul alırsınızsa, ən azı N*1,2 və ya daha yaxşı N*1,5 üçün müsahibəyə gedin. Bu vakansiyanı dərhal götürməsəniz belə, bu ödəniş səviyyəsi üçün nə lazım olduğunu başa düşəcəksiniz.
Müşahidələrim göstərdi ki, ingilis dilini yaxşı bilmək, sənayedə kifayət qədər zəngin təcrübə və özünə inam qərar verir. Sonuncu, həyatın hər yerində olduğu kimi, əsas keyfiyyətdir. Bir qayda olaraq, daha özünə güvənən namizəd əla, lakin daha utancaq və təşəbbüskar ərizəçidən daha çox səhvlə belə müsahibədə daha yaxşı çıxış edə bilər. Müsahibələrinizdə uğurlar!

P/S Yarışması

HR-nin sizə yüklədiyi maraqlı problem nümunələri varsa, şərhlərdə xoş gəlmisiniz. Biz kiçik bir müsabiqə hazırlamışıq - şərtlər sadədir: siz müsahibə zamanı tapdığınız ən qeyri-adi tapşırığı yazırsınız, oxucular onu qiymətləndirir (plus) və bir həftədən sonra biz nəticələri yekunlaşdırırıq və qalibi əyləncəli şirniyyatlarla mükafatlandırırıq.

Proqramçılar, müsahibələrə gedin

Proqramçılar, müsahibələrə gedin

Mənbə: www.habr.com

Добавить комментарий