When I started targeting these top hi-tech companies, I also thought on your line: it would be hard to crack programming interviews, if I don't do competitive programming. Consequently, I joined TopCoder. Soon, I found out that I was not enjoying it much.
I then shifted my focus on general problem solving and doing coding projects for my courses. I figured out that I really liked building stuff, systems. I tried LeetCode, InterviewBit, etc. and I found I enjoyed solving coding questions there. I especially admired InterviewBit because it increased and consolidated my understanding of data-structures a lot and how to use them in different cases.
I subsequently practiced interviews alone and with a very few others online. Then I gave Google Internship interviews. I won't say that it was a cakewalk, but it was pretty easy. The challenging part was follow-up questions. However, rather than being a challenge, those questions actually proved to be nice discussions on optimizations in the data structures. I liked the adaptive nature of the interviews.
To sum it up, competitive programming is not even a prerequisite to have success in the interviews of the top tech companies. However, strong practical knowledge of various data structures and their usage are.