Destination: Dev Interview Prep


Introduction

What is the Destination: Dev interview process?

  • Introductory Interview (approx. 30 min.)
  • Coding Interview Preparation (up to 2-3 weeks)
  • Coding Interview (approx. 1 hour)
  • Decision

The Destination: Dev interview process is broken up into 2 interviews. During the first interview, we'll get a sense of your background, reasons for wanting to learn how to code, aptitude for travel, and gauge your overall cultural fit for the program. If we feel that you are a good fit for the program based on these factors, we'll invite you to have a second coding interview.

To prepare for the coding interview, we've compiled the guide below to help you. Once you complete the Code Academy course on Ruby, understand the material in the guide, and can complete the practice problems below, you can take the pre-interview challenge question found below and in the email you receive after the first interview. Once you have a solution to this problem, you're ready to schedule your second interview.

The second interview will consist of a review of your solution to the challenge problem, and 1-2 other problems of similar difficulty we'll work on together. We are not expecting you to be a genius and perform perfectly on the problems during this interview! We will be gauging your thought process, how you solve problems, and how well you understand the basic material. After the second interview we'll give you a decision, and will either accept you into the course, ask you to prepare more and try again on the second interview, or determine that you aren't right for the course at this time.

How long will it take to prepare for the coding interview?

The amount of time it will take for you to prepare for the coding interview will vary quite a bit based on your prior coding experience and how much uninterrupted time you have to devote to learning. If you have done some programming in the past and just need to brush up and learn Ruby syntax, it might take you just 10-20 hours to prepare for the interview. If you are brand-new to programming, you can expect it to take more time for you to get comfortable with the concepts. If the material seems difficult at first, don't worry! It takes time to get comfortable with this stuff, and we are here to help. If you are stuck at any time or need more resources, you can email us or message us on Slack.

What is the purpose of this guide?

We developed this guide to help prospective students with the most basic fundamentals of programming in Ruby. It is meant to prepare you for the coding exercises and interview required to be accepted into Destination: Dev. Keep in-mind that our program is entirely open to absolute beginners, so we are not expecting you to become an expert in all of the material covered here. We are looking to test your thought-process and motivation, and to give you an opportunity to get your feet wet with programming so that you can be confident that it is something you’re ready to devote yourself to mastering.

What is a computer program?

Every computer program, from the browser you’re using to view this webpage to the Skype app you use on your phone to make video calls is essentially a set of instructions telling a computer what to do with data. Programs perform two functions on data: modifying it, or changing its location. For example, Skype receives audio and video data from your microphone and camera, translates it into a format that can be transported over the internet, and then sends it to the computer on the other side of the call.

Programmers write programs in high-level programming languages: languages that use natural language components and abstract away most of the complexity involved in interacting directly with computer hardware. These programs are passed through a number of intermediate steps by other programs in a process called compilation which eventually translates the original code into a binary form, just a series of zeroes and ones, that computers can understand but which is entirely nonsense to a human.

What is Ruby, and why are we using it?

The fundamental purpose of software is to improve efficiency by automating tasks that humans don’t want to do. This same principle is applied to programming languages themselves. Modern programming languages take many of the tasks that programmers had to do themselves with older programming languages and do them automatically.

Ruby is exactly this kind of language, and we chose to use it as the primary language at Destination: Dev for two main reasons. First, Ruby has a reputation as being one of the most beautiful and expressive programming languages out there. The design of the language is very logical and simple, and this makes it an ideal language for a beginner because it allows him or her to focus on the concepts rather than the intricacies of the language’s syntax. While Ruby is very approachable for beginners, it is also incredibly powerful and deep, making it popular with very experienced senior developers as well.

Second, Ruby is a language that has a great deal of demand in the job market, mainly due to the Ruby on Rails web development framework that uses it (you’ll learn a lot more about this later). Rails makes it incredibly easy to build web applications quickly, making it very popular amongst start ups. Rails’ ease-of-use allows it to also continue to be used by some of the largest companies on the internet, including Airbnb, Hulu, and Shopify.

How to Use This Guide

We want everyone who uses this guide to be able to hit the ground running immediately. Rather than having you spend a lot of time setting things up on your laptop, we will have you use an online platform called repl.it to write and run your code. Repl.it has a number of REPLs in various programming languages that can evaluate code directly in your browser. A REPL (Read-Eval-Print Loop) is a computer program that takes in code as input, evaluates it, prints the output, and loops back to accept more input. REPLs are useful for testing small programs, and are ideal for the scope of this guide.

