I'm just learning Java so I can only share what I see as my path but can't speak from experience yet.
You can get some practice here:
http://acm.timus.ru/ and here:
http://codingbat.com/
there are quite a few similar sites with more problems.
Apart from that you can check out some of the freelance coding websites and see if someone will let you build something simple for way too little money. Just to get some real life experience with an actual customer under your belt.
And then there is the open-source stuff mentioned before.
Hope this gives you some ideas!