Apa sajakah pertanyaan jenis FizzBuzz untuk pengembang web atau SQL? [Tutup]

10

Setelah beberapa saat, kami merekrut lagi, dan saya meninjau tes untuk programmer; beberapa dari mereka agak ketinggalan zaman. Apa saja pertanyaan jenis FizzBuzz untuk pengembang web dan SQL? Artinya, tidak terlalu sepele, tetapi masih bisa dipecahkan dalam lima hingga sepuluh menit dengan pena dan kertas dan tanpa Google?

Saya biasanya menghilangkan sekitar dua pertiga atau lebih dari kandidat berdasarkan CV, dan kemudian semua kecuali beberapa kandidat yang benar-benar baik dalam wawancara satu jam (yang dapat melalui telepon). Pada titik ini kandidat sedang menulis tes kepribadian dan memiliki kesempatan untuk menulis sedikit kode seperti FizzBuzz. Jadi, saya tidak mencoba untuk menghilangkan banyak kandidat, tetapi saya mencoba untuk memvalidasi penilaian awal saya bahwa kandidat dapat disewa dan mampu membuat kode.

Domchi
sumber
2
Keterampilan apa yang Anda cari dalam pengembang web?
Oded
Saya kira saya sedang mencari pemahaman tentang HTML / CSS / JSON / HTTP; seperti yang disebutkan Rachel, FizzBuzz baik untuk menguji Javascript / PHP / dll.
Domchi

Jawaban:

12

Saya melihat FizzBuzz sebagai ujian untuk melihat apakah orang benar-benar tahu apa yang mereka klaim ketahui di Resume mereka. Saya tidak akan menggunakannya sebagai pertanyaan selain untuk menyingkirkan kandidat yang tidak tahu apa yang mereka bicarakan.

Penggantian SQL yang sesuai adalah dengan hanya meminta kandidat untuk menulis pernyataan SQL seperti memilih bidang Nama dari dua tabel yang bergabung yang dimulai dengan A. Ini sederhana dan menunjukkan bahwa kandidat benar-benar memiliki pengetahuan tentang SQL.

SELECT Table1.Name, Table2.Name
FROM Table1 
INNER JOIN Table2 ON Table1.Id = Table2.Id
WHERE Table1.Name LIKE 'A%' OR Table2.Name LIKE 'A%'

Untuk pengembang web, saya hanya akan bertanya kepada mereka FizzBuzz. Hanya karena Anda pemrograman untuk web tidak berarti Anda harus kekurangan kemampuan untuk melakukan logika pemrograman dasar

Jika Anda mencari pertanyaan wawancara aktual, ada banyak yang bagus di internet yang dapat Anda temukan dengan pencarian cepat. Saya menemukan lebih dari yang saya mau daftarkan dengan mengambil 10 detik dengan Google.

Rachel
sumber
2
Bergabung adalah cara yang baik untuk memisahkan pemula dari pemrogram SQL yang lebih maju, karena dalam pemrograman SQL biasanya memerlukan paradigma yang berbeda untuk berpikir daripada pemrograman sisi server yang biasanya penting. Bergabung dan subqueries digunakan untuk membuat saya bingung sampai saya mulai memikirkan pernyataan SQL dalam hal set.
Chris C
@ CCRicers Saya setuju. Dan jika Anda sedang mewawancarai untuk pengembang SQL tingkat lanjut, saya sebenarnya juga akan menambahkan persyaratan GROUP untuk itu, karena saya bekerja dengan SQL sedikit sebelum saya sepenuhnya memahami apa yang dimaksud dengan kelompok dan bagaimana mereka bekerja
Rachel
Pertimbangkan untuk meminta bergabung sendiri: "BUAT KARYAWAN TABEL (ID NUMBER, NAMA TEXT, MANAGER_ID NUMBER)" lalu "Bagaimana saya bisa membuat daftar karyawan dan manajer mereka?"
kevin cline
Bergantung pada jenis database / posisi SQL yang Anda sewa (dan latar belakang pengembang / lingkungan Anda), Anda dapat meminta jawaban 'FizzBuzz' yang sebenarnya .
Clockwork-Muse
Dan itu memiliki keuntungan tambahan bahwa itu adalah spec yang buruk, sehingga ia menguji apakah kandidat menjelaskan persyaratan sebelum menulis kode.
Peter Taylor
4

