Programcılar, röportajlara gidin

Programcılar, röportajlara gidin
Resim kanaldaki bir videodan alınmıştır "Militan Ametistler»

Yaklaşık 10 yıl Linux'ta sistem programcısı olarak çalıştım. Bunlar çekirdek modülleri (çekirdek alanı), çeşitli arka plan programları ve kullanıcı alanından (kullanıcı alanı) donanımla çalışma, çeşitli önyükleyiciler (u-boot vb.), denetleyici ürün yazılımı ve çok daha fazlasıdır. Hatta bazen web arayüzünün kesilmesi bile oldu. Ancak daha sık olarak bir havyanın başında oturup baskılı devre kartı tasarımcılarıyla etkileşimde bulunmak zorunda kaldım. Bu tür çalışmaların sorunlarından biri, bir görevi çok derinlemesine biliyor olabileceğiniz, ancak diğerini hiç bilmeyebileceğiniz için, yeterliliğinizin seviyesini değerlendirmenin oldukça zor olmasıdır. Nereye gidileceğini ve şu anda hangi akımların olduğunu anlamanın tek yeterli yolu röportajlara gitmektir.

Bu makalede, bir Linux sistem programcısı olarak açık bir pozisyon için görüşme deneyimimi, görüşmenin özelliklerini, işi ve gelecekteki bir işverenle iletişim kurarak kişisel bilgi düzeyinizi nasıl değerlendirebileceğinizi ve ne yapmamanız gerektiğini özetlemek istiyorum. ondan bekliyoruz.

Makalede ödüllü küçük bir yarışma yer alacak.

Mesleğin özellikleri

Çalıştığım belirli alandaki bir sistem programcısı tam bir genel uzmandır: Hem kod yazmam hem de donanımda hata ayıklamam gerekiyordu. Ve çoğu zaman bir şeyi kendiniz lehimleme ihtiyacı vardı. Zaman zaman donanımda yaptığım ayarlamaların geliştiricilere aktarıldığı oluyordu. Bu nedenle, bu alanda çalışmak için hem dijital devre hem de programlama alanında oldukça iyi bir bilgi tabanına ihtiyacınız var. Bu nedenle, sistem programcısı pozisyonu için yapılan görüşmeler genellikle bir elektronik uzmanı arayışına benziyor.

Programcılar, röportajlara gidin
Bir sistem programcısı için tipik bir iş istasyonu.

Yukarıdaki fotoğraf, sürücülerde hata ayıklarken tipik çalışma yerimi gösteriyor. Mantık analizörü iletilen mesajların doğruluğunu gösterir, osiloskop ise sinyal kenarlarının şeklini izler. Ayrıca, standart hata ayıklama araçları artık başa çıkamadığında kullanılan jtag hata ayıklayıcısı çerçeveye dahil edilmedi. Ve tüm bu ekipmanlarla çalışabilmeniz gerekiyor.

Çoğu zaman bazı elemanları yeniden lehimlemenin ve topoloji hatalarını kendiniz düzeltmenin, ürünü bir kurulumcuya götürmekten daha hızlı ve daha kolay olduğu görülür. Ve sonra iş yerinizde bir lehimleme istasyonu da yerleşir.

Sürücü ve donanım düzeyindeki geliştirmelerin bir diğer özelliği de Google'ın yardımcı olmamasıdır. Çoğunlukla probleminiz hakkında bilgi aramanız gerekir ve üç bağlantı vardır; bunlardan ikisi, bazı forumlarda kendi sorularınızdır. Ya da daha da kötüsü, 5 yıl önce çekirdek e-posta listesinde bu soruyu soran ve hiçbir yanıt alamayan aynı zavallı adamdan gelen bir soruyla karşılaştığınızda. Bu çalışmada hem donanım hem de yazılım tasarımındaki hataların yanı sıra dokümantasyon hatalarıyla da sıklıkla karşılaşılmaktadır - bunlar muhtemelen en ciddi ve hoş olmayan sorunlardır. Bazen kayıtlar yanlış tanımlanır veya onlar için hiçbir açıklama yoktur. Bu tür problemler yalnızca rastgele sayıların belirli kayıtlara bilimsel olarak yerleştirilmesiyle (bir tür ters) çözülebilir. Genellikle işlemcinin bazı işlevler içerdiği, ancak bu işlevi sizden başka kimsenin uygulamadığı görülür (özellikle işlemci yeniyse). Bu da %70'i çocuklara ait olan tarlada tırmıkla yürümek anlamına geliyor. Ancak dokümantasyon olduğunda, hatalarla bile olsa bu zaten ilerlemedir. Çoğu zaman hiçbir belge bulunmaz ve mayın tarlalarında yürümek demir yanarken başlar. Ve evet ben de bu tür sorunları başarıyla çözdüm.

