Pemrogram, pergilah ke wawancara

Pemrogram, pergilah ke wawancara
Gambar diambil dari video dari saluran "Batu Kecubung MilitanΒ»

Saya bekerja sebagai pemrogram sistem untuk Linux selama sekitar 10 tahun. Ini adalah modul kernel (ruang kernel), berbagai daemon dan bekerja dengan perangkat keras dari ruang pengguna (ruang pengguna), berbagai bootloader (u-boot, dll.), firmware pengontrol dan banyak lagi. Bahkan terkadang terjadi pemotongan antarmuka web. Tetapi lebih sering saya harus duduk dengan besi solder dan berinteraksi dengan desainer papan sirkuit cetak. Salah satu masalah dengan pekerjaan seperti itu adalah cukup sulit untuk menilai tingkat kompetensi Anda, karena Anda mungkin mengetahui satu tugas dengan sangat mendalam, tetapi Anda mungkin tidak mengetahui tugas lainnya sama sekali. Satu-satunya cara yang memadai untuk memahami ke mana harus pergi dan arus apa yang ada saat ini adalah dengan melakukan wawancara.

Dalam artikel ini saya ingin merangkum pengalaman saya dalam wawancara untuk lowongan sebagai programmer sistem Linux, spesifik wawancara, pekerjaan, dan bagaimana menilai tingkat pengetahuan pribadi Anda dengan berkomunikasi dengan calon pemberi kerja dan apa yang tidak boleh Anda lakukan. harapkan darinya.

Artikel ini akan mencakup kompetisi kecil berhadiah.

Fitur profesinya

Seorang pemrogram sistem, di bidang spesifik tempat saya bekerja, adalah seorang generalis yang lengkap: saya harus menulis kode dan men-debug perangkat keras. Dan seringkali ada kebutuhan untuk menyolder sesuatu sendiri. Dari waktu ke waktu, penyesuaian saya pada perangkat keras kemudian ditransfer ke pengembang. Oleh karena itu, untuk bekerja di bidang ini diperlukan dasar pengetahuan yang cukup baik, baik di bidang sirkuit digital maupun pemrograman. Oleh karena itu, wawancara untuk posisi pemrogram sistem sering kali terlihat seperti pencarian spesialis elektronik.

Pemrogram, pergilah ke wawancara
Stasiun kerja tipikal untuk pemrogram sistem.

Foto di atas menunjukkan tempat kerja saya yang khas saat men-debug driver. Penganalisis logika menunjukkan kebenaran pesan yang dikirimkan, osiloskop memantau bentuk tepi sinyal. Selain itu, debugger jtag tidak disertakan dalam bingkai, yang digunakan ketika alat debugging standar tidak lagi berfungsi. Dan Anda harus bisa bekerja dengan semua peralatan ini.

Sering kali lebih cepat dan mudah untuk menyolder ulang beberapa elemen dan memperbaiki sendiri kesalahan topologi daripada membawa produk ke penginstal. Dan kemudian stasiun solder juga menempati tempat kerja Anda.

Fitur pengembangan lainnya di tingkat driver dan perangkat keras adalah Google tidak membantu. Seringkali Anda harus mencari informasi tentang masalah Anda, dan ada tiga link, dua di antaranya adalah pertanyaan Anda sendiri di beberapa forum. Atau lebih buruk lagi, ketika Anda menemukan pertanyaan dari orang malang yang menanyakannya 5 tahun yang lalu di milis kernel dan tidak pernah menerima jawaban. Dalam pekerjaan ini, selain kesalahan dalam desain perangkat keras dan perangkat lunak, kesalahan dokumentasi sering dijumpai - ini mungkin masalah yang paling parah dan tidak menyenangkan. Terkadang register dijelaskan secara tidak benar, atau tidak ada deskripsi sama sekali. Masalah seperti itu hanya dapat diselesaikan dengan memasukkan bilangan acak secara ilmiah ke dalam register tertentu (semacam kebalikannya). Sering terjadi bahwa prosesor berisi beberapa fungsi, tetapi tidak seorang pun kecuali Anda yang mengimplementasikan fungsi ini (terutama jika prosesor tersebut baru). Artinya berjalan melintasi lapangan dengan menyapu, 70% di antaranya untuk anak-anak. Tapi kalau ada dokumentasinya, meski ada kesalahan, itu sudah kemajuan. Seringkali tidak ada dokumentasi sama sekali, dan saat itulah perjalanan melewati ladang ranjau dimulai ketika setrika sedang terbakar. Dan ya, saya juga berhasil memecahkan masalah seperti itu.

