Back-End Developer Interview Questions

A while back I blogged the link to the Front-end Developer Interview Questions.  Today comes a similar link, but for the Back-end Developer Interview Questions.

Question lists like these aren’t just useful for adjusting your interviews, but also for self-checks and assessments.  Each company, team, and project often require a slightly more specialized expertise, which often leads to narrower interviews and “tunnel vision”.  Looking at other people’s interview questions helps to review and adjust the questions and address the gaps, resulting in a more rounded interview and expertise.

PHP Internals

Here’s a new addition to all the web resources dedicated to the PHP programming language – PHP Internals.

This website is dedicated to providing resources on PHP’s internals. All content covers PHP 7+, with the documentation typically targeting the current master branch of php-src.

SQL Keys in Depth

SQL Keys in Depth is an excellent read if you want to brush up on your knowledge of database keys and how they affect the performance of your application.  For the laziest among you, here are the summary points, based on an extensive research of 60+ articles, StackOverflow questions and IRC discussions:

For each table:

  1. Identify and declare all natural keys.
  2. Create a <table_name>_id surrogate key of type uuid with default value uuid_generate_v1(). You can even mark it as a primary key if you like. Including the table name in this id makes joins simpler. It’s JOIN foo USING (bar_id) vs JOIN foo ON (foo.bar_id = bar.id). Do not expose this key to clients or anywhere outside the database.
  3. For “join tables” declare all foreign key columns as a single composite primary key.
  4. Add an artificial key if desired for use in a URL or anywhere else you want to share a reference to a row. Use a Feistel cipher or pg_hashids to conceal auto-incrementing integers.
  5. Mark foreign keys to surrogate UUIDs as ON UPDATE RESTRICT and to external artificial keys as ON UPDATE CASCADE. Use your own judgement for natural keys.

Periodic Table of Software Engineering

I came across this Periodic Table of Software Engineering, and I think it’s an excellent visualization.  For those working their way to become software engineers, it provides a nice map of skills, topics, and knowledge areas to cover.  For the rest, it clearly explains why software is so much more complex than anybody thinks.

Every Programmer Should Know

Every Programmer Should Know” is a collection of subjects and resources that every programmer should know.  It is not specific to any technology stack, and it’s rich enough to offer something to programmer of any level or experience.

While the whole list is great, I’ll single out this Big O Cheatsheet: