|
@@ -221,6 +221,8 @@ thousands of associative arrays, but I never created data structures from scratc
|
|
|
|
|
|
It's a long plan. It may take you months. If you are familiar with a lot of this already it will take you a lot less time.
|
|
|
|
|
|
+**[⬆ back to top](#table-of-contents)**
|
|
|
+
|
|
|
## How to use it
|
|
|
|
|
|
Everything below is an outline, and you should tackle the items in order from top to bottom.
|
|
@@ -262,6 +264,8 @@ Create a new branch so you can check items like this, just put an x in the brack
|
|
|
git push # just pushes to your fork
|
|
|
```
|
|
|
|
|
|
+**[⬆ back to top](#table-of-contents)**
|
|
|
+
|
|
|
## Don't feel you aren't smart enough
|
|
|
|
|
|
- Successful software engineers are smart, but many have an insecurity that they aren't smart enough.
|
|
@@ -269,6 +273,8 @@ Create a new branch so you can check items like this, just put an x in the brack
|
|
|
- [The myth of the Genius Programmer](https://www.youtube.com/watch?v=0SARbwvhupQ)
|
|
|
- [It's Dangerous to Go Alone: Battling the Invisible Monsters in Tech](https://www.youtube.com/watch?v=1i8ylq4j_EY)
|
|
|
|
|
|
+**[⬆ back to top](#table-of-contents)**
|
|
|
+
|
|
|
## A Note About Video Resources
|
|
|
|
|
|
Some videos are available only by enrolling in a Coursera or EdX class. These are called MOOCs.
|
|
@@ -278,6 +284,8 @@ It would be great to replace the online course resources with free and always-av
|
|
|
such as YouTube videos (preferably university lectures), so that you people can study these anytime,
|
|
|
not just when a specific online course is in session.
|
|
|
|
|
|
+**[⬆ back to top](#table-of-contents)**
|
|
|
+
|
|
|
## Choose a Programming Language
|
|
|
|
|
|
You'll need to choose a programming language for the coding interviews you do,
|
|
@@ -332,6 +340,8 @@ Read more about choices:
|
|
|
|
|
|
[See language-specific resources here](programming-language-resources.md)
|
|
|
|
|
|
+**[⬆ back to top](#table-of-contents)**
|
|
|
+
|
|
|
## Books for Data Structures and Algorithms
|
|
|
|
|
|
This book will form your foundation for computer science.
|
|
@@ -373,6 +383,8 @@ Your choice:
|
|
|
- [Algorithms in C++, Parts 1-4: Fundamentals, Data Structure, Sorting, Searching](https://www.amazon.com/Algorithms-Parts-1-4-Fundamentals-Structure/dp/0201350882/)
|
|
|
- [Algorithms in C++ Part 5: Graph Algorithms](https://www.amazon.com/Algorithms-Part-Graph-3rd-Pt-5/dp/0201361183/)
|
|
|
|
|
|
+**[⬆ back to top](#table-of-contents)**
|
|
|
+
|
|
|
## Interview Prep Books
|
|
|
|
|
|
You don't need to buy a bunch of these. Honestly "Cracking the Coding Interview" is probably enough,
|
|
@@ -396,6 +408,8 @@ Choose one:
|
|
|
- [Elements of Programming Interviews (Java version)](https://www.amazon.com/Elements-Programming-Interviews-Java-Insiders/dp/1517435803/)
|
|
|
- [Companion Project - Method Stub and Test Cases for Every Problem in the Book](https://github.com/gardncl/elements-of-programming-interviews)
|
|
|
|
|
|
+**[⬆ back to top](#table-of-contents)**
|
|
|
+
|
|
|
## Don't Make My Mistakes
|
|
|
|
|
|
This list grew over many months, and yes, it got out of hand.
|
|
@@ -467,6 +481,8 @@ There are many resources for this, listed below. Keep going.
|
|
|
There are a lot of distractions that can take up valuable time. Focus and concentration are hard. Turn on some music
|
|
|
without lyrics and you'll be able to focus pretty well.
|
|
|
|
|
|
+**[⬆ back to top](#table-of-contents)**
|
|
|
+
|
|
|
## What you won't see covered
|
|
|
|
|
|
These are prevalent technologies but not part of this study plan:
|
|
@@ -475,6 +491,8 @@ These are prevalent technologies but not part of this study plan:
|
|
|
- HTML, CSS, and other front-end technologies
|
|
|
- SQL
|
|
|
|
|
|
+**[⬆ back to top](#table-of-contents)**
|
|
|
+
|
|
|
## The Daily Plan
|
|
|
|
|
|
This course goes over a lot of subjects. Each will probably take you a few days, or maybe even a week or more. It depends on your schedule.
|
|
@@ -489,6 +507,8 @@ You can see my code here:
|
|
|
|
|
|
You don't need to memorize every algorithm. You just need to be able to understand it enough to be able to write your own implementation.
|
|
|
|
|
|
+**[⬆ back to top](#table-of-contents)**
|
|
|
+
|
|
|
## Coding Question Practice
|
|
|
|
|
|
Why is this here? I'm not ready to interview.
|
|
@@ -517,6 +537,8 @@ Gets messy quickly. **I use a pencil and eraser.**
|
|
|
|
|
|
**Coding question practice is not about memorizing answers to programming problems.**
|
|
|
|
|
|
+**[⬆ back to top](#table-of-contents)**
|
|
|
+
|
|
|
## Coding Problems
|
|
|
|
|
|
Don't forget your key coding interview books [here](#interview-prep-books).
|
|
@@ -548,6 +570,8 @@ Challenge/Practice sites:
|
|
|
- [Project Euler](https://projecteuler.net/)
|
|
|
- very math-focused, and not really suited for coding interviews
|
|
|
|
|
|
+**[⬆ back to top](#table-of-contents)**
|
|
|
+
|
|
|
## Let's Get Started
|
|
|
|
|
|
Alright, enough talk, let's learn!
|
|
@@ -577,6 +601,8 @@ Well, that's about enough of that.
|
|
|
When you go through "Cracking the Coding Interview", there is a chapter on this, and at the end there is a quiz to see
|
|
|
if you can identify the runtime complexity of different algorithms. It's a super review and test.
|
|
|
|
|
|
+**[⬆ back to top](#table-of-contents)**
|
|
|
+
|
|
|
## Data Structures
|
|
|
|
|
|
- ### Arrays
|
|
@@ -699,6 +725,8 @@ if you can identify the runtime complexity of different algorithms. It's a super
|
|
|
- get(key)
|
|
|
- remove(key)
|
|
|
|
|
|
+**[⬆ back to top](#table-of-contents)**
|
|
|
+
|
|
|
## More Knowledge
|
|
|
|
|
|
- ### Binary search
|
|
@@ -739,6 +767,8 @@ if you can identify the runtime complexity of different algorithms. It's a super
|
|
|
- [ ] Absolute value:
|
|
|
- [Absolute Integer](https://bits.stephan-brumme.com/absInteger.html)
|
|
|
|
|
|
+**[⬆ back to top](#table-of-contents)**
|
|
|
+
|
|
|
## Trees
|
|
|
|
|
|
- ### Trees - Intro
|
|
@@ -817,6 +847,8 @@ if you can identify the runtime complexity of different algorithms. It's a super
|
|
|
- [ ] heapify - create a heap from an array of elements, needed for heap_sort
|
|
|
- [ ] heap_sort() - take an unsorted array and turn it into a sorted array in place using a max heap or min heap
|
|
|
|
|
|
+**[⬆ back to top](#table-of-contents)**
|
|
|
+
|
|
|
## Sorting
|
|
|
|
|
|
- [ ] Notes:
|
|
@@ -901,6 +933,8 @@ if you can identify the runtime complexity of different algorithms. It's a super
|
|
|
As a summary, here is a visual representation of [15 sorting algorithms](https://www.youtube.com/watch?v=kPRA0W1kECg).
|
|
|
If you need more detail on this subject, see the "Sorting" section in [Additional Detail on Some Subjects](#additional-detail-on-some-subjects)
|
|
|
|
|
|
+**[⬆ back to top](#table-of-contents)**
|
|
|
+
|
|
|
## Graphs
|
|
|
|
|
|
Graphs can be used to represent many problems in computer science, so this section is long, like trees and sorting.
|
|
@@ -962,6 +996,8 @@ Graphs can be used to represent many problems in computer science, so this secti
|
|
|
- [ ] list strongly connected components
|
|
|
- [ ] check for bipartite graph
|
|
|
|
|
|
+**[⬆ back to top](#table-of-contents)**
|
|
|
+
|
|
|
## Even More Knowledge
|
|
|
|
|
|
- ### Recursion
|
|
@@ -1193,6 +1229,8 @@ Graphs can be used to represent many problems in computer science, so this secti
|
|
|
|
|
|
---
|
|
|
|
|
|
+**[⬆ back to top](#table-of-contents)**
|
|
|
+
|
|
|
## Final Review
|
|
|
|
|
|
This section will have shorter videos that you can watch pretty quickly to review most of the important concepts.
|
|
@@ -1208,6 +1246,8 @@ Graphs can be used to represent many problems in computer science, so this secti
|
|
|
|
|
|
---
|
|
|
|
|
|
+**[⬆ back to top](#table-of-contents)**
|
|
|
+
|
|
|
## Update Your Resume
|
|
|
|
|
|
- See Resume prep information in the books: "Cracking The Coding Interview" and "Programming Interviews Exposed"
|
|
@@ -1216,6 +1256,8 @@ Graphs can be used to represent many problems in computer science, so this secti
|
|
|
- ["Step-by-step resume guide" by Tech Interview Handbook](https://www.techinterviewhandbook.org/resume/guide)
|
|
|
- Detailed guide on how to set up your resume from scratch, write effective resume content, optimize it, and test your resume
|
|
|
|
|
|
+**[⬆ back to top](#table-of-contents)**
|
|
|
+
|
|
|
## Interview Process & General Interview Prep
|
|
|
|
|
|
- [ ] [How to Pass the Engineering Interview in 2021](https://davidbyttow.medium.com/how-to-pass-the-engineering-interview-in-2021-45f1b389a1)
|
|
@@ -1249,6 +1291,8 @@ Mock Interviews:
|
|
|
- [Hello Interview: Mock Interviews with Expert Coaches and AI](https://www.hellointerview.com/?utm_source=ciu) - interview directly with AI or with FAANG staff engineers and managers.
|
|
|
- [Codemia: Practice system design problems with AI or community solutions and feedback](https://codemia.io/?utm_source=ciu) - Practice system design problems via AI practice tool. Share your solution with the community to get human feedback as well.
|
|
|
|
|
|
+**[⬆ back to top](#table-of-contents)**
|
|
|
+
|
|
|
## Be thinking of for when the interview comes
|
|
|
|
|
|
Think of about 20 interview questions you'll get, along with the lines of the items below. Have at least one answer for each.
|
|
@@ -1267,6 +1311,8 @@ Have a story, not just data, about something you accomplished.
|
|
|
- What did you learn at [job x / project y]?
|
|
|
- What would you have done better at [job x / project y]?
|
|
|
|
|
|
+**[⬆ back to top](#table-of-contents)**
|
|
|
+
|
|
|
## Have questions for the interviewer
|
|
|
|
|
|
Some of mine (I already may know the answers, but want their opinion or team perspective):
|
|
@@ -1282,6 +1328,8 @@ Some of mine (I already may know the answers, but want their opinion or team per
|
|
|
- What is the work life like?
|
|
|
- How is the work/life balance?
|
|
|
|
|
|
+**[⬆ back to top](#table-of-contents)**
|
|
|
+
|
|
|
## Once You've Got The Job
|
|
|
|
|
|
Congratulations!
|
|
@@ -1304,6 +1352,8 @@ You're never really done.
|
|
|
|
|
|
---
|
|
|
|
|
|
+**[⬆ back to top](#table-of-contents)**
|
|
|
+
|
|
|
## Additional Books
|
|
|
|
|
|
These are here so you can dive into a topic you find interesting.
|
|
@@ -1358,6 +1408,8 @@ You're never really done.
|
|
|
- [Computer Architecture, Sixth Edition: A Quantitative Approach](https://www.amazon.com/dp/0128119055)
|
|
|
- For a richer, more up-to-date (2017), but longer treatment
|
|
|
|
|
|
+**[⬆ back to top](#table-of-contents)**
|
|
|
+
|
|
|
## System Design, Scalability, Data Handling
|
|
|
|
|
|
**You can expect system design questions if you have 4+ years of experience.**
|
|
@@ -1470,6 +1522,8 @@ You're never really done.
|
|
|
- [Design a URL-shortener system: copied from above](http://www.hiredintech.com/system-design/the-system-design-process/)
|
|
|
- [Design a cache system](https://web.archive.org/web/20220217064329/https://adayinthelifeof.nl/2011/02/06/memcache-internals/)
|
|
|
|
|
|
+**[⬆ back to top](#table-of-contents)**
|
|
|
+
|
|
|
## Additional Learning
|
|
|
|
|
|
I added them to help you become a well-rounded software engineer and to be aware of certain
|
|
@@ -1778,6 +1832,8 @@ You're never really done.
|
|
|
|
|
|
---
|
|
|
|
|
|
+**[⬆ back to top](#table-of-contents)**
|
|
|
+
|
|
|
## Additional Detail on Some Subjects
|
|
|
|
|
|
I added these to reinforce some ideas already presented above, but didn't want to include them
|
|
@@ -1864,6 +1920,8 @@ You're never really done.
|
|
|
|
|
|
- NAND To Tetris: [Build a Modern Computer from First Principles](https://www.coursera.org/learn/build-a-computer)
|
|
|
|
|
|
+**[⬆ back to top](#table-of-contents)**
|
|
|
+
|
|
|
## Video Series
|
|
|
|
|
|
Sit back and enjoy.
|
|
@@ -1919,15 +1977,20 @@ Sit back and enjoy.
|
|
|
|
|
|
- [Graph Theory by Sarada Herke (67 videos)](https://www.youtube.com/user/DrSaradaHerke/playlists?shelf_id=5&view=50&sort=dd)
|
|
|
|
|
|
+**[⬆ back to top](#table-of-contents)**
|
|
|
+
|
|
|
## Computer Science Courses
|
|
|
|
|
|
- [Directory of Online CS Courses](https://github.com/open-source-society/computer-science)
|
|
|
- [Directory of CS Courses (many with online lectures)](https://github.com/prakhar1989/awesome-courses)
|
|
|
|
|
|
+**[⬆ back to top](#table-of-contents)**
|
|
|
+
|
|
|
## Algorithms implementation
|
|
|
|
|
|
- [Multiple Algorithms implementation by Princeton University](https://algs4.cs.princeton.edu/code)
|
|
|
|
|
|
+**[⬆ back to top](#table-of-contents)**
|
|
|
|
|
|
## Papers
|
|
|
|
|
@@ -1954,6 +2017,8 @@ Sit back and enjoy.
|
|
|
- [2015: How Developers Search for Code: A Case Study](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43835.pdf)
|
|
|
- More papers: [1,000 papers](https://github.com/0voice/computer_expert_paper)
|
|
|
|
|
|
+**[⬆ back to top](#table-of-contents)**
|
|
|
+
|
|
|
## LICENSE
|
|
|
|
|
|
[CC-BY-SA-4.0](./LICENSE.txt)
|