Arm interview question

How does out-of-order execution work and why does it improve performance?