Web Systems

If you're a backend guy, study your butt off to understand everything in this section. If you're not (mobile, front-end, etc), just review the list lightly. Pay close attention to the HTTP section.

Note: Below is stolen from Triplebyte.

Databases

Companies usually don't seem to want you to know the meanings of the different normal forms (1NF, 2NF, etc), but they do want you to be able to design a normalized schema. You should also know about why denormalizing your schema might sometimes be a good idea (it can speed up your reads, and it also lets you enforce some constraints you wouldn't be able to enforce otherwise).

Database indexes

Read this. It is very important to know about these! They speed up reads for the column that they are on, but they make writes slower and increase memory requirements. They are usually implemented with B-trees.

(You can have composite indexes, which are indexes on multiple columns)

SQL explain

Read this.

Query planning in Postgres

Read this.

NoSQL

It’s worth knowing a little bit about it. Mongo is probably the most famous NoSQL database. Read this.

ORMs

There's kind of a cultural association with ORMs which makes it important to know about them: lots of old-school programmers in PHP or C# or whatever don't use them, and startups are wary of hiring people like that. It's useful to remember that ORMs protect you from SQL injection attacks.

Lecture notes

If you want to learn much more about databases, read lecture notes from the Hellerstein course.

HTTP

  • Read all about the protocol here. Some fun facts to know: How does chunked transfer encoding work?

  • Suppose I'm browsing Reddit at work, over HTTPS. Does HTTPS prevent my boss from seeing that I'm browsing Reddit? Does it prevent my boss from seeing what page I'm on?

  • How do cookies work?

  • How does a web application control the caching behavior of its clients? check this out

TCP/UDP

Know the difference between the two.