คำถามอะไรที่จะทดสอบความรู้โปรแกรมเมอร์ของ SQL? [ปิด]


14

คำถามอะไรที่จะทดสอบความรู้โปรแกรมเมอร์ของ SQL? คำตอบของคำถามคืออะไร? และการไม่มีคำตอบที่ถูกต้องจะมีความหมายอย่างไรในแง่ของเวลาที่น่าจะเข้าใจแนวคิดที่เกี่ยวข้องกับคำถาม

GOOGLED:ความท้าทาย sql


2
ฉันจะให้ตัวอย่างสดจริงและขอให้เขียนแบบสอบถามที่ซับซ้อน ตัวอย่างเช่นขอให้เลือกเดือนที่มีกำไรมากที่สุดสำหรับแต่ละ 10 ปีที่ผ่านมาหากคุณมีตารางการซื้อ แต่เนื่องจากคุณถามคำถามและคำตอบด้วยนั่นอาจหมายความว่าคุณไม่ใช่ผู้เชี่ยวชาญและไม่สามารถตัดสินได้ ในกรณีนี้คุณสามารถลองใช้บริการทดสอบของบุคคลที่สามอย่างน้อยก็เป็นตัวกรองเริ่มต้นก่อนการสัมภาษณ์ ฉันขอแนะนำให้tests4geeks.com พวกเขามีการทดสอบ SQL
Dhaval Patel

คำตอบ:


20

ขึ้นอยู่กับว่าคุณต้องการให้มันยากแค่ไหน นอกจากนี้ฉันยังระมัดระวังเล็กน้อยที่จะให้คำตอบกับคุณเนื่องจากปัญหา SQL ส่วนใหญ่มีวิธีที่ยอมรับได้หลายวิธีในการทำสิ่งต่าง ๆ และยังมีวิธีการแก้ปัญหา SQL ในรูปแบบที่ไม่เป็นระเบียบซึ่งจะทำให้เกิดปัญหาอื่น ๆ คนที่ให้คะแนนคำตอบจะต้องสามารถแก้ไขได้ด้วยตนเอง

ที่กล่าวว่านี่คือบางส่วนของฉันขึ้นมาจากด้านบนของหัวของฉัน

ระดับง่ายมาก:
กำหนดตารางพนักงานด้วยคอลัมน์ EmpID, FirstName, นามสกุล, HireDate และ TerminationDate:
เขียนแบบสอบถามเพื่อส่งคืนพนักงานทุกคนที่ยังทำงานกับ บริษัท ที่มีนามสกุลขึ้นต้นด้วย "Smith" เรียงตามนามสกุลแล้วชื่อจริง

ระดับง่าย
กำหนดตารางพนักงานด้านบนเพิ่มตารางใหม่ "AnnualReviews" พร้อมคอลัมน์ EmpID และ ReviewDate:
เขียนแบบสอบถามเพื่อส่งคืนพนักงานทุกคนที่ไม่เคยมีความคิดเห็นเรียงโดย HireDate

ระดับกลาง จากตารางพนักงานด้านบนเขียนแบบสอบถามเพื่อคำนวณความแตกต่าง (เป็นวัน) ระหว่างพนักงานที่ดำรงตำแหน่งสูงสุดและน้อยที่สุดที่ยังทำงานให้กับ บริษัท อยู่

ระดับความยาก
กำหนดตารางพนักงานด้านบนเขียนแบบสอบถามเพื่อคำนวณระยะเวลายาวนานที่สุด (เป็นวัน) ที่ บริษัท ไปโดยไม่ต้องจ้างหรือยิงใคร

ระดับที่ยากขึ้น
อีกครั้งโดยใช้ตารางเดียวกันเขียนแบบสอบถามที่ส่งคืนพนักงานแต่ละคนและสำหรับแต่ละแถว / พนักงานรวมถึงจำนวนพนักงานที่มากที่สุดที่ทำงานให้กับ บริษัท ได้ตลอดเวลาในระหว่างการดำรงตำแหน่งและวันแรกที่ถึงขีด จำกัด สูงสุด คะแนนพิเศษสำหรับการไม่ใช้เคอร์เซอร์