Berikut adalah jawaban yang saya berikan untuk pertanyaan yang sangat mirip (mungkin duplikat) yang ditutup di situs ini.

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
1
Pertanyaan menarik. Namun, level "Sulit" / "Sulit" tampaknya sangat sulit bagi saya. Bahkan dengan pengalaman SQL yang layak, saya percaya itu mungkin terlalu sulit untuk diselesaikan dalam situasi wawancara. Mungkin jika Anda meninggalkan kandidat sendirian selama setengah jam atau lebih.
sleske
Saya bisa mengatakan pertanyaan "sulit" itu sulit ketika saya menyadari bahwa saya bahkan tidak benar-benar tahu apa itu kursor ... dan saya menggunakan MySQL setiap hari! : - /
theunneversets
@Johnfx Bisakah Anda melihat jawaban ini untuk masalah Anda Saya sudah mewawancarai lusa, docs.google.com/document/d/…
mr_eclair
Mengapa Anda membutuhkan saya untuk melihatnya? Anda dapat mengujinya sendiri dan melihat apakah Anda mendapatkan jawaban yang benar.
JohnFx
3

Bagaimana dengan fizzbuzz itu sendiri? Ini versi Oracle:

select case when mod(level,35) = 0 then 'fizzbuzz'
            when mod(level,7) = 0 then 'buzz'
            when mod(level,5) = 0 then 'fizz'
            else to_char(level) end fizzbuzz
from dual connect by level <= 100

sumber
1
+1 untuk kedahsyatan, tapi saya pikir tabel angka virtual tidak cukup sering muncul di kotak alat SQL semua orang. Anda harus menemukan mereka
Conrad Frix
0

Saya menemukan bahwa orang-orang cenderung memiliki banyak kesulitan bekerja dengan waktu karena suatu alasan, sehingga mungkin merupakan tempat yang baik untuk melakukan tes kecil.

Sesuatu seperti ini:

Bagian 1: Buat fungsi yang akan menghitung N atau hari kerja terakhir dalam bulan tertentu - yaitu; yang pertama, ketiga, Selasa lalu di bulan depan.

Bagian 2 (jika diinginkan): Desain meja untuk menahan ekspresi temporal untuk jadwal yang berulang. Jadwal dapat berupa "hari kerja ke-N satu bulan atau lebih" atau "hari ke-N satu bulan atau lebih" atau "setiap N hari sejak tanggal".

Contoh, tanggal 15 setiap bulan, hari Rabu terakhir setiap bulan Maret, hari terakhir setiap bulan, setiap 17 hari sejak tanggal 2 Desember 2008, dll.

Eli
sumber
2
-1: Bekerja dengan waktu dan menyelesaikannya memang sulit. Tebak mengapa perpustakaan seperti JodaTime ada dan bukan hanya beberapa perangkat lunak sepele.
sebastiangeiger
@sebastiangeiger Saya setuju. Saya bekerja dengan SQL hampir setiap hari dan meskipun saya dapat menggunakan fungsi tanggal SQL secara efisien, saya tidak akan dapat melakukan sesuatu seperti ini dengan cepat atau mudah tanpa bantuan Google. Bahkan, saya perlu melakukan ini beberapa bulan yang lalu dan setelah beberapa menit mencoba mencari tahu dalam SQL, saya hanya mencari Google dan mendapatkan beberapa skrip yang saya gunakan dengan beberapa modifikasi yang sesuai dengan kebutuhan saya.
Rachel
Saya tidak mencari masalah; Saya mencari sesuatu yang dapat digunakan oleh pengembang biasa setiap hari dan dapat mengingat tanpa masalah dan di lingkungan yang tidak dikenal (tidak ada komputer yang tersedia). Meskipun contoh Anda tidak terlalu sulit, itu lebih merupakan masalah yang saya berikan kepada seseorang yang mengkode di depan saya untuk melihat bagaimana dia berpikir.
Domchi
1
@Eli Saya pikir FizzBuzz diharapkan dapat dipecahkan / dikodekan sesuai.
Aaron McIver
1
Saya tidak berpikir bahwa Bagian 2 adalah pertanyaan yang bagus. Sebenarnya topik ini memiliki solusi aneh yang hampir tidak terjadi dalam masalah desain database lainnya dalam bisnis. tidak tahu jawabannya bukan merupakan indikasi pengetahuan SQL yang buruk.
NoChance