Bagaimana Anda menguji pengembang yang mengklaim memiliki pengalaman * nix shell (hanya untuk menjadi jelas, kami tidak ingin menguji apakah seseorang dapat mengembangkan di * nix, hanya bahwa mereka tahu jalan mereka di sekitar baris perintah).
Saya sedang berpikir untuk membuat mereka memecahkan masalah mendapatkan informasi dari file log, yang akan melibatkan beberapa dasar-dasar seperti cat, grep, cut, ... dikombinasikan dengan perpipaan.
Pengetahuan dasar apa lagi yang Anda minta? Sekali lagi, ini bukan untuk mewawancarai seseorang yang akan mengembangkan untuk sistem * nix, dan juga bukan untuk admin sistem * nix, tetapi hanya untuk pengembang reguler yang terkadang perlu melakukan beberapa pekerjaan pada sistem * nix.
Jawaban:
Dari pengalaman pribadi saya, pengembang yang menggunakan sistem * nix perlu tahu:
... dan sebagai bonus:
Set keterampilan seperti itu memungkinkan untuk melakukan sebagian besar tugas terkait pengembang dengan mudah.
sumber
Dari pengalaman saya dengan banyak kolega saya sejak saya mulai bekerja, tidak ada yang ingin memalsukan pengetahuan Unix: apakah mereka " tahu jalan mereka di sekitar baris perintah " atau mereka hanya mengatakan "tidak mungkin!".
Tanyakan saja apakah kandidat bersedia bekerja di workstation Unix dan biarkan dia memberi tahu Anda seberapa jauh ia bisa melalui bash. Dia akhirnya akan menyebutkan beberapa perintah; yang paling jelas adalah
cd
,cat
,more
atauless
,vi
atauemacs
,grep
,awk
,sed
. Dengarkan baik-baik apakah dia menyebutkanman
.Jika untuk berkembang, dia harus akrab dengan
make
dan Makefiles, dan beberapa antarmuka kontrol sumber baris perintah (svn
,git
,cleartool
,hg
,cvs
...)sumber
man
dan saya menggunakannya setiap kali Google tidak membantu, tapi saya tidak akan pernah membawanya pada daftar perintah saya ...man
adalah cara paling efisien untuk mempelajari tentang baris perintah dan pustaka unix saat Anda offline. Ngomong-ngomong, saya belajar Unix ketika alat paling canggih untuk mencari internet adalahtelnet archie.cs.mcgill.ca
Kenapa melakukan ini?
Shell * nix (dan shell OS lainnya, fwiw) adalah lingkungan kerja yang sangat dalam dan luas. Mungkin bagi seseorang untuk menghabiskan waktu bertahun-tahun bekerja di sana dan menggunakan hanya sebagian kecil dari kapasitas cangkang.
Jika Anda tidak mengharapkan orang tersebut untuk a) program shell, atau b) mengelola sistem dari shell, lalu mengapa itu penting? Apa pun yang dilakukan akan berada pada tingkat dasar sehingga lembar cheat * nix yang berguna akan lebih dari sekadar mengompensasi "kurangnya keterampilan".
sumber
Dari atas kepala saya, saya mungkin akan menanyakan dua hal kepada mereka:
Ketika Anda menggunakan commandline * nix sebelumnya, apakah Anda menemukan sebuah case, di mana perintah yang dipikirkan dengan baik menghemat banyak waktu? Jika demikian, jelaskan.
Tolong jelaskan perbedaan utama antara commandline * nix dan desktop Windows standar. Apa kelebihan dan kekurangan masing-masing?
Jelas, yang pertama akan memberi Anda indikasi seberapa dalam pengetahuan pemohon tentang baris perintah. Jika dia bekerja selama bertahun-tahun pada * nix, dia tidak akan hanya memberitahu Anda bahwa dia bangga telah menjalankan grep. Jangan berharap mereka mengingat perintah yang tepat tentu saja (selalu ada halaman manual untuk itu), tetapi gagasan umum tentang apa yang mereka lakukan.
Pertanyaan kedua bukannya memeriksa apakah mereka memahami apa yang benar-benar baik pada commandline dan untuk apa itu bukan alat yang cocok. Sangat mudah untuk belajar menggunakan palu, tetapi jauh lebih sulit untuk beralih ke alat lain jika palu tidak cocok. Jadi pertanyaan ini memberi Anda indikasi yang baik tentang pandangan pemohon di luar kotak * nix, ditambah itu cukup terbuka sehingga ia dapat (dan harus) menilai dengan sepengetahuannya. (Tidak ada yang lebih buruk daripada menjawab sesuatu seperti "uh .. windows memiliki windows itu")
sumber
Tergantung apa yang Anda ingin mereka lakukan.
Untuk mendapatkan informasi dari file log saran Anda untuk cat + grep masuk akal. Saya akan menambahkan ls, cd dan kurang / lebih untuk itu.
Jika Anda mengharapkan mereka juga melakukan beberapa pengeditan kecil (misalnya, dalam file konfigurasi), maka masuk akal untuk menambahkan pengujian untuk vi dan / atau emacs dan untuk hal-hal seperti cp / mv / rm / mkdir.
sumber
Saya akan merekomendasikan bahwa mereka tahu emacs atau vi / m, tar, sed, e / f / grep, berbagai kompiler, beberapa skrip shell. Mungkin menjalankan tes di mana mereka harus menggunakan alat-alat ini untuk mengambil beberapa kode dari satu file tanpa membukanya, masukkan ke dalam program lain; kemudian kompilasi program yang akan memecahkan beberapa kesalahan sepele. Mereka kemudian perlu menggunakan editor teks untuk masuk dan menemukan kesalahan, membuat kode berfungsi dan mengarsipkan biner. Kemudian kirimkan di suatu tempat sambil memberikan izin kepada penerima untuk menjalankannya.
sumber
Saya tidak tahu tentang Anda, tetapi saya akan agak kesal jika pewawancara saya bertanya kepada saya dan saya tidak tahu cara bekerja di Linux.
Anda seharusnya tidak benar-benar peduli tentang apa yang mereka ketahui saat ini , tetapi apa yang dapat mereka pelajari jika diberi kesempatan. Mempelajari alat * nix tidak terlalu sulit tetapi membutuhkan sedikit tekad - Anda harus benar-benar menguji kemampuan dan bukan pengetahuan.
sumber
Itu tergantung pada tingkat pengalaman yang Anda inginkan mereka miliki. JIKA ini bukan untuk seseorang yang akan mengembangkan untuk sistem * nix, dan juga bukan untuk admin sistem * nix, tetapi hanya untuk pengembang reguler yang terkadang perlu melakukan pekerjaan pada sistem * nix, berapa banyak pengalaman yang sebenarnya mereka butuhkan?
Apa pun yang dibutuhkan oleh pengembang seperti itu di * nix shells (ls, chmod, cat dll.) Mungkin dapat ditulis pada lembar contekan satu halaman. Jika demikian, membutuhkan * nix shell knowledge yang tidak diperlukan dapat menghilangkan beberapa kandidat yang baik.
sumber
Saya biasanya memilih tugas sederhana dan meminta orang itu untuk menulis skrip shell di papan tulis.
"Anda memiliki direktori" foo "dan direktori cadangan" foo_backup ". Tulis skrip shell untuk melihat apa yang telah berubah di" foo "karena" foo_backup "telah berubah.
sumber
'Jelaskan proses login di Linux, dengan detail sebanyak yang Anda rasa nyaman' adalah pertanyaan yang bagus. Proses login terjadi dengan melibatkan perpindahan pengguna, izin dan kepemilikan, dan banyak filosofi Unix umum. Jika mereka dapat dengan jelas menjelaskan bagaimana dan mengapa ada a
/etc/passwd
dan/etc/shadow
, dan bagaimana pengguna yang tidak berhak dapat mengubah kata sandi mereka sendiri tetapi tidak orang lain, itu berarti mereka 'mendapatkan' Unix.Satu lagi yang bagus adalah apa saja dengan penguraian log, atau audit keamanan cepat. Jika mereka dapat menambah total bandwidth yang dilayani untuk vhost tertentu dari log Apache, atau menemukan jika ada pengguna lain dalam sistem dengan jumlah 0, mereka berguna pada commandline.
Dan satu hal untuk TIDAK lakukan pada mereka: jangan membuat mereka melakukannya di atas kertas / papan tulis. Beri mereka sistem langsung (tetapi tidak ada internet karena itu hampir curang), dan perhatikan mereka pergi. Jika mereka tahu jalannya di halaman manual dan bisa membuat ekspresi multi-pipa dengan cepat, itu pertanda baik. Jika mereka membutuhkan google untuk semuanya, maka keahlian mereka dipertanyakan.
sumber
mengapa membuat mereka menulis program fungsional? apa yang salah dengan mengatakan "katakan padaku perbedaan antara grep dan sed, atau apa yang perintah X lakukan? dll dengan cara itu, Anda dapat memimpin mereka sedikit.
jika mereka meraba-raba tugas tertentu yang Anda berikan kepada mereka, Anda mungkin tidak berpikir mereka pintar. tetapi jika Anda mengajukan pertanyaan umum, Anda memberi mereka kesempatan untuk menunjukkan kepada Anda apa yang mereka ketahui, yang mungkin substansial tetapi dengan cara yang berbeda dari apa yang Anda tanyakan.
sumber
Unix gurus memiliki perintah commandline inti seperti sed, grep dll dalam satu jari dan dapat dengan mudah menggunakannya untuk mencapai apa yang mereka inginkan, menggunakan semua jenis tanda kutip, lanjutan ekspresi reguler dll., Jadi kadang-kadang Anda melihat skrip dan berpikir itu akan menjadi lebih mudah dipahami karena ditulis dalam bahasa Mandarin;)
Anda dapat berharap bahwa, terlepas dari pemrograman shell, mereka akan tahu setidaknya satu bahasa scripting tambahan, seperti Perl.
Mereka akan mengetahui konfigurasi internal sistem Unix, jadi jika Anda meminta mereka untuk mengubah tata letak keyboard (fg tambahkan beberapa ikatan ke alt kanan +) mereka tidak akan bingung.
Mengelola paket yang diinstal juga tidak akan menjadi masalah. Menginstal Oracle, menjalankan 4 server aplikasi, masing-masing dengan JVM lainnya - juga tidak ada masalah. Konfigurasi jaringan virtual, perutean lanjutan dan penyaringan port, mesin virtual dll., Mengelola keamanan - juga berlaku di sana.
sumber