Apa saja pertanyaan untuk menguji pengetahuan pemrogram tentang SQL? [Tutup]

14

Apa saja pertanyaan untuk menguji pengetahuan pemrogram tentang SQL? Apa jawaban untuk pertanyaan itu? Dan apa artinya kurangnya jawaban yang benar dalam hal waktu yang mungkin untuk memahami konsep yang terkait dengan pertanyaan?

GOOGLED: sql challenge

kesalahan besar
sumber
2
Saya pasti akan memberikan contoh nyata dan meminta untuk menulis pertanyaan yang kompleks. Misalnya, minta memilih bulan paling menguntungkan untuk masing-masing 10 tahun terakhir, jika Anda memiliki tabel pembelian. TETAPI karena Anda bertanya tentang pertanyaan dan jawaban juga, itu mungkin berarti Anda bukan ahli dan tidak bisa menilai. Dalam hal ini Anda dapat mencoba beberapa layanan pengujian pihak ketiga, setidaknya sebagai filter awal sebelum wawancara. Saya akan menyarankan tes4geeks.com . Mereka memiliki tes SQL.
Dhaval Patel

Jawaban:

20

Itu tergantung pada seberapa sulit yang Anda inginkan. Juga, saya sedikit khawatir memberi Anda jawaban karena sebagian besar masalah SQL memiliki beberapa cara yang dapat diterima untuk melakukan sesuatu dan ada juga cara memecahkan masalah SQL dengan cara ceroboh yang akan menyebabkan masalah lain. Orang yang "menilai" jawabannya pasti harus dapat menyelesaikannya sendiri.

Yang mengatakan, inilah beberapa saya datang dengan kepala saya.

Level Sangat Mudah:
Diberikan tabel karyawan dengan kolom EmpID, FirstName, Lastname, HireDate, dan TerminationDate:
Tulis kueri untuk mengembalikan semua karyawan yang masih bekerja untuk perusahaan dengan nama belakang dimulai dengan "Smith" yang diurutkan berdasarkan nama belakang lalu nama depan.

Tingkat Mudah
Diberikan tabel Karyawan di atas, ditambah tabel baru "Ulasan Tahunan" dengan kolom EmpID, dan ReviewDate:
Tulis kueri untuk mengembalikan semua karyawan yang belum pernah memiliki ulasan yang disortir oleh HireDate.

Tingkat Menengah Dengan tabel karyawan di atas, tulis kueri untuk menghitung perbedaan (dalam hari) antara karyawan dengan masa kerja paling lama dan paling sedikit yang masih bekerja untuk perusahaan?

Tingkat Keras
Mengingat tabel karyawan di atas, tulislah kueri untuk menghitung periode terpanjang (dalam beberapa hari) yang telah dilalui perusahaan tanpa mempekerjakan atau memecat siapa pun.

Tingkat yang Lebih Keras
Lagi menggunakan tabel yang sama, tulis kueri yang mengembalikan setiap karyawan dan untuk setiap baris / karyawan termasuk jumlah karyawan terbanyak yang bekerja untuk perusahaan kapan saja selama masa jabatan mereka dan tanggal pertama saat maksimum tercapai. Poin ekstra untuk tidak menggunakan kursor.

JohnFx
sumber
Bagus, jawab - sangat suka evolusi pertanyaan. Mengapa orang yang mengajukan pertanyaan harus dapat menjawabnya? Mengapa tidak hanya menulis unit test berdasarkan output dan runtime? Juga, apa yang akan Anda katakan jumlah minggu ikat kemajuan penguasaan konsep SQL akan mengambil programmer rata-rata untuk mencapai tingkat paling sulit yang diberikan oleh Anda? Apakah Anda juga percaya bahwa seorang programmer dapat menjawab pertanyaan tersulit yang Anda berikan akan dapat secara efektif mengatasi sebagian besar tugas terkait SQL?
kesalahan
3
Alasan saya ingin penanya (atau paling tidak "siswa kelas") untuk dapat menjawabnya adalah bahwa pendekatannya dapat memberi tahu Anda sebanyak hasilnya. Saya juga khawatir tentang pewawancara nonteknis yang memiliki jawaban pra-tertulis dan tidak menerima jawaban yang berpotensi benar lainnya (Kartu tersebut bertuliskan "Moop").
JohnFx
Seperti apakah pertanyaan-pertanyaan ini menunjukkan kemampuan untuk mengatasi sebagian besar tugas terkait SQL. Jika pekerjaan mereka adalah menulis pertanyaan, mungkin demikian. Jika Anda mengharapkan mereka untuk mengelola server DB, maka Anda harus mengajukan pertanyaan khusus untuk itu.
JohnFx
Terima kasih atas klarifikasi, pewawancara non-teknologi dalam kasus ini tidak akan menjadi orang, tetapi sebuah sistem, maka unit test dan runtime. Jelas sistem tidak menulis atau membaca kode, manusia, tetapi ada begitu banyak programmer di dunia, dan kebutuhan menurut saya untuk memilikinya di tempat terbatas pada yang terbaik. Tebak jika seseorang gagal dalam tes, tetapi berpikir mereka benar, mereka selalu dapat menandai sebagai benar.
kesalahan
Dan ya, target pertanyaannya adalah seorang programmer, bukan admin-database.
kesalahan
4

