คุณใช้เทคนิคอะไรเมื่อสัมภาษณ์นักพัฒนา [ปิด]


28

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

ฉันสนใจในเทคนิคและคำถามที่มีประสิทธิภาพสำหรับคุณเมื่อสัมภาษณ์นักพัฒนาที่มีศักยภาพสำหรับงาน

หนึ่งเทคนิคต่อหนึ่งคำตอบเพื่อให้เราสามารถโหวตพวกเขาได้โปรด

คำตอบ:


21

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

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

  • คุณสามารถตั้งชื่อคนที่รู้จักกันดีในอุตสาหกรรมของเราที่คุณชอบงานหรือหาแรงบันดาลใจและทำไม? (นักพัฒนาผู้ก่อตั้งเว็บไซต์ผู้เขียนผู้พูด ฯลฯ )

  • คุณกำลังอ่านอะไรอยู่หรือหนังสือเล่มล่าสุดที่คุณอ่านเกี่ยวกับซอฟต์แวร์คืออะไร

  • เว็บไซต์ที่เกี่ยวข้องกับการเขียนโปรแกรมคุณทำบ่อยครั้ง?

แม้ว่าจะไม่สามารถตอบคำถามเหล่านี้ได้เลย (น่าเศร้าที่มันเกิดขึ้นบ่อยมาก) ไม่ได้หมายความว่า 'ไม่ต้องจ้าง' สำหรับฉันพวกเขาพูดมากเกี่ยวกับวิธีที่คนเข้าใกล้อาชีพการพัฒนาซอฟต์แวร์


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

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

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

16

ทำให้พวกเขาเขียนโค้ดรหัสจริง

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


6
ใช่ แต่ไม่มากเกินไป
Damovisa

การเขียนโค้ดจริงจะช่วยให้คุณก้าวเข้าสู่ บริษัท ซอฟต์แวร์ชั้นนำ (Google, Amazon, Microsoft, ... ) และรู้สึกอิสระที่จะเลือกส่วนที่เหลือ
ข้อเสีย

3
โปรดอธิบายอย่างละเอียดในคำตอบของคุณ คุณหมายถึงอะไรด้วยรหัส "ของจริง" รหัสอะไรไม่ใช่ "ของจริง"
MAK

+1 @MAK: ตกลงรหัสจริงคืออะไร ถ้ามันรหัสที่คุณจะตั้งใจที่จะใช้ในการผลิตซอฟต์แวร์ของคุณ ...
สตีเว่น Evers

1
ฉันจะพิจารณา 'รหัสจริง' บางอย่างเช่นขอให้ผู้สัมภาษณ์เขียนฟังก์ชัน 'strdup ()' มีการใช้งานจริงและเปิดเผยประสบการณ์และทัศนคติต่อสิ่งต่าง ๆ เช่นการจัดการหน่วยความจำและการจัดการข้อผิดพลาด
JBRWilkinson

11

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

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

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


2
+1 สำหรับ "การสัมภาษณ์ไม่ควรดำเนินการโดยผู้จัดการเท่านั้น" หากการจ้างใหม่ไม่สามารถตัดรหัสเช่นเดียวกับเพื่อนร่วมงานของพวกเขาจะมีความไม่สงบในทีม
JBRWilkinson

7

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

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

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

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


6

ถามพวกเขาเกี่ยวกับการตัดสินใจทางสถาปัตยกรรมที่สำคัญ

ตัวอย่างเช่น. นี่คือโปรแกรม x ที่รันจำนวนงานย่อย y พร้อมกัน สิ่งที่คุณจะเลือกโครงสร้างหลายกระบวนการหรือเธรด

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

มีคำถามมากมายที่ผู้สัมภาษณ์อาจคิดเช่นนี้:

  • TCP หรือ UDP
  • ภาษาแบบไดนามิกหรือแบบคงที่?
  • แอพพลิเคชั่นแบบเสาหิน
  • สิ่งที่คุณจะใช้สำหรับการสื่อสารระหว่างกระบวนการ?
  • กระบวนงานที่เก็บไว้หรือออม?

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

หมายเหตุ: การให้ผู้สมัครเขียนรหัส pesudo บางอย่างก็เป็นสิ่งจำเป็นเช่นกัน แต่คำตอบนั้นได้ถูกใช้ไปแล้ว


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

1

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

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


8
ฉันไม่เห็นด้วย. รายการที่เชื่อมโยงและการเรียงลำดับเป็นทั้งปัญหากระป๋องที่รู้จักกันดีในปัญหาทั่วไป ใครก็ตามที่เป็นคนเขียนรู้ว่าพวกเขาทำงานอย่างไร แต่คนส่วนใหญ่ไม่สนใจที่จะเขียนของตัวเองเพราะภาษาส่วนใหญ่ทำงานได้ดี
Evan Plaice

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

0

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

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

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

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