Một số câu hỏi loại FizzBuzz cho các nhà phát triển web hoặc SQL là gì? [đóng cửa]


10

Sau một thời gian, chúng tôi lại tuyển dụng và tôi đang xem xét các bài kiểm tra cho các lập trình viên; một số trong số họ là một chút lỗi thời. Một số câu hỏi loại FizzBuzz cho các nhà phát triển web và SQL là gì? Đó là, không quá tầm thường, nhưng vẫn có thể giải quyết trong năm đến mười phút bằng bút và giấy và không có Google?

Tôi thường loại bỏ khoảng hai phần ba hoặc nhiều hơn các ứng cử viên dựa trên CV, và sau đó tất cả trừ một vài ứng viên thực sự tốt trong một cuộc phỏng vấn kéo dài một giờ (có thể qua điện thoại). Tại thời điểm này, ứng viên đang viết một bài kiểm tra tính cách và có cơ hội viết một chút mã giống như FizzBuzz. Vì vậy, tôi không cố gắng loại bỏ một loạt các ứng cử viên, nhưng tôi đang cố gắng xác nhận đánh giá ban đầu của mình rằng ứng viên đó có khả năng và có thể viết mã.


2
Những kỹ năng nào bạn tìm kiếm ở một nhà phát triển web?
Oded

Tôi đoán tôi đang tìm kiếm sự hiểu biết về HTML / CSS / JSON / HTTP; như Rachel đã đề cập, FizzBuzz là tốt để thử nghiệm Javascript / PHP / vv.
Domchi

Câu trả lời:


12

Tôi xem FizzBuzz như một thử nghiệm để xem mọi người có thực sự biết những gì họ tuyên bố sẽ biết trên Resume của họ không. Tôi sẽ không sử dụng nó như bất cứ điều gì ngoài một câu hỏi để loại trừ những ứng cử viên không biết họ đang nói gì.

Một sự thay thế SQL phù hợp sẽ chỉ yêu cầu ứng viên viết một câu lệnh SQL, chẳng hạn như chọn các trường Tên của hai bảng đã tham gia bắt đầu bằng A. Thật đơn giản và chứng minh rằng ứng viên thực sự có kiến ​​thức về 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%'

Đối với một nhà phát triển web, tôi sẽ chỉ hỏi họ FizzBuzz. Chỉ vì bạn đang lập trình cho web không có nghĩa là bạn nên thiếu khả năng làm logic lập trình cơ bản

Nếu bạn đang tìm kiếm các câu hỏi phỏng vấn thực tế, có rất nhiều câu hỏi hay trực tuyến mà bạn có thể tìm thấy với một tìm kiếm nhanh. Tôi tìm thấy nhiều hơn tôi quan tâm để liệt kê bằng cách mất 10 giây với Google.


2
Tham gia là một cách tốt để tách các tân binh khỏi các lập trình viên SQL tiên tiến hơn, vì trong lập trình SQL thường đòi hỏi một mô hình tư duy khác với lập trình phía máy chủ thường là bắt buộc. Tham gia và truy vấn con được sử dụng để đánh cắp tôi cho đến khi tôi bắt đầu nghĩ về các câu lệnh SQL về các tập hợp.
Chris C

@CCRicers Tôi đồng ý. Và nếu bạn đang phỏng vấn một nhà phát triển SQL nâng cao, tôi thực sự cũng sẽ thêm một yêu cầu NHÓM vào đó, vì tôi đã làm việc với SQL khá nhiều trước khi tôi hiểu đầy đủ ý nghĩa của các nhóm và cách chúng hoạt động
Rachel

Cân nhắc việc yêu cầu tự tham gia: "TẠO NHÂN VIÊN NHÂN VIÊN (SỐ ID, TÊN TÊN, QUẢN LÝ_ID SỐ)" sau đó "Làm cách nào tôi có thể liệt kê nhân viên và người quản lý của họ?"
kevin cline

Tùy thuộc vào loại cơ sở dữ liệu / vị trí SQL bạn đang tuyển dụng (và nền tảng của nhà phát triển / môi trường của bạn), bạn có thể yêu cầu câu trả lời 'FizzBuzz' thực tế .
Clockwork-Muse

Và nó có một lợi thế nữa là đó là một thông số kém, vì vậy nó sẽ kiểm tra xem ứng viên có làm rõ các yêu cầu trước khi viết mã hay không.
Peter Taylor

4

Đây là một câu trả lời tôi đã đưa ra cho một câu hỏi rất giống (có thể trùng lặp) đã bị đóng trên trang web này.

Cấp độ cực kỳ dễ dàng: Đưa ra một bảng nhân viên với các cột EmpID, FirstName, Lastname, HireDate và TerminationDate: Viết truy vấn để trả về tất cả các nhân viên vẫn làm việc cho công ty với tên bắt đầu bằng "Smith" được sắp xếp theo tên cuối cùng sau đó là tên.

Cấp độ dễ dàng Đưa ra bảng nhân viên ở trên, cộng với bảng mới "Hàng năm xem" với các cột EmpID và ReviewDate: Viết truy vấn để trả về tất cả các nhân viên chưa bao giờ đánh giá được sắp xếp theo HireDate.

