What should you do to crack the placement process of top tech companies like Facebook, Google, Microsoft, amazon.

For the above said Tech Giants you need to concentrate on two main things only:

1. Technical skills
2. Communication/Soft Skills

Coming to each one at a time

1. Technical skills


1.1 Coding

Competitive coding is the best platform to get yourself tested and acquire new skills.
Following are some Competitive coding websites

  1. TopCoder topcoder They have an applet, where you view the question, attempt them online (C/C++/Java/Python), debug it and submit it. They also have a few test cases with the answer on which you can test your program before submitting.HUGE number of questions, lots of competitions and awesome coders to found.
  2. Google CodeJam Google Code Jam Go to the Practice and Learn section and try out older problems.I believe this is language independent because they give a question and data in a file.make the program in such a way that it uses that data, solve the question and writes to a new file that has to be uploaded.(Not the code).So you might want to try that as well.
  3. The python challenge The Python Challenge Another good contest. But python only.
  4. Codeforces (Codeforces) is the best coding site I have seen. They have a very nice interface, weekly contests, and are good about posting solutions to problems after they have been solved.
  5. SGU (Saratov State University:: Online Contester) has a not-so-nice interface, but they are selective in which problems they add, so doing those problems gives good practice on a wide variety of difficulties and types of problems.
  6. Timus (Timus Online Judge) has a ton of problems and good search feature: you can sort by difficulty(!) and filter by problem category.
  7. Hackerrank(HackerRank) is one of the best that I have seen. It has a pretty good interface with very good problems.  It doesn’t have many problems though.
  8. Codility(https://codility.com/programmers…). I came across this through an interview. I would say it has questions ranging from easy to medium and a good place to start.
  9. CodingBat is a good site for drill style coding questions and instant feedback in the browser. You can practice by writing either in python or in Java, at this time
  10. I would add CodinGame: They have solo and multiplayer modes and the puzzles are really addictive
  11. Project Euler (www.projecteuler.net) is one good collection of problems, although weighing heavily towards number theory.
  12. A really gruelling annual competition is the IEEEXtreme –IEEE IEEEXtreme 24-Hour Programming Competition
  13. Jollybee Online Judge: It is still new (currently contains only about 100s problems). It has a regular weekly contest. The problems in contest is quite easy, I think it is a good place to start if you are a beginner in competitive programming. You can practice in the archive, and sort the problems by difficulty.

1.2 Algorithms, Data Structures

These sites are useful if one has little preparation time (a few days to one or two weeks).

Sites that have online judges, and are useful for longer term growth (think 2 months or more):

1.3 Coding Problems on Computer Networking

Network Coding, Open Problems

1.4 Machine Learning

Gain sufficient knowledge in Machine Learning and AI, because it’s the next BIG thing in the IT universe.

1.5 Latest IT trends.

Online courses and certifications in Hadoop, BIG Data and others can give you an edge over others in the crowd.

These are some good platforms for the same
1. https://www.coursera.org
2. http://www.lynda.com
3. http://www.tutorialspoint.com/

This completes your technical base.

P.S. if you’re interested in reading some more from me : Dhruv Aggarwal’s answer to What are some of the best ways to learn programming?

2. Communication/Soft Skills

This sphere comes with no hacks. The more you practice, the more you improvise.
Interaction, Public Speaking, Debates and Writing competitions are the best ways to rev up your personality and confidence levels effectively.

Good Luck !!