Wawancara

Pendapat saya adalah Anda harus melakukan wawancara setidaknya sekali setiap enam bulan, bahkan jika Anda menyukai pekerjaan Anda dan tidak ingin mengubahnya. Wawancara memungkinkan Anda memahami level Anda sebagai seorang spesialis. Saya percaya wawancara yang paling berharga adalah wawancara yang gagal. Merekalah yang paling akurat menunjukkan hambatan mana dalam pengetahuan Anda yang perlu diperbaiki.

Fitur menarik lainnya adalah kualitas wawancara. Ini pengamatan saya, dan itu tidak benar, saya akui saya hanya beruntung. Jika wawancara berjalan sesuai skenario:

  • ceritakan kepada kami tentang diri Anda;
  • Kami mempunyai tugas seperti itu;
  • kamu suka?

Dan jika setelah dialog ini Anda menyukai satu sama lain, Anda pergi bekerja, maka, sebagai suatu peraturan, perusahaan dan tugas-tugasnya menjadi sangat menyenangkan dan memadai. Jika sebuah wawancara seperti melewati 12 lingkaran neraka: wawancara pertama dengan HR, kemudian wawancara dengan sekelompok programmer, lalu direktur, lebih banyak pekerjaan rumah, dll., maka biasanya ini adalah organisasi gagal di mana saya tidak bekerja untuk waktu yang sangat lama. Sekali lagi, ini adalah pengamatan pribadi, namun biasanya, terlalu banyak birokrasi dan proses perekrutan yang berlarut-larut menunjukkan bahwa proses yang sama juga terjadi di dalam perusahaan. Keputusan dibuat lambat dan tidak efektif. Ada juga situasi sebaliknya, ketika ada lingkaran wawancara yang sangat buruk, dan perusahaan itu menjadi hebat, dan ketika, setelah ditampar, perusahaan itu berubah menjadi rawa, tetapi ini jarang terjadi.

Jika Anda berpikir skenarionya: bertemu, bercerita tentang diri Anda, dan dipekerjakan, hanya ada di perusahaan kecil, maka tidak. Saya telah melihat hal ini di perusahaan-perusahaan besar yang mempekerjakan lebih dari ratusan orang dan terwakili di pasar dunia. Ini adalah mekanisme yang normal, terutama jika Anda memiliki rekam jejak yang kaya dan memiliki kesempatan untuk menelepon perusahaan tempat Anda bekerja sebelumnya dan menanyakan tentang Anda.

Bagi saya, ini adalah indikator yang sangat baik dari sebuah perusahaan ketika mereka meminta untuk menunjukkan contoh proyek dan kode mereka. Tingkat pelatihan pelamar segera ditampilkan. Dan bagi saya, dari sudut pandang pemilihan kandidat, ini adalah metode seleksi yang paling efektif daripada wawancara pertunjukan. Faktanya, Anda bisa gagal dalam wawancara karena kegembiraan, atau sebaliknya, memacu adrenalin. Namun dalam pekerjaan nyata, Anda tidak dapat mengatasi tugas nyata. Dan saya juga mengalami hal ini ketika saya mewawancarai orang-orang sendiri. Seorang spesialis datang, menunjukkan dirinya luar biasa, saya menyukainya, dia menyukai kami. Dan saya berjuang dengan masalah paling sederhana selama sebulan, dan sebagai hasilnya, programmer lain menyelesaikannya dalam beberapa hari. Saya harus berpisah dengan programmer itu.

Saya terutama menghargai tugas pemrograman dalam wawancara. Dan hal-hal yang harus diselesaikan saat rapat, di bawah tekanan, dan pekerjaan rumah. Yang pertama menunjukkan seberapa siap Anda untuk menyelesaikan masalah dengan cepat dan akurat dalam situasi stres dan darurat. Yang kedua menunjukkan tingkat kompetensi dan kemampuan Anda dalam mencari informasi dan memecahkan masalah saat ini.

