React hooks are stored as a linked list on each fiber node. The call order must stay the same between renders so React can match each hook call to the correct node in the list.
When you call useState, useEffect, or any other hook inside a component, React does not use the variable name to identify it. Instead, it relies on the order in which hooks are called during each render.
Internally, each hook call creates (on mount) or reads (on re-render) a hook object stored in a linked list attached to the component's fiber. The fiber's memoizedState property points to the first hook, and each hook has a next pointer to the following one.
This linked-list design is why the Rules of Hooks exist: hooks must be called at the top level, never inside conditions or loops. If the call order changes between renders, React reads the wrong hook object and returns mismatched state.
Interview framing: define Hooks in one sentence, then explain one concrete runtime behavior and one common pitfall with a short code example.