ฉันควรคาดหวังคำถามสัมภาษณ์ Kafka แบบใดบ้าง?

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

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

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

แนวคิดหลักของ Kafka ใดที่ผู้สัมภาษณ์ทุกคนตรวจสอบก่อน?

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

  • ท็อปปิกและพาร์ทิชัน ท็อปปิกถูกแบ่งเป็นพาร์ทิชัน โดยแต่ละพาร์ทิชันเป็นบันทึกเรียงลำดับที่เพิ่มข้อมูลต่อท้ายเท่านั้น คำถามต่อยอด: เหตุใด Kafka จึงขยายการเขียนด้วยการเพิ่มพาร์ทิชัน แทนที่จะทำให้บันทึกเดียวเร็วขึ้น?
  • ออฟเซ็ต ตำแหน่งของผู้ใช้ในพาร์ทิชัน คำถามต่อยอด: ใครจัดเก็บออฟเซ็ตที่ยืนยันแล้ว และจะเกิดอะไรขึ้นหากผู้ใช้หยุดทำงานก่อนยืนยัน?
  • กลุ่มผู้ใช้ ผู้ใช้ในกลุ่มจะแบ่งพาร์ทิชันของท็อปปิกร่วมกัน โดยในช่วงเวลาหนึ่ง พาร์ทิชันหนึ่งจะมอบหมายให้ผู้ใช้ในกลุ่มได้ไม่เกินหนึ่งราย คำถามต่อยอด: จะเกิดอะไรขึ้นกับปริมาณงานหากกลุ่มมีผู้ใช้มากกว่าพาร์ทิชัน?
  • โบรกเกอร์และคอนโทรลเลอร์ โบรกเกอร์จัดเก็บพาร์ทิชัน ส่วนคอนโทรลเลอร์จัดการการเลือกผู้นำและเมทาดาทา คำถามต่อยอด: มีอะไรเปลี่ยนไปเมื่อ Kafka ย้ายเมทาดาทาจาก ZooKeeper ไปยัง KRaft?
  • โปรดิวเซอร์และคีย์ ข้อความที่มีคีย์จะลงในพาร์ทิชันที่เลือกด้วยการแฮชคีย์ ส่วนข้อความที่ไม่มีคีย์จะกระจายไปตามพาร์ทิชัน คำถามต่อยอด: แบบใดรักษาลำดับเหตุการณ์ของลูกค้ารายเดียวไว้ได้?

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

คำถามเรื่องการรับประกันการส่งและการทำสำเนาเป็นอย่างไร?

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

  • ไม่เกินหนึ่งครั้งกับอย่างน้อยหนึ่งครั้ง หากยืนยันออฟเซ็ตก่อนประมวลผล คุณอาจทำข้อความสูญหาย หากประมวลผลก่อนแล้วยืนยันภายหลัง คุณอาจประมวลผลข้อความซ้ำ บอกให้ได้ว่าลำดับแต่ละแบบรองรับความล้มเหลวใด และระบบของคุณเลือกแบบใด
  • โปรดิวเซอร์แบบไอดอมโพเทนต์และเพียงครั้งเดียว โปรดิวเซอร์แบบไอดอมโพเทนต์จะกำจัดการลองซ้ำที่ซ้ำกันภายในพาร์ทิชัน ส่วนธุรกรรมขยายคุณสมบัตินี้ให้ครอบคลุมหลายพาร์ทิชันและออฟเซ็ตของผู้ใช้ในวงจรรับ-แปลง-ส่ง เตรียมอธิบายด้วยว่าความหมายของเพียงครั้งเดียว ไม่ ครอบคลุมอะไรบ้าง: การเขียนลงฐานข้อมูลปลายทางนอกธุรกรรมยังคงเป็นสิ่งที่คุณต้องรับผิดชอบ
  • acks ปัจจัยการทำสำเนา และสำเนาที่ซิงค์กัน acks=all จะรอชุดสำเนาที่ซิงค์กัน ส่วน min.insync.replicas กำหนดว่าชุดดังกล่าวจะลดลงได้เพียงใดก่อนระบบปฏิเสธการเขียน ผู้สัมภาษณ์มักถามว่าคุณต้องแลกอะไรกับความทนทานในจุดนี้: เวลาแฝงและความพร้อมใช้งานเมื่อโบรกเกอร์สูญหาย
  • การเก็บรักษาและการบีบอัด การเก็บรักษาตามเวลาหรือขนาดจะลบเซกเมนต์เก่า ส่วนการบีบอัดบันทึกจะเก็บระเบียนล่าสุดของแต่ละคีย์ คำถามต่อยอด: แบบใดรองรับบันทึกการเปลี่ยนแปลงสำหรับที่เก็บคีย์-ค่า และเพราะเหตุใด?
  • การปรับสมดุลใหม่ เมื่อผู้ใช้เข้าร่วมหรือออก พาร์ทิชันจะถูกมอบหมายใหม่ คำถามต่อยอด: การปรับสมดุลใหม่ที่ใช้เวลานานส่งผลอย่างไรต่อบริการที่ไวต่อเวลาแฝง และการปรับสมดุลใหม่แบบร่วมมือกับสมาชิกภาพแบบคงที่ช่วยลดผลกระทบอย่างไร?

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

คำถามด้านการออกแบบและสถานการณ์มีลักษณะอย่างไร?

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

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

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

ผู้ช่วยสัมภาษณ์ AI ช่วยตอบคำถาม Kafka ได้หรือไม่?

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

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

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

เหตุใด Kafka จึงรับประกันลำดับได้เฉพาะภายในพาร์ทิชัน?

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

อย่างน้อยหนึ่งครั้งกับเพียงครั้งเดียวใน Kafka ต่างกันอย่างไร?

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

กลุ่มผู้ใช้ควรมีผู้ใช้กี่ราย?

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

จะเกิดอะไรขึ้นเมื่อโบรกเกอร์ Kafka ล้มเหลว?

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

SubcueAI ช่วยระหว่างการประเมินเขียนโค้ด Kafka ได้หรือไม่?

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

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

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