Bir programcının SQL bilgisini test etmek için sorular nelerdir? [kapalı]


14

Bir programcının SQL bilgisini test etmek için sorular nelerdir? Sorunun cevabı nedir? Ve doğru bir cevap eksikliği, soru ile ilgili kavramları anlaması muhtemel zaman açısından ne anlama gelir?

GOOGLED: sql meydan okuması


2
Kesinlikle gerçek bir canlı örnek vermek ve karmaşık bir sorgu yazmak istiyorum. Örneğin, satın alma tablosuna sahipseniz, son 10 yılın her biri için en karlı ayı seçmeyi isteyin. AMA soru ve cevap da sorduğunuzdan, bu muhtemelen uzman olmadığınız ve yargılayamayacağınız anlamına gelir. Bu durumda, en azından görüşmeden önce ilk filtre olarak bazı üçüncü taraf test hizmetlerini deneyebilirsiniz. Test4geeks.com öneririm . SQL testi var.
Dhaval Patel

Yanıtlar:


20

Ne kadar zor olmasını istediğinize bağlıdır. Ayrıca, çoğu SQL probleminin bir şeyler yapmak için birden fazla kabul edilebilir yolu olduğu ve diğer sorunlara neden olacak şekilde SQL problemlerini özensiz yollarla çözmenin yolları olduğu için size cevap vermekten biraz eminim. Cevabı "derecelendiren" kişi kesinlikle kendi başına çözebilmelidir.

Dedi ki, İşte başımın tepesinden geldiğim birkaç tane.

Son derece Kolay Seviye:
EmpID, FirstName, Soyadı, HireDate ve TerminationDate sütunlarına sahip bir çalışanlar tablosu verildiğinde, soyadına ve soyadına göre sıralı
olarak "Smith" ile başlayan şirkette halen çalışan tüm çalışanları döndürmek için bir sorgu yazın.

Kolay Seviye
Yukarıdaki Çalışan tablosunun yanı sıra EmpID ve ReviewDate sütunlarına sahip yeni bir "AnnualReviews" tablosu göz önüne alındığında: HireDate'e
göre sıralanmış bir incelemeye sahip olmayan tüm çalışanları döndürmek için bir sorgu yazın.

Orta Seviye Yukarıdaki çalışan tablosuna bakıldığında, şirket için hala çalışan en az ve en az çalışan çalışan arasındaki farkı (gün cinsinden) hesaplamak için bir sorgu yazın?

Zor Seviye
Yukarıdaki çalışan tablosu göz önüne alındığında, şirketin kimseyi işe almadan ya da kovmadan en uzun süreyi (gün olarak) hesaplamak için bir sorgu yazın.

Daha Zor Seviye
Yine aynı tabloları kullanarak, her çalışanı döndüren bir sorgu yazın ve her satır / çalışan için görev süresi boyunca herhangi bir zamanda şirket için çalışan en fazla sayıda çalışanı ve maksimuma ulaşılan ilk tarihi içerir. İmleç kullanmamanız için ekstra puan.


Güzel, cevap - soruların evrimi gibi. Soruları soran kişinin neden cevaplayabilmesi gerekiyor? Neden sadece çıktı ve çalışma süresine göre birim testi yazmıyorsunuz? Ayrıca, ortalama bir programcı tarafından verilen en zor seviyeye ulaşmak için SQL kavramlarının ustalıklarını ilerletmenin bağ haftalarının sayısını söyleyebilir misiniz? Ayrıca, verdiğiniz en zor soruyu cevaplayabilen bir programcının SQL ile ilgili görevlerin çok büyük bir çoğunluğunu etkili bir şekilde ele alabileceğine inanıyor musunuz?
gaflar

3
Askerlerin (ya da en azından "derecelendirici") onlara cevap vermesini istememin nedeni, yaklaşımın size sonuç kadar söyleyebilmesidir. Ayrıca önceden yazılmış bir cevabı olan ve potansiyel olarak doğru cevapları kabul etmeyen, teknik olmayan bir görüşmeci için de endişeleniyorum (Kartta "Moop" yazıyor).
JohnFx

Bu soruların SQL ile ilgili görevlerin çok büyük bir çoğunluğunu ele alma yeteneğini gösterip göstermediği konusunda. Eğer işleri sorgu yazmaksa, muhtemelen öyle olacaktır. Bir DB sunucusunu yönetmelerini bekliyorsanız, bununla ilgili sorular sormanız gerekir.
JohnFx

