ฟังก์ชั่นรับประกันว่าจะไม่ส่งคืนค่าเดิมสองครั้ง [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน5 ปีที่ผ่านมา นี่เป็นคำถามที่ฉันถูกถามในการสัมภาษณ์งานและฉันไม่สามารถหาคำตอบที่พวกเขากำลังมองหาดังนั้นฉันหวังว่าบางคนที่นี่อาจมีความคิดบางอย่าง เป้าหมายคือการเขียนฟังก์ชั่นที่รับประกันว่าจะไม่ส่งคืนค่าเดิมสองครั้ง สมมติว่าฟังก์ชั่นนี้จะสามารถเข้าถึงได้โดยหลายเครื่องพร้อมกัน ความคิดของฉันคือการกำหนดรหัสเฉพาะให้แต่ละเครื่องแล้วส่งค่านั้นไปยังฟังก์ชันตัวสร้างค่าที่ไม่ซ้ำกัน: var i = 0; function uniq(process_id, machine_id) { return (i += 1).toString() + machine_id + "-" + process_id; } สิ่งนี้จะหลีกเลี่ยงการตกออกมาจากสภาพการแข่งขันเนื่องจากแม้ว่ากระบวนการสองกระบวนการขึ้นไปอ่านค่าเดียวกัน แต่ค่าiส่งคืนแต่ละครั้งจะถูกติดแท็กการรวมกันที่ไม่ซ้ำกันของ id กระบวนการและรหัสเครื่อง อย่างไรก็ตามผู้สัมภาษณ์ของฉันไม่ชอบคำตอบนี้เพราะการนำเครื่องอื่นมาใช้ออนไลน์เกี่ยวข้องกับการกำหนดรหัส ใครจะคิดวิธีอื่นในการแก้ปัญหานี้ที่ไม่เกี่ยวข้องกับการกำหนดค่าเครื่องแต่ละเครื่องให้มีรหัสเฉพาะหรือไม่? ฉันต้องการคำตอบในกรณีที่คำถามนี้เกิดขึ้นอีกครั้ง ขอบคุณ