Saya biasanya hanya duduk di wawancara untuk spesialis data, jadi pertanyaan saya cenderung sulit. Tapi satu hal yang saya perlukan dari siapa pun yang akan menulis SQL adalah pengetahuan tentang bergabung dan kapan menggunakan gabungan kiri vs gabungan batin. Siapa pun yang tidak mengerti yang tidak memiliki bisnis meminta database dengan cara atau bentuk apa pun.

Hal lain yang akan saya lakukan adalah memastikan mereka memahami cara melakukan GROUP BY dan menggunakan fungsi Agregat.

Dan perbedaan antara UNION dan UNION ALL telah menghilangkan banyak kandidat miskin di pekerjaan saya.

HLGEM
sumber
2

Saya akan bertanya "Mengapa dan bagaimana Anda harus membersihkan nilai input yang diberikan dari pengguna yang akan digunakan dalam query SQL?"

Hal ini diperlukan untuk mencegah SQL suntikan, dan mampu menjawab ini membutuhkan pengetahuan yang baik tentang sintaks dan perintah (seperti SQL SELECT, UPDATE, DROP, DELETE, dll), serta bagaimana mereka dapat dielakkan dengan menggunakan SQL komentar untuk memecahkan query dan menyuntikkan apa yang ingin dilakukan pengguna ganas.

Gablin
sumber
1
Bukankah jawabannya: jangan pernah membersihkan input, gunakan pernyataan yang sudah disiapkan?
kevin cline
@Emmad Kareem, siapa pun yang tidak bisa menjawab yang seharusnya tidak menulis SQL.
HLGEM
@ Gablin, aku benar-benar tidak mengerti mengapa begitu. Bisakah Anda jelaskan sedikit? Berapa banyak buku SQL yang membahas hal ini?
NoChance
2

Saya memiliki andil dalam mengembangkan tes teknis untuk pemrogram basis data. Pertanyaan-pertanyaan itu yang saya anggap cukup mendasar: tulis pernyataan CREATE TABLE untuk struktur tabel yang diberikan; lakukan beberapa pertanyaan sederhana; dll.

Sebagian besar pelamar pekerjaan yang menyebut diri mereka ahli di SQL gagal dalam ujian. Salah satu mengatakan bahwa meskipun ia telah menjadi pengembang SQL selama bertahun-tahun, ia tidak pernah menulis pernyataan CREATE TABLE karena GUI melakukannya untuknya.

Kami memiliki pengalaman serupa dengan tes teknis lainnya. Untuk staf dukungan Windows, tugasnya mirip dengan "membuat pengguna domain," "menambahkan printer," "mengubah izin pada file." Kebanyakan orang tidak dapat melakukan tugas-tugas itu, terutama di bawah tekanan. Kami pikir jika Anda dapat melakukan bahkan hal-hal sederhana, Anda mungkin cukup kompeten.

Barry Brown
sumber
1
Saya khawatir saya berada di pihak pengembang menggunakan GUI. Anda dapat menghabiskan seluruh karier tanpa secara teratur menulis skrip CREATE TABLE. Banyak orang mengembangkan model data dalam alat CASE yang secara otomatis menghasilkan DDL untuk Anda. Secara umum, saya menghindar dari setiap tes yang terutama mengandalkan sintaksis menghafal, mendukung mereka yang menguji pemahaman yang lebih luas tentang masalah yang terlibat
cjmUK
+1 @Barry Brown: Saya setuju, dan ini poin yang menarik.
kesalahan
0

Jika Anda lebih suka mengajukan lebih banyak pertanyaan terbuka: Ajukan pertanyaan umum tentang DATE, DATETIME ... tipe data. Tanyakan tentang perbedaan antara implementasi / produk vendor yang berbeda. Bicara tentang alat baris perintah, pemuat massal, printer cantik ... mungkin Anda dapat mempelajari trik baru selama wawancara.

knb
sumber