Mức trung bình
Cho bảng nhân viên ở trên, viết một truy vấn để tính chênh lệch (tính theo ngày) giữa nhân viên được thuê nhiều nhất và ít nhất vẫn làm việc cho công ty?

Cấp độ cứng Đưa ra bảng nhân viên ở trên, viết một truy vấn để tính khoảng thời gian dài nhất (tính theo ngày) mà công ty đã đi mà không cần thuê hay sa thải bất kỳ ai.

Cấp độ khó hơn
Một lần nữa sử dụng cùng một bảng, viết một truy vấn trả về mỗi nhân viên và cho mỗi hàng / nhân viên bao gồm số lượng nhân viên lớn nhất làm việc cho công ty bất cứ lúc nào trong nhiệm kỳ của họ và ngày đầu tiên đạt được tối đa. Thêm điểm cho việc không sử dụng con trỏ.


1
Câu hỏi thú vị. Tuy nhiên, mức độ "Khó" / "Khó hơn" có vẻ thực sự khó khăn với tôi. Ngay cả với kinh nghiệm SQL tốt, tôi tin rằng có lẽ quá khó để giải quyết trong một tình huống phỏng vấn. Có lẽ nếu bạn để ứng viên một mình trong nửa giờ hoặc lâu hơn.
sleske

Tôi có thể nói câu hỏi "khó hơn" thật khó khi tôi nhận ra tôi thậm chí không thực sự biết con trỏ là gì ... và tôi đã sử dụng MySQL mỗi ngày! : - /
thesunneversets

@Johnfx thể hài lòng nhìn thấy những câu trả lời cho các vấn đề ur Tôi đã ngày phỏng vấn sau khi ngày mai, docs.google.com/document/d/...
mr_eclair

Tại sao bạn cần tôi nhìn vào nó. Bạn có thể tự kiểm tra và xem nếu bạn có câu trả lời đúng.
JohnFx

3

Làm thế nào về fizzbuzz chính nó? Đây là phiên bản của 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

1
+1 cho sự tuyệt vời, nhưng tôi nghĩ các bảng số ảo không xuất hiện đủ thường xuyên trong hộp công cụ SQL của mọi người. Bạn sẽ phải phát hiện ra điều đó
Conrad Frix

0

Tôi thấy rằng mọi người có xu hướng gặp nhiều rắc rối khi làm việc với thời gian vì một số lý do, vì vậy đó có thể là một nơi tốt để đặt một bài kiểm tra nhỏ.

Một cái gì đó như thế này:

Phần 1: Tạo một hàm sẽ tính Nth hoặc ngày cuối tuần trong một tháng nhất định - nghĩa là; thứ nhất, thứ ba, thứ ba tuần trước trong tháng tới.

Phần 2 (nếu muốn): (Các) bảng thiết kế để giữ các biểu thức thời gian cho lịch trình định kỳ. Lịch trình có thể là bất kỳ "ngày thứ N của một hoặc nhiều tháng" hoặc "ngày thứ N của một hoặc nhiều tháng" hoặc "mỗi N ngày kể từ ngày".

Ví dụ, ngày 15 hàng tháng, thứ tư cuối cùng của mỗi tháng 3, ngày cuối cùng của mỗi tháng, cứ sau 17 ngày kể từ ngày 2 tháng 12 năm 2008, v.v.


2
-1: Làm việc với thời gian và làm cho đúng nó thật sự khó. Đoán tại sao các thư viện như JodaTime tồn tại và không chỉ là một phần mềm tầm thường.
sebastiangeiger

@sebastiangeiger Tôi đồng ý. Tôi làm việc với SQL gần như hàng ngày và mặc dù tôi có thể sử dụng các hàm ngày của SQL một cách hiệu quả, tôi sẽ không thể làm điều gì đó nhanh chóng hoặc dễ dàng mà không cần sự trợ giúp của Google. Trên thực tế, tôi cần phải làm điều này một vài tháng trước và sau vài phút cố gắng tìm ra nó trong SQL, tôi chỉ lấy nó và nhận được một số tập lệnh mà tôi sử dụng với một số sửa đổi cho phù hợp với nhu cầu của mình.
Rachel

Tôi không tìm kiếm các khu vực rắc rối; Tôi đang tìm kiếm thứ gì đó mà bất kỳ nhà phát triển trung bình nào đang làm việc hàng ngày và có thể nhớ lại mà không gặp vấn đề gì và trong một môi trường xa lạ (không có máy tính khả dụng). Mặc dù ví dụ của bạn không khó lắm, nhưng đó là vấn đề tôi gặp phải khi viết mã trước mặt tôi để xem anh ấy đang nghĩ như thế nào.
Domchi

1
@Eli Tôi nghĩ FizzBuzz dự kiến ​​sẽ được giải quyết / mã hóa tương ứng.
Aaron McIver

1
Tôi không nghĩ rằng Phần 2 là một câu hỏi hay. Trong thực tế, chủ đề này có một giải pháp kỳ lạ không xảy ra trong hầu hết các vấn đề thiết kế cơ sở dữ liệu khác trong kinh doanh. không biết câu trả lời không phải là một dấu hiệu của kiến ​​thức SQL kém.
NoChance
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.