hamexam.org is also very good.

There are also some nice apps. The free "Ham Radio Exam" apps for iOS by Roy Watson (one for Technician, one for General, and one for Extra) are quite good. I made extensive use of them.

Here, generally, is how I prepared for the tests.

TECHNICIAN. The electronics knowledge I already had from non-ham interests, plus what I remembered of ham rules and operating procedure from some studying I had done when I looked at getting licensed back in the '70s when I was a kid, covered most of the test. I took a few practice tests and passed them. I then read KB6NU's No-Nonsense Technician guide to fill in the gaps, and then drilled at hamstudy.org and hamexam.org until I was consistently getting 95+%.

GENERAL. I got the ARRL book for this. For Technician, I was fine with the no-nonsense guide, because all I was missing were things that you really just have to memorize. For General, I needed to actually learn some things. It took a week to go through the ARRL General book. I went through it in order. Then I drilled at hamstudy.org and hamexam.org until I was always passing practice tests by a comfortable margin. I found Roy Watson's apps during this and added them to the mix.

EXTRA. After finishing the ARRL General book, I still had a week until the exam, so on to the ARRL Extra book. I started with the chapter on antennas and feed lines, because that is one of the biggest areas on the Extra exam (8 questions) and my prior electronics knowledge did not cover this. I wanted to get that done early, so I could drill that section throughout the week. Then I basically did the book in order. Near the end of the week, it became clear my pace wasn't fast enough to actually finish the whole thing the way I was doing it.

The way I had been doing it was to read a section until I got to the point where it said to try specific questions. Then I'd try those questions, and if I got any wrong redo the section. To speed things up I changed this so that I'd quickly skim a section and decide if it was something I was already reasonably familiar with. If it was something new to me, I'd go back and do it the slow way. If it was something that I did already reasonably know, I'd skip straight to the questions. If I aced them, I'd move on.

While studying for Extra, I was doing practice General tests. Restroom break--take a test while sitting on the can. Commercial break while watching TV--take a test. Drive-through slow at Wendy's--take a test while waiting for them to take my order. I'd also toss in the occasional Technician practice test.

I finished the Extra book a day before the test. That last day, I took several Extra practice tests, and continued with the General and Tech practice tests to keep that material fresh.

It worked. I passed all three tests the next day (100% on each...not unexpected for Tech and General as I was generally acing them in practice, but a surprise on Extra, as I had never aced an Extra practice).

I highly recommend the ARRL books for General and Extra. Most of the other popular study aids I saw seemed to me to tilt too far toward just covering the test questions. The ARRL books flesh things out more, covering things not on the exam but related to things on the exam, so you come away with a better understanding. With the ARRL books, it did not feel like I was studying for the exam--it felt like I was learning interesting stuff that just happened to include what would be on the exam.