ฉันควรบอกผู้สัมภาษณ์หรือไม่ว่าฉันรู้คำตอบของคำถามที่ถูกถามอยู่แล้ว? [ปิด]


29

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

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

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


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

7
@ Chris คำถามสุดท้ายในความคิดเห็นของคุณคือสิ่งที่ OP ถามจริงๆที่นี่: D
P Shved

1
และนั่นควรจะสร้างสรรค์? ฉันไม่สามารถนึกถึงเมื่อฉันจะบอกผู้สัมภาษณ์ "ใช่ฉันรู้คำตอบ" และไม่บอกพวกเขา
Chris

1
ฉันรอ "Fishtoaster" เพื่อให้คำตอบของเขา
ทำเครื่องหมาย C

1
@Chris - ถูกต้อง; คำถามที่นี่ตามที่ฉันเข้าใจมันเดือดลงไปถึง "มีประโยชน์และ / หรือการพิจารณาทางจริยธรรมเพื่อตัวเลือกที่ 1 หรือ 2 ถ้าคุณรู้ว่า brainteaser และถ้าเป็นเช่นนั้นพวกเขามีน้ำหนัก?" จุดพื้นฐานถูกฝังอยู่ในระดับค่อนข้างลึกและเป็นประโยคในลักษณะส่วนตัวเปิดเผยมาก แต่ดูเหมือนว่ามีประโยชน์ (ไม่น้อยเพราะฉันไม่รู้ว่าคำตอบที่ถูกต้องคืออะไรและดูเหมือนว่าฉันควร) IMO นี้เป็นคำถามที่ต้องการการแก้ไขแบบบางอย่างเพื่อความชัดเจนไม่ใช่การปิด
Inaimathi

คำตอบ:


41

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


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

26

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

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

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

ฉันสามารถสร้างกับดักหนูด้วยชิ้นส่วนที่เคลื่อนไหวได้หลายร้อยชิ้น หาก บริษัท อยู่ในธุรกิจของการจับหนู .. ดี ... :)


5
คุณจะไม่พบว่าผู้ให้สัมภาษณ์แก้ปัญหาอย่างไรถ้าเขาเพิ่งรู้คำตอบ
P Shved

3
@Pavel: แน่นอน แต่คุณสามารถถามพวกเขาว่า "อะไรคือข้อดีของการทำแบบนี้แทนที่จะเป็นแบบนั้น?" ด้วยวิธีนี้คุณจะเห็นว่าพวกเขาเข้าใจกระบวนการคิดที่อยู่เบื้องหลังคำตอบจริง ๆ หรือไม่หรือพวกเขาจดจำคำตอบโดยไม่เข้าใจว่าทำไม
ทิมกู๊ดแมน

@ ทิมดังนั้นถ้าคุณต้องการถาม "วิธีการดูว่ารายการที่เชื่อมโยงมีลูปใน O (1) หน่วยความจำ" คำถามและฉันรู้คำตอบ (heck ฉันจะแก้ไขปัญหาดังกล่าวจำนวนมาก) สิ่งที่จะ คำถามติดตามของคุณเป็นอย่างไร
P Shved

ทิมฉันสนใจที่จะดูคุณสัมภาษณ์ใครบางคน (หรือสัมภาษณ์ฉันฮ่าฮ่า) เพื่อเรียนรู้
ทำเครื่องหมาย C

1
@Pavel ฉันอาจจะทำให้ปัญหายุ่งยากและแนะนำนักเขียนหลายคนให้กับรายการ หากคุณใช้เวลาสักครู่และคิดเกี่ยวกับเรื่องนั้นฉันอาจถามความคิดเห็นของคุณเกี่ยวกับวิธีการล็อคฟรีและถามคำถามเดียวกันอีกครั้งโดยสงสัยว่า O (1) ไปที่ O (log n) หรือไม่ หากคุณพัดฉันออกจากน้ำและเราสามารถจ่ายคุณได้ฉันจะทำให้แน่ใจว่าคุณเป็นหัวหน้าของฉัน ขออภัยในความล่าช้าที่ด้านบน 'ซองจดหมายสีส้มสิ่งที่' ได้ทำหน้าที่ค่อนข้างแปลกเมื่อเร็ว ๆ นี้
Tim Post

