Your Coding Teacher
379 subscribers
10 links
Coding, software engineering & #bitcoin technologies. I'll make you a better thinker, not just a better developer | Ex
Amazon, Senior DevOps @eBay
Download Telegram
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
"Part of the inhumanity of the computer is that,
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.
Simplicity - the art of maximizing the amount of work NOT DONE - is essential

agilemanifesto .org
- "Why is this not working?"
- "Why is this working?"

Programmer's life
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
"The first step of any project is to grossly underestimate its complexity and difficulty."
- 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
Fortan was created by IBM in 1957 and mainly used for mathematical calculations.

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
Focus on being practical and delivering.

Don't be afraid to use standard "old-school" technologies, instead of always going after the hottest framework.
First, solve the problem

Then, write the code
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
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
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
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.
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
"No one hates software more than software developers."
- Jeff Atwood
Java is to JavaScript what Car is to Carpet
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