Web veya SQL geliştiricileri için bazı FizzBuzz türü sorular nelerdir? [kapalı]


10

Bir süre sonra tekrar işe alım yapıyoruz ve programcılar için testleri inceliyorum; bazıları biraz güncel değil. Web geliştiricileri ve SQL için bazı FizzBuzz türü sorular nelerdir? Yani, çok önemsiz değil, yine de beş ila on dakika içinde kalem ve kağıtla ve Google olmadan çözülebilir mi?

Genellikle adayların yaklaşık üçte ikisini veya daha fazlasını CV'ye göre ortadan kaldırırım ve sonra bir saatlik röportajda (telefon üzerinden olabilecek) birkaç gerçekten iyi aday hariç. Bu noktada aday bir kişilik testi yazıyor ve biraz FizzBuzz benzeri kod yazma şansı var. Bu yüzden, bir grup adayı ortadan kaldırmaya çalışmıyorum, ancak adayın işe alınabilir ve kodlayabildiğine dair ilk değerlendirmemi doğrulamaya çalışıyorum.


2
Bir web geliştiricisinde hangi becerileri arıyorsunuz?
Oded

Ben HTML / CSS / JSON / HTTP anlayış arıyorum sanırım; Rachel'ın belirttiği gibi, FizzBuzz Javascript / PHP / etc'yi test etmek için iyidir.
Domchi

Yanıtlar:


12

FizzBuzz'ı, insanların Özgeçmişlerinde bildiklerini iddia ettiklerini gerçekten bilip bilmediklerini görmek için bir test olarak görüyorum. Ne hakkında konuştuklarını bilmeyen adayları ayıklamak için bir sorudan başka bir şey olarak kullanmam.

Uygun bir SQL değişimi, adaydan A ile başlayan iki birleştirilen tablonun Ad alanlarını seçmek gibi bir SQL ifadesi yazmasını istemek olacaktır. Bu basittir ve adayın aslında SQL hakkında biraz bilgi sahibi olduğunu gösterir.

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%'

Bir web geliştiricisi için sadece FizzBuzz'a soracağım. Web için programlama yaptığınız için, temel programlama mantığını yapma yeteneğinizden yoksun olmanız gerektiği anlamına gelmez

Gerçek röportaj soruları arıyorsanız, hızlı bir arama ile bulabileceğiniz birçok iyi soru var. Google ile 10 saniye alarak listelediğimden fazlasını buldum.


2
SQL programlamasında genellikle zorunlu olan sunucu tarafı programlamasından farklı bir paradigma gerektirdiğinden, birleştirme, çipleri daha gelişmiş SQL programcılarından ayırmanın iyi bir yoludur. SQL deyimlerini kümeler olarak düşünmeye başlayana kadar birleştirmeler ve alt sorgular beni güldü.
Chris C

@CCRicers katılıyorum. Gelişmiş bir SQL geliştiricisi için röportaj yapıyorsanız, aslında bir GRUP gereksinimi de eklerdim, çünkü gruplarla ne anlama geldiğini ve nasıl çalıştıklarını tam olarak anlamadan önce SQL ile biraz çalıştım
Rachel

Kendi kendine katılma isteğinde bulunmayı düşünün: "TABLO ÇALIŞANINI OLUŞTUR (ID NUMBER, NAME TEXT, MANAGER_ID NUMBER)" sonra "Çalışanları ve yöneticilerini nasıl listeleyebilirim?"
kevin cline

Hangi tür veritabanı / SQL konumu için (ve geliştirici arka planı / ortamınız) işe aldığınıza bağlı olarak, gerçek bir 'FizzBuzz' yanıtı isteyebilirsiniz .
Clockwork-Muse

Ayrıca, kötü bir özellik olması da ek bir avantaja sahiptir, bu nedenle adayın kod yazmadan önce gereksinimleri netleştirip netleştirmediğini test eder.
Peter Taylor

4

