My Experience through the google Foobar Challenge.
Google Foobar is Google’s secret hiring challenge. Google uses this to hire developers around the globe which they think can be a good match for their organization.
Recently I got an invitation to the Google Foobar Challenge. For those who don't know about Foobar check this articele
It was actually really cool. I was searching some Programming Related Stuff and suddenly tab blurred and a Black banner apeared.
You are speaking our language. Up for a Challenge?
So i followed their instructions and faced the Challenge. They don't give same questions to everyone. I think they got plenty and shuffle them. If you're doing this together with a friend, chances are you won't get the same questions. I Will post my problems here with explanations. You can use either Java or Python. I used Java. And here are some tips from me.
- As far as i know there are only four outputs for your submissions.
- Successful - Awesome. Everything works fine.
- Failed - As the name Suggests, you failed. This does not necessarily means that you failed because of your output. This can be the result of a Compilation Error, Run Time Error or Change of format from their template.
- Blacklisted Code - There are some libraries that are prohibited to use. If you use one of them, your code will be blacklisted.
- Generic Errors - Though I haven't had this one, I've read that this means your code exceeds the given Memory limit or Time limit.
- Sometimes You'll get FAILED even if your code gives the correct output on your local machine. So check out for stupid mistakes like misplacing letters when your copying your code to the Solution file on foobar
- They don't say an exact amount of Memory or Time you can use but I think It's may be 1 or 2 seconds somewhat like 1024mb or 512mb or even 256mb maybe.
- If you want to get a rough idea about your running time, count approximate steps for your code on the worst case inputs. If you're below or around 10^8 you're good. You can read more about time Complexity [here].(https://en.wikipedia.org/wiki/Time_complexity)
- unless you're doing something utterly stupid, Memory Complexity can be often ignored. Problems I've had on my challenge does not need specific attention on memory. Most of the Competitive Problems Doesn't. But there may be some cases so watch for them.
After Level 3 they request your Information so they can contact you in case of a career opportunity.
About the skill level of problems, In Level one i got some pretty easy ad-hoc questions. They were easy to implement and almost no algorithmic thinking needed. Level two and three were quite similar. They needed some basic knowledge of algorithms. i.e Dynamic Programming, Greedy Algorithms,Graph theory Level 4 and 5 are quite hard. They needed some crucial observations, creative thinking and some standard algorithms.
- Topics: Cellular Automata, Network Flow, Combinatorics,Bitwise Operations and everything from past levels
- Algorithms (These are what i had to use): Ford Fulkerson,Bellman Ford Apart from that i think some basic algorithms will be useful. Such as, Binry Search and Dijsktra's algorithm
I got like 10 problems total. And the given time increased with the level. First problem had to be submitted in a day, second one 2 days and last one had 22 days.
If you're familiar with Codeforces I could approximately rate problems in
- Level 1 for ~ 1100
- Level 2 for ~ 1300
- Level 3 for ~ 1600
- Level 4 for ~ 1800
- Level 5 for ~ 2100
If your ratings are lower don't feel bad. I'm only barely expert but i completed all of the levels. (barely as in one more contest and I'll be down to specialist :( ) Unlike CF rounds you have enough time to think. So you can do this.
Best of luck for the challenge and everything awaits for you in the future :)