The document describes two forms of binding solutions: compile-time binding, which resolves symbols and assigns types during compilation (also known as early or static binding), and runtime binding, where types are assigned during execution (also known as late or dynamic binding). Examples include method overloading for compile-time binding and method overriding for runtime binding.