What to expect at a FAANG interview
1. Phone screen-> Algorithm questions
2. Onsite
- Several rounds of algorithm questions
- Behavioural questions, often before the algorithm question
- Systems design (mid-senior)
- Time for your questions at the end of the round
YMMV
1. Phone screen-> Algorithm questions
2. Onsite
- Several rounds of algorithm questions
- Behavioural questions, often before the algorithm question
- Systems design (mid-senior)
- Time for your questions at the end of the round
YMMV
"Part of the inhumanity of the computer is that,
once it is competently programmed and working smoothly,
it is completely honest."
- Isaac Asimov
once it is competently programmed and working smoothly,
it is completely honest."
- Isaac Asimov
"Software and cathedrals are much the same - first we build them, then we pray."
Design patterns in 1 tweet
Singleton. Makes sure there is only one instance of an object.
Singleton. Makes sure there is only one instance of an object.
Simplicity - the art of maximizing the amount of work NOT DONE - is essential
agilemanifesto .org
agilemanifesto .org
The kernel acts as an interface between your programs and hardware
Kernel processes have unrestricted access to memory and CPU
User processes have limited access to CPU and memory
That's why when your browser crashes it doesn't take down the whole system with it
Kernel processes have unrestricted access to memory and CPU
User processes have limited access to CPU and memory
That's why when your browser crashes it doesn't take down the whole system with it
"The first step of any project is to grossly underestimate its complexity and difficulty."
- Nicoll Hunt
- Nicoll Hunt
OLTP vs OLAP systems
- Online Transaction Processing vs Online Analytical Processing
- ~Relational DB vs Datawarehouse
- Query volume: Huge vs Low
- Each query touches: a few records vs scans a huge number of records
- Bottlenecks: Disk seek time vs Disk bandwitdth
- Online Transaction Processing vs Online Analytical Processing
- ~Relational DB vs Datawarehouse
- Query volume: Huge vs Low
- Each query touches: a few records vs scans a huge number of records
- Bottlenecks: Disk seek time vs Disk bandwitdth
Fortan was created by IBM in 1957 and mainly used for mathematical calculations.
FORTRAN stands for FORmula TRANslation
It is still used today!
FORTRAN stands for FORmula TRANslation
It is still used today!
GCS vs S3 differences
- Buckets are regional or multi-regional (for every storage class) VS regional and zonal
- Cold storage retrieval time: milliseconds (like any other class) VS minutes to hours
- Buckets are regional or multi-regional (for every storage class) VS regional and zonal
- Cold storage retrieval time: milliseconds (like any other class) VS minutes to hours
Focus on being practical and delivering.
Don't be afraid to use standard "old-school" technologies, instead of always going after the hottest framework.
Don't be afraid to use standard "old-school" technologies, instead of always going after the hottest framework.
5 Tools for devs
- IDE: Intellij/VS Code
- Lightweight editors: Vim/Emacs
- Python interactive shell (for small snippets of code, calculator, ...)
- Git: learn it well
- Shell - learn bash/zsh well
- IDE: Intellij/VS Code
- Lightweight editors: Vim/Emacs
- Python interactive shell (for small snippets of code, calculator, ...)
- Git: learn it well
- Shell - learn bash/zsh well
In GCP, identities are represented by Google accounts. There are different types:
- Google accounts. For people
- Service accounts (SAs). For apps, services, vms,...
- Google Groups (of users and SAs)
- G Suite Domain: for orgs
- allAuthenticatedUsers
- allUsers
- Google accounts. For people
- Service accounts (SAs). For apps, services, vms,...
- Google Groups (of users and SAs)
- G Suite Domain: for orgs
- allAuthenticatedUsers
- allUsers
Algorithmic paradigms
- Divide & conquer: combine non-overlapping subproblems. Merge sort
- Dynamic programming: overlapping subproblems + optimal substructure -> optimal solution. Fibonacci
- Greedy: best choice at each step to arrive to optimal global solution. Dijkstra
- Divide & conquer: combine non-overlapping subproblems. Merge sort
- Dynamic programming: overlapping subproblems + optimal substructure -> optimal solution. Fibonacci
- Greedy: best choice at each step to arrive to optimal global solution. Dijkstra
Object-oriented programming (OOP) is a programming paradigm based on the idea of "objects", which can contain attributes and functions to operate on them.
Simula is considered the first language with the primary features of an object-oriented language. It was created in 1967.
Simula is considered the first language with the primary features of an object-oriented language. It was created in 1967.
Classic MATLAB interview question:
What's the difference between A' and A.'?
A' performs conjugate transpose, A.' only tranpose. The results are only different if you're dealing with complex numbers
What's the difference between A' and A.'?
A' performs conjugate transpose, A.' only tranpose. The results are only different if you're dealing with complex numbers
Every application or service you want to develop has:
-Functional requirements: what is it supposed to do?
- Non-functional requirements: security, robustness, scalability, and maintainability
Both are important
-Functional requirements: what is it supposed to do?
- Non-functional requirements: security, robustness, scalability, and maintainability
Both are important