I used to do some generic preparation tactics like trying to guess and prepare the HR questions, mirror talks, glassdoor research and so on before applying a company and they were rejecting me. Those jobs were my dream jobs and I was ready to do anything to get hired :)
One day, I had a chance to meet and talk with a manager from one of those companies. We drunk coffees and chit chat mostly. But one moment in that conversation, she told a big clue to get hired by the biggest companies around the world. That clue seemed like a non-important thing at that time but it changed my career and helped me to do my dream work.
She told me that "the key to success for software developers is not just being good at coding. That's important though. But not the whole thing. The key is being good at communication skills."
She was absolutely right. Because as a technical person, in general, we are not good at communication skills. At least I wasn't :) But, who improve himself/herself about it, that person can differentiate himself/herself from all the other good coders.
You can see that all amazing coders have a good command of English and they are proficient at world's language to tell their ideas to the world.
So I recommend you to improve your communications skills to get your dream job. I used SudoSpeak to improve my Business English and Business Skills with their unique curriculum.
You may check it or you can find another way to do it. But at the end of the day, the only barrier in front of your dreams might be just your communication skills.
By the way, I'm working as a freelancer nowadays and I have customers from 25 different countries.