How to Prepare for the Technical Interview

A presentation at JSConf EU 2018 in June 2018 in Berlin, Germany by Ben Greenberg

Slide 1

Slide 1

From Rabbi To Coder Preparing For The Technical Interview Ben Greenberg (@rabbigreenberg) @rabbigreenberg reactiverabbi.io

Slide 2

Slide 2

Where It All Began @rabbigreenberg reactiverabbi.io

Slide 3

Slide 3

@rabbigreenberg reactiverabbi.io

Slide 4

Slide 4

@rabbigreenberg reactiverabbi.io

Slide 5

Slide 5

@rabbigreenberg reactiverabbi.io

Slide 6

Slide 6

@rabbigreenberg reactiverabbi.io

Slide 7

Slide 7

and then… @rabbigreenberg reactiverabbi.io

Slide 8

Slide 8

@rabbigreenberg reactiverabbi.io

Slide 9

Slide 9

@rabbigreenberg reactiverabbi.io

Slide 10

Slide 10

“… my mind wandered off to Ben Greenberg. @rabbigreenberg reactiverabbi.io

Slide 11

Slide 11

Had he really gone to rabbinical school…? @rabbigreenberg reactiverabbi.io

Slide 12

Slide 12

Maybe he hadn’t. @rabbigreenberg reactiverabbi.io

Slide 13

Slide 13

! @rabbigreenberg reactiverabbi.io

Slide 14

Slide 14

What I Was Actually Doing @rabbigreenberg reactiverabbi.io

Slide 15

Slide 15

@rabbigreenberg reactiverabbi.io

Slide 16

Slide 16

@rabbigreenberg reactiverabbi.io

Slide 17

Slide 17

Fast Forward 10 Years… @rabbigreenberg reactiverabbi.io

Slide 18

Slide 18

@rabbigreenberg reactiverabbi.io

Slide 19

Slide 19

Graphic Designers @rabbigreenberg reactiverabbi.io

Slide 20

Slide 20

Musicians @rabbigreenberg reactiverabbi.io

Slide 21

Slide 21

Artists @rabbigreenberg reactiverabbi.io

Slide 22

Slide 22

Teachers @rabbigreenberg reactiverabbi.io

Slide 23

Slide 23

Lawyers @rabbigreenberg reactiverabbi.io

Slide 24

Slide 24

Salespeople @rabbigreenberg reactiverabbi.io

Slide 25

Slide 25

and yes… @rabbigreenberg reactiverabbi.io

Slide 26

Slide 26

Rabbis @rabbigreenberg reactiverabbi.io

Slide 27

Slide 27

We Transitioned To Coding Because… @rabbigreenberg reactiverabbi.io

Slide 28

Slide 28

Ability to Create @rabbigreenberg reactiverabbi.io

Slide 29

Slide 29

Jobs @rabbigreenberg reactiverabbi.io

Slide 30

Slide 30

Excitement of Learning @rabbigreenberg reactiverabbi.io

Slide 31

Slide 31

Jobs @rabbigreenberg reactiverabbi.io

Slide 32

Slide 32

Ability to Make an Impact @rabbigreenberg reactiverabbi.io

Slide 33

Slide 33

Jobs @rabbigreenberg reactiverabbi.io

Slide 34

Slide 34

Remote Work Culture @rabbigreenberg reactiverabbi.io

Slide 35

Slide 35

Jobs @rabbigreenberg reactiverabbi.io

Slide 36

Slide 36

Did I mention… @rabbigreenberg reactiverabbi.io

Slide 37

Slide 37

Jobs? @rabbigreenberg reactiverabbi.io

Slide 38

Slide 38

First Comes The Learning @rabbigreenberg reactiverabbi.io

Slide 39

Slide 39

Then Comes The Resume @rabbigreenberg reactiverabbi.io

Slide 40

Slide 40

Then Comes The… @rabbigreenberg reactiverabbi.io

Slide 41

Slide 41

@rabbigreenberg reactiverabbi.io

Slide 42

Slide 42

