คำถามสัมภาษณ์ System Design ของ Meta

โดย Aaron Cao · อัปเดตเมื่อ

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

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

Meta ถามคำถาม Design แบบไหนบ้าง

คุณอาจเตรียมตัวมาด้วยการท่องจำรายละเอียดเกี่ยวกับ distributed systems แต่รอบนี้ไม่ได้ให้รางวัลกับสิ่งนั้น ส่วนนี้จะพูดถึงรูปแบบคำถามจริง ๆ ที่ใกล้เคียงกับ product engineering มากกว่า infrastructure รูปแบบที่เกิดซ้ำ ๆ คือฟีเจอร์ระดับผู้บริโภคที่คุณใช้อยู่แล้ว ถูกยื่นให้คุณในฐานะโจทย์เปิด

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

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

ควรใช้เวลา 45 นาทีนั้นอย่างไร

รูปแบบความล้มเหลวทั่วไปคือการเริ่มวาดกล่องตั้งแต่นาทีที่สอง การแบ่งเวลาที่ใช้ได้ผลคือ ทำความชัดเจนเรื่อง requirements และ scope ก่อน แล้วร่าง API และ data model จากนั้นวาด architecture ระดับสูง แล้วค่อยเจาะลึกในจุดที่ผู้สัมภาษณ์ชี้ไป

  • Requirements ก่อน ผู้ใช้กลุ่มไหน แพลตฟอร์มไหน เน้นอ่านหรือเน้นเขียน และสิ่งที่คุณจะไม่สร้างอย่างชัดเจน
  • ตัวเลขต่อมา ประมาณการคร่าว ๆ ของผู้ใช้ที่ active รายวัน อัตรา request และขนาด payload เพื่อให้การแลกเปลี่ยนในภายหลังมีฐานอ้างอิง
  • Data model ก่อนไดอะแกรม หน้าตาของ entity หนึ่งตัวและวิธีที่มันถูก query มักเป็นตัวตัดสิน architecture
  • เจาะลึกหนึ่งจุด เตรียมใจไว้ว่าคุณจะถูกโยงให้เจาะลึกในคอมโพเนนต์เดียว แล้วถูกถามว่ามันล้มเหลวอย่างไร

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

อะไรที่แยกคำตอบที่ดีออกจากคำตอบทั่วไป

คำตอบทั่วไปอธิบาย architecture ที่ถูกต้อง คำตอบที่ดีจะระบุชื่อ trade-off ที่ยอมรับ และความล้มเหลวที่ยอมทน การพูดว่า «ผมเลือก fanout ตอนเขียนเพราะที่นี่การอ่านครองส่วนใหญ่ และผมยอมรับการเขียนที่ช้าลงสำหรับบัญชีคนดัง ซึ่งผมจะจัดการด้วย pull path แยกต่างหาก» มีน้ำหนักมากกว่าไดอะแกรมที่สมบูรณ์แบบ

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

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

ผู้ช่วยแบบสดช่วยตรงไหนได้บ้าง และไม่ช่วยตรงไหน

ในรอบสัมภาษณ์วิดีโอแบบพูด SubcueAI จะถอดเสียงคำถามของผู้สัมภาษณ์และแสดงโครงสร้างที่แนะนำในฝั่งของคุณ ผ่าน overlay บนเดสก์ท็อปบน macOS และ Windows หรือผ่านแผงด้านข้างของส่วนขยายเบราว์เซอร์ Chromium ไม่มีบอทเข้าร่วมประชุม และไม่มีอะไรถูกแทรกเข้าไปในหน้าประชุม สำหรับรอบ design คุณค่าที่แท้จริงคือเช็กลิสต์ของสิ่งที่คุณมักลืมเมื่ออยู่ภายใต้แรงกดดัน เช่น capacity estimate หรือ failure mode ไม่ใช่คำตอบที่คุณอ่านออกเสียง

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

คำถามที่พบบ่อย

System Design เป็นส่วนหนึ่งของทุกรอบสัมภาษณ์ทาง engineering ของ Meta หรือไม่

เป็นมาตรฐานตั้งแต่ระดับซีเนียร์ขึ้นไป รอบระดับเริ่มต้นมักให้น้ำหนักกับรอบ coding มากกว่า แม้ว่าบทสนทนาเรื่อง design แบบเบา ๆ ก็ยังอาจปรากฏได้

Product architecture variant คืออะไร

รอบ design ที่วางกรอบรอบพฤติกรรมผลิตภัณฑ์ที่ผู้ใช้มองเห็น ครอบคลุม client และ API surface และ data model แทนที่จะเป็น backend scaling ล้วน ๆ ลองถามผู้สรรหาว่ารอบของคุณใช้รูปแบบไหน

ต้องคำนวณ capacity ละเอียดแค่ไหน

ประมาณการคร่าว ๆ ระดับ order of magnitude พูดออกมาดัง ๆ ไม่มีใครต้องการเลขคณิตที่แม่นยำ พวกเขาอยากเห็นว่าตัวเลือก design ของคุณสอดคล้องกับ scale ที่คุณสมมติไว้

ควรถามคำถามเพื่อความชัดเจนหรือเริ่ม design เลย

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

ใช้ AI assistant ระหว่างรอบ design ได้ไหม

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

คำถามที่เกี่ยวข้อง

← เพิ่มเติมเกี่ยวกับ คำถามสัมภาษณ์ตามตำแหน่งและหัวข้อ