Skip to content

Instantly share code, notes, and snippets.

@mdang
Last active April 19, 2022 00:28
Show Gist options
  • Save mdang/638a38c6a037eb98059b to your computer and use it in GitHub Desktop.
Save mdang/638a38c6a037eb98059b to your computer and use it in GitHub Desktop.
Lesson: The Technical Interview

The Technical Interview

Intro

You hate interviewing, but companies also hate it as well. The process for finding the right candidate is a time sink, it costs money and employee time to locate and interview potential candidates. On top of that, new employees have to be trained and will need time before they're making significant contributions.

That's why some companies use recruiters, they're supposed to filter out "qualified candidates" for companies to make it easier.

As you're going through this, remember - Your first development job will be the toughest one to get. You'll continue to develop your skills and experience and that will make it much easier for you to land jobs in the future.

Interviewing

General process:

  1. Phone interview (HR, recruiter)
  2. Technical interview with developer (Developer, in-person)
  3. Meet the manager/team (Culture fit)

What are companies looking for?

  • What you think - They are looking for the most skilled developers
  • What they think - Good companies are looking for a culture fit first and foremost
  • Research shows that it's better to have a team of average workers who like each other over team of highly skilled workers who don't want to work together
  • Example is company will offer current employees referral bonus. They want to find people they already like and will work well with, it's worth it for them to pay these bonuses ($1000 sometimes)

Tips

Reference: Ben Weatherman @ Ordoro

  • Know the interview process. If they don’t tell you, look it up or ask. You should know what tech stack the company uses, because they’ll likely ask you questions in those languages/technologies. If I list Postgres as a technology, you’d better come prepared to talk about relational databases and SQL queries. Also good to know the format so you can prepare.
  • Know the company. You should spend an hour browsing the website to really understand what the company does and how it works. You should be able to give an elevator pitch about what their company does.
  • Think of 3 projects you worked on. Draw from them when you’re asked for examples. Make sure you’re able to explain what part of a project you worked on vs. what others helped with. Don’t pick projects you barely worked on, don’t understand much, or make others look foolish. It’s best if they’re also available on github. Also good to think of at least 1 project that failed and why.
  • Think STAR for behavioral questions. Situation, Task, Action, Results. There are a ton of other methods which will help you organize your answers. The key is to tell a complete story to your interviewer. Give specific questions, not just generalities. If you’re asked about a time when you had to fix someone else’s code, don’t talk about how you’d do that in general.
  • Ask questions. Every good interviewer leaves time for you to ask some questions. Write down a few before you show up. Try to have at least 1 that you’re pretty sure won’t be answered during the course of the interview. Probably don’t ask how much you’ll make. Definitely alright to ask about how features are prioritized or what you’d be working on initially.
  • Follow up. Tell them thanks. If there are things you got wrong, go research them and explain what you know now. (e.g. I had a chance to think about the runtime complexity of the example and now think that bla bla bla). If you did amazing, think of another bit of info to follow up about (e.g. Hey, thanks for pointing me to that cool new Ruby gem. I’ve taken it for a spin and noticed blah, blah, blah).

Interviews for Software Developers

Many established and up-and-coming tech companies send potential hires through a series of trial projects, cognitive tests, and in-person interviews.

Reference: Three Types of Interview Questions Software Developers Should Expect

Tips

  • "I don't know" should never be your answer
    • Talk out loud: Apple interview story
    • Don't BS an answer, but ask them what the correct answer is and what is one way to solve it. This shows that you're wanting to learn and be mentored
  • Expect to get derailed. If you're not expecting it and it happens, you'll be frazzled and not handle the rest well. If you're prepared you'll mentally be in a better place
  • Technical interviews suck. Expect to get technical questions at any point: Apple story where I already did it and they said next one was a "meet and greet"
  • Expect to get some questions wrong
    • Example: Tribal interview where he said he didn't expect me to get a database related question

Sell people on why you do what you do, not what you do.

How Great Leaders Inspire Action

Behavorial and Informational

Along with deciphering if applicants have the right experience, hiring managers also have to determine if they fit well with team cultural. When answering these questions, state the answer first and then explain your answer.

Example:

  • Tell me something that’s a challenge for you
    • This is a spin on the traditional “what’s your biggest weakness” question, and should be answered carefully. A successful answer demonstrates both self-awareness (where you are challenged) and action (how you are taking steps to improve). A word of caution: don’t respond with a “knock-out” answer that would automatically disqualify you for the job. For example, don’t say you don’t like working in teams in an interview for a leadership position or where performing as part of a team is critical.

Computer Science and Algorithms

Examples:

  • Compare and contrast different sorting algorithms. What are each's pros and cons? Which one is best for a given situation?
  • In JavaScript, what is the difference between == and ===

Project and Puzzle

Hiring managers want to see the cognitive process that applicants go through when working on a problem or a puzzle. Always talk out loud when answering.

Examples:

  • 8 marbles question
  • How many ATM's are there in the United States

Practice

  • Tell me about the bug that was the most frustrating for you to find a fix.
  • What tech-related blogs, podcasts, newsletters, etc do you read?
  • What is your favorite programming language?
  • What's the worst feature of your favorite programming language?
  • Tell me about a project that failed miserably.
  • What are some core benefits/features of object oriented programming?
  • Explain what this snippet of code does.
import urllib2
import urllib
import json

url = "http://ajax.googleapis.com/ajax/services/search/web?v=1.0&"

query = raw_input("What do you want to search for ? >> ")

query = urllib.urlencode( {'q' : query } )

response = urllib2.urlopen (url + query ).read()

data = json.loads ( response )

results = data [ 'responseData' ] [ 'results' ]

for result in results:
    title = result['title']
    url = result['url']
    print ( title + '; ' + url )
  • Explain what a closure is in javascript.
  • Select certain documents from a SQL database.
  • Write a function to tell me if a string is a palindrome.
  • Design a RESTful JSON API for a google query.

Resources

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment