Interview - cilerler/cilerler.github.io GitHub Wiki
The Process
Repetition Over Time
Golden Rule:- watch a couple of hours of videos on the topic to get the main idea
- implement the algorithms and data structures
- make flashcards for important things I should remember about the topic
- move on to the next topic
- review the flash cards when you have time
- after a few days, watch another video about the topic, perhaps 30 mins or so
- after another week, watch a video about the topic, maybe the same video or a shorter one
- keep reviewing flashcards
The important point is: review a topic over several time intervals. It will continue to reinforce and remind you, and you won't forget it. The time interval can get longer over time. This is called "spaced repetition".
To create flashcards, I use Quizlet.com.
The Feynman Learning Technique
Cornell Method – A Method To Take Great Notes
Helpful
Mock Interviews
Tutorials and Question Banks
- Coding Interview University
- Google Tech Dev Guide
- Hacker Rank
- Codility
- Project Euler
- Free Code Camp System Design Interview & Coding Interview Prep
- Geeks For Geeks Algorithms & Data-Structures & Practice
- CodeDamn
- Interview Cake
- Algo Expert
- Joma Class
- Exponent
- Leet Code
- Neet Code
- Interview Bit
- Glassdoor Interview Questions
- Coursera Algorithms #1 & Algorithms #2
- Educative Data Structures & Concurrency
- Pluralsight Part 1 & Part 2
- Udemy
Guides
Mentor vs Sponsor vs Coach
A coach talks to you, a mentor talks with you, and a sponsor talks about you.
Levels
Entry Level Engineer (New Grad)
Develop and maintain lower complexity components with guidance and support from experienced team members. This is the new graduate level.
Software Engineer
Develop and maintain low to moderately complex components working on a team. Receives minimal amount of guidance and support from senior level peers.
Senior Engineer
Develop and own moderate to complex components. Possibly lead a small team / project. Ability to mentor engineers, provide technical guidance, code reviews, design and deliver on small projects end-to-end. Impact is typically at the immediate-team scope. This is typically considered a 'career-level', as in you can spend the rest of your career operating at this level.
Staff Engineer / Senior Staff Engineer
This level is much more coveted than the previous and typically 10% or less of the entire company. Expected to lead and own complex technical initiatives. Begin setting the vision / future direction of team. Impact across multiple related teams within an org. Role shifts more towards design rather than implementation depending on size / expectations at company.
Principal Engineer
Impact spans across organizations. Entrusted with business-critical projects and for setting technical vision for an org or multiple orgs. Responsible for reviewing and providing feedback on technical designs across an org. Little to no day-to-day coding. Role depends highly on organizational / company needs and becomes loosely defined. Expected to operate fully autonomously.
Distinguished Engineer
Impact spans across the company and sometimes industry.