จะตอบคำถามผิดหรือไม่ตอบระหว่างการสัมภาษณ์อย่างไร? [ปิด]


31

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

  • เขียนฟังก์ชันที่คืนค่าจริงถ้าด้านสามเหลี่ยม (จำนวนเต็มทั้งหมด) a, b และ c สามารถแทนสามเหลี่ยมมุมฉากได้
  • FizzBuzz
  • คำนวณองค์ประกอบที่ N ของฟีโบนักชีโดยใช้การเรียกซ้ำ (ถ้าไม่รู้ว่าฟีโบนักชีคืออะไรฉันจะเขียนคำจำกัดความ F (n) = F (n-1) + F (n-2); F (1) = 1; F (0) = 1)
  • ใช้รายการโครงสร้างสำหรับจำนวนเต็มและเขียนฟังก์ชันเพื่อย้อนกลับ

เห็นได้ชัดว่าเป็นงานที่ง่ายมากและฉันไม่ได้เตรียมไว้สำหรับบางคนที่จะไม่แก้ปัญหา

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

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


6
ดูบทความนี้สำหรับมุมมองทางเลือกเกี่ยวกับคำถามประเภทนี้
Matthieu

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

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

2
การย้อนกลับทั้งคำถามประเภทนี้ทำให้ฉันเกาหัว ฉันพบว่าสิ่งเหล่านี้สนุกและฉันคิดว่าทุกคนที่ไม่ได้สนุกกับการถามคำถามแบบนี้คงไม่มีความคิดที่จะเป็นวิศวกร ฉันได้เห็นบทความแปลก ๆ มากมายที่พูดถึงคำถามและฉันค่อนข้างสับสนกับเรื่องทั้งหมด
Bill K

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

คำตอบ:


36

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

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

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

1) เขียนฟังก์ชันที่คืนค่าจริงถ้าด้านสามเหลี่ยม (จำนวนเต็มทั้งหมด) a, b และ c สามารถแทนสามเหลี่ยมมุมฉากได้

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

2) FizzBuzz

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

3) คำนวณองค์ประกอบที่ N ของ Fibonacci โดยใช้การเรียกซ้ำ (ถ้าพวกเขาไม่รู้ว่า Fibonacci คืออะไรฉันจะเขียนนิยาม F (n) = F (n-1) + F (n-2); F (1 ) = 1; F (0) = 1)

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

4) ใช้โครงสร้างรายการสำหรับจำนวนเต็มและเขียนฟังก์ชั่นเพื่อย้อนกลับ

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

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

นอกจากนี้จัดโครงสร้างกระบวนการสัมภาษณ์โดยรวมเพื่อให้มี "จุดทางออกที่สง่างาม" ในตัวเช่นคุณอาจมีวาระต่อไปนี้:

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

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

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


3
+1 คำตอบที่ดีมาก ฉันคิดว่าผลการปฏิบัติงานในแบบทดสอบดังกล่าวควรเป็น "ปัจจัย" ในการตัดสินใจว่าจะจ้างงานหรือไม่ คุณอาจพลาดผู้สมัครฝึกงานที่ดีถ้าคุณใช้ตัวกรองนี้เป็นตัวกรอง go / no-go ที่เข้มงวด ผู้ฝึกงานคือคำนิยามลองสิ่งใหม่ ๆ ไม่เพียง แต่เป็นสิ่งใหม่สำหรับอาชีพของคุณ แต่พวกเขาอาจไม่มีประสบการณ์ในการรับมือกับการถูก "ถูก" มีองค์ประกอบทางอารมณ์ในเรื่องนั้นและผู้คนจัดการกับมันในวิธีที่ต่างกัน
Angelo

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

สั้นและหวาน คำถามกระป๋องได้รับคำตอบกระป๋อง ทำไมไม่ถามคำถามที่กำหนดลักษณะที่สำคัญอื่น ๆ บางอย่างเช่นแบบไดนามิกทีมงาน / การทำงานร่วมกัน, ความสามารถในการกลอนสดแรงจูงใจของแต่ละบุคคล ...
Evan Plaice

82

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

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

หากคุณทำแบบฝึกหัดนั้นและยังคงนึกภาพตัวเองไม่ได้กับคน ๆ นั้นแสดงว่าพวกเขาไม่เหมาะกับงาน


32
+1: คุณต้องการสร้างแบบไดนามิกของงานใหม่ระหว่างการสัมภาษณ์ไม่ใช่แบบไดนามิกในชั้นเรียน
แมททิว

3
+1: ถูกต้อง จ้างเป็นทีมจ่ายค่าประสบการณ์และความสามารถ
pdr

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

11
+1 สำหรับ "ไม่มีความละอายหากไม่รู้ว่าไม่ถาวร"
mskfisher

9

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

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

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


6

สำหรับตำแหน่งฝึกงานคุณอาจจะถามมาก

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


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

4

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

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

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