Röportajlar

Benim fikrim, işinizi çok sevseniz ve değiştirmek istemeseniz bile en az altı ayda bir mülakata gitmelisiniz. Mülakat, bir uzman olarak seviyenizi anlamanıza olanak tanır. En değerli görüşmelerin başarısız olan görüşmeler olduğuna inanıyorum. Bilginizdeki hangi darboğazların iyileştirilmesi gerektiğini en doğru şekilde gösterenler onlardır.

Bir diğer ilginç özellik ise röportajların kalitesidir. Bu benim gözlemim ve gerçek değil, itiraf ediyorum ki sadece şanslıydım. Mülakat senaryoya göre giderse:

  • bize kendinden bahset;
  • Şöyle görevlerimiz var;
  • beğendin mi?

Ve eğer bu diyalogdan sonra birbirinizden hoşlanırsanız, işe giderseniz, kural olarak şirket ve görevler çok keyifli ve yeterli olur. Bir röportaj 12 cehennem döngüsünden geçmeye benziyorsa: İK ile ilk röportaj, ardından bir grup programcıyla röportaj, ardından yönetmen, daha fazla ev ödevi vb., o zaman kural olarak bunlar benim çalışmadığım başarısız organizasyonlardı. uzun zamandır. Yine, bu kişisel bir gözlemdir, ancak kural olarak çok fazla bürokrasi ve uzayan işe alım süreci, şirket içinde de aynı süreçlerin gerçekleştiğini göstermektedir. Kararlar yavaş ve etkisiz bir şekilde alınır. Mülakat cehennemi çevrelerinin olduğu ve şirketin harika olduğu ve bileğe atılan bir tokattan sonra şirketin bir bataklığa dönüştüğü zıt durumlar da vardı, ancak bunlar nadirdir.

Tanıştığınız, kendinizden bahsettiğiniz ve işe alındığınız senaryosunun yalnızca küçük şirketlerde var olduğunu düşünüyorsanız, o zaman hayır. Yüzlerce kişiden fazla çalışanı olan ve dünya pazarlarında temsil edilen çok büyük şirketlerde bunu gördüm. Bu normal bir mekanizmadır, özellikle de zengin bir geçmişiniz varsa ve önceki işverenlerinizi arayıp hakkınızda soru sorma fırsatınız varsa.

Benim için bir şirketin projelerinin ve kodlarının örneklerini göstermeyi istemeleri çok iyi bir gösterge. Başvuranın eğitim seviyesi anında gösterilir. Ve bana göre aday seçimi açısından gösteri mülakatlarından daha etkili seçim yöntemi bu. Aslında bir röportajda heyecandan başarısız olabilirsiniz ya da tam tersine adrenalinden kurtulabilirsiniz. Ancak gerçek işte gerçek görevlerle baş edemezsiniz. Ben de insanlarla röportaj yaptığımda bununla karşılaştım. Bir uzman geliyor, mükemmel olduğunu gösteriyor, ben onu sevdim, o da bizi beğendi. Ve bir ay boyunca en basit problemle uğraştım ve sonuç olarak başka bir programcı onu birkaç gün içinde çözdü. O programcıdan ayrılmak zorunda kaldım.

Röportajlarda programlama görevlerine özellikle değer veriyorum. Ve toplantı sırasında, stres altında ve ev ödevi sırasında çözülmesi gerekenler. Birincisi, stresli bir durumda ve acil durumlarda sorunları hızlı ve doğru bir şekilde çözmeye ne kadar hazır olduğunuzu gösterir. İkincisi, bilgi arama ve mevcut sorunları çözme konusundaki yeterlilik düzeyinizi ve yeteneğinizi gösterir.