10

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


8

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

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

(แก้ไข: ลบการอ้างอิงถึง FizzBuzz จากความคิดเห็นของคนอื่นในโพสต์นี้)


4
FizzBuzz ไม่ได้เกี่ยวกับแฟคตอริ่ง
zvrba

2
ฉันคิดว่าคุณอาจพลาดจุด FizzBuzz ด้วย
Tim Post

ถ้างั้นก็ไม่ควรหลีกเลี่ยงกรณีของ n mod 15? ฉันพูดว่า "แฟคตอริ่ง" เพราะฉันนึกภาพได้ว่ามีคนใช้อีกสองช่วงเวลาสำหรับ "Fizz" และ "Buzz" โดยคิดว่าพวกเขาฉลาด ประเด็นก็คือตัวเลขที่หารด้วยจำนวน N ที่คุณใช้ (สำหรับ FizzBuzzBazz) ยังสามารถหารได้ด้วยการคูณของจำนวนนั้น
Frank Shearar

1
ซึ่งไม่สำคัญเนื่องจาก 3 * 5 ไม่จำเป็นต้องจัดการเป็นพิเศษในการใช้งาน FizzBuzz
Joren

ยุติธรรมเพียงพอ โซลูชันที่ฉันเคยเห็นทำได้ แต่ไม่คุณไม่ต้องจัดการ 3 * 5 เป็นพิเศษ
Frank Shearar

6

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


3

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

สำหรับคำถามที่ไม่น่ารำคาญอย่างเพียงพอปัญหาที่เกิดขึ้นจริงอาจเป็นคำถามที่รู้จักกันดีหรืออาจถูกลดลงเป็นคำถามที่หนึ่ง หากมีคนถามเกี่ยวกับวิธีหาเส้นทางที่สั้นที่สุดระหว่างสองโหนดในกราฟคุณแสร้งทำเป็นไม่รู้จัก BFS / Dijkstra หรือไม่? IMHO สำหรับปัญหาบางอย่างมันอาจจะต่อต้านการซ่อนความจริงที่ว่าคุณรู้เรื่องของคุณ


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

3

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

การย้อนกลับสตริง ฯลฯ ไม่มีคำว่า "gotcha" ที่ชัดเจนซึ่งคุณสามารถอธิบายได้ใน 3 วินาทีหากคุณรู้


1

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

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

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


0

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

  1. พวกเขาจะเคารพคุณเพราะคุณจะพยายามตอบคำถามที่คุณไม่เคยเห็น / ได้ยินมาก่อนเท่านั้น
  2. พวกเขาจะถูกลมพัดปลิวไปตามความสามารถของคุณ - เพราะคุณรู้คำตอบของคำถามที่พวกเขาโพสต์แล้วและจะเสนองานให้คุณทันที
  3. พวกเขาจะคิดว่าคุณเป็นคนฉลาดเพราะคุณรู้ทุกอย่างแล้ว - แค่ถามคุณ!
  4. พวกเขาจะคิดว่าคุณเป็นคนโง่เพราะคุณไม่รู้ว่าอะไรจะเกิดขึ้น

ฉันสงสัยว่าตัวเลือก (1) และ (2) จะไม่เกิดขึ้น - โทรหาฉันนายถากถาง ดังนั้นคุณจึงเหลือที่จะเป็นคนโง่หรือเป็นคนฉลาดไม่ว่าจะเป็นเรื่องงาน เฮ้โชคดี!

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

แบ่งปันและเพลิดเพลิน

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