4

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

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

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

  • ข้อผิดพลาดเล็กน้อยของลอจิก:หากอัลกอริทึมจะทำงานตามที่คาดไว้ในสถานการณ์ส่วนใหญ่ แต่ไม่ทั้งหมดของสถานการณ์ที่คาดหวัง (พูดเมื่อเข้ารหัส FizzBuzz, 15 จะส่งผลให้ "Fizz" หรือ "Buzz" แต่ไม่ใช่ทั้งสองอย่างตามที่ควร) เป็น "ผู้ทดสอบหน่วย" และชี้ให้เห็นว่าอัลกอริทึมจะล้มเหลวในอินสแตนซ์นั้นและดูว่าพวกเขาสามารถแก้ไขได้ พวกเขาอาจมองข้ามกรณีนั้น ๆ หรือพวกเขาอาจไม่เข้าใจข้อกำหนดที่สมบูรณ์เพียงพอ ทั้งสองเป็นอีกครั้งที่เข้าใจได้อย่างสมบูรณ์เกิดขึ้นในชีวิตประจำวันในการเขียนโปรแกรมซึ่งควรจะเอาชนะได้ง่ายโดยเพียงแค่ให้ข้อมูลเพิ่มเติมหรือข้อเสนอแนะ

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

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


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

3

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

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

ทำแบบทดสอบของคุณเองในวาระการประชุมหลังจากนั้น


2

Fizzbuzz เป็นข้อกำหนดที่แน่นอน หากพวกเขาไม่สามารถรหัส Fizzbuzz คุณไม่ควรจ้างพวกเขา

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

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

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

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


1

ขึ้นอยู่กับความสามารถของตำแหน่งที่คุณพยายามเติม

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

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


นี่คือการฝึกงานในปีสุดท้ายของพวกเขาในมหาวิทยาลัยดังนั้นฉันก็อ่อนหวานกับพวกเขา แต่ฉันไม่ได้คาดหวังว่าจะมีปัญหาและตอนนี้ฉันรู้สึกเหมือนฉันอ่อนเกินไป ..
Mykolas Simutis

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

1

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

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

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


อาจจะใช่ แต่ไม่ใช่การแก้คำถามเหล่านี้รู้สึกเหมือนฉันเพิ่งจะปลอบพวกเขาจากพื้นฐานมาก!
Mykolas Simutis

นั่นเป็นความจริงการจ้างนักเรียนชั้นปีที่มีประสบการณ์น้อยหรือไม่มีเลยอาจไม่ได้ผลสำหรับทุกองค์กร
Brian Dishaw

1

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

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


0

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

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

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


0
  1. พยายามเป็นคนดีกับพวกเขา จากคำถามของคุณจะเห็นว่าคุณไม่ได้พยายามทำตัวให้ดีแม้ที่นี่ คุณคิดว่าทุกคนควรรู้คำว่า "fizzbuzz" นี้หรือไม่? หรือเราควรค้นหาเครือข่ายเพราะคุณขี้เกียจเขียนเอง? ในทางตรงกันข้ามฉันคิดว่าทุกคนที่นี่รู้ว่าสามเหลี่ยมมุมฉากคืออะไร
  2. "รายการโครงสร้าง" คืออะไร? ฉันไม่รู้ ฉันรู้ "โครงสร้างรายการ" มันหมายความว่าอะไร: รายการสำหรับจำนวนเต็ม? รายการจำนวนเต็มคุณหมายถึงอะไร ฉันก็ไม่รู้จะเริ่มอย่างไรดี และโปรดอย่าพูดว่าคุณไม่ใช่คนอังกฤษ ฉันด้วย. และฉันก็ไม่เคยไปประเทศที่พูดภาษาอังกฤษ คุณก็รู้ว่าจำนวนเต็มพหูพจน์ที่จะเป็นจำนวนเต็มs ถ้าคุณไม่ได้พยายามที่จะเข้าใจกับความเท่าเทียมของคุณที่นี่ผมสามารถจินตนาการว่าคุณกำลังทำมี
  3. โปรแกรมเมอร์ผู้รู้หนังสือคนใดรู้ว่าแถวฟีโบนักชีเป็นตัวอย่างของหนังสือที่ไม่ควรทำซ้ำ คุณกำลังทดสอบพวกเขาสำหรับความสามารถในการต่อต้านคุณหรือสำหรับทักษะการเขียนโปรแกรมหรือไม่? ทำงานของคุณและหาตัวอย่างที่ดีกว่าสำหรับการทดสอบทักษะในการใช้การเรียกซ้ำ
  4. "ความสามารถในการทำงานภายใต้ความเครียด" สำหรับโปรแกรมเมอร์หมายความว่าเขาสามารถทำงานในเวลากลางคืนเมื่อจำเป็น แต่ถ้าคุณต้องการมีโปรแกรมเมอร์ที่ดีพวกเขาก็จะรอหัวหน้าของพวกเขาเป็นคนดีมากเข้าใจและช่วยเหลือดี หากคุณไม่ใช่คุณจะไม่มีโปรแกรมเมอร์ที่ดี พวกเขาไม่ใช่อัลฟาหนู หากพวกเขาจะรู้สึกขุ่นเคืองพวกเขาจะเข้าไปใกล้เปลือกหอยและไม่ทำอะไรเลย

ดังนั้นคำตอบของฉันคือ: เตรียมตัวให้ดีกว่านี้

ป.ล. คุณเป็นผู้จัดการอยู่แล้วดังนั้นคุณควรมีความเครียด

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