! @rabbigreenberg reactiverabbi.io

Slide 43

Slide 43

How Do We Turn This @rabbigreenberg reactiverabbi.io

Slide 44

Slide 44

! @rabbigreenberg reactiverabbi.io

Slide 45

Slide 45

To This @rabbigreenberg reactiverabbi.io

Slide 46

Slide 46

! @rabbigreenberg reactiverabbi.io

Slide 47

Slide 47

What We’re Going To Do:

  1. Some Principles 2. Apply Them To An Example @rabbigreenberg reactiverabbi.io

Slide 48

Slide 48

Principle #1: Know Your Strengths @rabbigreenberg reactiverabbi.io

Slide 49

Slide 49

Which One Makes More Sense To You? @rabbigreenberg reactiverabbi.io

Slide 50

Slide 50

@rabbigreenberg reactiverabbi.io

Slide 51

Slide 51

or @rabbigreenberg reactiverabbi.io

Slide 52

Slide 52

the negation of a disjunction is the conjunction of the negations; and the negation of a conjunction is the disjunction of the negations; (source: Wikipedia on De Morgan’s Laws) @rabbigreenberg reactiverabbi.io

Slide 53

Slide 53

(It’s okay, if neither made sense) @rabbigreenberg reactiverabbi.io

Slide 54

Slide 54

Technically Minded People: Limit # of Words @rabbigreenberg reactiverabbi.io

Slide 55

Slide 55

Liberal Arts People: How can I make one word into a sentence? How can I make one sentence into a paragraph? How can I make one paragraph into an essay? How can I make one essay into a dissertation? @rabbigreenberg reactiverabbi.io

Slide 56

Slide 56

Principle #2: Every Building Starts With The First Brick ! @rabbigreenberg reactiverabbi.io

Slide 57

Slide 57

Big ideas can be broken down to a collection of smaller ideas Smaller ideas can be broken down to even smaller collection of ideas and those ideas can be broken down to an even smaller collection of ideas… @rabbigreenberg reactiverabbi.io

Slide 58

Slide 58

Principle #3: Interviewing Is Iterative ! @rabbigreenberg reactiverabbi.io

Slide 59

Slide 59

The wisest of people said, “A righteous person falls seven times, but rises again.” …the knowledgeable are aware that the essence of the righteous person’s rising again is because of their seven falls — Rabbi Yitzhak Hutner @rabbigreenberg reactiverabbi.io

Slide 60

Slide 60

@rabbigreenberg reactiverabbi.io

Slide 61

Slide 61

An Example: Binary Search @rabbigreenberg reactiverabbi.io

Slide 62

Slide 62

? @rabbigreenberg reactiverabbi.io

Slide 63

Slide 63

Applying Principle #1: Know Your Strengths @rabbigreenberg reactiverabbi.io

Slide 64

Slide 64

Binary Search “one or the other” search a method of searching in one or other place. What is this similar to? @rabbigreenberg reactiverabbi.io

Slide 65

Slide 65

@rabbigreenberg reactiverabbi.io

Slide 66

Slide 66

Applying Principle #2: One Brick At A Time @rabbigreenberg reactiverabbi.io

Slide 67

Slide 67

Simple English: “# ! An ordered list This list is split into two I have a desired value In which section is my desired value closer to? ! Look through that section @rabbigreenberg reactiverabbi.io

Slide 68

Slide 68

Is is there? @rabbigreenberg reactiverabbi.io

Slide 69

Slide 69

Yes? @rabbigreenberg reactiverabbi.io

Slide 70

Slide 70

@rabbigreenberg reactiverabbi.io

Slide 71

Slide 71

No? @rabbigreenberg reactiverabbi.io

Slide 72

Slide 72

At least we can eliminate a range of values that we know it’s not in Let’s Make Two New Sections… @rabbigreenberg reactiverabbi.io

Slide 73

Slide 73

! until… @rabbigreenberg reactiverabbi.io

Slide 74

Slide 74

We Found It! @rabbigreenberg reactiverabbi.io

