Unlike you, I have a CS degree, and I've applied to the top five a few times now. Microsoft and Amazon contacted me, and after I agreed to an interview they both went quiet. Facebook never got back, and Google rejected me twice after sending in my CV.
I've tried a number of ways, through LinkedIn, direct applications, and even asking face-to-face at conferences, but it feels like I've angered some almighty tech god because none of them seem remotely interested, or are happy to tease me with an interview, only to ignore me after I reply.
I've always assumed that if it's this hard for me, then it must be as hard, or harder for others, so it'd be interesting to hear about the actual process of getting an interview from your perspective.
If I were to take a guess, I'd say that I got a bit lucky - right place/right time sort of thing. I had a few years of experience under my belt, which separated me from the new grads, but not so many years of experience that I'd be competing with senior engineers. On top of that, I applied for front end positions, which I think tech giants have only recently started to value - this has left a bit of a void that needs to be filled, which possibly made it easier for me to get the initial recruiter calls.
My resume was also relatively strong for someone with two years of experience. Solid university, strong GPA, and at my previous jobs I always tried my best to wiggle myself into taking on large projects and write tooling to make everyone's lives easier. This gave me a lot of stuff to talk about during the interviews and made for some impressive looking bullet points.
My personal resume consisted almost entirely of my work accomplishments with a few lines for my education. No side projects.
My personal journey took ~2.5 years. I didn't think it was possible to get into a tech giant out of bootcamp so I never tried. Worked two different jobs for a year each, figured I'd give the interviews my best shot, and got accepted.
For background knowledge, I used Algorithms 4th ed. as my textbook. My source of practice problems was LeetCode - did a few/day over the course of around 6 months leading up to the interview.
I personally applied as a front end engineer, but the only difference is that the system design interview question gets swapped with a front end focused one. Within Google my official title is still "Software Engineer" and I'm expected to work across the stack.
I have a copy of CLRS on my desk, but I actually found Algorithms 4th ed to be the perfect level of difficulty for someone with no math or CS background.
This book - http://algs4.cs.princeton.edu/home/ ?
I used a bootcamp to get my foot in the door. I studied college textbooks in my spare time for a few years to fill some of the gaps in my knowledge, and then hardcore interview prepped for a few months leading up to my interviews. I got accepted into all of the tech giants and ultimately decided to go to Google.
This is by far the best job I've ever had, and I couldn't be happier with how this all panned out.
People vastly overestimate how much you need to know to get a job at a tech giant. Not everyone at Google is a computer science or math wizard - in fact, the number of jobs that require people with highly specialized knowledge is quite low. Most people are doing the same app development you'd do anywhere else.