Pekerjaan paling menarik yang saya miliki adalah di kompleks pertahanan negara kami. Dalam proses kerja, saya harus memecahkan masalah-masalah fantastis yang bahkan tidak pernah diimpikan oleh programmer komersial. Superkomputer, perancangan router, berbagai sistem pertarungan node - ini sangat mengasyikkan. Ketika selama parade Anda melihat kompleks yang menyimpan kode Anda, itu sangat bagus. Anehnya, wawancara dengan perusahaan-perusahaan seperti itu biasanya sangat sederhana, secara harfiah datang, seperti itu, diterima (mungkin hal-hal spesifik dari militer, yang tidak suka berbicara terlalu banyak), ditumpangkan. Tantangan yang saya hadapi di sana sungguh menarik dan menantang. Dengan pengalaman, ternyata mereka bagus untuk belajar menjadi programmer sistem yang berkualitas. Ada juga kerugiannya, dan ini bahkan bukan upah yang rendah. Saat ini, gaji di kompleks pertahanan cukup lumayan, dengan bonus dan tunjangan. Biasanya, terdapat banyak birokrasi, jam kerja yang panjang, pekerjaan terburu-buru yang tiada habisnya, dan pekerjaan yang berada dalam tekanan yang besar. Dalam kasus tertentu, kerahasiaan tidak dapat dikesampingkan, sehingga menambah masalah tertentu dalam perjalanan ke luar negeri. Ditambah lagi, tentu saja, tirani para bos, dan sayangnya, ini juga terjadi. Meskipun pengalaman saya bekerja dengan perwakilan pelanggan sangat menyenangkan. Demikian kesan kolektif tiga lembaga penelitian dan perusahaan berbeda terkait tatanan pertahanan negara.

Tugas wawancara

Untuk menghindari kesalahpahaman dan agar tidak membeberkan perusahaan yang saya wawancarai, saya tidak akan menggoda nasib dan menunjukkan detailnya. Namun saya bersyukur atas setiap wawancara, atas waktu yang dihabiskan orang-orang untuk saya, atas kesempatan untuk melihat diri saya dari luar. Saya hanya dapat mengatakan bahwa tugasnya adalah untuk perusahaan-perusahaan internasional besar yang diwakili di berbagai negara.

Saya akan memberi tahu Anda hal yang paling menarik: tugas apa yang diberikan selama wawancara. Secara umum, pertanyaan paling umum untuk lowongan pemrogram sistem dan pemrogram mikrokontroler adalah operasi bit, dalam semua variasi yang memungkinkan. Oleh karena itu, persiapkan diri Anda sebaik-baiknya dalam bidang ini.

Topik kedua yang paling mempolarisasi adalah rambu-rambu, ini seharusnya benar-benar menarik perhatian Anda. Sehingga mereka membangunkan Anda di tengah malam dan Anda bisa menceritakan serta menunjukkan semuanya.

Saya mencuri pertanyaan-pertanyaan dari beberapa wawancara di kepala saya, dan akan saya sajikan di sini, karena menurut saya cukup menarik. Sengaja saya tidak memberikan jawaban atas pertanyaan-pertanyaan tersebut agar para pembaca bisa menjawab sendiri pertanyaan-pertanyaan tersebut di kolom komentar dan sedikit bedak saat menjalani wawancara sesungguhnya.

Pertanyaan No.1

I. Pengetahuan tentang SI. Apa arti dari entri berikut:

const char * str;

char const * str;

const * char str;

char * const str;

const char const * str;

Apakah semua entri benar?

II. Mengapa program ini menimbulkan kesalahan segmentasi?

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

AKU AKU AKU. Menjadi pintar.

Ada sebuah tongkat yang panjangnya satu meter. Sepuluh semut secara acak menimpanya, merangkak ke arah yang berbeda. Kecepatan gerak seekor semut adalah 1 m/s. Jika seekor semut bertemu dengan semut lain, ia berbalik dan merangkak ke arah yang berlawanan. Berapa lama waktu maksimum yang diperlukan untuk menunggu hingga seluruh semut terlepas dari batangnya?

Wawancara berikutnya gagal bagi saya, dan saya menganggapnya paling berguna dalam praktik pemrograman saya. Itu menunjukkan betapa dalamnya ketidakmampuan saya. Sebelum wawancara ini, saya sudah akrab dengan masing-masing pertanyaan ini dan pertanyaan-pertanyaan itu terus-menerus muncul dalam praktik saya, tetapi entah bagaimana saya tidak menganggapnya terlalu penting, dan oleh karena itu, saya tidak memahaminya dengan baik. Oleh karena itu, saya gagal dalam ujian ini dengan rasa malu. Dan saya sangat bersyukur kegagalan seperti itu terjadi; hal ini memberikan dampak yang paling menyedihkan bagi saya. Anda berpikir bahwa Anda adalah seorang spesialis yang keren, Anda tahu desain sirkuit, antarmuka, dan bekerja dengan kernel. Dan kemudian Anda memiliki pertanyaan nyata dan Anda melayang. Jadi mari kita lihat.

Pertanyaan Wawancara #2

Masalah perangkat keras.

  • Bagaimana panggilan sistem linux diatur dalam bahasa assembly pada prosesor ARM, pada x86. Apa bedanya?
  • Alat sinkronisasi apa yang tersedia? Alat sinkronisasi manakah yang dapat digunakan dalam konteks interupsi, mana yang tidak dapat digunakan, dan mengapa?
  • Apa perbedaan antara bus i2c dan bus spi?
  • Mengapa ada terminator di bus i2c dan berapa nilainya?
  • Bisakah antarmuka RS-232 HANYA bekerja pada dua kabel: RX dan TX? Disini saya akan kasih jawabannya: Ternyata jelek, di 9600, tapi bisa!!!
  • Dan sekarang pertanyaan kedua: mengapa?
  • Apa cara terbaik untuk mengatur jalur sinyal dan daya di papan multilayer dan mengapa? Kekuatan di dalam lapisan, atau garis sinyal di dalam lapisan? (Pertanyaannya umumnya murni tentang desain sirkuit).
  • Mengapa garis diferensial memiliki jalur yang menyatu ke mana-mana?
  • Bis RS-485. Biasanya ada terminator pada jalur seperti itu. Namun, kami memiliki sirkuit bintang, dengan jumlah modul plug-in yang bervariasi. Cara menghindari tabrakan dan gangguan apa yang harus digunakan?
  • Apa itu pohon merah dan biner?
  • Bagaimana cara bekerja dengan cmake?
  • Pertanyaan tentang membangun yocto Linux.

Tujuan wawancara ini:

1. Tulislah fungsi yang inversinya menjadi uint32_t semua bagiannya. (bekerja dengan bit sangat populer saat wawancara, saya merekomendasikannya)
2.

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

Apa yang akan dikembalikan oleh fungsi ini? (solusi di atas kertas, tanpa komputer)

3. Fungsi untuk menghitung mean aritmatika dua bilangan int32_t.

4. Apa saja metode keluaran dalam program, termasuk. ke dalam aliran kesalahan.

Seleksi ketiga relatif baru, dan saya tidak akan terkejut jika masih ada kuesioner seperti itu di sana, jadi saya tidak akan membeberkan perusahaannya agar tidak membeberkannya... Tapi secara umum saya akan memberikan contoh dari kemungkinan pertanyaan, dan jika Anda mengenali pertanyaan Anda, maka saya ucapkan halo :).

Pertanyaan Wawancara #3

  1. Contoh kode penjelajahan pohon diberikan; penting untuk mengetahui apa yang dilakukan dalam kode ini dan menunjukkan kesalahan.
  2. Tuliskan contoh utilitas ls. Dengan opsi paling sederhana β€œ-l”.
  3. Berikan contoh cara melakukan tautan statis dan dinamis. Apa bedanya?
  4. Bagaimana cara kerja RS-232? Apa perbedaan antara RS-485 dan RS-232? Apa perbedaan antara RS-232 dan RS-485 dari sudut pandang programmer?
  5. Bagaimana cara kerja USB (dari sudut pandang programmer)?
  6. Terjemahan teks teknis dari bahasa Rusia ke bahasa Inggris.

Wawancara yang sukses bukanlah jaminan kesuksesan kerja

Bab ini mungkin bukan untuk programmer (meskipun untuk mereka juga), tetapi lebih untuk HR. Perusahaan yang paling memadai tidak cermat melihat hasil wawancara. Membuat kesalahan adalah hal yang wajar; paling sering kesalahan itu dilihat dari bagaimana seseorang mengetahui cara memecahkan masalah dan bernalar.

