Mewawancarai seseorang untuk keterampilan unix umum [tertutup]

20

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.

Christophe Vanfleteren
sumber
Pelatihan shell semacam itu adalah kue untuk siapa saja yang sudah tahu bahasa pemrograman. Sejak kapan orang peduli jika orang yang diwawancarai membuat kebenaran tampak sedikit lebih menyenangkan dalam resume mereka? Itu terjadi setiap saat. Kedengarannya kecil bagi saya.
Yam Marcovic
@YamMarcovic - Ketika Anda mengatakan "membuat kebenaran tampak sedikit lebih menyenangkan", apakah Anda mengatakan "mengklaim tingkat keterampilan yang tidak mereka miliki"? Jika ya, menurut saya itu cukup relevan untuk dicari tahu selama wawancara. Jika mereka berbohong untuk melewati pintu, bagaimana seseorang bisa mempercayai mereka begitu masuk?
Vatine
@Vatine Karena setidaknya dari pengalaman saya, semua orang melebih-lebihkan tingkat keterampilan mereka dalam resume. Jika Anda mendiskualifikasi orang-orang itu, Anda dipersempit untuk mempekerjakan orang yang secara dogmatis jujur, atau naif. Opsi itu jauh lebih sedikit.
Yam Marcovic

Jawaban:

13

Dari pengalaman pribadi saya, pengembang yang menggunakan sistem * nix perlu tahu:

  • variabel shell (cara mengatur / mendapatkan + pengetahuan tentang yang khusus seperti PATH)
  • pengalihan shell (menangkap output dari suatu program)
  • pipa (mengekstraksi beberapa informasi dari file log adalah contoh yang sangat baik)
  • kontrol proses (ps, nice / renice, kill)
  • hak akses file (ls / chmod / chown / chattr)
  • pengguna (tetapi sebagian besar dalam konteks file / proses, yaitu: apakah proses ini dapat mengakses file ini? mengapa bisa / tidak bisa?)

... dan sebagai bonus:

  • memulai / menghentikan layanan sistem

Set keterampilan seperti itu memungkinkan untuk melakukan sebagian besar tugas terkait pengembang dengan mudah.

Jacek Prucia
sumber
Jawaban bagus. Perintah apa yang digunakan untuk memulai / menghentikan layanan sistem?
Tim
11

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, moreatau less, viatau emacs, grep, awk, sed. Dengarkan baik-baik apakah dia menyebutkan man.

Jika untuk berkembang, dia harus akrab dengan makedan Makefiles, dan beberapa antarmuka kontrol sumber baris perintah ( svn, git, cleartool, hg, cvs...)

mouviciel
sumber
4
Saya tahu mandan saya menggunakannya setiap kali Google tidak membantu, tapi saya tidak akan pernah membawanya pada daftar perintah saya ...
Mehrdad
3
manadalah 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
mouviciel
@mouviciel: Ini juga cara belajar yang paling efisien tentang baris perintah unix ketika Anda online , karena sebagian besar forum akan 'membantu' memberitahu Anda untuk rtfm jika Anda bertanya kepada mereka rincian tentang perintah. Ini seharusnya baik-baik saja jika halaman manual tidak terlalu berbelit-belit dan sulit untuk menavigasi dokumentasi. Untungnya ada stackoverflow!
Joren
Saya tidak tahu tentang itu. Saya menggunakan halaman manual secara berlebihan dan saya tidak pernah memiliki masalah dengannya begitu saya terbiasa. Ini sepotong kue untuk menemukan apa yang Anda cari. Anda memiliki bagian, Anda memiliki "Lihat Juga", dan Anda dapat mencari semuanya dengan mengklik tombol. Anda mendapatkan halaman manual untuk setiap perintah dan setiap syscall, dan beberapa panggilan perpustakaan. Saya akan mengatakan halaman manual adalah apa yang membuat saya sangat mencintai UNIX.
Yam Marcovic
10

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".

