Bernstein-Vazirani algorithm
This algorithm is used to find the secret dot product string. Much like Deutsch-Jozsa algorithm, we apply Hadamards, query the oracle, and then apply Hadamards again.
For detailed explanation/derivation, consult the section from the book specified below1.