Các câu hỏi để kiểm tra kiến ​​thức lập trình về SQL là gì? [đóng cửa]


14

Các câu hỏi để kiểm tra kiến ​​thức lập trình về SQL là gì? Câu trả lời cho câu hỏi là gì? Và việc thiếu một câu trả lời đúng có nghĩa là gì về thời gian có khả năng hiểu (các) khái niệm liên quan đến câu hỏi?

GOOGLED: thử thách sql


2
Tôi chắc chắn sẽ đưa ra một ví dụ thực tế và yêu cầu viết một truy vấn phức tạp. Ví dụ: yêu cầu chọn tháng có lợi nhất cho mỗi 10 năm qua, nếu bạn có bảng mua hàng. NHƯNG vì bạn hỏi về câu hỏi và câu trả lời là tốt, điều đó có thể có nghĩa là bạn không phải là chuyên gia và không thể phán xét. Trong trường hợp này, bạn có thể thử một số dịch vụ thử nghiệm của bên thứ ba, ít nhất là bộ lọc ban đầu trước khi phỏng vấn. Tôi muốn đề nghị tests4geek.com . Họ có bài kiểm tra SQL.
Dhaval Patel

Câu trả lời:


20

Nó phụ thuộc vào mức độ khó khăn mà bạn muốn. Ngoài ra, tôi có một chút cảnh giác khi đưa ra câu trả lời cho bạn vì hầu hết các vấn đề SQL có nhiều cách có thể chấp nhận để thực hiện và cũng có những cách giải quyết vấn đề SQL theo cách cẩu thả sẽ gây ra các vấn đề khác. Người "chấm điểm" câu trả lời chắc chắn cần có khả năng tự giải quyết.

Điều đó nói rằng, đây là một số ít tôi nghĩ ra khỏi đỉnh đầu của tôi.

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ỏ.


Nice, trả lời - thực sự thích sự tiến hóa của các câu hỏi. Tại sao người đặt câu hỏi cần có khả năng trả lời chúng? Tại sao không chỉ viết kiểm tra đơn vị dựa trên đầu ra và thời gian chạy? Ngoài ra, bạn sẽ nói gì về số tuần liên kết của việc làm chủ các khái niệm SQL, nó sẽ đưa lập trình viên trung bình đạt đến mức khó nhất do bạn đưa ra? Bạn có tin rằng một lập trình viên có thể trả lời câu hỏi khó nhất mà bạn đưa ra sẽ có thể giải quyết hiệu quả phần lớn các nhiệm vụ liên quan đến SQL không?
sai lầm ngớ ngẩn

3
Lý do tôi muốn người hỏi (hoặc ít nhất là "học sinh") có thể trả lời họ là cách tiếp cận có thể cho bạn biết nhiều như kết quả. Tôi cũng lo lắng về một người phỏng vấn phi công nghệ có câu trả lời được viết sẵn và không chấp nhận các câu trả lời có khả năng chính xác khác (Thẻ ghi "Moop").
JohnFx

Về việc những câu hỏi này thể hiện khả năng giải quyết phần lớn các nhiệm vụ liên quan đến SQL. Nếu công việc của họ sẽ là viết truy vấn, có lẽ là như vậy. Nếu bạn đang mong đợi họ quản trị máy chủ DB, thì bạn cần đặt câu hỏi cụ thể cho vấn đề đó.
JohnFx

Cảm ơn đã làm rõ, người phỏng vấn phi công nghệ trong trường hợp này sẽ không phải là một người, mà là một hệ thống, do đó kiểm tra đơn vị và thời gian chạy. Rõ ràng các hệ thống không viết hoặc đọc mã, con người là vậy, nhưng có rất nhiều lập trình viên trên thế giới, và theo tôi, nhu cầu có chúng tại chỗ bị hạn chế tối đa. Đoán xem nếu một người thất bại trong bài kiểm tra, nhưng nghĩ rằng họ đúng họ luôn có thể gắn cờ là chính xác.
sai lầm ngớ ngẩn

Và vâng, mục tiêu cho các câu hỏi sẽ là một lập trình viên, không phải là quản trị viên cơ sở dữ liệu.
sai lầm ngớ ngẩn

4

