Skip to content

Commit

Permalink
Add back to top
Browse files Browse the repository at this point in the history
  • Loading branch information
sofwanrikhaldi committed Aug 15, 2024
1 parent 782553a commit 8d572ad
Showing 1 changed file with 65 additions and 0 deletions.
65 changes: 65 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down Expand Up @@ -262,13 +264,17 @@ 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.
- The following videos may help you overcome this insecurity:
- [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.
Expand All @@ -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,
Expand Down Expand Up @@ -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.
Expand Down Expand Up @@ -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,
Expand All @@ -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.
Expand Down Expand Up @@ -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:
Expand All @@ -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.
Expand All @@ -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.
Expand Down Expand Up @@ -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).
Expand Down Expand Up @@ -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!
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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:
Expand Down Expand Up @@ -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.
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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.
Expand All @@ -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"
Expand All @@ -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)
Expand Down Expand Up @@ -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.
Expand All @@ -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):
Expand All @@ -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!
Expand All @@ -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.
Expand Down Expand Up @@ -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.**
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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.
Expand Down Expand Up @@ -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

Expand All @@ -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)

0 comments on commit 8d572ad

Please sign in to comment.