นิสัยดีตอบ - ชอบวิวัฒนาการของคำถาม ทำไมคนที่ถามคำถามจึงจำเป็นต้องตอบคำถามเหล่านั้นได้? ทำไมไม่เพียงแค่เขียนการทดสอบหน่วยตามเอาต์พุตและรันไทม์? นอกจากนี้สิ่งที่คุณจะพูดจำนวนสัปดาห์ที่เกี่ยวพันของการพัฒนาความเชี่ยวชาญของแนวคิด SQL มันจะใช้โปรแกรมเมอร์เฉลี่ยถึงระดับที่ยากที่สุดที่คุณได้รับ? คุณจะเชื่อหรือไม่ว่าผู้เขียนโปรแกรมสามารถตอบคำถามที่ยากที่สุดที่คุณให้จะสามารถจัดการกับงานที่เกี่ยวข้องกับ SQL ส่วนใหญ่ได้อย่างมีประสิทธิภาพ
ความผิดพลาด

3
เหตุผลที่ฉันต้องการให้ผู้ถาม (หรืออย่างน้อย "ผู้ปราบ") สามารถตอบคำถามได้ก็คือวิธีการนั้นอาจบอกคุณได้มากเท่ากับผลลัพธ์ ฉันยังกังวลเกี่ยวกับผู้สัมภาษณ์ที่ไม่ใช้เทคโนโลยีซึ่งมีคำตอบที่เขียนไว้ล่วงหน้าและไม่ยอมรับคำตอบที่ถูกต้องอื่น ๆ (การ์ดบอกว่า "Moop")
JohnFx

ว่าคำถามเหล่านี้แสดงให้เห็นถึงความสามารถในการจัดการกับงานที่เกี่ยวข้องกับ SQL เป็นอย่างมาก หากงานของพวกเขาคือการเขียนแบบสอบถามอาจเป็นเช่นนั้น หากคุณคาดหวังว่าพวกเขาจะจัดการเซิร์ฟเวอร์ DB คุณจะต้องถามคำถามเฉพาะนั้น
JohnFx

ขอบคุณสำหรับคำชี้แจงผู้สัมภาษณ์ที่ไม่ใช้เทคโนโลยีในกรณีนี้จะไม่ใช่บุคคล แต่เป็นระบบดังนั้นจึงเป็นการทดสอบหน่วยและรันไทม์ ชัดเจนว่าระบบไม่ได้เขียนหรืออ่านรหัสมนุษย์เป็น แต่มีโปรแกรมเมอร์จำนวนมากในโลกและความต้องการของฉันในความคิดของฉันที่จะให้พวกเขาในสถานที่มี จำกัด คาดเดาว่าบุคคลนั้นสอบตก แต่คิดว่าถูกต้องพวกเขาสามารถตั้งค่าสถานะได้ถูกต้องเสมอ
ความผิดพลาด

ใช่เป้าหมายของคำถามคือโปรแกรมเมอร์ไม่ใช่ผู้ดูแลฐานข้อมูล
ความผิดพลาด

4

โดยทั่วไปฉันนั่งสัมภาษณ์ผู้เชี่ยวชาญด้านข้อมูลเท่านั้นดังนั้นคำถามของฉันมักจะยาก แต่สิ่งหนึ่งที่ฉันต้องการจากทุกคนที่จะเขียน SQL ก็คือความรู้เรื่องการรวมและเมื่อใดที่จะใช้การรวมซ้ายและการรวมภายใน ใครก็ตามที่ไม่เข้าใจว่าไม่มีธุรกิจที่สืบค้นฐานข้อมูลในรูปแบบหรือรูปแบบใด ๆ

อีกสิ่งที่ฉันจะทำคือให้แน่ใจว่าพวกเขาเข้าใจวิธีการทำ GROUP BY และใช้ฟังก์ชันการรวม

และความแตกต่างระหว่างยูเนี่ยนและยูเนี่ยนทั้งหมดได้ขจัดผู้สมัครที่น่าสงสารจำนวนมากที่ทำงานของฉัน


2

ฉันจะถาม"ทำไมและวิธีการที่คุณควร sanitize ค่าการป้อนข้อมูลที่ได้รับจากผู้ใช้ซึ่งจะใช้ในแบบสอบถาม SQL?"

