Bagaimana Anda mewawancarai pemohon Database Programmer / Admin?
12
Selama wawancara, saya mengajukan pertanyaan desain database dasar. Normalisasi (Kapan-Mengapa) adalah salah satu perhatian saya ketika datang ke desain database. Beberapa skenario I situs yang melibatkan server yang disinkronkan dan apa / mengapa / bagaimana mereka mempertimbangkan masalah terkait; masalah keamanan dan sebagainya.
Apakah Anda akan meminta mereka dari konteks sistem basis data tertentu (misalnya Oracle) yang mereka sukai?
Pertanyaan teknis apa yang ingin Anda tanyakan?
Skenario apa yang akan Anda tempatkan dan apa yang akan Anda cari sebagai jawaban atas skenario itu?
Bagaimana Anda mengetahui jika mereka memiliki pengetahuan dalam menangani masalah keamanan?
Pertanyaan terkait lainnya. (mis. Pemulihan DB / Cadangan)
Saya perhatikan orang lain menyarankan agar kandidat memecahkan masalah server. Jika Anda mengambil pendekatan itu, gunakan mesin virtual dengan snapshot. Siapkan server dengan cara tertentu dengan konfigurasi atau masalah kinerja tertentu, ambil snapshot darinya, dan kemudian setelah setiap wawancara Anda dapat kembali ke snapshot tersebut.
Jika Anda melakukannya, batasi tugas dengan jenis tugas yang sebenarnya Anda inginkan. Jangan tanya DBA produksi tentang normalisasi, dan jangan tanya DBA pengembangan mengapa satu node tidak akan bergabung dengan cluster.
Tugas DBA produksi mungkin:
Atur pekerjaan untuk cadangan, pemeliharaan indeks, dan DBCC. Lihat apakah mereka bertanya seberapa sering Anda ingin database didukung, dan apakah Anda ingin didukung secara lokal atau di seluruh jaringan. Jangan tanya mereka cara mengkonfigurasi perangkat lunak cadangan tape tertentu kecuali itu sudah ada di resume mereka.
Cari tahu mengapa Johnny tidak bisa masuk dan menjalankan kueri.
Seseorang mengeluh tentang permintaan yang lambat. Tunjukkan pada saya di mana Anda akan mencari tahu apa yang terjadi. Lalu katakan mereka baru saja menelepon dan mengatakan permintaan mereka selesai, tetapi mereka ingin memastikan itu tidak terjadi lagi.
Pulihkan satu tabel dari cadangan semalam.
Tugas pengembangan mungkin:
Debug prosedur tersimpan ini.
Tafsirkan rencana eksekusi ini.
Buat tampilan untuk bergabung dengan pelanggan ke faktur.
Gunakan skema AdventureWorks. Kemungkinan mereka belum bermain dengannya baru-baru ini, tetapi setidaknya mudah untuk dijelaskan.
Betulkah? Daftar pertanyaan DBA junior itu konyol. Itu adalah pertanyaan yang saya akan dapatkan jawaban yang benar dari pengembang setelah semester pertama mereka di perguruan tinggi. Saya lebih menyukai pertanyaan Sr. DBA, kecuali untuk "Saya seorang pengembang. Jelaskan mengapa saya perlu kunci unik di meja saya." Saya rasa itu karena saya ingin percaya pengembang sudah tahu itu. Saya seorang pengembang dan tidak tahu apa pun yang tidak dapat mengambil setidaknya peran Jr DBA: o
Gromer
5
Anda akan terkejut. Saya telah mewawancarai puluhan kandidat DBA untuk pekerjaan enam digit yang tidak memiliki jawaban atas pertanyaan Tom.
Brent Ozar
2
Setuju dengan apa yang dikatakan Brent. Setelah melakukan banyak wawancara, saya memiliki beberapa kandidat masuk yang tidak bisa menjawab pertanyaan DBA junior, meskipun resume yang mengatakan mereka memiliki 10 tahun Oracle dan 5 tahun SQL Server dan sertifikat OCP dan MCDBA.
K. Brian Kelley
3
Saya juga mendapatkan kekecewaan dari komentar Gromer tentang keinginan untuk percaya pengembang sudah tahu mereka membutuhkan kunci unik di meja mereka. Jika saya memiliki $ 1 untuk setiap keterlibatan konsultasi di mana saya masuk dan memperbaiki masalah kinerja hanya dengan menambahkan kunci utama - oh, tunggu, saya lakukan, dan itu jauh lebih dari $ 1. ;-)
Brent Ozar
1
Ingat, kita berbicara tentang menyaring pengembang yang tidak Anda rekrut. Tentu, Anda ada di sekitar pengembang yang cerdas - tetapi hanya karena Anda tidak merekrut yang kalah. Pertanyaan-pertanyaan ini menyaring yang kalah.
Brent Ozar
9
Dalam tim perangkat lunak saya sebagai bagian dari wawancara, kami menguji pemahaman Database.
Kami menyajikan - desain yang sangat buruk (pikirkan aplikasi jenis CRM) dan minta mereka untuk memperbaiki desain, setelah sekitar 30 menit waktu berpikir.
Kami kemudian mengajukan lebih banyak pertanyaan kepada mereka berdasarkan apa yang mereka bicarakan.
Kami sedang mencari pengertian
Kinerja V Normalistion
Desain Utama dan Integritas Referenital
Tempat untuk perbaikan -yaitu Struktur DB Alternatif - Pemicu, Tampilan, Pengadaan
Area yang lemah dalam desain - bagaimana mengatasi banyak hubungan
Bagaimana ini mempengaruhi server - maintaince
Masalah Keamanan Data
Masalah Keamanan Aplikasi
Kami sebagai sebuah tim kemudian memikirkan tentang apa yang kami anggap sebagai tipe jawaban Junior / Senior / Architect untuk tipe-tipe pertanyaan ini.
Jadi untuk - Kinerja v Normalisasi -
akan melihat masalah di tempat pertama dan dapat mendiskusikan mengapa (Junior)
akan merekomendasikan 4/5 NF tetapi memahami masalah dengan kinerja akankah mereka menormalkan dan memahami bagaimana mengartikulasikan masalah (Senior)
apakah mereka akan merekomendasikan jenis desain yang berbeda misalnya Skema Bintang dan mendiskusikan implikasi pada banyak tingkatan (Arsitek)
Desain Utama dan Integritas Referensial
Akan melihat integritas ref diperlukan untuk menegakkan hubungan data dan dapat mendiskusikan hal ini tetapi tidak akan melihat masalah dengan Pilihan Utama dan Desain (Junior)
Akan membahas masalah yang harus dilakukan dengan volume data dan tipe data v mencari kunci alami dalam data dan akan dapat mendiskusikan mengapa mereka melihat ini - dan masalah yang mengikuti dengan integritas referensial (Senior)
Dapat memperdebatkan berbagai sudut pandang terkait dengan Kunci dan Integritas dan dapat menghasilkan berbagai model aktual untuk desain cepat (Arsitek)
Anda mendapatkan fotonya.
Jika Anda ingin saya menambahkan lebih banyak maka kirim komentar dan akan merinci apa yang kami pikirkan tentang sisanya tetapi hanya termasuk dua yang pertama untuk memberi Anda ide tentang apa yang kami pikirkan.
Intinya adalah untuk memikirkan 1. pertanyaan 2. Kami sebagai tim kemudian telah memikirkan apa yang akan kami anggap sebagai tipe jawaban Junior / Senior / Architect untuk jenis pertanyaan ini.
Saya menekankan tim sebagai kandidat dan tim harus percaya diri pada keterampilan orang yang datang, dan jika mereka telah menemukan apa yang mereka lihat sebagai jawaban untuk tingkat yang berbeda, orang yang masuk diharapkan akan cocok dengan tim yang lebih baik. Ini juga memberi tim kemampuan untuk mempengaruhi pilihan kandidat. Mereka juga mencalonkan seseorang untuk berada di panel pertanyaan. Membantu banyak dengan dukungan tim.
Anda bisa membuat database fiksi di mana ada beberapa masalah normalisasi, gangguan keamanan potensial tetapi secara umum terlihat sangat khas, seperti database karyawan. Anda kemudian dapat mulai dengan mengajukan pertanyaan sederhana kepada orang yang diwawancarai mengenai bagaimana mereka akan mendapatkan data tertentu dalam database melalui gabungan, bekerja hingga pertanyaan sulit tentang masalah normalisasi dan keamanan.
... dan tanyakan kepada mereka buku apa yang telah mereka baca belakangan ini, blog apa yang mereka baca, dan podcast apa yang mereka dengarkan. Dan tanyakan apakah mereka berpartisipasi di stackoverflow.com dan serverfault.com ;-)
Dan lakukan pemeriksaan latar belakang kriminal juga, jika mereka akan berurusan dengan data sensitif. Anda tidak ingin seseorang yang cerdas, akan sesuatu, dan jahat ;-)
Terima kasih - Posting Yegge menyenangkan dan menggugah pikiran. Saya terutama menyukai ini: "Anda menginginkan seseorang yang seperti manusia super. Seseorang yang dapat mengajari Anda banyak hal. Seseorang yang Anda kagumi dan berharap bisa ditiru, bukan seseorang yang menurut Anda akan mengagumi dan meniru Anda."
Chris W. Rea
1
Ini belum tentu terkait dengan basis data, tetapi hal-hal yang ingin saya tambahkan ke wawancara adalah penyelesaian langsung dan skenario desain.
Untuk masalah langsung, miliki sistem atau sistem yang dapat diakses orang tersebut dan minta mereka memecahkan masalah yang berakhir terbuka. Favorit pribadi saya di sini adalah masalah kinerja, karena tidak perlu sesuatu yang dapat direproduksi sesuai permintaan untuk wawancara dan jarang ada satu jawaban yang benar. Sebagai gantinya, Anda dapat menyaksikan kandidat menjalankan proses pemecahan masalah mereka dan mereka juga perlu membuka diskusi dengan Anda untuk mendapatkan informasi lebih lanjut tentang lingkungan. Kuncinya adalah agar pewawancara jujur tentang masalahnya dan tidak mengubah skenario menjadi perburuan paskah untuk pengaturan yang salah konfigurasi atau semacamnya.
Untuk skenario desain, saya memberi kandidat garis besar umum dari proyek baru (yaitu tidak ada dependensi warisan) dan meminta mereka untuk membuat desain umum di area khusus mereka (apakah DBA, sistem atau jaringan) yang memenuhi tujuan proyek. Kuncinya adalah menjaga proyek cukup kecil sehingga seseorang dapat menyimpan seluruh skenario di kepala mereka dan tidak perlu lebih dari beberapa menit untuk menjelaskan.
Contoh yang saya gunakan di sini untuk sistem saya dan orang-orang jaringan adalah untuk menggambarkan desain mereka untuk kantor cabang kecil yang didirikan, mengingat kendala tertentu dari bisnis kami. Di sisi DBA, mungkin menggunakan aplikasi CRUD kecil / jelas. Dalam kedua kasus tersebut, Anda tidak mencari desain terperinci tetapi lebih dari tinjauan umum dan melihat apakah kandidat mencari masalah umum yang muncul.
Poin penting untuk kedua skenario ini adalah membuka diskusi tentang topik tersebut, dan membiarkan kandidat memimpin diskusi dengan pertanyaan mereka sendiri. Seharusnya jelas bahwa Anda juga tidak meminta jawaban yang pasti.
Seperti yang dapat Anda bayangkan, saya sangat tidak suka hal-hal sepele dalam wawancara, dan saya pikir ini memberi saya pemahaman yang jauh lebih dalam tentang kemampuan kandidat.
biarkan dia bicara. tanyakan tentang pengalaman masa lalu, tanyakan masalah apa yang dia hadapi dan bagaimana penanganannya. apa motivasi untuk memilih ini atau itu untuk menyelesaikan masalah umum [cadangan? pemantauan? scaling out, scaling up, keamanan].
Saya pikir Anda bisa bercerita banyak tentang orang itu hanya dengan mendengarkan.
bermuka masam jika Anda mencari keahlian khusus di bidang yang diberikan ajukan pertanyaan terperinci - saran dari Stefan Thyberg sangat baik.
Dalam tim perangkat lunak saya sebagai bagian dari wawancara, kami menguji pemahaman Database.
Kami menyajikan - desain yang sangat buruk (pikirkan aplikasi jenis CRM) dan minta mereka untuk memperbaiki desain, setelah sekitar 30 menit waktu berpikir.
Kami kemudian mengajukan lebih banyak pertanyaan kepada mereka berdasarkan apa yang mereka bicarakan.
Kami sedang mencari pengertian
Kami sebagai sebuah tim kemudian memikirkan tentang apa yang kami anggap sebagai tipe jawaban Junior / Senior / Architect untuk tipe-tipe pertanyaan ini.
Jadi untuk - Kinerja v Normalisasi -
akan melihat masalah di tempat pertama dan dapat mendiskusikan mengapa (Junior)
akan merekomendasikan 4/5 NF tetapi memahami masalah dengan kinerja akankah mereka menormalkan dan memahami bagaimana mengartikulasikan masalah (Senior)
apakah mereka akan merekomendasikan jenis desain yang berbeda misalnya Skema Bintang dan mendiskusikan implikasi pada banyak tingkatan (Arsitek)
Akan melihat integritas ref diperlukan untuk menegakkan hubungan data dan dapat mendiskusikan hal ini tetapi tidak akan melihat masalah dengan Pilihan Utama dan Desain (Junior)
Akan membahas masalah yang harus dilakukan dengan volume data dan tipe data v mencari kunci alami dalam data dan akan dapat mendiskusikan mengapa mereka melihat ini - dan masalah yang mengikuti dengan integritas referensial (Senior)
Dapat memperdebatkan berbagai sudut pandang terkait dengan Kunci dan Integritas dan dapat menghasilkan berbagai model aktual untuk desain cepat (Arsitek)
Anda mendapatkan fotonya.
Jika Anda ingin saya menambahkan lebih banyak maka kirim komentar dan akan merinci apa yang kami pikirkan tentang sisanya tetapi hanya termasuk dua yang pertama untuk memberi Anda ide tentang apa yang kami pikirkan.
Intinya adalah untuk memikirkan 1. pertanyaan 2. Kami sebagai tim kemudian telah memikirkan apa yang akan kami anggap sebagai tipe jawaban Junior / Senior / Architect untuk jenis pertanyaan ini.
Saya menekankan tim sebagai kandidat dan tim harus percaya diri pada keterampilan orang yang datang, dan jika mereka telah menemukan apa yang mereka lihat sebagai jawaban untuk tingkat yang berbeda, orang yang masuk diharapkan akan cocok dengan tim yang lebih baik. Ini juga memberi tim kemampuan untuk mempengaruhi pilihan kandidat. Mereka juga mencalonkan seseorang untuk berada di panel pertanyaan. Membantu banyak dengan dukungan tim.
sumber
Anda bisa membuat database fiksi di mana ada beberapa masalah normalisasi, gangguan keamanan potensial tetapi secara umum terlihat sangat khas, seperti database karyawan. Anda kemudian dapat mulai dengan mengajukan pertanyaan sederhana kepada orang yang diwawancarai mengenai bagaimana mereka akan mendapatkan data tertentu dalam database melalui gabungan, bekerja hingga pertanyaan sulit tentang masalah normalisasi dan keamanan.
sumber
Lihat Smart dan Mendapat Hal-hal yang Dilakukan
... dan tanyakan kepada mereka buku apa yang telah mereka baca belakangan ini, blog apa yang mereka baca, dan podcast apa yang mereka dengarkan. Dan tanyakan apakah mereka berpartisipasi di stackoverflow.com dan serverfault.com ;-)
sumber
Ini belum tentu terkait dengan basis data, tetapi hal-hal yang ingin saya tambahkan ke wawancara adalah penyelesaian langsung dan skenario desain.
Untuk masalah langsung, miliki sistem atau sistem yang dapat diakses orang tersebut dan minta mereka memecahkan masalah yang berakhir terbuka. Favorit pribadi saya di sini adalah masalah kinerja, karena tidak perlu sesuatu yang dapat direproduksi sesuai permintaan untuk wawancara dan jarang ada satu jawaban yang benar. Sebagai gantinya, Anda dapat menyaksikan kandidat menjalankan proses pemecahan masalah mereka dan mereka juga perlu membuka diskusi dengan Anda untuk mendapatkan informasi lebih lanjut tentang lingkungan. Kuncinya adalah agar pewawancara jujur tentang masalahnya dan tidak mengubah skenario menjadi perburuan paskah untuk pengaturan yang salah konfigurasi atau semacamnya.
Untuk skenario desain, saya memberi kandidat garis besar umum dari proyek baru (yaitu tidak ada dependensi warisan) dan meminta mereka untuk membuat desain umum di area khusus mereka (apakah DBA, sistem atau jaringan) yang memenuhi tujuan proyek. Kuncinya adalah menjaga proyek cukup kecil sehingga seseorang dapat menyimpan seluruh skenario di kepala mereka dan tidak perlu lebih dari beberapa menit untuk menjelaskan.
Contoh yang saya gunakan di sini untuk sistem saya dan orang-orang jaringan adalah untuk menggambarkan desain mereka untuk kantor cabang kecil yang didirikan, mengingat kendala tertentu dari bisnis kami. Di sisi DBA, mungkin menggunakan aplikasi CRUD kecil / jelas. Dalam kedua kasus tersebut, Anda tidak mencari desain terperinci tetapi lebih dari tinjauan umum dan melihat apakah kandidat mencari masalah umum yang muncul.
Poin penting untuk kedua skenario ini adalah membuka diskusi tentang topik tersebut, dan membiarkan kandidat memimpin diskusi dengan pertanyaan mereka sendiri. Seharusnya jelas bahwa Anda juga tidak meminta jawaban yang pasti.
Seperti yang dapat Anda bayangkan, saya sangat tidak suka hal-hal sepele dalam wawancara, dan saya pikir ini memberi saya pemahaman yang jauh lebih dalam tentang kemampuan kandidat.
sumber
biarkan dia bicara. tanyakan tentang pengalaman masa lalu, tanyakan masalah apa yang dia hadapi dan bagaimana penanganannya. apa motivasi untuk memilih ini atau itu untuk menyelesaikan masalah umum [cadangan? pemantauan? scaling out, scaling up, keamanan].
Saya pikir Anda bisa bercerita banyak tentang orang itu hanya dengan mendengarkan.
bermuka masam jika Anda mencari keahlian khusus di bidang yang diberikan ajukan pertanyaan terperinci - saran dari Stefan Thyberg sangat baik.
sumber