Slide 75

Slide 75

@rabbigreenberg reactiverabbi.io

Slide 76

Slide 76

Applying Principle #3: Interviewing Is Iterative @rabbigreenberg reactiverabbi.io

Slide 77

Slide 77

Binary Search Take One: @rabbigreenberg reactiverabbi.io

Slide 78

Slide 78

Binary Search Take One: function binarySearch(items, value) { } @rabbigreenberg reactiverabbi.io

Slide 79

Slide 79

Binary Search Take One: function binarySearch(items, value) { let first = 0, last = items.length - 1, middle = Math.floor((last + first)/2); } @rabbigreenberg reactiverabbi.io

Slide 80

Slide 80

Binary Search Take One: function binarySearch(items, value) { let first = 0, last = items.length - 1, middle = Math.floor((last + first)/2); while(items[middle] != value && first < last) { if (value < items[middle]) { last = middle - 1; } else if (value > items[middle]) { first = middle + 1; } middle = Math.floor((last + first)/2); } return (items[middle] != value) ? -1 : middle; } @rabbigreenberg reactiverabbi.io

Slide 81

Slide 81

Can We Make That Better? @rabbigreenberg reactiverabbi.io

Slide 82

Slide 82

Yes We Can! @rabbigreenberg reactiverabbi.io

Slide 83

Slide 83

Binary Search Take Two: const binarySearch = (items, value) => { let first = 0, last = items.length - 1, middle = ((last + first)/2) | 0; if (value < items[first] || value > items[last]) return -1 } while(items[middle] != value && first < last) { value < items[middle] ? last = middle - 1 : first = middle + 1 middle = ((last + first)/2) | 0; } return (items[middle] != value) ? -1 : middle; @rabbigreenberg reactiverabbi.io

Slide 84

Slide 84

Can We Make That Better? @rabbigreenberg reactiverabbi.io

Slide 85

Slide 85

Yes We Can! but we’ll stop here for the sake of time, but we could keep on going because… @rabbigreenberg reactiverabbi.io

Slide 86

Slide 86

Interviewing @rabbigreenberg reactiverabbi.io

Slide 87

Slide 87

Coding @rabbigreenberg reactiverabbi.io

Slide 88

Slide 88

Learning @rabbigreenberg reactiverabbi.io

Slide 89

Slide 89

Growing @rabbigreenberg reactiverabbi.io

Slide 90

Slide 90

Living @rabbigreenberg reactiverabbi.io

Slide 91

Slide 91

Iterative is (Principle #3: @rabbigreenberg ) reactiverabbi.io

Slide 92

Slide 92

To Recap @rabbigreenberg reactiverabbi.io

Slide 93

Slide 93

Three Principles @rabbigreenberg reactiverabbi.io

Slide 94

Slide 94

! Know What Your @rabbigreenberg reactiverabbi.io Is

Slide 95

Slide 95

! Take The ! Apart One @rabbigreenberg At a Time reactiverabbi.io

Slide 96

Slide 96

! ♻ Rinse ➡ Wash ➡ Repeat @rabbigreenberg reactiverabbi.io

Slide 97

Slide 97

‫ ְוֹלא‬,‫מר‬ ֹ ‫לְג‬ ִ ‫כה‬ ָ ‫לא‬ ָ ‫ּמ‬ ְ ‫ה‬ ַ ָ‫לי‬ ֶ ‫ע‬ ָ ‫ֹלא‬ ‫ּמָּנה‬ ֶ ‫מ‬ ִ ‫טל‬ ֵ ‫ּב‬ ָ ‫ל‬ ִ ‫בן חֹוִרין‬ ֶ ‫ּתה‬ ָ ‫א‬ ַ It is not your responsibility to finish the work, but neither are you free to desist from it. — Ethics of the Sages 2:16 200 BCE - 200 CE @rabbigreenberg reactiverabbi.io

Slide 98

Slide 98

THANK YOU! Please be in touch: @rabbigreenberg || reactiverabbi.io @rabbigreenberg reactiverabbi.io