This question evaluates understanding of consistent hashing, virtual nodes, and API-level routing design (addNode/removeNode/getNode), including hash function selection, collision handling, virtual node count decisions, and minimizing key remapping.

Implement consistent hashing for routing keys to servers. Provide APIs addNode(nodeId, weight), removeNode(nodeId), and getNode(key). Use virtual nodes to balance load and ensure minimal key remapping when nodes join/leave. Explain hash choice, collision handling, and how you pick the number of virtual nodes. Analyze time/space complexity and compare with modulo hashing.