Salah satu masalah utama adalah bahwa seorang kandidat berhasil memecahkan masalah selama wawancara, menunjukkan dirinya sebagai spesialis yang sangat baik, tetapi gagal pada tugas pertama yang sebenarnya. Saya tidak akan berbohong, ini juga terjadi pada saya. Saya berhasil melewati semua lingkaran neraka, menyelesaikan semua tugas tes, tetapi dalam kondisi nyata, pekerjaan itu ternyata terlalu sulit karena kurangnya pengalaman. Bergabung bukanlah tugas yang paling sulit. Hal yang paling sulit adalah tetap berada di perusahaan ini.

Oleh karena itu, saya lebih mempercayai perusahaan yang melakukan wawancara sederhana dengan kandidat dan mengatakan: setelah bulan pertama bekerja, akan jelas apakah Anda cocok untuk kami atau tidak. Ini adalah pendekatan yang paling memadai, ya, mungkin sedikit mahal, tapi segera jelas siapa adalah siapa.

Ada pilihan lain untuk wawancara: ketika Anda berhasil lulus, tetapi berdasarkan hasil wawancara Anda memahami bahwa pemberi kerja sama sekali tidak memadai. Saya langsung menolak pekerjaan jika ditawari bekerja sebagai pengusaha perorangan, menjanjikan penghasilan besar. Ini adalah bentuk penghindaran pajak bagi organisasi yang beroperasi, dan mengapa masalah pemberi kerja harus membuat saya khawatir sebagai seorang programmer? Pilihan lainnya adalah berbagai lembaga pemerintah. Saya melakukan wawancara, akibatnya saya ditawari gaji yang bagus, tetapi mereka mengatakan bahwa programmer sebelumnya berhenti, sakit, meninggal, makan berlebihan karena beban kerja, dan hari kerja Anda dimulai pukul 8 pagi. . Dari tempat seperti itu ia pun berlari hingga tumitnya berkilau. Ya HR, perlu diketahui bahwa programmer siap menolak pekerjaan yang paling enak sekalipun jika hari kerja harus dimulai pagi-pagi sekali.

Di bagian akhir, saya akan memberikan video pilihan programmer yang luar biasa, tangkapan layarnya diberikan di awal artikel ini. Saya juga melakukan wawancara seperti itu lebih dari sekali. Jika Anda melihat tirani pada tahap pertanyaan, maka hargai diri Anda sendiri, bangun, ambil barang-barang Anda dan pergi - ini normal. Jika HR dan manajer menyatakan diri mereka atas biaya Anda selama wawancara, ini menunjukkan bahwa perusahaan tersebut beracun dan Anda tidak boleh bekerja di sana kecuali Anda menyukai bos yang tidak memadai.

Temuan

Programmer, pergilah ke wawancara! Dan selalu berusaha untuk dipromosikan. Katakanlah jika Anda mendapat uang N, maka lakukan wawancara setidaknya N*1,2, atau lebih baik N*1,5. Bahkan jika Anda tidak segera mengambil lowongan ini, Anda akan memahami apa yang dibutuhkan untuk tingkat gaji tersebut.
Pengamatan saya menunjukkan bahwa pengetahuan yang baik tentang bahasa Inggris, pengalaman yang cukup kaya di industri ini, dan kepercayaan diri menentukan. Yang terakhir adalah kualitas utama, seperti di mana pun dalam kehidupan. Biasanya, kandidat yang lebih percaya diri dapat tampil lebih baik dalam sebuah wawancara, bahkan dengan lebih banyak kesalahan, daripada pelamar yang sangat baik, namun lebih pemalu dan proaktif. Semoga berhasil dengan wawancara Anda!

Kompetisi P/S

Jika Anda memiliki contoh menarik dari masalah yang HR berikan kepada Anda, selamat datang di komentar. Kami telah menyiapkan kompetisi kecil - syaratnya sederhana: Anda menulis tugas paling tidak biasa yang Anda miliki selama wawancara, pembaca mengevaluasinya (plus), dan setelah seminggu kami merangkum hasilnya dan memberi hadiah kepada pemenang dengan barang-barang lucu.

Pemrogram, pergilah ke wawancara

Pemrogram, pergilah ke wawancara

Sumber: www.habr.com

Tambah komentar