I use Codewars.com, which is a “kata” site, i.e. you get set challenges in the language of your choice. There are around 30 languages with challenges of graded difficulty, so you level up.
The best bit is not just that you have a problem to solve and practise your skills, but also that you get to see how others answered it, so you learn tips and tricks you may not have known about.
You also can see “I did better than THAT person, I’m not as bad as I thought”.
I’ve done Ruby and Python on there.
If a problem is too hard or ambiguous, skip it or just give up, and see what the answer is. I’m not afraid to admit defeat when something is just too obscure to understand the question or the solution evades me after many attempts. Sometimes it’s a badly-worded question - nothing to do with me…
I also save my solutions and the best other solutions to my hard drive, to reference later. Okay I’m a hoarder 
I also have tried Hackerrank for some challenges, but I don’t get to see how others answered the challenges.