Join me on discord server: https://discord.gg/ZXnSag7fMP, for early access of the book and a supportive community
The purpose of the book is to guide the reader to prepare for coding interviews. Preparing for the coding interview, not easy! Cracking the coding interivew? Like impossible for most of us! Luck does play some role in the outcome. So, let's just treat it as a learning process and have some fun.
Computer Science is really not just computer science. It is a combination of all fields; our normal interview problems fall into the eumerative combinatorics and our computer vision mostly is related to Linear Algebra. What really matters is our passion in learning more and applying it to solve real-life problems.
There are plenty of books out there focusing on either teaching algorithmic knowledge (Introduction to Algorithms, Algorithmic Problem Solving, etc) or introducing interview process and solving interview problems(Cracking the Coding Interview, Coding Interview Questions, etc), but barely any that combines the two. This is a book designed to make up this role in the categorization. Principle, Pattern, and Leetcode Problems make up the core of this book.
This is NOT a book that provides hiring statistic of each company or gives the reader quick tricks in order to pass a few coding interviews. Its purpose is to show you the beauty of the algorithimc problem solving in the hope that you will be more passionate and condifent about software engineering; the interview questions just set up a play ground where we strengthen what we learn. A strong candidate would be able to sleep well before interviews, walk into the interviews and discuss his or her findings about the question from all possible angles and program the best solution for on the white-board. The interviews should be a setting where the interviewers and interviewees both have a nice and happy talk; learning from each other instead of a one-way relation -- tester and testee.
Related content will be posted in the form of medium publication and as a book in pdf instead of directly using markdown for better visual appearance and organization.
- Abstract Data Structures
- Discrete Programming
- Recurrence Relation
- Iteration and Recursion
- Bit Manipulation
- Python Data Structures: PDF, source code
- Complexity Analysis
- Search Strategies: PDF, source code: Graph Search, source code: Tree Traversal
- Combinatorial Search: PDF, source code
- Reduce and Conquer
- Decrease and Conquer
- Sorting and Selection: PDF, source code: sorting algorithms, source code: Python comparison and sort functions
- Dynamic Programming
- Greedy Algorithms
- Advanced Data Structures
- Advanced Search on Linear Data Structures: PDF, source code
- Advanced Graph Algorithms: PDF
- String Pattern Matches
- Math and Geometry Algorithms
- Dynamic Programming Questions (15%)
- Array Questions (15%)
- Linked List, Stack, Queue, and Heap Questions (12%)
- String Questions (15%)
- Tree Questions (10%)
- Graph Questions (15%)
Note: everything is still in progress, so use it with caution.
-
Skiena, Steven S. The algorithm design manual: Text. Vol. 1. Springer Science & Business Media, 1998.
-
T. H. Cormen, Introduction to algorithms, MIT press, 2009.
-
Manber, Udi. Introduction to algorithms: a creative approach. Addison-Wesley Longman Publishing Co., Inc., 1989.
-
Kleinberg, Jon, and Eva Tardos. Algorithm design. Pearson Education India, 2006.
-
Russell, Stuart J., and Peter Norvig. Artificial intelligence: a modern approach. Malaysia; Pearson Education Limited,, 2016. (Best book ever in explaining searching problem-solving, differentiate tree-search and graph-search)
-
D. M. Beazley, Python essential reference, Addison-Wesley Professional,2009.
-
S. Halim and F. Halim, Competitive Programming 3, Lulu Independent Publish, 2013.
-
B. Slatkin, Effective Python: 59 Specific Ways to Write Better Python,Pearson Education, 2015.
-
H. hua jiang, “Leetcode blogs,” https://zxi.mytechroad.com/blog/category, 2018, [Online; accessed 19-July-2018].
-
B. Baka, “Python data structures and algorithms: Improve application performance with graphs, stacks, and queues,” 2017.
-
“Competitive Programming,”https://cp-algorithms.com/, 2019, [Online; accessed 19-July-2018].
-
“cs princeton,”https://aofa.cs.princeton.edu/60trees/, 2019, [Online; accessed 19-July-2018]
- Graph Visualize with graphviz. Examples. Tutorial to use Python
Practice is important. Schedule some mocking interviews with interviewing.io
If you have ideas to improve the book, about formatting, more contents, or correct the errors, do not hesitate to let me know.