Açıklamalar için teşekkürler, bu durumda teknoloji dışı görüşmeci bir kişi değil, bir sistem, dolayısıyla birim testi ve çalışma zamanı olacaktır. Açıkçası sistemler kod yazmıyor veya okumuyor, insanlar var, ama dünyada çok fazla programcı var ve bence bunları yerinde bulundurma ihtiyacı en iyi şekilde sınırlı. Bir kişi testte başarısız olursa, ancak haklı olduğunu düşündüğünde, her zaman doğru olarak işaretleyebileceklerini tahmin edin.
gaflar

Ve evet, soruların hedefi bir veritabanı yöneticisi değil, bir programcı olacaktır.
gaflar

4

Genellikle veri uzmanları için röportajlara katılıyorum, bu yüzden sorularım zor oluyor. Ancak SQL yazacak olan herkesin isteyebileceğim bir şey, birleştirme bilgisi ve ne zaman bir sol birleşim yerine bir iç birleşim kullanmaktır. Bunu anlamayan herkes, herhangi bir şekilde herhangi bir şekilde veya formda bir veritabanını sorgulayan bir işe sahip değildir.

Yapacağım başka bir şey, GROUP BY nasıl yapacağını ve Toplama işlevlerini nasıl kullanacaklarını anladıklarından emin olmaktır.

UNION ve UNION ALL arasındaki fark, işimdeki çok sayıda fakir adayı ortadan kaldırdı.


2

Ben rica ediyorum "Neden ve nasıl bir SQL sorgusunda kullanılacak kullanıcıdan verilen giriş değerleri sterilize ki?"

Bu SQL enjeksiyonu önlemek için gerekli ve cevap edememek bu SQL sözdizimi ve komutları (örneğin hakkında iyi bilgi gerektirir SELECT, UPDATE, DROP, DELETEbu bir sorgu kırmaya SQL yorumların kullanımı ile atlatılabilir nasıl yanı vs.) ve malign kullanıcının ne yapmak istediğini enjekte edin.


1
Cevap değil mi: Girdileri asla sterilize etmeyin, hazırlanmış bir ifade kullanın?
kevin cline

@Emmad Kareem, cevap veremeyen herkes SQL yazmamalı.
HLGEM

@ gablin, bunun neden böyle olduğunu gerçekten anlamıyorum. Biraz açıklayabilir misiniz? Kaç SQL kitabı bu konuyu tartışıyor?
NoChance

2

Veritabanı programcıları için teknik test geliştirme konusunda bir elim vardı. Sorular oldukça temel olarak düşündüğüm şeydi: belirli bir tablo yapısı için CREATE TABLE ifadelerini yazın; bazı basit sorgular yapın; vb.

Kendilerini SQL'de uzman olarak adlandıran çoğu iş başvurusu testi attı. Birincisi, yıllardır SQL geliştiricisi olmasına rağmen, GUI bunu kendisi için yaptığı için hiçbir zaman CREATE TABLE ifadesi yazmadığını söyledi.

Diğer teknik testlerle benzer deneyimler yaşadık. Windows destek personeli için, görevler "etki alanı kullanıcısı oluşturma", "yazıcı ekleme", "dosyadaki izinleri değiştirme" işlevine benzer. Çoğu insan bu görevleri, özellikle baskı altında yapamaz. Basit şeyleri bile yapabiliyorsanız, muhtemelen oldukça yetkin olduğunuzu anlıyoruz.


1
Korkarım GUI kullanarak geliştirici tarafındayım. CREATE TABLE senaryolarını düzenli olarak yazmadan tüm bir kariyeri harcayabilirsiniz. Birçok kişi sizin için otomatik olarak DDL oluşturan CASE araçlarında veri modelleri geliştirir. Genel olarak, sözdizimi ezberlemeye dayanan herhangi bir testten uzak
duruyorum

+1 @Barry Brown: Katılıyorum ve ilginç bir nokta.
gaflar

0

Daha açık sorular sormayı tercih ediyorsanız: DATE, DATETIME ... veri türleri hakkında genel sorular sorun. Farklı satıcı uygulamaları / ürünleri arasındaki farkları sorun. Komut satırı araçları, toplu yükleyiciler, güzel yazıcılar hakkında konuşun ... belki röportaj sırasında yeni bir numara öğrenebilirsiniz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.