Technical interviews often do not reflect the actual day-to-day work of a job and require a unique set of skills. The document provides advice on preparing for technical interviews, which may involve coding challenges, algorithms, data structures, frameworks and languages. It recommends practicing core skills, gaining interview experience through mock interviews, and learning from every interview. The goal is to be able to think through problems and code solutions calmly under pressure.
1. In most cases Technical interviews
do NOT represent WHAT or HOW
you will work
on a day to day basis
technical interviewing is a unique skill/experience
4. Three interviews when I froze, I knew the answer but not in the environment they created:
1. White boarding the Fibonacci
2. Fizz buzz - in front of 7 people (two on skype)
3. How does a server cope with high demand
5. Junior Rails Interviews
• 14 interviews asked me to code in the following
• 3 JavaScript
• 3 Ruby
• 2 PHP
• 4 Rails
• 3 Algorithms in what ever language
When I applied to 14 roles as a junior rails dev, for junior rails positions these are languages I was ask code in or do in the case of Algorithms.
Do not rely that they know or will test you in your preferred language/framework
8. –Every Action movie ever
“Remember your Training”
So we have to prepare you and get you some experience
Military train you under stress, so when it is stressful you can still remember your training
10. Format
• You and the founder in a room with your laptop
• You in a room and whiteboard with 1-6 people
• You in a room with their computer and whiteboard
an 1-3 people
• You on computer, coding in a online environment
• Code Competition
I think the format and the environment will help certain types of developers be successful but not all. If coding is about problem solving, surely you need different types
of people to come up with the a wider range of solutions. As the Bay of Pigs showed us being Smart is not enough. Is your environment about collaboration or
competition? Is it about having all the answers or being able to ask others.. Like most things human we are looking for a balance
11. Software Engineer
• Coding- fizzbuz, navigate a tree
• O Notation - what performs best and when to use
• SQL Queries - joins
• Algorithms - bubble sort
• Data Structures - linked lists, hashes, tree
Contents for a software engineer, here are some of the most common. Theses are the questions most de attached from the real work that you will do on a day to day
basis. They are perfects for a recent graduate, but not a bootcamper
12. Web Developer
What
happens
when you
click this
button?
a tag
javascript
event
resolve url
IP
server setup
routes
controllerHTTP model
viewprocesses
What happens when you click this button?
How does the server know what user is which?
13. Web Developer
• Security - Injection, XSS, CSRF
• HTTP - Codes, Headers and Transactions
• Performance - Frontend, Database requests
• Framework - Maybe
• Gems/Libraries - Which your favourite are and why
• Mobile - Responsive, scaling
On top you will be asked this question if the role is really a web dev job
14. Experience
1.Dev Environment build & Tools
2.Testing
3.Problem solving
4.Architecture
5.Code comprehension
6.Deployment
7.Continuous Deployment
8.Pairing
9.Process i.e. Agile or Waterfall
10.Scaling problems & Distributed systems
Conversation will often explore these topics depending on the level of the role you are applying for
16. Understanding your
competence
1. What are your strengths and weaknesses (rate
your self 1-5 for each skill/language/concept)
2. What do you enjoy and not
3. How do you provide evidence of your strengths
4. Traditional App building - http://sijinjoseph.com/
programmer-competency-matrix/
The above programmer competency matrix is ok for the traditional C/Java engineer but fails for the full stack developer
17. Full Stack Developer
1. Internet protocol
2. HTTP
3. MVC
4. Dev Ops
5. Browser Compatibility
6. Differences between Devices i.e Mobile/desktop
7. A/B Testing
8. UX/UI
9. Performance over 3G/4G/Wifi etc
10.Scaleability & Distributed Systems
11.Locations, Languages and Timezones
So what should a full stack dev rate themselves on?
18. Cards Against Humanity - Researching the potential questions, will give you a leg up in the interview
19. Potential questions
1. Google
2. glassdoor.com
3. Quora
4. A great reference from Julia Evans
Write a list of potential questions by looking at the job description and finding the common questions for each skill/language
20. The interviewers
1. Linkedin
2. Blog
3. Github
4. Twitter
Ask HR who will interview, get their full name and do some research on imagine the kind of questions they will ask you. Build up an archetype of each interviewer.
22. Know why you want this job
1. The Technology
2. The Product
3. The People
4. The Vision
5. The Culture
6. The Money
7. The Place
If you do not love the technology or even like it consider another job. I would suggest you need 4 to consider a job and 5+ to really stay for a long period of time
24. White Board code is very different to working on an IDE that finishes everything you are typing
25. Mock Interview
1. Ask a friend to come up with some questions and
ask you them
2. Get them to evaluate your strengths and
weaknesses
3. Practice white boarding with a friend
26. Practice with a friend, consider all the questions, identify the weak spots and revise them
27. Take Home
1. Really understand the problems
2. Complete and consider other ways, what are other
perspectives
3. Consider this an education opportunity
Love Take homes
29. Pre-Interview
1. The week before - Code - exercise.io or Ruby
Koan
2. Write out SQL queries and rehearse joins
3. Sleep well the night before
4. Prepare your laptop, what on your desktop?
You are prepared when you can explain thesis topics to someone who is not a computer scientist
30. Sometimes just ask for moment, find that place of peace and break down the problem and code.. Maybe just start with comments and build up to code..
31. Stress
1. Take a moment, find your happy place
2. Break down the problems to the smallest element
3. Be honest when you do not know and then figure it
out
4. Be verbose
5. Bring water and snacks, avoid food that make
sleepy
33. Techniques for technical
questions
1. Develop a plan before you code
2. Understand the ambiguities and ask questions
3. Start with the simplest approach
4. Iterate and improve
5. Keep talking to let the interviewer know what you're thinking
6. Always listen to an interviewer’s hints
7. If you cannot remember the syntax ask the interviewer or just search the
web
8. If you get stuck, tell the interviewer you are stuck and explain why.
35. Coding
1. Add comments of what you will do in english
2. Make it work
3. Make it readable
4. Make it perform
Some interviewers are looking for the one line example, some are looking for code they enjoy ask them
36. Step out of trees for a moment, lets look at the forest
38. This is a two way process:
How they interview you,
helps you choose OR not choose them
How good is the interviewer when you get wrong, are they impatient, or are they a good coach, getting back on track. You can tell a lot about culture by their forgiveness
and ability to help you step up
39. Interviews Strategy
1. For the companies you want the most to work with,
interview with them later
2. Interviewing is a skill and experience matters
3. Reflect after every interview. Find the answer to the
problems you did not know
4. Allocate learning time every week
5. Refresh basics every year i.e. core programming
langauge
41. You may need to do this after, the longest set of interviews I have had very 8 in a row for 8 hours..
42. After the Interview
1. Write all the questions down
2. Show colleagues/friends the questions ask them
how they would do it
3. Then show your answers and ask for their critic
4. Find answers to the questions you did not know
43. One interview asked me to use Cross-Site Scripting on their site, I had no idea, after I learnt a lot
OWASP
44. Conferences and online free videos of the conferences are way to greatly increase your experience, learn from others mistakes if you can - this Smashing Mag cons
45. Improve your..
1. Algorithms - https://www.manning.com/books/grokking-
algorithms
2. Math - https://www.khanacademy.org
3. Ruby - RubyTapas, The Ruby Way, The Well Grounded
Rubyist, Ruby Koans, Ruby Kata
4. Rails - The Rails 4 Way, Rails Anti Patterns
5. Scaling/Security - OWASP, The Tangled Web, The Practice of
Network Security Monitoring
6. Experience Conference talks i.e. Railsconf or Smashing Mag
47. Pair Program
1. Good companies use it as both an interview
technique and for your actual job
2. Nice Pair - Pair Programming Archetypes
Become good at this, change partners every 4 hours or every feature, it is emotional exhausting at first, but you get used to it
49. Build your tech int. exp
• Practice core skills i.e. Programming Language
• Gain Interview Experience
• Review after every Interview
Program well in one language
Mock Interview until you have no fear
White Board until you can do it without referring
Learn from every interview
51. How I interview
First Interview
• Have coffee find out what I feel about this person
• Why they are passionate about coding
Second Interview
• Ask some basic technical questions
• Have them bring their project, explain it to me.
• Ask them to add i.e. code a feature with a colleague pairing
• Meet the team
52. Two weeks in San Francisco. I have received a lot of job offers from people I met at tech conferences
53. Get an Interview
1. Make Connections - meet ups, conferences
2. Find the companies you want to work for e.g. Companies using Ruby
3. Help build the community - e.g. Vancouver Ruby Meetup
4. Startups and Startup Weekends - find people you want to work with
5. Coach/Teach/Mentor - we all know something more than someone else,
also you get better at communicating
6. Present/Blog - a journey of yours and help others learn
7. Projects - Your personal passion projects, maybe open source
8. Online social proof - Linkedin, Twitter, Blog
54. Professional Career - http://www.linkedin.com/in/ericbrooke
Articles I have read and events I attend - http://twitter.com/ericbrooke
A blog of unfinished thoughts - http://ericbrooke.wordpress.com/
What do I read? - http://www.goodreads.com/ericbrooke
Coding https://github.com/ericbrooke/
57. Play often with code, find the project you actually care about, something to improve your life
58. My Interviews
1. Take home questions (Recursive, SQL, front end coding, code to recognize a shape, DSL)
2. Do Fibonacci on white board, basic tree construction, traversal, talk through what happens when you click a button in a
browser
3. Discrete Math 101, graph traversal algorithms: breadth-first search and depth-first search, Hash Tables
4. Algorithms, Scaling, DevOps
5. Debug their production code
6. Object Oriented design, polymorphism, Functional programming, recursion
7. 100 questions on Ruby and Rails
8. 100 questions on Ruby and Rails, write some JavaScript a counter
9. 50 questions on Ruby and Rails then Fizzbuzz
10.Piglatin, problem solving, project management, architecture, distributed networks
11.Informal with devs, code bowling rules, problem solving, Architecture, code comprehension with complex legacy code
12.Take home 1(algorithm, web security, code comprehension, SQL, find the bug ), Take home 2 (add features to an existing rail
codebase)
13.Add a feature to your own rails code
14.Describe web process, 20 questions on web security, code a bubble sort, write an Sql query
60. • Blog ericbrooke.wordpress.com
• Twitter @ericbrooke
• Git Hub: ericbrooke
• Goodreads: http://www.goodreads.com/ericbrooke
• Linkedin http://www.linkedin.com/in/ericbrooke
Professional Career - http://www.linkedin.com/in/ericbrooke
Articles I have read and events I attend - http://twitter.com/ericbrooke
A blog of unfinished thoughts - http://ericbrooke.wordpress.com/
What do I read? -
Coding https://github.com/ericbrooke/