“ อธิบายสำนวน RAII” เป็นคำถามการคัดกรอง C ++ ที่ดีหรือไม่ [ปิด]


13

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

ปรากฎว่ามีผู้ใช้จำนวนพอสมควรสำหรับบทบาทผู้พัฒนา C ++ ฉันไม่ได้ใช้เวลามากในภาษา C ++ แต่ฉันได้ทำโครงการเล็ก ๆ น้อย ๆ และไม่เกี่ยวกับภาษา ฉันคิดว่า "อธิบายสำนวน RAII" จะเป็นคำถามซอฟต์บอลที่ผู้พัฒนา C ++ ส่วนใหญ่สามารถตอบได้ในขณะที่หลับครึ่งและจะทำให้ฉันสามารถถามคำถามที่น่าสนใจเกี่ยวกับประสบการณ์ได้ แต่กลับกลายเป็นว่าคนที่มีประสบการณ์ในการใช้งาน C ++ มากกว่า 10 ปีไม่รู้จักคำศัพท์นี้แม้ว่าฉันจะขยายคำย่อไปที่ "การได้มาซึ่งทรัพยากรเป็นการเริ่มต้น" ผู้สมัครคนหนึ่งบอกว่าเขารู้สึกว่าการใช้เทคนิคในการพัฒนา Windows ไม่ได้ใช้งานได้จริงเสมอไปซึ่งฉันคิดว่าเป็นความรู้สึกแปลก ๆ แต่ฉันเห็นตัวอย่างสองสามตัวอย่างที่สนับสนุนแนวความคิดนั้น)

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

ดังนั้น "คุณสามารถอธิบายสำนวน RAII ให้ฉันได้ไหม" คำถามคัดกรองที่เป็นธรรม? มันสมเหตุสมผลหรือไม่ที่จะคาดหวังให้นักพัฒนา C ++ ที่มีความสามารถเข้าใจ? เป็นคำที่ลึกลับกว่าที่ฉันคิดหรือไม่? สมมติว่าผู้สมัครไม่ทราบคำว่ามีคำถามติดตามที่สามารถช่วยฉันแซวว่าอย่างน้อยพวกเขามีแนวทางปฏิบัติภายในที่ทำให้ RAII ทำงานอย่างน้อยที่สุด? มีคำถาม "weeder" ทางเลือกที่ดีกว่าที่ให้ผู้สมัครละติจูดในการตอบและช่วยให้ผู้สมัครแสดงความเข้าใจในการพัฒนา C ++ หรือไม่?

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


3
"แม้แต่นักพัฒนา C ++ สองคนที่ฉันรู้จักดีพอที่จะตัดสินความสามารถของพวกเขากล่าวว่าพวกเขาไม่รู้จักคำนั้น" ตกลง. "ดังนั้นคือ" คุณสามารถอธิบายสำนวน RAII ให้ฉันได้ไหม? "เป็นคำถามคัดกรองที่ยุติธรรม?" ถามทำไม คุณไม่สามารถหาคนที่รู้เกี่ยวกับมัน คุณต้องรู้อะไรอีกบ้างที่คุณยังไม่รู้ บางทีคุณควรมองข้ามเรื่องนี้ (เนื่องจากคุณรู้คำตอบแล้ว) และมุ่งเน้นที่ "มีทางเลือกที่ดีกว่า" คำถาม "weeder" ซึ่งอาจน่าสนใจ ยกเว้นว่ามันเป็นความคิดเห็นที่ยิงไม่ดีซึ่งยอมรับได้ดี
S.Lott

9
สำนวนเปลี่ยนวิธีปฏิบัติที่ดีไม่ได้ แทนที่จะถามถึงสำนวนที่เฉพาะเจาะจงคุณจะถามเพียงแค่ว่า "คุณใช้ขั้นตอนอะไรในการออกแบบชั้นเรียนเพื่อให้แน่ใจว่าจะไม่รั่วไหล"
Blrfl

ยุติธรรมเพียงพอแม้ว่าขนาดตัวอย่างของฉันจะต่ำและฉันไม่ได้มีส่วนร่วมในชุมชน C ++ อีกต่อไปดังนั้นฉันจึงไม่รู้ว่าชุมชนพิจารณาความรู้ที่จำเป็นในวันนี้ ฉันกำลังพยายามหาวิธีที่จะขยายคำถามที่สามารถใช้ตัดสินความรู้ C ++ จริง ๆ ที่นอกเหนือไปจากพื้นฐานของไวยากรณ์
JasonTrue

2
ปัญหาของคุณไม่ใช่สิ่งที่ฉันคาดหวัง ฉันคิดว่าคุณจะพบใครบางคนที่รู้ว่า RAII คืออะไรได้รับการว่าจ้างและหลังจากนั้นคุณจะพบว่าพวกเขายังคงดูดข้อมูลที่เข้ารหัสอยู่
Kevin

