Interviews

A practical guide for exposing the best version of YOU

Tal Bereznitskey

VP R&D @ Bizzabo


Codes and manages engineering at Bizzabo

Blogs at berzniz.com

Interviewed ~80 developers in the past year

I am going to share practical tips & secrets


Hiring is a risk

Our task is to REDUCE THE RISK of hiring you

(it's a mutual task)

in·ter·view

A conversation with the purpose of finding a mutual fit

Pssss… can you keep a secret?

We want you to succeed

Joel Spolsky

Stack Overflow, Joel on Software, Trello, internet famous
“In principle, it’s simple. You’re looking for people who are Smart, and Get things done.”

TIPS

& stuff you should know

Do your homework

Read our website before coming to the interview

The interview starts when you knock on our door

Come on time, smile and be energetic

Share

examples

from previous experience

Team Player

“Describe a time where team work was required to complete a task”

Learning

“Describe how you learned a new skill”

Overcoming Obstacles

“Describe a situation when you overcame something difficult”

Show

Side projects and web apps you've created

Drive

We're looking for passionate people, with fire in their eyes

Saying

“I don’t know”

is better than explaining things you know nothing about

Coding Questions

DON'T PANIC

Understand the question

Repeat the question

“So you want me to find the string that appears the most in the array?”

Ask questions

“May I use temporary variables?”

Get comfortable

thinking out loud

We want to see your thought process

Progressive Solving

Start with the most naive and simple solution that works, communicate it and move to a better one

Show dry runs of your code

Draw arrays, show progress, debug it on paper

// Sum an array
[1, 2, 3, 4].reduce((sum, x) => (x + sum), 0)

                    

Draw the loop, step by step

x sum x + sum
1 + 0 = 1
2 + 1 = 3
3 + 3 = 6
4 + 6 = 10

Clean Code

Re-write your solution, do not submit your drafts

Use clear handwriting, indentation, good variable names

function reverse(string) {
  return string
    .split('')
    .reverse()
    .join('');
}

Complexity

To evaluate your solution learn about complexity and the Big O notation


// O(1)
obj.Hello = 'Shalom'
obj.Hello === 'Shalom'

// O(n)
for (...) {}

// Also O(n) because O(n+n) = O(2n) = O(n)
for (...) {}
for (...) {}

// O(n^2)
for (...) {
    for (...) {}
}

// O(n*log(n))
arr.sort()
                    
(Complexity Cheat Sheet)

Stop me if you've heard this one before

Let us know. We value your honesty!

Quick Recap


  1. Understand
  2. Think out loud
  3. Simple first
  4. Clean code

LET'S PRACTICE

Question #1

Write a function that gets an array of strings and returns the string with the most occurrences.


// Example:
// For ['Blue', 'Green', 'Red', 'Green', 'Yellow']
// it should return 'Green'
                    

Question #2

How would you reverse a Linked List?

Please write the code to do so

Question #3

Write code that shuffles an array


// Example:
// For [1, 2, 3, 4, 5] it might shuffle it this way:
//
//     [4, 1, 5, 3, 2]
                    

Can it be done "in place"? without using another array/object?

Riddle Questions

Not my favorite, but people seem to keep asking them

"How many golf balls can fit in a school bus?"
"How many times a day does a clock’s hands overlap?"

YOU ARE AWESOME!

Tal Bereznitskey

berzniz@gmail.com

berzniz.com

@ketacode