İşte bu sitede kapatılmış olan çok benzer (muhtemelen yinelenen) bir soruya verdiğim cevap .

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 şirket için hala ç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 veya 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.


1
İlginç soru. Ancak, "Zor" / "Zor" seviyesi benim için gerçekten zor görünüyor . İyi SQL deneyimiyle bile, bir röportaj durumunda çözmenin çok zor olduğuna inanıyorum. Belki adayı yarım saat kadar yalnız bırakırsanız.
sleske

Bir imlecin ne olduğunu bile bilmediğimi fark ettiğimde "daha zor" sorunun zor olduğunu söyleyebilirim ... ve her gün MySQL kullandım! : - /
thesunneversets

@Johnfx Lütfen yarından sonra görüştüğüm sorunlarınız için bu yanıtları görebilir, docs.google.com/document/d/…
mr_eclair

Bakmam için neden bana ihtiyacın var. Bunu kendiniz test edebilir ve doğru cevabı alıp almadığınızı görebilirsiniz.
JohnFx

3

Peki ya fizzbuzz? İşte bir Oracle sürümü:

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

1
Şaşırtıcılık için +1, ancak sanal sayı tablolarının herkesin SQL araç kutusunda olacak kadar sık ​​gelmediğini düşünüyorum. Onları fark etmelisin
Conrad Frix

0

İnsanların bir sebepten dolayı zamanla çalışma konusunda çok fazla sorun yaşadıklarını görüyorum, bu yüzden küçük bir test yapmak için iyi bir yer olabilir.

Bunun gibi bir şey:

Bölüm 1: Belirli bir ayın N'inci veya geçen hafta içi gününü hesaplayacak bir işlev oluşturun - yani; gelecek ayın ilk, üçüncü, son Salı günü.

Bölüm 2 (istenirse): Yinelenen çizelgeler için geçici ifadeler tutacak tablolar tasarlayın. Zaman çizelgeleri "bir veya daha fazla ayın N. Hafta içi" veya "bir veya daha fazla ayın Dördüncü günü" veya "tarihten sonraki her N günde bir" olabilir.

Örneğin, her ayın 15'i, her Mart ayının son Çarşamba, her ayın son günü, 2 Aralık 2008 tarihinden itibaren her 17 günde bir, vb.


2
-1: Zamanla çalışmak ve doğru yapmak gerçekten zor. Tahmin et JodaTime gibi kütüphaneler neden var ve sadece önemsiz bir yazılım değil.
sebastiangeiger

@sebastiangeiger katılıyorum. SQL ile neredeyse her gün çalışıyorum ve SQL'in tarih işlevlerini verimli bir şekilde kullanabilsem de, Google'ın yardımı olmadan böyle bir şeyi hızlı veya kolay bir şekilde yapamazdım. Aslında, bunu birkaç ay önce yapmam gerekiyordu ve SQL'de anlamaya çalıştıktan birkaç dakika sonra, sadece Google'ı aradım ve ihtiyaçlarıma uygun bazı değişikliklerle kullandığım bazı komut dosyaları aldım.
Rachel

Sorunlu alanlar aramıyorum; Herhangi bir ortalama geliştiricinin günlük olarak çalıştığı bir şey arıyorum ve herhangi bir sorun olmadan ve yabancı bir ortamda (bilgisayar yok) hatırlayabilir. Örneğiniz o kadar da zor olmasa da, nasıl düşündüğünü görmek için önümde kodlayan birine vereceğim daha büyük bir problem.
Domchi

1
@Eli Bence FizzBuzz buna göre çözülmesi / kodlanması bekleniyor.
Aaron McIver

1
Bölüm 2'nin iyi bir soru olduğunu düşünmüyorum. Aslında bu konunun iş dünyasında neredeyse hiçbir veritabanı tasarım probleminde meydana gelmeyen garip bir çözümü var. cevabı bilmemek zayıf SQL bilgisinin bir göstergesi değildir.
NoChance
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.