Tôi thường chỉ ngồi phỏng vấn cho các chuyên gia dữ liệu, vì vậy câu hỏi của tôi có xu hướng khó. Nhưng một điều tôi sẽ yêu cầu bất kỳ ai sẽ viết SQL là kiến ​​thức về các phép nối và khi nào nên sử dụng phép nối trái so với phép nối bên trong. Bất cứ ai không hiểu rằng không có doanh nghiệp truy vấn cơ sở dữ liệu dưới bất kỳ hình thức hoặc hình thức nào.

Một điều nữa tôi sẽ làm là đảm bảo rằng họ hiểu cách thực hiện NHÓM THEO và sử dụng các hàm Tổng hợp.

Và sự khác biệt giữa UNION và UNION ALL đã loại bỏ rất nhiều ứng cử viên nghèo trong công việc của tôi.


2

Tôi sẽ hỏi "Tại sao và làm thế nào bạn nên vệ sinh các giá trị đầu vào được cung cấp từ người dùng sẽ được sử dụng trong truy vấn SQL?"

Này là cần thiết để ngăn chặn tiêm SQL, và có thể trả lời câu này đòi hỏi kiến thức tốt về cú pháp và các lệnh (chẳng hạn như SQL SELECT, UPDATE, DROP, DELETE, vv), cũng như thế nào những người có thể được phá vỡ bằng cách sử dụng SQL bình luận để phá vỡ một truy vấn và tiêm những gì người dùng ác tính có thể muốn làm.


1
Không phải là câu trả lời: không bao giờ vệ sinh đầu vào, sử dụng một tuyên bố đã chuẩn bị?
kevin cline

@Emmad Kareem, bất cứ ai không thể trả lời rằng không nên viết SQL.
HLGEM

@gablin, tôi thực sự không hiểu tại sao lại như vậy. Bạn có thể giải thích một chút? Có bao nhiêu sách SQL thảo luận về chủ đề này?
NoChance

2

Tôi đã có một tay trong việc phát triển một bài kiểm tra kỹ thuật cho các lập trình viên cơ sở dữ liệu. Các câu hỏi là những gì tôi cho là khá cơ bản: viết các câu lệnh CREATE TABLE cho một cấu trúc bảng đã cho; làm một số truy vấn đơn giản; Vân vân.

Hầu hết những người xin việc tự gọi mình là chuyên gia tại SQL đều bỏ qua bài kiểm tra. Một người nói rằng mặc dù anh ta đã là một nhà phát triển SQL trong nhiều năm, anh ta chưa bao giờ viết một câu lệnh CREATE TABLE vì GUI đã làm điều đó cho anh ta.

Chúng tôi đã có kinh nghiệm tương tự với các bài kiểm tra kỹ thuật khác. Đối với nhân viên hỗ trợ của Windows, các tác vụ tương tự như "tạo người dùng tên miền", "thêm máy in", "thay đổi quyền trên tệp." Hầu hết mọi người không thể làm những công việc đó, đặc biệt là dưới áp lực. Chúng tôi nghĩ rằng nếu bạn có thể làm ngay cả những thứ đơn giản, có lẽ bạn khá thành thạo.


1
Tôi e rằng tôi đứng về phía nhà phát triển sử dụng GUI. Bạn có thể dành toàn bộ sự nghiệp mà không cần thường xuyên viết các kịch bản CREATE TABLE. Nhiều người phát triển mô hình dữ liệu trong các công cụ CASE tự động tạo DDL cho bạn. Nói chung, tôi né tránh bất kỳ bài kiểm tra nào chủ yếu dựa vào cú pháp ghi nhớ, có lợi cho những bài kiểm tra hiểu biết rộng hơn về các vấn đề liên quan
cjmUK

+1 @Barry Brown: Tôi đồng ý và đó là một điểm thú vị.
sai lầm ngớ ngẩn

0

Nếu bạn muốn hỏi những câu hỏi mở hơn: Đặt những câu hỏi chung về các kiểu dữ liệu DATE, DATETIME .... Hỏi về sự khác biệt giữa các sản phẩm / sản phẩm của nhà cung cấp khác nhau. Nói về các công cụ dòng lệnh, bộ tải số lượng lớn, máy in đẹp ... có lẽ bạn có thể học một mẹo mới trong cuộc phỏng vấn.

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.