Joe Internet
sumber
Ini cek kejujuran. Jika seseorang memasukkan pengalaman unix pada resume mereka (yang sebenarnya tidak kami butuhkan), saya ingin dapat memeriksa apa saja keterampilan yang diklaim itu. Jika Anda hanya dapat menggunakan cd dan ls, Anda tidak boleh mengklaim pengalaman unix.
Christophe Vanfleteren
Baiklah, saya kemudian akan bertanya kepada mereka sistem Unix apa yang mereka gunakan dan minta mereka membuat daftar perbedaan antara sistem Unix dan mungkin Linux / Mac
johannes
1
@ Christophe - Nah, ini masalahnya ... tidak masalah, karena mereka mungkin tidak akan bekerja untuk Anda. Ini adalah bendera merah utama bagi orang yang diwawancarai ketika majikan potensial mulai melakukan aksi konyol seperti ini karena mereka tidak percaya apa yang ada di resume. "Tes" Anda, dan pembenaran Anda untuk itu, pada dasarnya mengatakan bahwa Anda mencoba untuk merekrut seseorang untuk melakukan pekerjaan omong kosong di perusahaan kotoran. Saya mungkin salah, tapi saya rasa saya tidak salah. Namun, jika saya salah, saya sarankan Anda mengevaluasi kembali "harapan" Anda.
Joe Internet
1
@Yam - Dikatakan seperti ini ... jika Anda mempekerjakan dan seseorang mengirimi Anda resume yang Anda yakini dibuat-buat, Anda hanya tidak mewawancarai orang itu. Yang tidak Anda lakukan adalah membuat beberapa tes konyol yang a) Anda akui tidak berpengaruh pada persyaratan posisi, dan b) mengakui bahwa itu hanya dirancang untuk menguji "kejujuran" dari pengalaman seseorang yang diklaim. Jika seseorang bahkan tidak bisa mendapatkan wawancara di perusahaan OP tanpa "kejujuran" mereka dipertanyakan karena mereka mengatakan bahwa mereka telah menggunakan shell * nix, apa yang dikatakan tentang perusahaan? Bagi saya, ia mengatakan pekerjaan kotor di perusahaan kotoran. YMMV.
Joe Internet
1
@ Christophe - Jika Anda merekrut pemrogram * nix yang cakap, IMO wajar untuk menganggap bahwa mereka "bahwa mereka mengetahui jalan mereka di sekitar baris perintah". Jika Anda mempekerjakan pengembang OS lain yang cakap, IMO cukup beranggapan bahwa keterampilan baris perintah * nix mereka minimal. Grup A tidak perlu diuji, grup B mendapat kegagalan otomatis, jadi mengapa repot-repot mengujinya juga? Jika kriteria Anda untuk mempekerjakan pengembang perangkat lunak didasarkan pada seberapa baik mereka menggunakan baris perintah, well, saya pikir proses perekrutan Anda cacat. Akan berbeda jika shell scripting adalah tanggung jawab utama dari posisi tersebut.
Joe Internet
3

Dari atas kepala saya, saya mungkin akan menanyakan dua hal kepada mereka:

  1. Ketika Anda menggunakan commandline * nix sebelumnya, apakah Anda menemukan sebuah case, di mana perintah yang dipikirkan dengan baik menghemat banyak waktu? Jika demikian, jelaskan.

  2. 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")

jujur
sumber
2

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.

agas
sumber
1
menguji perintah vi, sheesh, aku akan lebih khawatir jika mereka tahu semuanya
NimChimpsky
1
baik jika orang itu mencapai Google dan mulai mengetik di bidang pencarian hal-hal seperti " vi perintah Editor " maka saya akan mempertimbangkan pengujian lulus 90% :)
gnat
1

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.

Insinyur Dunia
sumber
1

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.

Mehrdad
sumber
2
tetapi Anda mewawancarai kandidat untuk melakukan pekerjaan bukan untuk belajar.
NoChance
1
-1 @Emmad. Jadi, Anda tidak pernah mempelajari apa pun dalam pekerjaan apa pun yang Anda miliki ...?
3
-1 @EmmadKareem semua pekerjaan dipelajari dengan cara tertentu.
Nicholas Smith
Ya belajar diharapkan sampai batas tertentu, namun, kecuali perannya sepele saya berharap kandidat menjadi produktif dalam sekitar 2 minggu perekrutan, rata-rata di Kanada ini akan menelan biaya $ 3000! Kecuali keahliannya langka, ini yang saya harapkan.
NoChance
Kedengarannya seperti Emmad adalah orang yang saya tidak ingin bekerja, bersama dengan OP.
kirk.burleson
1

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
0

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.

Scott C Wilson
sumber
0

'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/passwddan /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.

Marcin
sumber
0

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.

Timmah
sumber
-1

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.

Pelaut Danubia
sumber
2
Pertanyaannya adalah tentang menguji apakah pengembang memiliki keterampilan Unix umum, tidak mengidentifikasi guru sysadmin yang memiliki fokus khusus pada Oracle dan Java.
Peter Taylor
JVN? Apa hubungan Jaringan Relawan Yahudi dengan ini?
ocodo