คำถามพื้นฐาน ได้แก่ :
ฉันคิดว่าโดยปกติแล้วมันจะช่วยให้ผู้สมัครของคุณทำการฝึกเขียนโค้ดอย่างง่ายเช่น:
- เขียนคลาสลิสต์ลิงก์ของคุณเองโดยไม่ต้องใช้คลาสที่มีอยู่แล้ว
- เขียนคลาส hashtable ของคุณเองโดยไม่ต้องใช้คลาสที่มีอยู่แล้ว
- เขียนคลาสที่แทนต้นไม้ไบนารี เขียนวิธีการที่สำรวจเส้นทางทั้งหมดของต้นไม้
- เขียนวิธีการทำการค้นหาแบบไบนารีบนอาเรย์โดยไม่ต้องใช้วิธีการในตัว
- วาดสกีมาฐานข้อมูลสำหรับบล็อก ผู้ใช้แต่ละคนมีบล็อกเดียวเท่านั้นแต่ละบล็อกมีหลายหมวดหมู่แต่ละหมวดหมู่มีโพสต์จำนวนมากและแต่ละโพสต์สามารถอยู่ในหมวดหมู่มากกว่าหนึ่งหมวด ขอให้ผู้สมัครของคุณเขียนแบบสอบถามเพื่อดึงข้อมูลเฉพาะออกมา
จากนั้นค้นหาความรู้ด้านเทคนิคเฉพาะ:
- (ตัวจัดการเหตุการณ์) สร้างคลาสที่มีตัวจัดการเหตุการณ์ที่กำหนดเองสร้างคลาสอื่นที่เชื่อมต่อกับตัวจัดการเหตุการณ์ที่กำหนดเอง
- (XML) โหลดเอกสาร XML และเลือกโหนดทั้งหมดที่มีคุณสมบัติ x, y และ z
- (การโปรแกรมเชิงฟังก์ชัน) สร้างฟังก์ชั่นที่ยอมรับฟังก์ชั่นอื่นเป็นพารามิเตอร์ ฟังก์ชั่น Map หรือ Fold ใช้งานได้ดีจริง ๆ สำหรับสิ่งนี้
- (Reflection) เขียนฟังก์ชันที่กำหนดว่าคลาสมีคุณสมบัติเฉพาะหรือไม่
- (Regex) เขียนนิพจน์ทั่วไปซึ่งจะลบแท็กทั้งหมดออกจากบล็อก HTML
สิ่งเหล่านี้ไม่ใช่คำถามที่ยากเป็นพิเศษสำหรับนักเขียนโปรแกรม C # ที่มีความเชี่ยวชาญที่จะตอบคำถามเหล่านี้และควรให้แนวคิดที่ดีเกี่ยวกับจุดแข็งของผู้สมัครของคุณ คุณอาจต้องการคำถามสองสามข้อ / ตัวอย่างโค้ดที่ใช้รูปแบบการออกแบบเฉพาะ
[แก้ไขเพื่อความกระจ่าง] :
ดูเหมือนว่าผู้คนจำนวนมากไม่เข้าใจว่าทำไมฉันจึงถามคำถามประเภทนี้ ให้ฉันสัมผัสกับความเห็นของคนไม่กี่คน (ฉันไม่ได้พูดโดยตรง แต่เป็นการถอดความแทน):
ถาม:ครั้งสุดท้ายที่มีคนใช้สารระเหยหรือข้อมูลอ้างอิงอ่อน
ตอบ:เมื่อฉันให้สัมภาษณ์ทางเทคนิคฉันมองว่าคน ๆ นั้นเข้าใจคุณสมบัติระดับสูงและระดับต่ำของ. NET หรือไม่ Volatiles และการอ้างอิงที่อ่อนแอเป็นคุณสมบัติระดับต่ำสองอย่างที่. NET - แม้ว่าจะไม่ได้ใช้คุณสมบัติเหล่านี้ในทางปฏิบัติบ่อยครั้งคำตอบสำหรับคำถามเหล่านี้จะเปิดเผยอย่างยิ่ง
ความเข้าใจที่ดีของสารระเหยแสดงให้เห็นว่าคนเข้าใจว่าการเพิ่มประสิทธิภาพของคอมไพเลอร์เปลี่ยนความถูกต้องของรหัสได้อย่างไรกระทู้ที่เก็บสำเนาของสถานะที่ใช้ร่วมกันในท้องถิ่นซึ่งอาจไม่ซิงค์ในเวลาใดก็ตามและตระหนักถึงความซับซ้อนของรหัสหลายเธรด .
ความเข้าใจที่ดีเกี่ยวกับการอ้างอิงที่อ่อนแอแสดงให้เห็นว่าคน ๆ หนึ่งรู้เกี่ยวกับรายละเอียดที่ใกล้ชิดของตัวเก็บขยะและวิธีการที่จะตัดสินใจเมื่อต้องเพิ่มหน่วยความจำ แน่นอนว่าคุณสามารถถามผู้สมัครได้ว่า "ตัวเก็บขยะทำงานอย่างไร" แต่การถามเกี่ยวกับการอ้างอิงที่อ่อนแอนั้นได้รับคำตอบที่ดีกว่าและมีน้ำใจมากกว่า
.NET เป็นภาษาที่ค่อนข้างเป็นธรรม แต่ผู้พัฒนาดาวมักจะมีความเข้าใจอย่างลึกซึ้งเกี่ยวกับ CLR และรายละเอียดระดับต่ำของรันไทม์ของ. NET
ถาม:ทำไมทุกคนต้องใช้ hashtable ของตนเองหรือรายการที่ลิงก์?
ตอบ:ฉันไม่ได้หมายความว่าชั้นเรียนพจนานุกรมด้อยกว่าหรือผู้คนควรจะใช้แฮชเทเบิลของตัวเอง นี่เป็นคำถามพื้นฐานที่ทดสอบว่าบุคคลนั้นมีความเข้าใจโครงสร้างข้อมูลน้อยที่สุดหรือไม่ นั่นคือสิ่งที่คำถามเหล่านี้ทดสอบสำหรับ: ความเข้าใจขั้นต่ำที่เปลือยเปล่า
คุณเรียนรู้เกี่ยวกับแฮชเทเบิลและรายการที่ลิงก์ในวันแรกของโครงสร้างข้อมูล 101 หากใครบางคนไม่สามารถเขียน hashtable หรือรายการที่เชื่อมโยงตั้งแต่เริ่มต้นพวกเขาจะมีช่องว่างขนาดใหญ่ในความรู้ด้านเทคนิค
ถาม:ทำไมคำถามเหล่านี้ถึงหยาบคาย?
ตอบ:เนื่องจากชื่อของเธรดนี้คือ "คำถามนักพัฒนา NET ที่ดีทุกคนควรรู้" นักพัฒนา. NET ทุกคนเริ่มต้นอาชีพการเขียนแอพพลิเคชั่นที่ไม่เหมาะสมและ 90% ของผู้พัฒนาแอพพลิเคชั่นที่ทำเพื่อการใช้ชีวิตนั้นเกี่ยวข้องกับแอพพลิเคชั่นทางธุรกิจ
ฉันคิดว่าคำถามที่ทดสอบความรู้ของบุคคลเกี่ยวกับแอพแนวธุรกิจมีความเหมาะสมในกรณีส่วนใหญ่ยกเว้นว่าคุณกำลังมองหานักพัฒนาที่มีความเฉพาะเจาะจงมากเช่นการพัฒนาคอมไพเลอร์การพัฒนาเกม - เครื่องยนต์การพิสูจน์ทฤษฎีการประมวลผลภาพเป็นต้น .