Programmer, pergi ke wawancara



Gambar diambil dari video dari channel " Militant Amethysts "



Selama kurang lebih 10 tahun saya bekerja sebagai programmer sistem untuk Linux. Ini adalah modul kernel (ruang kernel), berbagai daemon dan bekerja dengan perangkat keras dari ruang pengguna (ruang pengguna), berbagai pemuat boot (u-boot, dll.), Firmware pengontrol, dan banyak lagi. Kadang-kadang bahkan terjadi untuk memotong antarmuka web. Tetapi lebih sering terjadi bahwa saya harus duduk dengan besi solder dan berinteraksi dengan perancang papan sirkuit tercetak. Salah satu masalah dari pekerjaan tersebut adalah sulitnya menilai tingkat kompetensi Anda, karena Anda mungkin mengetahui satu tugas dengan sangat dalam, tetapi Anda mungkin tidak tahu sama sekali. Satu-satunya cara yang memadai untuk memahami ke mana harus pergi dan apa arus sekarang adalah pergi ke wawancara.



Pada artikel ini, saya ingin merangkum pengalaman saya wawancara untuk lowongan programmer sistem linux, wawancara spesifik, pekerjaan dan bagaimana menilai tingkat pengetahuan pribadi dalam berkomunikasi dengan majikan masa depan dan apa yang tidak diharapkan dari ini.



Artikel tersebut akan berisi kompetisi kecil berhadiah.



Fitur profesi



Seorang programmer sistem, secara spesifik tempat saya bekerja, adalah seorang generalis yang lengkap: Saya harus menulis kode dan men-debug perangkat keras. Dan sering kali ada kebutuhan untuk menyolder sesuatu sendiri. Dari waktu ke waktu, kebetulan koreksi perangkat keras saya diteruskan ke pengembang. Oleh karena itu untuk bekerja di bidang ini membutuhkan pengetahuan yang cukup baik, baik di bidang sirkuit digital maupun di bidang pemrograman. Karena itu, wawancara untuk pekerjaan programmer sistem sering kali terlihat seperti mencari spesialis elektronik.





Tempat kerja khas pemrogram sistem.



Foto di atas adalah tempat kerja khas saya saat men-debug driver. Penganalisis logika menunjukkan kebenaran sinyal yang ditransmisikan, osiloskop memonitor bentuk tepi sinyal. Selain itu, debugger jtag, yang digunakan saat alat debugging standar tidak lagi mengatasinya, tidak masuk ke frame. Dan Anda harus bisa bekerja dengan semua peralatan ini.



Seringkali terjadi bahwa menyolder ulang beberapa elemen, memperbaiki kesalahan topologi lebih cepat dan lebih mudah sendiri daripada memakai produk ke penginstal. Dan kemudian stasiun solder juga mengendap di tempat kerja Anda.



Fitur lain dari pengembangan di tingkat driver dan perangkat keras adalah bahwa Google tidak membantu. Seringkali Anda harus mencari informasi tentang masalah Anda, dan ada tiga tautan, dua di antaranya adalah pertanyaan Anda di beberapa forum. Atau lebih buruk lagi, ketika Anda menemukan pertanyaan dari orang malang yang sama yang menanyakannya 5 tahun yang lalu di milis kernel, dan tidak pernah mendapat jawabannya. Dalam pekerjaan ini, selain kesalahan dalam desain perangkat keras dan perangkat lunak, kesalahan dokumentasi sering ditemui - ini mungkin masalah yang paling parah dan tidak menyenangkan. Terkadang register tidak dijelaskan dengan benar, atau tidak ada deskripsi sama sekali. Masalah seperti itu diselesaikan hanya dengan metode pengetikan ilmiah bilangan acak ke dalam register tertentu (semacam kebalikan). Seringkali prosesor memiliki beberapa jenis fungsi,dan selain Anda, belum ada yang mengimplementasikan fungsi ini (terutama jika prosesornya baru). Dan ini berjalan di ladang dengan penggaruk, dimana 70% nya adalah anak-anak. Tetapi bila ada dokumentasi, bahkan dengan kesalahan, ini sudah berjalan. Cukup sering terjadi bahwa tidak ada dokumentasi sama sekali, dan di sini berjalan sudah dimulai di ladang ranjau, ketika besi terbakar. Dan ya, saya juga berhasil memecahkan masalah seperti itu.



Wawancara



Pendapat saya adalah bahwa ada gunanya melakukan wawancara di suatu tempat setidaknya sekali setiap enam bulan, bahkan jika Anda menyukai pekerjaan Anda dan tidak ingin mengubahnya. Wawancara memungkinkan Anda untuk memahami level Anda sebagai seorang spesialis. Saya pikir wawancara yang paling berharga adalah kegagalan. Mereka adalah orang-orang yang paling akurat menunjukkan hambatan mana dari pengetahuan mereka yang perlu diperketat.



Fitur menarik lainnya adalah kualitas wawancara. Ini adalah pengamatan saya, dan itu tidak benar, saya akui bahwa saya sangat beruntung. Jika wawancara tersebut ditulis:



  • ceritakan tentang diri Anda;
  • kami memiliki tugas seperti itu;
  • kamu suka?


Dan jika setelah dialog ini Anda menyukai satu sama lain, Anda pergi bekerja, maka biasanya perusahaan dan tugas menjadi sangat menyenangkan dan memadai. Jika sebuah wawancara menyerupai melewati 12 lingkaran neraka: wawancara pertama dengan HR, kemudian wawancara dengan sekelompok programmer, kemudian dengan direktur, lebih banyak pekerjaan rumah, dll., Maka biasanya ini adalah organisasi yang gagal di mana saya tidak bekerja untuk waktu yang lama. Sekali lagi, ini adalah pengamatan pribadi, tetapi sebagai aturan, terlalu banyak birokrasi dan proses perekrutan yang panjang menunjukkan bahwa proses yang persis sama terjadi di dalam perusahaan. Keputusan dibuat dengan lambat dan tidak efektif. Ada juga situasi yang berlawanan, ketika ada lingkaran wawancara yang luar biasa, dan perusahaan itu ternyata cantik, dan ketika, setelah mendapat tamparan di tangan, perusahaan itu berubah menjadi rawa, tetapi ini jarang terjadi.



Jika Anda berpikir bahwa skenarionya: bertemu, berbicara tentang diri Anda sendiri dan mendapat pekerjaan, hanya ada di perusahaan kecil, maka tidak. Saya telah melihat ini di perusahaan yang sangat 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 menghubungi perusahaan Anda sebelumnya dan menanyakan tentang Anda.



Bagi saya, indikator perusahaan yang sangat baik ketika diminta untuk menunjukkan contoh proyek dan kode mereka. Tingkat pelatihan pelamar segera ditampilkan. Dan, bagi saya, dari sudut pandang pemilihan calon, ini adalah cara seleksi yang paling efektif daripada wawancara yang mencolok. Faktanya, dalam sebuah wawancara, Anda bisa gagal karena kegembiraan, atau sebaliknya, keluar karena adrenalin. Tetapi dalam pekerjaan nyata, Anda tidak dapat mengatasi tugas nyata. Dan saya juga menemukan ini ketika saya sendiri mewawancarai orang. Seorang spesialis datang, menunjukkan dirinya dengan sempurna, saya menyukainya, dia menyukai kami. Dan dengan tugas paling sederhana yang saya derita selama sebulan, sebagai hasilnya, programmer lain menyelesaikannya dalam beberapa hari. Saya harus berpisah dengan programmer itu.



Dalam wawancara, saya sangat menghargai tugas-tugas pemrograman. Dan yang harus diselesaikan dengan benar selama rapat, dalam stres, dan pekerjaan rumah. Yang pertama menunjukkan seberapa siap Anda dengan cepat dan akurat menyelesaikan masalah dalam situasi stres dan situasi darurat. Yang kedua menunjukkan tingkat kompetensi dan kemampuan Anda untuk 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 fantastis yang tidak pernah diimpikan oleh programmer komersial. Superkomputer, merancang router, berbagai kompleks pertempuran nodal - sangat mengasyikkan. Ketika, selama parade, Anda melihat kompleks yang menyimpan kode Anda sendiri, itu sangat bagus. Anehnya, wawancara di perusahaan semacam itu, sebagai suatu peraturan, sangat sederhana, secara harfiah datang, menyukainya - diterima (mungkin, hal-hal spesifik militer, yang tidak suka dipusingkan, ditumpangkan). Tugas yang harus saya hadapi di sana sungguh menarik dan sulit. Dengan pengalaman, adalah baik untuk belajar dari mereka untuk menjadi programmer sistem yang berkualitas. Ada juga kerugiannya, dan ini bahkan bukan upah rendah.Saat ini, gaji di kompleks pertahanan cukup layak, dengan bonus dan roti. Biasanya, ini adalah birokrasi besar, jam kerja tidak teratur, pekerjaan terburu-buru tanpa akhir, pekerjaan dalam tekanan besar. Dalam kasus tertentu, kerahasiaan tidak dapat dikesampingkan, yang menambah masalah tertentu saat bepergian ke luar negeri. Ditambah, tentu saja, tirani para kepala sepatu, dan ini, sayangnya, juga terjadi. Meskipun pengalaman bekerja dengan perwakilan pelanggan sangat menyenangkan bagi saya. Ini merupakan kesan kolektif dari tiga lembaga penelitian dan perusahaan berbeda yang terkait dengan ketertiban pertahanan negara.Tentu saja, tirani para kepala sepatu, dan ini, sayangnya, juga terjadi. Meskipun pengalaman bekerja dengan perwakilan pelanggan sangat menyenangkan bagi saya. Ini merupakan kesan kolektif dari tiga lembaga penelitian dan perusahaan berbeda yang terkait dengan ketertiban pertahanan negara.Tentu saja, tirani para kepala sepatu, dan ini, sayangnya, juga terjadi. Meskipun pengalaman bekerja dengan perwakilan pelanggan, yang saya miliki, sangat menyenangkan. Ini merupakan kesan kolektif dari tiga lembaga penelitian dan perusahaan berbeda yang terkait dengan ketertiban pertahanan negara.





Untuk menghindari kesalahpahaman dan agar tidak mengungkap perusahaan tempat saya mewawancarai, saya tidak akan menggoda nasib dan menunjukkan data mereka. Tetapi saya berterima kasih untuk setiap wawancara, atas waktu yang telah diberikan orang kepada saya, atas kesempatan untuk melihat diri saya dari luar. Saya hanya dapat mengatakan bahwa tugas tersebut untuk perusahaan internasional besar yang diwakili di berbagai negara.



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



Topik kedua dalam hal polaritas adalah petunjuk, yang ini harus memantul dari gigi. Sehingga Anda terbangun di tengah malam dan Anda bisa menceritakan dan menunjukkan segalanya.



Dari beberapa wawancara, saya menarik pertanyaan di kepala saya, dan saya akan memberikannya di sini, karena menurut saya cukup menarik. Sengaja saya tidak memberikan jawaban atas pertanyaan-pertanyaan tersebut agar pembaca bisa mandiri menjawab pertanyaan tersebut di kolom komentar dan ada sedikit bedak saat melewati wawancara yang sesungguhnya.



Pertanyaan nomor 1

I. Pengetahuan tentang SI. Apa maksud dari entri berikut ini:



const char * str;

char const * str;

const * char str;

char * const str;

const char const * str;


Apakah semua entri benar?



II. Mengapa program ini melakukan kesalahan segmentasi?



int main ()
{
       fprintf(0,"hello\n");
       fork();
       return(0);
}


III. .



. , . 1 /. , . , .



Wawancara berikutnya merupakan kegagalan bagi saya dan saya menganggapnya paling bermanfaat dalam praktik pemrograman saya. Itu menunjukkan betapa dalamnya ketidakmampuan saya. Sebelum wawancara ini, saya sudah familiar dengan masing-masing pertanyaan ini dan mereka selalu bertemu dalam latihan saya, tetapi entah bagaimana saya tidak terlalu mementingkannya, dan karenanya saya tidak memahaminya untuk lima besar. Oleh karena itu, ujian ini, saya gagal dengan aib. Dan saya sangat bersyukur bahwa kegagalan seperti itu terjadi, itu memberikan efek yang paling serius bagi saya. Anda berpikir bahwa Anda adalah seorang spesialis yang keren, Anda tahu sirkuit, antarmuka, 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, di x86. Apa bedanya?
  • ? , ?
  • i2c spi?
  • i2c ?
  • RS-232 : RX TX? : , , 9600, !!!
  • : ?
  • ? , ? ( ).
  • ?
  • RS-485. . , , . ?
  • ?
  • Bagaimana cara bekerja dengan cmake?
  • Pertanyaan tentang membangun yocto linux.


Tujuan dari wawancara ini:



1. Menulis sebuah fungsi yang membalik uint32_tsemua bit. (mereka suka bekerja dengan ketukan saat wawancara, saya sarankan)

2.



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


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



3. Fungsi menghitung mean aritmatika dari dua angka int32_t.



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


Pilihan ketiga relatif baru-baru ini, dan saya tidak akan terkejut jika masih ada kuesioner seperti itu, jadi saya tidak akan mengungkapkan perusahaan agar tidak mengeksposnya ... Tetapi secara umum saya akan memberikan contoh pertanyaan yang mungkin, dan jika Anda menemukan pertanyaan Anda, maka saya menyapa :).



Pertanyaan wawancara # 3

  1. , .
  2. ls. ā€œ-lā€.
  3. . ?
  4. RS-232? RS-485 RS-232? RS-232 RS-485 ?
  5. USB ( )?
  6. .


—



Bab ini bahkan bukan untuk programmer (meskipun untuk mereka juga), tetapi lebih untuk HR. Perusahaan yang paling memadai tidak memperhatikan hasil wawancara dengan cermat. Adalah normal untuk membuat kesalahan, paling sering mereka melihat dengan tepat bagaimana seseorang dapat menyelesaikan masalah dan alasan.



Salah satu masalah utama adalah bahwa seorang kandidat berhasil memecahkan masalah dalam wawancara, menunjukkan dirinya sebagai spesialis yang sangat baik, tetapi bergabung dalam tugas nyata pertama. Saya tidak akan licik, saya punya ini juga. Dia berhasil melewati semua lingkaran neraka, menyelesaikan semua tugas ujian, tetapi dalam kondisi nyata pekerjaan itu ternyata terlalu berat karena kurangnya pengalaman yang dangkal. Masuk ke dalam organisasi bukanlah tugas yang paling sulit. Hal tersulit adalah tetap di perusahaan ini.



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



Ada pilihan lain untuk wawancara: ketika Anda berhasil lulus, tetapi menurut hasil wawancara, Anda memahami bahwa pemberi kerja sama sekali tidak memadai. Saya langsung menolak bekerja jika saya ditawari bekerja sebagai wirausahawan perorangan, menjanjikan penghasilan besar. Ini adalah bentuk penghindaran pajak untuk organisasi saat ini, dan mengapa masalah pemberi kerja membuat saya khawatir sebagai programmer? Pilihan lainnya adalah berbagai instansi pemerintah. Saya pernah wawancara, dan hasilnya saya ditawari gaji yang bagus, tetapi mereka mengatakan bahwa programmer sebelumnya berhenti, jatuh sakit, meninggal, ribut karena beban kerja dan hari kerja Anda dimulai jam 8 pagi. Saya juga lari dari tempat seperti itu sehingga tumit saya berkilau. Ya, HR memperhatikan bahwa programmer siap melepaskan bahkan lowongan yang paling enak jika hari kerja harus dimulai pagi-pagi sekali.



Pada akhirnya saya akan memberikan video yang sangat bagus tentang pemilihan programmer, 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 dan pergi - ini normal. Jika HR dan manajer pada wawancara menegaskan diri mereka atas biaya Anda, ini menunjukkan toksisitas perusahaan dan Anda tidak boleh bekerja di sana, kecuali jika Anda menyukai bos yang tidak memadai.





kesimpulan



Programmer, lakukan wawancara! Dan usahakan untuk selalu naik. Misalnya, jika Anda menerima uang N, pergilah ke wawancara minimal N * 1,2, dan sebaiknya N * 1,5. Bahkan jika Anda tidak segera mengambil pekerjaan ini, Anda akan mengerti apa yang dibutuhkan untuk tingkat gaji ini.

Pengamatan saya telah menunjukkan bahwa pengetahuan yang baik tentang bahasa Inggris, banyak pengalaman di industri dan kepercayaan diri sangat menentukan. Yang terakhir adalah kualitas utama, seperti di tempat lain dalam kehidupan. Biasanya, kandidat yang lebih percaya diri dapat lulus wawancara dengan lebih sukses, bahkan dengan lebih banyak kesalahan, daripada kandidat yang sangat baik, tetapi lebih pemalu dan proaktif. Semoga berhasil dengan wawancara Anda!



Kompetisi P / S



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










All Articles