Throughout the guide, you'll see blocks of code. We know through experience that students learn best when directly interacting with the material, so whenever you can copy the code from the guide and paste it into the Ruby REPL in repl.it and hit "run" to see what the code outputs for yourself.

Destination: Dev Slack

Everyone is invited and encouraged to join our Slack channel. If you completed the first interview, you should have already received an invite. If you haven't gotten there yet or want me to send another invite, email me at doug[AT]destinationdev[DOT]com. You can use Slack to discuss or ask questions about prep work, other programming topics, travel, Colombia, and general program details. Also feel free to direct message myself, @doug, or @andrew, or @duran.w with any questions or concerns.

Code Academy

Before jumping into the Interview Prep curriculum below, we strongly suggest that you check out Code Academy. Take their course on Ruby (https://www.codecademy.com/learn/ruby), which is free and will provide you with a great introduction to build upon while going through the material here. The material in this guide only goes up to Code Academy's fourth lesson on Arrays. You can go on and learn more if you want, but the additional material is not required for the coding interview with Destination: Dev.

The Curriculum

Below you can find links to each section of our guide. If you understand the material from this guide and the quizzes, you should be prepared to start the practice challenges.

Numbers -- Quiz

Math -- Quiz

Booleans -- Quiz

Comparison Operators -- Quiz

Strings -- Quiz

Methods -- Quiz

Variables -- Quiz

Control Flow -- Quiz

Logical Operators -- Quiz

Loops -- Quiz

Arrays -- Quiz

Array Index -- Quiz

Nil -- Quiz

Length -- Quiz

Push/Pop -- Quiz

Array Update -- Quiz

Array Methods -- Quiz

Arrays & Strings -- Quiz

Creating Methods -- Quiz

Variable Scope -- Quiz

Return & Break -- Quiz

Practice Problems

Once you feel you have a solid grasp on the concepts covered in the interview prep curriculum above, try the practice problems below. Each problem has a standard and an advanced solution. The standard solutions only use concepts covered in the prep material here, while the advanced solutions introduce new concepts. If the advanced solutions seem over your head, don't worry! You are not required to know the material present in the advanced solutions, and these solutions are provided for applicants who already have some programming background or who want to push their studying beyond the scope of what is required.

Problem 0: Hello... World? -- Solution -- Advanced Solution

Problem 1: Sum to Num -- Solution -- Advanced Solution

Problem 2: FizzBuzz -- Solution

Problem 3: Reverse the String -- Solution

Problem 4: Factorial! -- Solution -- Advanced Solution

Problem 5: Longest Word -- Solution -- Advanced Solution

Problem 6: Palindromes -- Solution -- Advanced Solution

Problem 7: Vowel Count -- Solution -- Advanced Solution

Problem 8: Sum of Digits -- Solution -- Advanced Solution

Problem 9: Prefix Repeat -- Solution -- Advanced Solution

Challenge Problem

The challenge problem for the second interview can be found here: https://repl.it/EYx3. Create an account on repl.it, save your solution, and bring it to your interview. You can also save the solution in a tet file on your computer if you prefer.

Next Steps

After you complete the challenge problem above, follow the link in your email to sign up for your second interview. If you still haven't submitted an application, you can find it here.

Additional Resources

Okay, you’re all done with the Destination: Dev Interview Prep Guide - good job! Once you’ve completed all of the practice problems, you should be ready for the pre-interview challenges and the interview itself. If you feel you need more practice or further explanations on any of the concepts covered here, below are a few great resources you can check out. These resources will continue on to more advanced concepts in Ruby, and if you want to keep going feel free. However, these additional concepts will not be covered in the challenges or the interview, so if you can’t get to them or they aren’t making sense, don’t sweat it.

Code Academy Ruby - Code Academy was already recommended as a pre-requisite, but we have to mention it again because it is such a valuable resource. If you have time, try to complete the entire course (which again goes beyond what we cover for the interview). You can also check out some of their other courses if you're interested (the courses on HTML/CSS and JavaScript will be relevant for later Destination: Dev curriculum).

Learn to Program by Chris Pine - This book is a great introductory read. Pick it up if you can.

Beginning Ruby: From Novice to Professional -

Another great book for beginners.

Coderbyte and Code Eval

Check out the easy problems on CoderByte and CodeEval - they are a great way to get more practice.

Finally, get involved online. Many people have compiled more lists of awesome resources, so get to Google and see what else you can find. You are also always welcome to email me at doug[at]destinationdev[dot]com if you have any questions, need any help, or want a suggestion on what to study next.