/technical-interview-study-guide

An overview of the responsibilities of different web engineering roles. Intended as a study guide for tehcnical interviews.

Interview Study Guide

Things That are Always Good:

Web Engineering Roles all require composing smaller programs into larger programs using:

  1. Programming Fundamentals (objects, arrays, if/for/while JavaScript / Ruby)
  2. HTML & CSS
  3. Data structures (Object Oriented, hashmap, linked list, graph, tree ...),
  4. Data processing (businuess logic , algorithms ... )
  5. Practice these by writing short programs like warmups and codewars -- these are common in interviews.

Common titles are front end / client side engineer, back end / server side engineer, or full stack engineer which is a blend of both. Different businesses have different neads, so roles will focus on different technologies and techniques.

Back End Posititons:

Back end positions are focused on the operation of webservers. Back end technologies involve more machine to machine communication than human interaction. Perfect webservers would run constantly, never turning off. All webservers will use some of these technologoies and techniques:

  1. Web Servers * MVC design pattern, using * A Server Framework (Express.js, Rails, ...) * An HTML templating language (ejs, Jade, Haml, ...) * The delivery of JS, CSS, HTML assets to the client * Build Tools (Gulp, Grunt, npm, linux/command prompt)

  2. Database connections and data modeling, * A SQL langauge (postgres, MySQL ...), * Non-relational datastores (Mongo, redis ...) * ORM / ODBM (Knex, Mongoose, Active Record ... )

  3. Business logic both in both the client and server. * Authentication flows (Passport, OAuth), * Object Oriented Programming (inheretence with class / prototype), * Data Modeling (data structures, hashmap / hashtable, linked list), * Data processing (HTTP routing, Controller in MVC, algorithms)

Front End positions:

Front end positions are focused on writing code that runs in a web browser like Chrome, FireFox, or heaven forbid IE8. Front end positions tend towards creating interfaces that humans use then interpreting that input for the computer. All front end positions will use some of these technologies and techniques:

  1. Creating and fine tuning user interfaces in the browser, * HTML and CSS manipulation with JavaScript (selectors, event bindings), * Through the use of a front-end framework / library (Angular, JQuery ...), * User experience and design -- or executing the designs of others (A / B testing),

  2. Communication with web servers and APIs over HTTP * REST pattern (HTTP methods and routing, data modeling), * Browser requests (HTTP methods and routing, HTML forms, AJAX), * Asset delivery (HTML especially <head>, <script>, <style>), * User Input (<form>, <input>, event bindings, selectors), * Through the use of a frontend framework or library (Angular, JQuery ...)

If you want to go Full Stack

Then you'll be responsible for some blending of both the front and back end. You'll have to be a jack of all trades; a flexible generalist.