1
@ JasonTrue: ฉันคิดว่าคำถาม Buzz ที่ควรจะเป็นคำถามการเขียนโปรแกรมจริงเช่นการย้อนกลับสตริง แต่อย่างไรก็ตามฉันคิดว่ามันเป็นคำถามที่ดี คุณอาจลองถามว่าคุณลักษณะใดใน c ++ - 0x ที่ผู้ให้สัมภาษณ์คิดว่าน่าตื่นเต้นหรือสำคัญที่สุด มันค่อนข้างยาก แต่ถ้าคุณได้รับคำตอบที่ดีมันอาจหมายถึงสิ่งที่ดี และคำถามก็สามารถย้อนกลับไปได้เสมอว่า 'ห้องสมุดที่สำคัญที่สุดคืออะไร / น่าสนใจที่สุด' ถ้าคุณจ้องมองที่ว่างเปล่า
Kevin

คำตอบ:


24

ดูเหมือนว่าคุณจะพบว่านักพัฒนา C ++ ที่คุณรู้จักจากประสบการณ์นั้นมีความสามารถไม่คุ้นเคยกับตัวย่อหรือแม้กระทั่งการแสดงออกเต็มรูปแบบ ดูเหมือนจะบ่งบอกว่าคำถามนั้นไม่เหมาะที่จะเป็นคำถามคัดกรองระหว่างการโทรศัพท์

ในอีกทางหนึ่งคุณสามารถไปยังจุดเดิมผ่านทางวงเวียนได้มากขึ้นโดยวางสถานการณ์ สิ่งที่ต้องการ: "คุณกำลังใช้คลาส Log ที่จะเขียนข้อมูลการบันทึกไปยังไฟล์เห็นได้ชัดว่าคุณจะต้องมีตัวแปรสมาชิกที่เป็นตัวจัดการไฟล์ (std :: FILE *) คุณจัดสรรและปล่อยไฟล์นี้ที่ไหน ด้ามจับ?" หากผู้สมัครเริ่มพูดคุยเกี่ยวกับการสร้างวิธีเปิด () และวิธีปิด () แทนที่จะจัดสรรตัวจัดการไฟล์ในตัวสร้างและการจัดสรรคืนตัวจัดการในตัวทำลายระบบคุณสามารถติดตามได้โดยถามเกี่ยวกับสิ่งต่าง ๆ ในชั้นเรียนของพวกเขา รหัสการโทรยกข้อยกเว้น ฯลฯ


ข้อเสนอแนะที่ยอดเยี่ยม ฉันชอบวิธีนี้
JasonTrue

ใช้เวลามากเกินไปในการสัมภาษณ์ทางโทรศัพท์
HelloWorld

15

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


3

ฉันคิดว่าเป็นคำถามที่ถูกต้อง แม้ว่าฉันจะไม่ทราบว่าคำศัพท์ RAII เป็นที่นิยมเพียงใด (ในทีมของฉันเราใช้คำว่า RAII ตลอดเวลา) แต่แนวคิดของการจัดการทรัพยากรนั้นมีความสำคัญโดยเฉพาะถ้าคุณต้องการข้อยกเว้นที่ปลอดภัยและมีความปลอดภัยแบบมัลติเธรดเช่นกัน .


3

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

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

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


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

4
@ Jason: ดีฉันอาจจะสามารถจดจำคำย่อ RAII สองสามเดือน ความรู้ชั่วคราวนั้นทำให้ฉันมีอำนาจแม้ว่าฉันจะไม่ได้สัมผัส C ++ ในหลายปีก็ตาม มันเป็นเรื่องเล็กน้อยสาระสำคัญ ถามพวกเขาว่าพวกเขาจัดการกับล็อคอย่างไรและตรวจสอบให้แน่ใจว่าพวกเขาเข้าใจความรู้จริงไม่ใช่ตัวย่อแปลก ๆ
Satanicpuppy

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

5
รู้ว่าสิ่งที่เรียกว่า RAII ไม่ได้เป็นความรู้ที่จำเป็น แต่การเข้าถึงรูปแบบโดยอัตโนมัติคือ
btilly

2
RAII เป็นแนวคิดพื้นฐานของ C ++ ที่ดีและคำนี้มีมานานอย่างน้อย 20 ปี ฉันคิดว่าการเลิกจ้างเพราะเรื่องไม่สำคัญค่อนข้างไม่ยุติธรรม ในขณะที่คุณสามารถมีนักพัฒนา C ++ ที่ดีที่ไม่รู้จักคำศัพท์นี้สำหรับฉันมันมีกลิ่นของคนที่ไม่ค้นคว้างานฝีมือของพวกเขา
Kaz Dragon

1

หากจุดประสงค์ของคุณคือการคัดกรองความสามารถโดยรวมอย่างรวดเร็วให้ลองทำดังนี้:

การทดสอบ FizzBuzz

จากนั้นคุณสามารถปล่อยให้แนวคิดและการปฏิบัติของ C ++ อยู่ในตำแหน่งที่ดีขึ้นเพื่อประเมินความเชี่ยวชาญของ C ++


1
ฉันเคยใช้และได้รับคำถามนี้บ่อยครั้งและพูดถึงมันข้างต้นในความคิดเห็นของฉัน แต่ฉันคิดว่ามันน่าอึดอัดใจที่จะถามในการสนทนาทางโทรศัพท์ 25 นาที
JasonTrue

0

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

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