1 Interviewing process:
Overview
How companies interview and what they look for.
- after selected for interview, usually first round is a phone screening interview
- can be very technical, check with your recruiter.
- types of tech-interview
- online text editor
- write on paper and read through phone
- even a “homework”
- after one or two phone screens, you are brought onsite.
- 4 to 6 interviews
- a lunch interveiw which talk about interests and learn about the company
- others technical: algorithm, design, and resume
- Interviewers meetup for feedback, and the recuiter should respond to you within a week. All recruiters should tell candidates once a final decision is made.
- If delayed, follow up with the recruiter politely.
How questions are selected
Interviewers usually go though an interveiw training before interviewing. Questions are selected by interviewers. Some possible source of questions:
- questions interviewers were asked as candidates
- swap questions from other interviewers
- From internet
- By tweaking existing questions Other factors to consider:
- Web-based companies more likely to ask system design. Database heavily ask database questions
- Most are Data structure and Algorithms
Timeline and preparation map
See page 8
If you’re starting late into this process, don’t worry. Do as much “catching up”as you can, and then focus on preparation.
bullits:
- what is interview prep grid?
- read and reread intro to CTCI
- practice quesitons and write code on paper
- do several mock interviews
- rehearse stories from the interview prep grid before the interview
- reread 5 algorithm approaches
- review list of mistakes
- rehearse prep grid
- interview …
- thank you note to recruiter
The evaluation process
Usually on four aspects:
- prior experience
- culture fit
- coding skills
- analytical ability(Intelligence) The later two are important, but the first two cant be overlooked Prior Experience For bigger tech companies, if you get the interview, this tends not to be a direct factor. But it can bias the interviewer’s perception. e.g. A interviewer who thinks you are smart can over look some of your mistakes. Preparing for “softer” questions iswell worth your time.
Cuture fit Matter more at small company than big ones.
Other aspects:
Dont be arrogant, argumentative or defensive in an interview. Suggestions on this:
- Keep an eye on these bad behaviours.
- Spend time preparing your resume.
-
Focus on coding questions.
And remember—a rejection is not a life sentence. You can almost always reapply within a year, and many candidates get offers from companies that previously rejected them. Don’t get discouraged. Keep at it.
Incorrect Answers
- not how many you get right, but how optimal your final solution is
- your performance is compared with others. But not you can have different quesitons. Easier questions are expected to be finished real quick, and harder ones allows mistakes.
- Most people make mistakes.
dress code
Please come back to check on book p12
- A good rule of thumb for any interview is to dress one small notch better than the employees in your position.
- your coding skills matter far more than your sense of style.
- Consider the culture of the company.
- If you are interviewing for a Program Manager, Dev Lead, or any role closer to management or the business side, you should lean towards the more dressy side.
| Start-Ups | Big Software/Tech companies | Non-Tech | |
|---|---|---|---|
| Men | Khakis, slacks, nice jeans. Polo shirt/dress shirt | same as left | Suit, no tie. Consider bring a tie just in case |
| Women | Khakis, slacks, nice jeans, Nice top or sweater | same as left | Suit or nice slacks with a nice top. |
Top 10 Mistakes
- Practice on a Computer
- Not Rehearsing Behavioral Questions
- Not Doing a Mock Interview
- Trying to Memorize Solutions
- Not Solving ProblemsOut Loud
- Rushin
- SloppyCoding
- Not Testing
- Fixing MistakesCarelessly
- Giving Up
FAQ
2 Behind the Scenes
Introduce a typical interview day in big companies. each company has its own quirks offered insight as to what their company stresses in their interviews
The Microsoft interview
- In the morning, fill out initial paper works, then a short interview with a recruiter who give you a sample question. This is more of prep you and ease you.
- Be nice to your recruiter, they can fight for you to be hired-or not!
- During the day, 4-5 interviews, often with two different teams.
- Interveiw in there team office, not in conference room, can get a feel for the team culture.
- Depending on the team, inter- viewers may or may not share their feedback on you with the rest of the interview loop.
- If you are asked to speak to the hiring manager after the interviews with the team, it likely means that your passed the interviews with a team. It’s now down to the hiring manager’s decision.
- You might get a decision that day, or it might be a week. After one week of no word from HR,send a friendly email asking for a status update.
- Definitely Prepare “Why you want to work for Microsoft?”
- passionate about technology
- what’s unique You reach the hiring manager means you have done well.
The Amazon Interview
- Usually start with two phone screens with a specific team. If more interview, might mean their previous interviews are not convincing, or different teams.
- Usually write simple code in shared document editor.
- Broad questions to see where you are familiar.
- Next, fly to Seattle for four or five interviews with one or two teams that have selected you based on your resume and phone interviews.
- White board
- Might other skills
- interviewers focus on different aspects, and submit individual feedback without discussion
- A interview might be the bar raiser interview.
- Specialized in keeping the bar high and
- has both significant experience with interviews and veto power in the hiring decision.
- Remember: you are expected to struggle a bit, but you are judged relative to other candidates.
- After feedback, interviewers will meet and discuss the feedback, and make hiring decision.
- Friendly email if there is delay with the recruiter.
- Definitely Prepare
- Amazon cares about scalability. See our recommendations in the Scalability and Memory Limits chapter.
- OOD Check out the Object-Oriented Design chapter for sample questions and suggestions.
- Unique? Bar raiser: need to impress the bar raiser and the Hiring Manager
The Google Interview
- First phone screen with google engineer. Similar questions as on-site.
- On-site four to six people, one is lunch interviewer. Every interviewer(except lunch) will submit a confidential feedback. Ask honest questions to the lunch interviewer.
- Written feedback -> hiring committee -> hire/no hire recommendation. How:
- The feed back is broken down into four categories:
- Analytical
- Ability
- Coding
- Experience and Communication
- a score from 1 to 4 is given.
- The feed back is broken down into four categories:
- An “enthusiastic endorser” is important. 3.6, 3.1, 3.1, 2.6 is better than all 3.1
- Hiring committee -> compensation committee -> executive management committee.
- Might take several weeks.
- Definitely Prepare
- how to design a scalable system: make sure you prepare for questions from “Scalability and Memory Limits.”
- Bit Manipulation is a hot spot
- Unique: your interviewer do not make hiring decision.
The Apple Interview
read again before interview
The Facebook Interview
The Yahoo! Interview
3 Special Situations
Experienced candidates
Testers and SDETs
- Must be great coder and tester
- recommended preparation process
- Prepare the Core Testing Problems.
- Practice the Coding Questions: Coding skills
- Practice Testing the Coding Questions, write code then test it.
- also need communication skills.
- Career advice
- many candidates find it very difficult to move from an SDET position to a dev position. Make sure to keep your coding and algorithms skills very sharp if you hope to make this move, and try to switch within one to two years. Otherwise, you might find it very difficult to be taken seriously in a dev interview.
Program and product managers
Dev leads and managers
Start-ups
General pointers, every startup is different
- Application process
- Visas and work authorization: some not be able to sponsor your work visa. If you require a visa and wish to work at a start-up, your best bet is to reach out to a professional recruiter who works with many start-ups or to focus your search on bigger start-ups.
- Resume selection factors: show initiative factor. And know the language and technology of the company.
- The interview process: start-ups often look closely at your personality fit, skill set, and prior experience.
4 Before the interview
Getting the right experience
This section is mainly about filling your resume with relevant experiences
For current student
- Take big project classes
For professionals
Trying to move from a lesser known company to one of the bigs, or from test/IT into dev role:
- Shift work responsibilities more towards coding, discuss your eagerness to take on bigger coding challenges with your manager.
- Use your nights and weekends on building something ‘just for fun’
If you want to move into management down the road, you should find ways now of developing leadership experience.
Building a Network
Write a great Resume
Appropriate Resume Length
One page for less than 10 year of experience, otherwise, no more than two pages
Employment History
Only include the relevant ones.
Writing Strong Bullets
“Accom- plished X by implementing Y which led to Z.” Not everything you did will fit into this template, but the principle is the same: show what you did, how you did it, and what the results were. Ideally, you should try to make the results “measurable” somehow.
Projects
Especially useful for college student and recent grads.
- The projects should include your 2 - 4 most significant projects.
- State what the project was and which languages or technologies it employed.
- You may also want to consider including details that make you look better such as whether the project was an individual or a team project, and whether it was completed for a course or independently.
Programming language and software
I recommend the following compromise: list most of the languages you’ve used, but add your experience level. This approach is shown below: • Languages:Java (expert), C++ (proficient), JavaScript (prior experience).
For non-native english speaker & internationals
proofread your resume by native English speaker No age, marital, nationality for US positions.
5 Behavioral questions
Behavioral Preparation
They can be asked to get to know your personality, to understand your resume more deeply, or just to ease you into an interview.
How to prepare
Tell me about a time when you… is a normal form. may require an example from a specific project or position. Fill in the preparation grid when preparing. (On evernote) I recommend reducing each story to just a couple of keywords that you can write in each cell. This will make the grid easier to study and remember.
When answering these questions, you’re not just trying to find a story that matches their question. You’re telling them about yourself. Think deeply about what each story communicates about you.
What are your weaknessess?
A better answer conveys a real, legitimate weakness but emphasizes how you work to overcome it.
What was the most challenging part of that project?
Don’t say something that everyone can say like “I had to learn a lot of new technologies.”
What questions should you ask the interviewer?
Prepare questions in advance.Doing research on the company or team may help you with preparing questions.
Genuine Questions:
Questions you actually want to know the answers to. Examples:
- How much of your day do you spend coding?
- How many meetings do you have every week?
- What is the ratio of testers to developers to program managers?
- What is the interaction like?
- How does project planning happen on the team?”
Insightful Questions:
Questions are designed to demonstrate your deep knowledge of programming or technologies, and they also demonstrate your passion for the company or product. require advance research about the company. Examples:
- “I noticed that you use technology X. How do you handle problem Y?”
- “Why did the product choose to use the X protocol over the Y protocol? I know it has benefits like A, B,C, but many companies choose not to use it because of issue D.”
Passion Questions:
Questions that are designed to demonstrate your passion for technology. They show that you’re interested in learning and will be a strong contributor to the company.
- I’m very interested in scalability. Did you come in with a background in this, or what opportunities are there to learn about it?
- I’m not familiar with technology X, but it sounds like a very interesting solution. Could you tell me a bit more about how it works?
Handling Behavioral Question
Advice:
Be Specific, Not Arrogant.
Limit Details: Stay light on details and just state the key points.
“blablabla, I can go into more details if you’d like”
Give Structured Answers
Nugget First
Starting your response with a “nugget” that succinctlydescribes what your response will be about. Have the following benefits
- This technique grabs your interviewer’s attention and makes it very clear what your story will be about
- Prevents you from rambling.
##### S.A.R. - Situation Action Result
- Situation is the background, the task, or the problem you were facing
- Action, is what you did
- Result: Problem solved
6 Technical questions
Technical Prep
How to Practice a Question
- Try to solve the problem on your own. Some problems are designed to be hard.
- Write code on paper. !!!
- Test your code. Also on Paper.
- Type the code into computer. And keep track of your mistakes.
What you need to know
You are usually expected to know the basics. A list of MUST know knowledge
- Refer to the book for the list. Page 47 For these topics you need to know:
- how to use them
- how to implement, this is important
- what is the space and time complexities.
- Special note: HashTable is very important and used most often.
Powers of 2 Table
2^32 -> 4G Using this table, you could easily compute, for example, that a hash table mapping every 32-bit integer to a boolean value could fit in memory on a single machine.
programming Language
Not important
handling technical Questions
only 10 out of 120 people can get the perfect answer immediately(best performance and bug free).
Basic principles:
- Don’t panic if don’t know the answer
- Start talking aloud.
- Show that you are tackling the problem
- You are not done until the interviewer says you are.
Five steps to Tech Questions
- Ask questions to resolve ambiguity
- Design the algorithm
- Can write pseudo first, but tell your interviewer that you will write real code.
- Write code at moderate pace
- Test your code and fix bugs carefully Each step in detail:
1 Ask Question
In fact, many interviewers (especially at Microsoft) will specifically test to see if you ask good questions.
Basically, ask questions to make the problem more specific.
2 Design an Algorithm
Here is a Five Approach in next section to help you design an algorithm.
While designing, also think of the following:
- space and time complexity
- what happens if a lot of data
- Does your design cause other issues or limitation, what are the trade offs
- If the data have specific feature, (like, sorting human age), have you use that?
3 Pseudocode
Use pseudocode to outline your thoughs, and reduce mistake when you code. But if you do this, Let your interviewer know.
4 Code
Finally you start to code. Rushing will hurt you, just go at a nice, slow, methodical pace. And remember these two pieces of advice:
- Use Data Structure Generously: Use existing data structure, or just design your own object – This shows good OOD.
- Don’t crowd your coding: Start from upper left, and arrange the space carefully
5 Test
A few things definately should consider when testing:
- Extreme cases: 0, negative, null, max, min
- User error,
- Gereral cases
If see a mistake, think carefully and track it down. Don’t be a random fixer.
My own suggestion:
- First ask question, to clarify everything
- ask about corner cases and all details that need to be clarified.
- it is good to write down every thing
- Analyze the question:
- To see what type of problem is it, is it similar to anything I have done earlier?
- Condider all possible situations. Maybe list all possibilities on the white board.
- Start to come up with ideas:
- it is good to start or at least mention the brutal force solution
- suggest all possible ideas, and explain if there is any trade off
- It would be good to list possible solutions, and thinking flow.
- If you have confidence in implementing all algorithms, ask your interviewer which one to implement
- If you are not sure if you could finish some implementations, let your interviewer know, and try to do the one that you can.
- Still, utilize the whiter board if you need to analyze the problem to help you solve it
- and maybe write down corner cases.
- Code:
- It is good practice that you write a few test cases before you start coding
- Talk while coding
- No need to rush,
- write clean code
- Becareful with some of the variables like use of ‘l’
- take care of corner cases after finishing
- Test and Corner cases
Five algorithm approaches
Examplify
Derive rules from example
Pattern Matching
Try to modify the problem to a similar problem, and first solve the similar problem, and see if the solution can work.
Simplify and Generalize
- change constraints such as data type, amount of data. – to Simplify the problem.
- Then solve the simple problem
- Then generalize the simple problem.
Base case and build
Start from one, and solve for two, three….
Usually recursive approach, or dynamic programming.
Data Structure Brainstorm
Just list all the data structures you know, and see which is a best fit.
What good coding looks like
Here are the essential properties of good code:
- Correct:
- Efficient:
- Simple
- readable
- Maintainable
Striving for these aspects requires a balancing act. For example, it’s often advisable to sacrifice some degree of efficiency to make code more maintainable, and vice versa.
More specifically, good code should look like this:
!!!
7 The offer and Beyond
Should you accept the offer. Is it the right one? How do you decline it? Deadlines?
Handling Offers and Rejection
Offer Deadlines and Extentions
Usually deadlines are one to four weeks out. If you are still waiting to hear back from other companies, you can ask for an extension.
Decline an offer
Even if you aren’t interested in working for this company right now, you might be interested in working for it in a few years. (Or, your contacts might move to another more exciting company.) It’s in your best interest to decline the offer on good terms and keep a line of communication open.
When you decline an offer, offer a reason that is non-offensive and inarguable. For example, if you were declining a big company for a start-up, you could explain that you feel a start-up is the right choice for you at this time. The big company can’t suddenly “become”a start-up, so they can’t argue about your reasoning.
Handling Rejection
companies are often eager to re-interview previously rejected candidate. Some companies will even reach out to old candidatesor expedite their application because of their prior performance
see this as a setback but not a life sentence. Thank your recruiter for his time, explain that you’re disappointed but that you understand their position, and askwhen you can reapply to the company.
Finding out why you were rejected is incredibly difficult. Recruiters are unlikely to reveal the reason, though you might have slightly better luck if you instead ask where you should focus your preparation.
Evaluating the Offer
You got an offer! And—if you’re lucky—you may have even gotten multipleoffers.Yourrecruiter’sjob isnowtodoeverythinghecantoencourageyou to accept it.
The Financial Package
- Signing Bonus, Relocation, and Other One Time Perk. amortize this cash over three years
- Cost of living difference.
- Annual Bonus: Your recruiter might reveal the averageannual bonus, but if not, check with friends at the company.
- Stock option and Grants. Like signing bonuses, stock compensation between compa- nies can be compared by amortizing it over three years and then lumping that value into salary.
Career Development
- How good does the company’s name look on my resume?
- How much will I learn? Will I learn relevant things?
- What is the promotion plan? How do the careers of developers progress?
- If I want to move into management, does this company offer a realistic plan?
- Is the company or team growing?
- If I do want to leave the company, is it situated near other companies I’m interested in, or will I need to move?
Company Stability
Not focus too much on the stability of a company. The question for you to answer is: what will happen if you get laid off? Do you feel reasonablycomfortable in your ability to find a new job?
Happiness Factor
- The Product: Many people look heavily at what product they are building, and of course this matters a bit. However, for most engineers, there are more important factor, such as who you work with.
- Manager and Teammates: When people say that they love, or hate, their job, it’s often because of their teammates and their manager. Have you met them? Did you enjoy talking with them?
- Company Culture: Culture is tied to everything from how decisions get made, to the social atmosphere, to how the company is organized. Ask your future teammates how they would describe the culture.
- Hours: Ask future teammates about how long they typically work, and figure out if that meshes with your lifestyle. Remember, though, that hours before major deadlines are typically much longer.
- if you are given the opportunity to switch teams easily
Negotiation
Do yourself a favor. Negotiate. Here are some tips to get you started.
- Just Do It. Yes, I know it’s scary; (almost) no one likes negotiating. But it’s so, so worth it. Recruiters will not revoke an offer because you negotiated, so you have nothing to lose.
- Have a Viable Alternative. Fundamentally, recruiters negotiate with you because they’re concerned you may not join the company otherwise. If you have alternative options, that will make their concern that you’ll decline their offer much more real.
- Have a Specific “Ask”: It’s much more effective to ask for an additional $7000 in salary than to just ask for “more.” After all, if you just ask for more, the recruiter could throw in another $1000 and technically have satisfied your wishes.
- Overshoot: In negotiations, people usually don’t agree to whatever you demand. It’s a back and forth conversation. Ask for a bit more than you’re really hoping to get, since the company will probably meet you in the middle.
- Think Beyond Salary: Companies are often more willing to negotiate on non-salary components. Consider asking for more equity or a bigger signing bonus. Alternatively, you may be able to ask for your relocation benefits in cash, instead of having the company pay directly for the moving fees. This is a great avenue for many college students, whose actual moving expenses are fairly cheap.
- Use Your Best Medium: Many people will advise you to only negotiate over the phone. To a certain extent, they’re right; it is better to negotiate over the phone. However, if you don’t feel comfortable on a phone negotiation, do it via email. It’s more important that you attempt to negotiate than that you do it via a specific medium.
Additionally, a big company often have “levels”for employees, where all employees at a particular level are paid around the same amount. You can negotiate within the salary range for your level, but going beyond that requires bumping up a level. If you’re looking for a big bump, you’ll need to convince the recruiter and your future team that your experience matches this higher level – a difficult, but feasible, thing to do.
On the job
Interview and offer is just a start, keep thinking about your career path during you are working.
Set a timeline
When you’re enjoying your job, it’s very easy to get wrapped up in it and not realize that your career is not advancing. This is why you should outline your career path before starting a new job. Where do you want to be in ten years? And what are the steps neces- sary to get there? In addition, each year, think about what the next year of experience will bring you and how your career or your skill set advanced in the last year.
By outlining your path in advance and checking in on it regularly, you can avoid falling into this complacencytrap.
Build Strong Relationships
At work, establish strong relationships with your manager and teammates. When employees leave, keep in touch with them. Just a friendly note a few weeks after their departure will help to bridge that connection from a work acquaintanceto apersonal acquaintance.
This same approach applies to your personal life. Your friends, and your friends of friends, are valuable connections. Be open to helping others, and they’ll be more likely to help you.
Ask for what you want
While some managers may really try to grow your career,others will take a more hands- off approach. It’s up to you to pursue the challenges that are right for your career. So be (reasonably) frank about your goals with your manager.
8 Interview Questions
Data Structures
##Concepts and Algorithms
Bit Manipulation
Brain Teaser
Math and Prob
Object Oriented Design
Recursion and DP
Scalability and Memory limits
Despite intimidating, scalability questions are among the easiest.
- Interviewers rarely try to test knowledge of anything but basic CS concepts. Instead, they are evaluating your ability to break down a tricky problem and to solve problems using what you do know.
The step by step approach
- The following works well for many system design problems:
- Step 1 make believe: how to solve on single machine
- Step 2 Get Real: start to consider what problems will occur.
- how to logically divide the data up
- how to identify where to look up a piece of data
- Step 3 Solve Problems
- remove the issue entirely or mitigate the issue
- follow the approach in Step 1 or fundamentally alter the approach
- Note that iterative approach is typically useful. What new problems arise after you solve current problems.
- The idea is to demonstrate that you can analyze and solve problems. Poking holes in your own solution is a fantastic way to demonstrate this.
