I haven't totaled up my stats, but this is roughly how things went:
1. Once I got a recruiter on the phone, I had a 100% chance of going to next stage
2. For take-home projects, I had a 100% pass rate (did 3-4 of these)
3. For online assessments, I had a 50% pass rate (did 2 of these)
4. For live coding screens, had about a 60% pass rate (did 10-12 of these)
5. For onsites, I had a 50% offer rate. I did 4 of these at NYC startups, and 2 at bigger tech companies, one of which made an offer. Still waiting to hear from other one, but not hopeful.
I'm still in loop at 3 big tech companies.
The point is, it's pretty random. I flopped a couple of tech screens pretty badly because the interviewer was just difficult. Some give easy questions, some give hard. Some you click with, some you don't. And you get better at this over time too.
(I've also been amused to watch startups give more challenging interviews than the big tech companies and then make offers that are 1/2 as valuable)
In terms of prep, I took a data structures / algos class at Harvard Extension a couple years ago that was really helpful, and then I've been doing some Leetcode and CTCI problems the last couple months. Not enough though, honestly. I also went through some mock interviews with Interviewing.io and TripleByte, both of which were helpful.
By far the most helpful thing though is that both of the big tech companies where I did onsites actually tested me on mostly real world iOS dev, not generalist whiteboarding algorithms. And the other tech companies where I'm in the mix have also been a little more flexible. Twitter for example offered me the option of a take-home iOS project or a traditional 1-hour generalist tech screen. Although their onsite is still whiteboard coding algorithms from what I understand. Sigh...