Resources for Problem Solving,Discrete Maths,Data Structures,Algorithms and Cracking Interviews of firms like Microsoft,Facebook,Google,Amazon etc

1) Problem Solving

Evan Chen’s Site, Olympiad Training Materials, AoPS Category : Mathematics, Abhi’s Problem Solving Recommendation(one of the best reviews I have ever read and by the way, Abhi is a IIT Madras pass-out), AoPS Category : Math Problems and AoPS Category : Mathematics Competetions.

N.B. -> Massachusetts Institute of Technology’s Recommended Literature for Problem Solving in general, Good Books on Problem Solving, Books by Titu Andreescu and Preparatory Books for Putnam Exam.

N.B.-> Also, it’s good to be conversant with Elementary/Higher Mathematics topics like Algebra, Number Theory, Geometry, Combinatorics, Graph Theory, Mathematical Logic, Linear Algebra, Multivariable Calculus, Mathematical Programming/Operations Research/Optimization Theory, Probability & Statistics, Game Theory, Auction Theory etc. Some Russian books(translated to English) for the aforementioned branches of Mathematics can be found at Mir Titles.Some other good resources in this respect are AoPS’s Recommended Mathematics Books(in general) , AoPS’s Recommended Olympiad Maths Books and Eric Weisstein’s Mathematics Problem Books Recommendations.

2) Discrete Mathematics

a) Discrete Mathematics

b) Discrete Mathematics and It’s Applications

c) Concrete Mathematics

d) MIT’s Mathematics for Computer Science Course

3) Data Structures

A very strongly recommended text to study introductory level Data Structures and Algorithms is Data Structures and Algorithms Made Easy in Java. Very well illustrated and thought provoking solved exercises are there.

Other good Data Structure resources(some are a bit advanced) are –

a) Probabilistic Data Structures and Bloom Filters by Example

b) Advanced Data Structures

c) File Structures

d) Foundations of Multidimensional and Metric Data Structures

e) Purely Functional Data Structures (Persistent Data Structures)

N.B. ->  MSDN C# Data Structure Series, Back to Basics – Generic Data Structures and Algorithms In .NET 2.0A Heterogeneous Collection Issue , Issue with heterogeneous Tree (the best option to handle this scenario to build a heterogeneous tree dynamically at runtime in .NET 4.0/4.5,seems to be to use List as the type for the children of the tree – agreed that type safety is lost here but if you want type safety then you need to provide the child type for each of the children individually but here you will have to compromise by building the tree statically rather than doing it dynamically – a sample is available here), A Generic Tree Collection , NGenerics – Data Structures and Algorithms for .NET, QuickGraph, Graph Data Structures And Algorithms for .NET

N.B. -> LINQ and Data Structures – LINQ to Tree – A Generic Technique for Querying Tree-like Structures, SkyLink and GraphLINQ

4) Algorithms –

Some awesome resources on Algorithms are –

a) Coursera Data Structures and Algorithms (this course,although paid but is just awesome – although other courses mentioned in this quora article are also pretty good)

b) Awesome Competitive Programming

N.B. -> HackerEarth CodeMonk Tutorials, CodeChef Data Structures and Algorithms, TopCoder Tutorials, CodeChef Tutorials

c) Introduction to the Design and Analysis of Algorithms

N.B. -> Algorithmic Puzzles

d) Introduction to Algorithms : A Creative Approach

N.B.-> Using Induction to Design Algorithms

e) Essential Algorithms

f) Programming Pearls , More Programming Pearls , Writing Effecient Programs

g)  The Algorithm Design Manual

N.B.-> Classics like Introduction to Algorithms The Art of Computer Programming etc are a class apart.

For Algorithmic problem sets, the following resources are quite good –

a) Data Structure Problems at GeeksForGeeks and Algorithm Problems at GeeksForGeeks

b) Looking for a challenge?  (Codility Lessons)

c) Problems on Algorithms

d) Programming Challenges

e) Introduction to Competitive Programming Contests & Competition Programming and Problem Solving

f) Problems in Programming: Experience Through Practice

g) MGPT Problems

5) Cracking Interviews

a) Interview Corner at GeeksForGeeks

b) Cracking the Coding Interview

c) Elements Of Programming Interviews

N.B. -> Google Code Link

d) The Google Resume

N.B. -> Hacking a Google Interview

e) How Would You Move Mount Fuji?

f) Are you smart enough to work at Google?

g) Programming Interviews Exposed

h) Coding Interviews

i) Coding Interview Questions