https://github.com/datajango/faang_problems
FAANG Problems
https://github.com/datajango/faang_problems
Last synced: 4 months ago
JSON representation
FAANG Problems
- Host: GitHub
- URL: https://github.com/datajango/faang_problems
- Owner: datajango
- Created: 2022-07-06T04:11:16.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2022-07-06T14:41:21.000Z (over 3 years ago)
- Last Synced: 2025-03-17T12:18:17.986Z (11 months ago)
- Language: Python
- Size: 13.7 KB
- Stars: 0
- Watchers: 1
- Forks: 1
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# FAANG Interview Problems
- Anthony Leotta
- 7/6/2022
## Curse of the Autodidact
The problem with autodidacts like myself is that we are so pragmatic in our approach that we end up with gaps in our knowledge. I started out with a BSEE degree and I taught myself everything I know about software engineering after I left college. But I only learned what I thought I needed to solve the problems immediately in front of me. When I had a working solution, I simply moved on to the next problem. I did not stop to read every chapter in "The Art of Computer Programming" by Donald Knuth or "Introduction to Algorithms" by Thomas H. Corman. Then I started hearing about FAANG interviews and how they covered basic algorithms. When I realzied what I had done to myself, I enrolled in a gradute degree program at NYU Poly to get a Master's Degree in Computer Science. A Master's degree is all about learning what other's think you need to know. I broke the curse but I now suffer from...
## Curse of the Academic
The problem with academics like myself is that we are so through in our approach that we get lost in the weeds as we try to learn every single aspect of a subject. What do they say about graduate degrees? "Inch wide, mile deep." Oh dear, if I had alot of computer programming and computer science books before I went back to university, now, the number is in the hundreds maybe thousands. (The actual number is obscene. I paused and did a count, the number is over 10,000. I have three rooms of books including one dedicated main library room in our North Carolina home. My wife actually said I could add a 4th room to house the spill over from the upstairs library(s). Gosh I love her so much.)
At my new job they actually had the nerve to say I take too many deep dives, and when I take a deep dive it is too thorough. LOL. Since June 2021, I have taken extreme deep dives on :
- latest Django Framework
- FastAPI Framework, Pydantic, typing
- AWS Services SNS, SQS, SES, S3, EC2, Lambda
- relearned Angular 1.6 (don't even ask)
- Docker, Kubernetes, Jenkins
- ESP-32 in C++
- Raspberry PI in Python and C++
- MQTT
- Nest.JS
- Next.JS/React
- Strapi
- NLP NLTK
But I do not just Autodidact these topics I Autodidact-Academic them. Which is to say, I dig in and I do not let go after a problem is solved. I ask, is that solution, correct? Can it get better? How much memory does it use? How much CPU does it use? Is there a better way to architect the solution? Did I use the technology correctly? Did I take short cuts? Are the unit tests complete? Are the E2E tests complete? Then I ask, what did I leave out? Then I make a list of missed topics and go back and cover the gaps.
The Academic in me fears the Autodidact's sloppy approach. The Autodidact resents the Academic's incredible obsessive attention to every single detail. My job doesn't even know what to make of it except they want what they want when they want it. Which the pragmatic people pleasing Autodidact agrees with. But the Academic tends to ignore because it needs to check one more detail, no two, no three, no ... leave me alone I'm doing research.
## The Rigorous Academic Favors Quality over Quantity
Above all else, no matter what the degree is in, rigor is beaten into you at graduate school. And I mean beaten. My wife just completed her MPA (master's of public administration at UNCC). I watched her being molded from a happy beer and hot-wings undergraduate into remorseless machine of pure purpose who can craft opening paragraphs, footnotes, endnotes, citations and conclusions with ruthless precision and efficiency. (UNCC is a great school and its MPA program is no joke.)
But...the Autodidact says...there's so much to learn, who has the time to learn the details, just skim the surface and move on.
I think this is where the concept of team-work comes into play. To get anything done today, you need a multi-disciplined team of experts. You build a team from rigorous individuals whose combined knowledge and talents can solve problems competitively.
## And Yet the FAANG wants Rigor to Reduce the Heat
Oh FAANG, you use more electrical power than most cities or even some small countries. (Google used 15.5 terawatt hours of electricity in 2020.) Thus, the person than can shave a millisecond off a process can save 100K a month. The rules of FAANG are different from our intrepid self-taught dot.com millionaire. For FAANG, it's not time to market, its different. Its all about reducing heat. And that is of course, the heat that a CPU generates. Use less CPU, generate less heat, save money. Use more CPU, generate more heat, spend more money.
[Google : Why did Facebook stop using PHP? or Why does Google use Go?]
The simple reality is, FAANG needs great engineers that are domain experts in niche areas of computing such as algorithm optimization. This is similar in concept to the needs of Financial firms bottomless thirst for the Quantitative Analyst only the goals are very different. FAANG can achieve the optimizations it needs through innovation at nearly every part of of the SDLC (Software Development Life-cycle).
So the point of the FANNG interview is then to make smart hiring decisions for people that are not just smart, but people that have done their home work.
## My FAANG Interview Strategy
My basic concept is to study key algorithms along with a body of heuristics known to be useful in solving interview coding challanges. I taught graduate level Comp Sci for one semester at NYU Poly out of the Brooklyn MetroTech campus, so I mostly know everything I need to knowo already. Says the Autodidact, the Academic says, just hit the books smart guy.
But as was stated above: Rigor demands the deep dive.
1. Discrete Math
1. Set theory
1. Combinatorics
1. Graph theory
1. Number theory
1. Algebraic structures
1. Calculus of finite differences, discrete analysis, and discrete calculus
1. Discrete geometry
1. Discrete modelling
1. Data Structures
1. Big O
1. Arrays
1. Hash Tables
1. Linked Lists
1. Stacks, Queues
1. Trees
1. Searching
1. Recursion
1. Sorting
1. Specific Algorithms
1. Permutations and Combinations Algorithms (Set Theory)
1. String Manipulation Algorithms
1. Tree Traversal Algorithms
1. Graph Search Algorithms
1. Search Algorithms
1. Sorting Algorithms
1. Heuristics
1. Study the problems are asked during FAANG interviews
1. What is the trival solution?
1. What is the elegant solution?
1. What is the fastest solution?
1. What is the efficient solution?
1. Develop Insights into Trade-Offs
1. Optimality
1. Completeness
1. Accuracy
1. Execution time
1. Learn to Break down problems in smaller pieces
1. Use packages, FAANG may not like this.
1. Learn to write combinatorics algorithms from scratch just in case