นี้เป็นสิ่งจำเป็นเพื่อป้องกันการฉีด SQL และความสามารถในการตอบคำถามนี้ต้องมีความรู้ที่ดีเกี่ยวกับ SQL ไวยากรณ์และคำสั่ง (เช่นSELECT, UPDATE, DROP, DELETEฯลฯ ) รวมทั้งวิธีการที่สามารถโกงโดยการใช้ความคิดเห็น SQL เพื่อทำลายแบบสอบถามและ ฉีดสิ่งที่ผู้ใช้ที่เป็นอันตรายอาจต้องการทำ


1
ไม่ใช่คำตอบ: ไม่เคยฆ่าเชื้ออินพุตใช้คำสั่งที่เตรียมไว้หรือไม่
วินไคลน์

@Emmad Kareem ใครก็ตามที่ไม่สามารถตอบได้ว่าไม่ควรเขียน SQL
HLGEM

@ แกบลินฉันไม่เห็นว่าทำไมถึงเป็นเช่นนั้น คุณช่วยอธิบายหน่อยได้ไหม? หนังสือ SQL กี่เล่มที่กล่าวถึงเรื่องนี้?
NoChance

2

ฉันมีมือในการพัฒนาการทดสอบทางเทคนิคสำหรับโปรแกรมเมอร์ฐานข้อมูล คำถามคือสิ่งที่ฉันพิจารณาค่อนข้างพื้นฐาน: เขียนคำสั่งสร้างตารางสำหรับโครงสร้างตารางที่กำหนด; ทำแบบสอบถามง่ายๆ เป็นต้น

ผู้สมัครงานส่วนใหญ่ที่เรียกตัวเองว่าผู้เชี่ยวชาญที่ SQL ทดสอบข้อผิดพลาด หนึ่งกล่าวว่าแม้ว่าเขาจะเป็นนักพัฒนา SQL มาหลายปี แต่เขาก็ไม่เคยเขียนคำสั่ง CREATE TABLE เพราะ GUI ทำเพื่อเขา

เรามีประสบการณ์ที่คล้ายกันกับการทดสอบทางเทคนิคอื่น ๆ สำหรับเจ้าหน้าที่สนับสนุน Windows งานจะคล้ายกับ "สร้างผู้ใช้โดเมน" "เพิ่มเครื่องพิมพ์" "เปลี่ยนการอนุญาตในไฟล์" คนส่วนใหญ่ไม่สามารถทำงานเหล่านี้ได้โดยเฉพาะภายใต้ความกดดัน เราคิดว่าหากคุณสามารถทำได้แม้กระทั่งสิ่งที่เรียบง่ายคุณอาจมีความสามารถพอสมควร


1
ฉันเกรงว่าฉันจะอยู่ด้านผู้พัฒนาโดยใช้ GUI คุณสามารถใช้ทั้งอาชีพโดยไม่ต้องเขียนสคริปต์ CREATE TABLE เป็นประจำ หลายคนพัฒนาแบบจำลองข้อมูลในเครื่องมือของ CASE ซึ่งสร้าง DDL ให้คุณโดยอัตโนมัติ โดยทั่วไปแล้วฉันอายที่จะทดสอบสิ่งต่าง ๆ ที่ส่วนใหญ่อาศัยการจดจำไวยากรณ์เพื่อสนับสนุนการทดสอบความเข้าใจที่กว้างขึ้นเกี่ยวกับประเด็นที่เกี่ยวข้อง
cjmUK

+1 @Barry Brown: ฉันเห็นด้วยและเป็นจุดที่น่าสนใจ
ความผิดพลาด

0

หากคุณต้องการถามคำถามที่เปิดกว้างเพิ่มเติม: ถามคำถามทั่วไปเกี่ยวกับประเภทข้อมูล DATE, DATETIME ... ถามถึงความแตกต่างระหว่างการนำไปใช้งาน / ผลิตภัณฑ์ของผู้ขายที่แตกต่างกัน พูดคุยเกี่ยวกับเครื่องมือบรรทัดคำสั่งตัวตักจำนวนมากเครื่องพิมพ์สวย ๆ ... บางทีคุณอาจเรียนรู้เคล็ดลับใหม่ในระหว่างการสัมภาษณ์

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.