Problem Solving: Introduction
Like a woodcutter who must keep his axe sharp, so does a programmer who must keep his mind sharp.
Introduction
Hello, Hello ๐ It's been a while since I last added something to my humble blog ๐
This time, I am not teaching, but rather documenting my learnings, hoping that I become ready for FAANG-level thinking or hopefully helping whoever reads this. I am starting pretty simple here to get my hands going with the writing, so let's dive deep!
Let's start with the "Why"
What's with the nerdy approach? Why start with theories when you can jump straight to the problems?
Because you're not going to be interviewed to solve a weird problem that is hard to be read and understand, let alone solve, you're here to communicate how your brain ticks, and if its ticking is good at solving problems or it will bail out if it hit a roadblock and start calling for help?
So instead of calling it 'nerdy' or 'academic', I like to call it strategic, so let's see our options
First things first
My first thing to focus on is some pointers I did fail at in couple of interviews I had in the past when it came to Problem Solving
I messed up at two things...
- How to break the problem down into small problems
- Communicate my thoughts to my interviewers
But solving the problems was never the deal breakers
When I returned to my mentor and asked him where did I go wrong, and shouldn't be intensive study of System Designs and Architecture be sufficient...
To me, they were... ๐
but his answer was really insightful, they're both two skills that feed each other, but they're completely different when training them
and his advice was to learn about data structure first, read about it a bit and understand them, then start solving your way to the hard problems, solving only 1 easy problem a day until you can find yourself comfortable
So, I curated some rough headlines I would study and write about so it can enforce the learning
Sources we need first for a solid foundation on what we need to solve problems
And... TADA! ๐
- Learn about Data structure, and what are they?, in a basic and simple manner
- Learn about complexity and measuring it, memory-wise & processing-wise
- Learn about
Big O Notion
- Learn about Logarithm
- Start dissecting the Data Structures into categories of...
- Array
- Linked Lists
- Hash Tables (or Dictionaries)
- Stacks & Queues
- Strings
- Graphs
- Trees
In the next blog post, we will start with what are Data structure