I do not think that you should know any algorithm by heart.
1) The algorithms would heavily depend on your day-to-day business &
2) We have google.
Additionally, someone might come up with a better algorithm, or you might know an algorithm, which kinda fits the problem, but there is one out there in the internet which fits your problem 100%. That's why I think, when you need an algorithm, you should always first consult the internet and books, make a list with all applicable algorithms and then decide based on advantages, disadvantages, complexity and benchmarks.