Yaptığım en ilginç işler ülkemizin savunma kompleksindeydi. Çalışma sürecinde ticari programcıların hayal bile etmediği fantastik sorunları çözmek zorunda kaldım. Süper bilgisayarlar, yönlendiriciler tasarlama, çeşitli düğüm savaş sistemleri - bu inanılmaz derecede heyecan verici. Geçit töreni sırasında kodunuzu saklayan bir kompleks gördüğünüzde bu gerçekten hoş. İşin garibi, bu tür şirketlerle görüşmeler genellikle çok basittir, kelimenin tam anlamıyla beğenilir, kabul edilir (muhtemelen çok fazla konuşmayı sevmeyen ordunun özellikleri) üst üste bindirilir. Orada karşılaştığım zorluklar gerçekten ilginç ve zorlayıcıydı. Tecrübeyle, yüksek kaliteli bir sistem programcısı olmayı öğrenmek için iyi oldukları ortaya çıktı. Dezavantajları da var ve bu düşük ücretler bile değil. Şu anda savunma kompleksindeki maaş, ikramiye ve sosyal haklarla birlikte oldukça makul. Kural olarak, çok fazla bürokrasi, uzun çalışma saatleri, sonsuz acele işler ve büyük stres altında çalışma vardır. Bazı durumlarda gizlilik göz ardı edilemez, bu da yurt dışına seyahatte bazı sorunlar yaratır. Artı elbette patronların zulmü ve ne yazık ki bu da oluyor. Her ne kadar bir müşteri temsilcisiyle çalışma deneyimim son derece keyifli olsa da. Bu, devlet savunma emirleriyle ilgili üç farklı araştırma enstitüsü ve şirketinin ortak izlenimidir.

Mülakat görevleri

Yanlış anlaşılmaları önlemek ve görüştüğüm firmaları ifşa etmemek adına, kaderi kışkırtmayacağım ve detaylarını belirtmeyeceğim. Ama her röportaj için, insanların bana ayırdığı zaman için, kendime dışarıdan bakma fırsatı için minnettarım. Sadece görevlerin farklı ülkelerde temsil edilen büyük uluslararası şirketlere yönelik olduğunu söyleyebilirim.

Size en ilginç şeyi anlatacağım: Görüşmeler sırasında hangi görevler veriliyor? Genel olarak, bir sistem programcısı ve mikrodenetleyici programcısının boşluğuyla ilgili en yaygın sorular, tüm olası varyasyonlarda bit işlemleridir. Bu nedenle kendinizi bu alanda en iyi şekilde hazırlayın.

İkinci en kutuplaştırıcı konu ise yön tabelaları, bu gerçekten dikkatinizi çekecek. Böylece gece yarısı sizi uyandırırlar ve her şeyi anlatıp gösterebilirsiniz.

Kafamdaki birçok röportajdan sorular çaldım ve oldukça ilginç bulduğum için burada sunacağım. Okuyucular bu soruları yorumlarda kendileri cevaplasın ve gerçek bir röportajdan geçerken biraz pudralansın diye bu soruların cevaplarını bilinçli olarak vermiyorum.

1 Numaralı Sorular

I. SI bilgisi. Aşağıdaki girişler ne anlama geliyor:

const char * str;

char const * str;

const * char str;

char * const str;

const char const * str;

Tüm girişler doğru mu?

II. Bu program neden segmentasyon hatası verecek?

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

III. Akıllı olmak.

Bir metre uzunluğunda bir sopa var. On karınca rastgele onun üzerine düşüyor ve farklı yönlere doğru sürünüyor. Bir karıncanın hareket hızı 1 m/s'dir. Bir karınca başka bir karıncayla karşılaştığında dönüp ters yöne doğru sürünür. Tüm karıncaların çubuktan düşmesini beklemeniz gereken maksimum süre nedir?

