If I had to pick one book to prepare for coding interviews with it would be this one.
I'm largely self-taught and I this book was as great at both providing patterns to approach different problems and explaining the recommended solutions. I purchased this book along with "Elements of Programming Interviews" and while I strongly suggest purchasing both books, I feel this one is better for people without a formal computer science background.
I was a bit discouraging when I first started practising with these books but as I worked through them I started to enjoy the process. You eventually start seeing common patterns, become familiar with common algorithms/data structures, and get comfortable 'running' code in your head. These are more than just useful interview skills. Estimating how code scales lets you judge when it's worth increasing code complexity to optimize or when a simple brute force is 'good enough' and once you are in the habit of 'running' code in you head potential errors will start to jump out at you while reading code. I'd recommend both these books for anyone interested in becoming a better software engineer.