system? How did you test your project? What was the result/impact? What would you add if you had more
time? How would you scale it?
- Technical Questions: Data structures (arrays, linked lists, hashtables, trees); Algorithms (know at least one
sorting algorithm - bubble, merge, quick); Big O notation, best/worse average analys; OO design (objects vs.
attributes) Databases (create a schema for...write a query for...inner/outer join, tools to optimize a slow query),
Frontend (design a webpage for...What javascript libraries have you used? Explain css box model. How do you
prevent cross-site scripting-XSS)
- Design Patterns: Elements of Reusable Object-Oriented Software by Gamma, Helm, Johnson and Vlissides an excellent
resource
- Steve Yegge’s 5 most essential phone screen questions: 1) Coding (write simple code with correct syntax in C,
C++ or Java) 2) OO design (define basic OO concepts and model a simple problem) 3) scripting and regexes
(describe how to find phone numbers in 50,000 html pages 4) data structures (demonstrate basic knowledge of
most common data structures) 5) bits and bytes (answer simple questions about bits, bytes and binary numbers)
- Your Questions: What made you decide to work here? Where did you intern or work before? What project
are you working on? What technologies do you use? What’s the release cycle like? How does your team work
with other groups? Who are your top customers/users? How fast are you growing? What are your biggest
challenges? Who are your biggest competitors?
- Full Day Interview: 4-6 45 minute interviews; each company and manager has different styles; 1-2 people
will meet with you in each slot. Focus areas can be data structures, algorithms, design, databases, frontend
technologies, logic puzzles and problem solving
- Whiteboard Questions: stay calm, listen carefully, ask questions if you don’t understand, solve simplest
solution first, check your code, talk about efficiency/trade-offs/improvements, iterate, think out loud/have a
conversation
- Pair Programming: two people in front of one computer, collaboration is key, think out loud and throw out
options before storming ahead, check your code, write tests, talk about efficiency/trade-offs/improvements, be
the person that you would want to work with
- Take Home Test: read instructions carefully, ask what’s most important to the tester and prioritize if timed,
add your name to the code, document, add test code
- Culture Fit: Do you fit the values of the team? Show interest and enthusiasm; passion for technology;
knowledge of company; demonstrate you’re a fast learner, hard worker and have motivation/drive
- Interview is time to talk about job and opportunity, not $
Offers
Hiring decisions are generally made by a development manager; timing depends on number of openings and candidates
and generally a response can be made quickly. If you don’t get an offer, it could be you’re a good company fit, but not in
that role; they have multiple strong candidates; they have headcount/budget issues; or the manager simply got busy and
hasn’t made a decision (following up is a good idea).
After you get a verbal offer, ask questions about offer, benefits, compensation and equity. It never hurts to ask for more,
based on assets you’ll bring to the team!
Most companies don't have a huge variation in what they offer college hires. If you were a summer intern and they're
asking you to return, they'll be putting together a competitive offer. They know from your internship performance that
you'll be successful so they will want you to accept. If you want to get the absolute best possible offer, your best bet is
to have a competing offer from another similar or higher tier company: Amazon, Google, Facebook, Apple, Microsoft,
Airbnb, LinkedIn, Salesforce, netflix, etc. This could potentially increase your offer by 5-20K -- but it will take a lot of