Bir sonraki röportaj benim için başarısızlıktı ve bunun programlama pratiğimdeki en faydalı röportaj olduğunu düşünüyorum. Beceriksizliğimin derinliğini gösterdi. Bu röportajdan önce bu soruların her birine aşinaydım ve pratiğimde sürekli karşıma çıkıyorlardı ama bir şekilde onlara pek önem vermiyordum ve dolayısıyla onları iyi anlayamıyordum. Bu yüzden utanç içinde bu sınavda başarısız oldum. Ve böyle bir başarısızlığın gerçekleşmesine çok minnettarım; bu benim üzerimde çok ayıltıcı bir etki yarattı. Harika bir uzman olduğunuzu düşünüyorsunuz, devre tasarımını, arayüzleri ve çekirdekle çalışmayı biliyorsunuz. Ve sonra gerçek sorularınız olur ve yüzersiniz. Öyleyse görelim.

Mülakat Soruları #2

Donanım sorunları.

  • Linux sistem çağrıları, x86'daki bir ARM işlemcide montaj dilinde nasıl düzenlenir? Fark ne?
  • Hangi senkronizasyon araçları var? Bir kesme bağlamında hangi senkronizasyon araçları kullanılabilir, hangisi kullanılamaz ve neden?
  • i2c bus ve spi bus arasındaki fark nedir?
  • i2c veriyolunda neden sonlandırıcılar var ve bunların değeri nedir?
  • RS-232 arayüzü YALNIZCA iki kablo üzerinde çalışabilir mi: RX ve TX? İşte cevabı vereceğim: 9600'de kötü olduğu ortaya çıktı, ama olabilir!!!
  • Ve şimdi ikinci soru: neden?
  • Çok katmanlı kartlarda sinyal hatlarını ve gücü düzenlemenin en iyi yolu nedir ve neden? Katmanların içindeki güç mü yoksa katmanların içindeki sinyal hatları mı? (Soru genellikle tamamen devre tasarımıyla ilgilidir).
  • Diferansiyel çizgilerin neden her yerde birlikte giden izleri var?
  • RS-485 veri yolu. Genellikle böyle bir hatta sonlandırıcılar bulunur. Ancak değişken sayıda eklenti modülüne sahip bir yıldız devremiz var. Çarpışmaları ve parazitleri önlemek için hangi araçlar kullanılmalıdır?
  • Kırmızı ve ikili ağaçlar nelerdir?
  • Cmake ile nasıl çalışılır?
  • Yocto Linux oluşturmaya ilişkin sorular.

Bu röportajın amaçları:

1. Bunu tersine çeviren bir fonksiyon yazın uint32_t tüm parçalar. (Bitlerle çalışmak röportajlarda çok popüler, tavsiye ederim)
2.

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

Bu fonksiyon ne döndürecek? (kağıt üzerinde, bilgisayarsız çözüm)

3. İki sayının aritmetik ortalamasını hesaplama işlevi int32_t.

4. Programlardaki çıktı yöntemleri nelerdir? bir hata akışına dönüştü.

Üçüncü seçim nispeten yeniydi ve orada hala böyle bir anket varsa şaşırmazdım, bu yüzden onları ifşa etmemek için şirketi açıklamayacağım... Ama genel anlamda bir örnek vereceğim olası sorular ve sorularınızı tanırsanız merhaba derim :).

Mülakat Soruları #3

  1. Ağaç geçiş kodu örneği verilmiştir; bu kodda ne yapıldığını anlatmak ve hataları belirtmek gerekir.
  2. ls yardımcı programının bir örneğini yazın. En basit seçenek olan “-l” ile.
  3. Statik ve dinamik bağlantının nasıl yapılacağına dair bir örnek verin. Fark ne?
  4. RS-232 nasıl çalışır? RS-485 ile RS-232 arasındaki fark nedir? Bir programcının bakış açısından RS-232 ve RS-485 arasındaki fark nedir?
  5. USB nasıl çalışır (bir programcının bakış açısından)?
  6. Teknik metnin Rusça'dan İngilizce'ye çevirisi.

Başarılı bir röportaj, başarılı çalışmanın garantisi değildir

Bu bölüm muhtemelen programcılar için bile değil (gerçi onlar için de), daha çok İK içindir. En yeterli firmalar mülakat sonuçlarına titizlikle bakmıyor. Hata yapmak normaldir; çoğunlukla kişinin sorunları nasıl çözeceğini ve akıl yürüteceğini nasıl bildiğine bakarlar.

