Interviewing For Frontend Engineers
Interviewing For Frontend Engineers
Engineers
Jem Young
@jemyoung
Senior Software Engineer
Why is interviewing so
difficult?
Programming is math
3 types of
Programming is for programmers
controlling hardware
Programming is for
building things
https://josephg.com/blog/3-tribes/
Why is interviewing for
Frontend so difficult?
Frontend
cars
televisions
browsers
desktop apps
appliances mobile
devices
Interviewing for Frontend
Engineers?
candidate
interviewer
0.300
0.501
❏ Application
❏ Initial call
❏ Code test
❏ Phone screen
❏ On-site
❏ Result
Application
What do you like about your current job?
What sort of things are you looking for
in your next role?
Which companies have appealing
engineering cultures? What makes it
appealing?
preparation
Application
● One page
● Skills
● Experience
● Technology
familiarity
● Education
● Accomplishments
What do I do if I have little/no experience?
preparation
Application
● Which roles does
this person fit?
● What sort of
experience is
required?
● Is there any bias in
your selection
process?
❏ Application
❏ Initial call
❏ Code test
❏ Phone screen
❏ On-site
❏ Result
preparation
Initial call
1. What do you do currently?
2. What are some projects you’ve worked on
recently?
3. What are you looking for in your next role?
4. Why do you want to work for ______?
5. What is your availability for the next steps?
preparation
Initial call
1. How many steps are in the interview
process? How long does it generally take?
2. How big is your engineering team?
3. Which team would I be interviewing for?
4. What is the culture like?
5. Who are you competitors?
6. What sort of projects would I work on?
● What is the difference between const,
let, and var?
● Explain prototypical inheritance
● What is 'this' mean in JavaScript?
● What is the data structure of the DOM?
● What is a Stack and a Queue? How
would you create those data structures
in JavaScript?
Prescreen
● How can you tell if an image element is
loaded on a page?
● What is call() and appy()?
● What is event delegation and what are
the performance tradeoffs?
● What is a Worker? When would you use
one?
What is the difference
between const, let, and var?
Explain prototypical
inheritance
What does ‘this’ mean in
JavaScript?
What is the data structure
of the DOM?
What is a Stack? What is a
Queue? How would you
create those data
structures in JavaScript?
How can you tell if an
image element is loaded on
a page?
What are call() and apply()?
What is event delegation?
What is a Worker? When
would you use one?
TRIVIA
❏ Application
❏ Initial call
❏ Code test
❏ Phone screen
❏ On-site
❏ Result
Code test
preparation
● Make your code as
readable as possible
○ Comment your code
○ Don’t over complicate
the architecture
● Don’t import too many
Code test tips
libraries
● If you have time, add unit
tests
● Ask questions!
Code test
preparation
● Make the problem as
straightforward as possible
Θ(n)
O(n)
O(n!) O(n2) O(n log n)
time (number of operations)
O(2n)
O(n)
O(log n)
O(1)
number of elements
Ω(1)
Θ(n)
O(n)
❏ Application
❏ Initial call
❏ Code test
❏ Phone screen
❏ On-site
❏ Result
preparation
Phone screen
● Ask questions
● Talk out your solution
● Get comfortable with the environment
preparation
Phone screen
● Are you in a quiet area?
● Is the problem well worded?
● Does the candidate know what the
requirements and restrictions are?
● Did you leave time for questions at the end?
Problem: phone screen
❏ Application
❏ Initial call
❏ Code test
❏ Phone screen
❏ On-site
❏ Result
On-site
preparation
● Practice writing code without a computer
● Go over general sample problems
● Ask your friends to test you
● Try to ask what the style of technical
questions will be
On-site
preparation
● Make sure questions are relevant to the role
● Have backup interviewers
● Book the room for the day
● Allow time for breaks (bathroom, lunch, etc)
On-site
Knowledge: strings
.split()
.toLowerCase() Useful
.substring() methods
.startsWith()
Problem: reverse
Knowledge: arrays
Object.entries()
Array.from()
[...item]
.isArray() .pop()
.filter() .push()
.reduce() .map()
Useful
methods
.concat()
.join()
Problem: duplicate strings
Problem: flatten array
Knowledge: scope
.call()
.apply()
.bind()
Problem: bind
Knowledge: timing
setInterval()
setTimeout()
Problem: debounce
Knowledge: trees
● Root
● Nodes
● Children
● Parent
[ 0 , 1]
A B
Problem: domTree
Knowledge: rendering
requestAnimationFrame()
Problem: move element
Knowledge: promises
Problem: sleep
Problem: promisify
❏ Application
❏ Initial call
❏ Code test
❏ Phone screen
❏ On-site
❏ Result
Result
preparation
0.501
Result
preparation
● Give feedback
● Invite them to re-apply
● Stay in touch
Thanks!