En önemli sorunlardan biri, adayın görüşmeler sırasında sorunları başarıyla çözmesi, mükemmel bir uzman olduğunu göstermesi, ancak ilk gerçek görevde başarısız olmasıdır. Yalan söylemeyeceğim, bu benim de başıma geldi. Cehennemin tüm çevrelerini başarıyla geçtim, tüm test görevlerini çözdüm, ancak gerçek koşullarda basit deneyimsizlik nedeniyle işin çok zor olduğu ortaya çıktı. Gemiye binmek en zor iş değil. En zor şey bu şirkette kalmaktır.

Bu nedenle adayla basit görüşmeler yapan ve şunu söyleyen şirketlere daha çok güveniyorum: Çalışmanın ilk ayından sonra bize uygun olup olmadığınız belli olacak. Bu en uygun yaklaşım, evet belki biraz pahalı ama kimin kim olduğu hemen anlaşılıyor.

Mülakatlar için başka bir seçenek daha var: Başarılı bir şekilde geçtiğinizde, ancak mülakatın sonuçlarına göre işverenin tamamen yetersiz olduğunu anlıyorsunuz. Büyük gelir vaat eden bireysel bir girişimci olarak çalışmam teklif edilirse çalışmayı hemen reddediyorum. Bu, faaliyet gösteren bir kuruluş için bir tür vergi kaçakçılığıdır ve işverenin sorunları bir programcı olarak beni neden endişelendirsin? Diğer bir seçenek ise çeşitli devlet kurumlarıdır. Bir röportaj yaptım ve bunun sonucunda bana iyi bir maaş teklif edildi, ancak önceki programcının işi bıraktığını, hastalandığını, öldüğünü, iş yükü nedeniyle aşırıya kaçtığını ve çalışma gününüzün sabah 8'de başladığını söylediler. . O da öyle bir yerden koştu ki topukları parıldadı. Evet İK, çalışma gününün sabah erkenden başlaması gerekiyorsa programcıların en lezzetli işi bile reddetmeye hazır olduğunu lütfen unutmayın.

Sonunda, bu makalenin başında ekran görüntüsü verilen mükemmel bir programcı seçimi videosu vereceğim. Ben de böyle bir röportajı birden fazla kez yaptım. Soru aşamasında tiranlık görürseniz kendinize saygı gösterin, kalkın, eşyalarınızı alın ve gidin - bu normaldir. Görüşme sırasında İK ve yönetici masrafları size ait olmak üzere kendilerini öne sürüyorsa, bu şirketin zehirli olduğunu ve yetersiz patronlardan hoşlanmadığınız sürece orada çalışmamanız gerektiğini gösterir.

Bulgular

Programcılar, röportajlara gidin! Ve daima terfi almaya çalışın. Diyelim ki N para alırsanız, en az N*1,2 veya daha iyisi N*1,5 karşılığında görüşmeye gidin. Bu boşluğu hemen almasanız bile, bu düzeyde bir ücret için neye ihtiyaç duyulduğunu anlayacaksınız.
Gözlemlerim, iyi İngilizce bilgisinin, sektördeki yeterince zengin deneyimin ve özgüvenin belirleyici olduğunu gösterdi. İkincisi, hayatın her yerinde olduğu gibi ana kalitedir. Kural olarak, kendine daha fazla güvenen bir aday, mükemmel ama daha utangaç ve proaktif bir adaydan daha fazla hatayla bile bir röportajda daha iyi performans gösterebilir. Röportajlarınızda iyi şanslar!

P/S Yarışması

İK'nın size yüklediği ilginç sorun örnekleriniz varsa, yorumlara hoş geldiniz. Küçük bir yarışma hazırladık - koşullar basit: Bir röportaj sırasında üstlendiğiniz en alışılmadık görevi yazarsınız, okuyucular bunu değerlendirir (artı) ve bir hafta sonra sonuçları özetler ve kazananı eğlenceli hediyelerle ödüllendiririz.

Programcılar, röportajlara gidin

Programcılar, röportajlara gidin

Kaynak: habr.com

Yorum ekle