Squash commit

This commit is contained in:
Tay Yang Shun
2017-09-20 15:27:28 +08:00
commit 2182a70770
70 changed files with 5486 additions and 0 deletions

156
non-technical/behavioral.md Normal file
View File

@@ -0,0 +1,156 @@
Behavioral
==
Learn the [STAR](https://en.wikipedia.org/wiki/Situation,_task,_action,_result) format. From Wikipedia:
- **Situation** - The interviewer wants you to present a recent challenge and situation in which you found yourself.
- **Task** - What were you required to achieve? The interviewer will be looking to see what you were trying to achieve from the situation. Some performance development methods[1] use “Target” rather than “Task”. Job interview candidates who describe a “Target” they set themselves instead of an externally imposed “Task” emphasize their own intrinsic motivation to perform and to develop their performance.
- **Action** - What did you do? The interviewer will be looking for information on what you did, why you did it and what the alternatives were.
- **Results** - What was the outcome of your actions? What did you achieve through your actions and did you meet your objectives? What did you learn from this experience and have you used this learning since?
## General
- Why do you want to work for X company?
- Why do you want to leave your current/last company?
- Tell me about a time where you had a conflict with a co-worker.
- Tell me about a time in which you had a conflict and needed to influence somebody else.
- What project are you currently working on?
- What is the most challenging aspect of your current project?
- What was the most difficult bug that you fixed in the past 6 months?
- How do you tackle challenges? Name a difficult challenge you faced while working on a project, how you overcame it, and what you learned.
- What are you excited about?
Imagine it is your first day here at the company. What do you want to work on? What features would you improve on?
What are the most interesting projects you have worked on and how might they be relevant to the this company's environment?
- Tell me about a time you had a disagreement with your manager.
- Talk about a project you are most passionate about, or one where you did your best work.
- What does your best day of work look like?
## Airbnb
Source: [Glassdoor](https://www.glassdoor.com/Interview/Airbnb-Interview-Questions-E391850.htm)
While loving to travel or appreciating Airbnb's growth may be good answers, try to demonstrate the deep connection you have with the product.
- What does it mean to be you belong anywhere?
- What large problems in the world would you solve today?
- Why do you like Airbnb?
- If you had an unlimited budget and you could buy one gift for one person, what would you buy and who would you buy it for?
- Share one of your trips with us.
- What is the most challenging project in or out of school that you have worked on in the last 6 months.
- What is the thing that you don't want from your last internship/job?
- Give me an example of when you've been a good host.
- One thing you would like to remove from the Airbnb experience.
- What is something new that you can teach your interviewer in a few minutes?
- Tell me about why you want to work here.
- What is the best gift you have ever given or received?
- Tell me about a time you were uncomfortable and how you dealt with it.
- Explain a project that you worked on recently.
- What do you think of Airbnb?
- Tell me something about yourself and why you'd be a good fit for the position.
- Name a situation where you were impressed by a company's customer service.
- How did you work with senior management on large projects as well as multiple internal teams?
- Tell me about a time you had to give someone terrible news.
- If you were a gerbil, which gerbil would you be?
- What excites you about the company?
- How does Airbnb impact our guests and hosts?
- What part of our mission resonates the most with you?
## Amazon
Source: [Glassdoor](https://www.glassdoor.com/Interview/Amazon-Interview-Questions-E6036.htm)
- How do you deal with a failed deadline?
- Why do you want to work for Amazon?
- Talked about a situation where you had a conflict with a teammate.
- In my professional experience have you worked on something without getting approval from your manager?
- Tell me a situation where you would have done something differently from what you actually did.
## Dropbox
Source: [Glassdoor](https://www.glassdoor.com/Interview/Dropbox-Interview-Questions-E415350.htm)
- Talk about your favorite project.
- If you were hired here what would you do?
- State an experience about how you solved a technical problem. Be specific about the diagnosis and process.
## Hired
Source: [Glassdoor](https://hired.com/blog/candidates/10-top-interview-questions-how-to-answer/)
- Tell me about yourself.
- What is your biggest strength and area of growth?
- Why are you interested in this opportunity?
- What are your salary expectations?
- Why are you looking to leave your current company?
- What is your biggest strength and area of growth?
- Tell me about a time your work responsibilities got a little overwhelming. What did you do?
- Give me an example of a time where you had a difference of opinion with a team member. How did you handle that?
- Tell me about a challenge you faced recently in your role. How did you tackle it? What was the outcome?
- Where do you want to be in five years?
- Tell me about a time you needed information from someone who wasnt responsive. What did you do?
## Lyft
Source: [Glassdoor](https://www.glassdoor.com/Interview/Lyft-Interview-Questions-E700614.htm)
- Tell me about your most interesting/challenging project to date.
- Why Lyft? What are you looking for in the next role?
## Palantir
Source: [Glassdoor](https://www.glassdoor.com/Interview/Palantir-Technologies-Interview-Questions-E236375.htm)
- How do you deal with difficult coworkers? Think about specific instances where you resolved conflicts.
- How did you win over the difficult employees?
- Tell me about an analytical problem that you have worked on in the past.
- What are your three strengths and three weaknesses?
- If you were in charge of picking projects for Palantir, what problem would you try to solve?
- **What is something 90% of people disagree with you about?**
- What are some of the best and worse things about your current company?
- **What is broken around you?**
- What would your manager say about you?
- Describe Palantir to your grandmother.
- Teach me something you've learned?
- Tell me a time when you predicted something?
- If your supervisors were to rate you on a scale of 1-10 what would they rate you?
- What was the most fun thing you did recently?
- Tell me the story of how you became who you are today and what made you apply to Palantir.
## Slack
Source: [Glassdoor](https://www.glassdoor.com/Interview/Slack-Interview-Questions-E950758.htm)
- Tell me something about your internship.
- Why do you want to join Slack?
- Tell me about your past projects.
- Explain me your toughest project and the working architecture.
- Apart from technical knowledge what did you learn during your internship?
- If someone has a different viewpoint to do a project like different programming language, how would handle this situation?
- What are your most interesting subjects and why?
- Did you find any bug in Slack?
- What is your favorite feature and why?
## Stack Overflow
Source: [Glassdoor](https://hired.com/blog/candidates/10-top-interview-questions-how-to-answer/)
- What have you built?
- What is the hardest technical problem you have run into?
- How did you solve it?
- Where do you see yourself in 5 years?
- Why do you want to work here?
- How do you handle disagreements with coworkers?
## Stripe
Source: [Glassdoor](https://www.glassdoor.com/Interview/Stripe-Interview-Questions-E671932.htm)
- How do you stay up to date with latest technologies?
- Explain a project that you worked on recently that was difficult.
- Where do you see yourself in five years?
## Twitter
Source: [Glassdoor](https://www.glassdoor.com/Interview/Twitter-Interview-Questions-E100569.htm)
- What would your previous boss say your biggest strength was?

View File

@@ -0,0 +1,8 @@
Cover Letter
==
- A short introduction describing who you are and what youre looking for.
- What projects have you enjoyed working on?
- Which have you disliked? What motivates you?
- Links to online profiles you use (GitHub, Twitter, etc).
- A description of your work history (whether as a resume, LinkedIn profile, or prose).

130
non-technical/format.md Normal file
View File

@@ -0,0 +1,130 @@
Interview Formats
==
The following interview formats are based on my experience interviewing with Bay Area companies. Formats would differ slightly depending on the roles you are applying to. Many companies like to use [CoderPad](https://coderpad.io/) for collaborative code editing. CoderPad supports running of the program, so you might be asked to fix your code such that it can be run. For front end interviews, many companies like to use [CodePen](https://codepen.io/), and it will be worth your time to familiarize yourself with the user interfaces of such web-based coding environments.
For on-site interviews at smaller (non-public) companies, most will allow (and prefer) that you use your own laptop. Hence it is important that you prepare your development environment in advance.
## Companies
- [Airbnb](#airbnb)
- [Asana](#asana)
- [Dropbox](#dropbox)
- [Facebook](#facebook)
- [Google](#google)
- [Lyft](#lyft)
- [Palantir](#palantir)
- [WhatsApp](#whatsapp)
### Airbnb
- Recruiter phone screen.
- Technical phone interview:
- 1 or 2 x Algorithm/front end on CoderPad/CodePen.
- On-site (General):
- 2 x Algorithm coding on CoderPad.
- 1 x System design/architecture.
- 1 x Past experience/project.
- 2 x Cross functional.
- On-site (Front End):
- 2 x Front end coding on CodePen. Use any framework/library.
- 1 x General coding on your own laptop.
- 1 x Past experience/project.
- 2 x Cross functional.
- Tips:
- All sessions involve coding on your own laptop. Prepare your development environment in advance.
- You are allowed to look up APIs if you need to.
- They seem to place high emphasis on compilable, runnable code in all their coding rounds.
- Cross functional interviews will involve getting Airbnb employees from any discipline to speak with you. These interviews are mostly non-technical but are extremely important to Airbnb because they place a high emphasis on cultural fit. Do look up the Airbnb section of the behavioural questions to know what sort of questions to expect.
### Asana
- Recruiter phone screen.
- Technical phone interview.
- On-site (Product Engineer):
- 3 x Algorithm and system design on whiteboard within the same session.
- 1 x Algorithm on laptop and system design. This session involves writing code on your own laptop to solve 3 well-defined algorithm problems in around 45 minutes after which an engineer will come in and review the code with you. You are not supposed to run the code while working on the problem.
- Tips:
- No front end questions were asked.
- Asana places high emphasis on System Design and makes heavy use of the whiteboard. You do not necessarily have to write code for the algorithm question of the first three interviews.
- All 4 sessions involve algorithms and system design. One of the sessions will be conducted by an Engineering Manager.
- The last session will involve coding on your own laptop. Prepare your development environment in advance.
- Regardless of Product Engineer or Engineering Generalist position, their interview format and questions are similar.
### Dropbox
- Recruiter phone screen.
- Technical phone interviews:
- 2 x Algorithm/front end on CoderPad/CodePen.
- On-site (Front End):
- 2 x Front end on CodePen. Only Vanilla JS or jQuery allowed.
- 1 x General coding on CoderPad.
- 1 x All around. Meet with an Engineering Manager and discussing past experiences and working style.
- Tips:
- You can code on your own laptop and look up APIs.
- Dropbox recruiters are very nice and will give you helpful information on what kind of questions to expect for the upcoming sessions.
- One of the front end sessions involve coding up a pixel-perfect version of a real page on www.dropbox.com. You'll be given a spec of the desired page and you'll be asked to create a working version during the interview.
### Facebook
- Recruiter phone screen.
- Technical phone interviews:
- 1 or 2 x Algorithm/front end on Skype/CoderPad.
- On-site (Front End):
- 2 x Technical coding interview on whiteboard (Ninja).
- 1 x Behavioural (Jedi). Meet with an Engineering Manager and discussing past experiences and working style.
- 1 x Design/architecture on whiteboard (Pirate).
- Tips:
- You are only allowed to use the whiteboard. No laptops involved.
- For the Jedi round, you may be asked a technical question at the end of it. Front end candidates will be given a small HTML/CSS problem nearing the end of the session.
- For the Ninja rounds, you may be asked one to two questions depending on how fast you progress through the question.
### Google
- Recruiter phone screen.
- Technical phone interview:
- 1 or 2 x algorithm on Google Doc.
- On-site (Front End):
- 3 x Front end on whiteboard. Have to use Vanilla JS (or at the most, jQuery).
- 2 x Algorithm on whiteboard.
- Tips:
- You are only allowed to use the whiteboard. No laptops involved.
- In rare cases, candidates may even be allowed to skip the phone interview round and advanced to on-site directly.
### Lyft
- Recruiter phone screen.
- Technical phone interview:
- 1 x Algorithm/Front end over JSFiddle.
- On-site (Front End):
- 4 x Front end on Coderpad/your own laptop. Use any language/framework.
- 1 x Behavioural. Meet with an Engineering Manager and go through candidate's resume.
- Tips:
- Can use whiteboard and/or laptop.
- For front end coding, I opted to use React and had to set up the projects on the spot using `create-react-app`.
### Palantir
- Recruiter phone screen.
- Technical phone interview:
- 1 x Algorithm over HackerRank CodePair and Skype.
- On-site (General):
- 2 x Algorithm on whiteboard.
- 1 x Decomposition (system design) on whiteboard.
- On-site (Front End):
- 1 x Front end on your own laptop. This session lasts about 1.5 hours. Use any library/framework.
- 1 x Decomposition (system design) on whiteboard.
- Tips:
- I opted to use React and had to set up projects on the spot using `create-react-app`.
- You may be asked to meet with Engineering Managers after the technical sessions and it's not necessarily a good/bad thing.
### WhatsApp
- Recruiter phone screen.
- Technical phone interview:
- 2 x Algorithm over CoderPad.
- On-site (Web Client Developer):
- 4 x Algorithm on whiteboard.
- Tips:
- No front end questions were asked.
- 1 of the interviewers is an Engineering Manager.

View File

@@ -0,0 +1,86 @@
Negotiation
==
### Ten Rules of Negotiation
Key points extracted from "Ten Rules for Negotiating a Job Offer" [Part 1](http://haseebq.com/my-ten-rules-for-negotiating-a-job-offer/) and [Part 2](https://haseebq.com/how-not-to-bomb-your-offer-negotiation/) by Haseeb Qureshi.
#### Get everything in writing
Note down EVERYTHING on your phone call with the recruiters as they may be helpful later on. Even if there are things that are not directly monetary, if they relate to the job, write them down. If they tell you "we're working on porting the front-end to Angular," write that down. If they say they have 20 employees, write that down. You want as much information as you can. You'll forget a lot of this stuff, and it's going to be important in informing your final decision.
#### Always keep the door open
Never give up your negotiating power until you're absolutely ready to make an informed, deliberate final decision. This means your job is to traverse as many of these decision points as possible without giving up the power to continue negotiating. Very frequently, your interlocutor will try to trick you into making a decision, or tie you to a decision you didn't commit to. You must keep verbally jiu-jitsu-ing out of these antics until you're actually ready to make your final decision.
#### Information is power
To protect your power in the negotiation, you must protect information as much as possible. A corollary of this rule is that you should not reveal to companies what you're currently making. So given this offer, don't ask for more money or equity or anything of the sort. Don't comment on any specific details of the offer except to clarify them. Companies will ask about your current compensation at different stages in the process—some before they ever interview you, some after they decide to make you an offer. But be mindful of this, and protect information.
> "Yeah, [COMPANY_NAME] sounds great! I really thought this was a good fit, and I'm glad that you guys agree. Right now I'm talking with a few other companies so I can't speak to the specific details of the offer until I'm done with the process and get closer to making a decision. But I'm sure we'll be able to find a package that we're both happy with, because I really would love to be a part of the team."
#### Always be positive
Even if the offer is bad, it's extremely important to remain positive and excited about the company. This is because your excitement is one of your most valuable assets in a negotiation.
Despite whatever is happening in the negotiation, give the company the impression that 1) you still like the company, and that 2) you're still excited to work there, even if the numbers or the money or the timing is not working out. Generally the most convincing thing to signal this is to reiterate you love the mission, the team, or the problem they're working on, and really want to see things work out.
#### Don't be the decision maker
Even if you don't particularly care what your friends/family/husband/mother thinks, by mentioning them, you're no longer the only person the recruiter needs to win over. There's no point in them trying to bully and intimidate you; the "true decision-maker" is beyond their reach. This is a classic technique in customer support and remediation. It's never the person on the phone's fault, they're just some poor schmuck doing their job. It's not their decision to make. This helps to defuse tension and give them more control of the situation.
> I'll look over some of these details and discuss it with my [FAMILY/CLOSE_FRIENDS/SIGNIFICANT_OTHER]. I'll reach out to you if I have any questions. Thanks so much for sharing the good news with me, and I'll be in touch!
It's much harder to pressure someone if they're not the final decision-maker. So take advantage of that.
#### Have alternatives
If you're already in the pipeline with other companies (which you should be if you're doing it right), you should proactively reach out and let them know that you've just received an offer. Try to build a sense of urgency. Regardless of whether you know the expiration date, all offers expire at some point, so take advantage of that.
> Hello [PERSON],
>
> I just wanted to update you on my own process. I've just received an offer from [COMPANY] which is quite strong. That said, I'm really excited about [YOUR AMAZING COMPANY] and really want to see if we can make it work. Since my timeline is now compressed, is there anything you can do to expedite the process?
Should you specifically mention the company that gave you an offer? Depends. If it's a well-known company or a competitor, then definitely mention it. If it's a no-name or unsexy company, you should just say you received an offer. If it's expiring soon, you should mention that as well.
Either way, send out a letter like this to every single company you're talking to. No matter how hopeless or pointless you think your application is, you want to send this signal to everyone who is considering you in the market.
Companies care that you've received other offers. They care because each company knows that their own process is noisy, and the processes of most other companies are also noisy. But a candidate having multiple offers means that they have multiple weak signals in their favor. Combined, these converge into a much stronger signal than any single interview. It's like knowing that a student has a strong SAT score, and GPA, and won various scholarships. Sure, it's still possible that they're a dunce, but it's much harder for that to be true.
This is not to say that companies respond proportionally to these signals, or that they don't overvalue credentials and brands. They do. But caring about whether you have other offers and valuing you accordingly is completely rational.
Tell other companies that you've received offers. Give them more signals so that they know you're a valued and compelling candidate. And understand why this changes their mind about whether to interview you.
Your goal should be to have as many offers overlapping at the same time as possible. This will maximize your window for negotiating.
Have a strong BATNA (Best Alternative To a Negotiated Agreement) and communicate it.
> I 've received another offer from [OTHER CORP] that's very compelling on salary, but I really love the mission of [YOUR COMPANY] and think that it would overall be a better fit for me.
> I'm also considering going back to grad school and getting a Master's degree in Postmodern Haberdashery. I'm excited about [YOUR COMPANY] though and would love to join the team, but the package has to make sense if I'm going to forego a life of ironic hatmaking.
#### Proclaim reasons for everything
It's kind of a brain-hack, both for yourself and for your negotiating partner. Just stating a reason (any reason) makes your request feel human and important. It's not you being greedy, it's you trying to fulfill your goals.
The more unobjectionable and sympathetic your reason, the better. If it's medical expenses, or paying off student loans, or taking care of family, you'll bring tears to their eyes.
Just go with it, state a reason for everything, and you'll find recruiters more willing to become your advocate.
#### Be motivated by more than just money
You should be motivated by money too of course, but it should be one among many dimensions you're optimizing for. How much training you get, what your first project will be, which team you join, or even who your mentor will be—these are all things you can and should negotiate.
Of course, to negotiate well you need to understand the other side's preferences. You want to make the deal better for both of you.
#### Understand what they value
Remember that you can always get salary raises as you continue to work at the company, but there's only one point at which you can get a signing bonus.
The easiest thing for a company to give though is stock (if the company offers stock). Companies like giving stock because it invests you in the company and aligns interests. It also shifts some of the risk from the company over to you and burns less cash.
#### Be winnable
This is more than just giving the company the impression that you like them (which you continually should). But more so that you must give any company you're talking to a clear path on how to win you. Don't bullshit them or play stupid games. Be clear and unequivocal with your preferences and timeline.
Don't waste their time or play games for your own purposes. Even if the company isn't your dream company, you must be able to imagine at least some package they could offer you that would make you sign. If not, politely turn them down.

View File

@@ -0,0 +1,27 @@
Psychological Tricks
==
Here are some psychological tricks that will help you ace a job interview.
- Tailor your answers to the interviewers age.
- Generation Y interviewers (between 20 and 30): Bring along visual samples of your work and highlight your ability to multitask.
- Generation X interviewers (between 30 and 50): Emphasize your creativity and mention how work/life balance contributes to your success.
- Baby Boomer interviewers (between 50 and 70): Show that you work hard and demonstrate respect for what they've achieved.
- Hold your palms open or steeple your hands.
- Find something in common with your interviewer.
- Mirror the interviewers body language.
- Compliment the interviewer and the organization without self-promoting.
- Specifically, the students who ingratiated themselves praised the organization and indicated their enthusiasm for working there, and complimented the interviewer. They didn't play up the value of positive events they took credit for or take credit for positive events even if they werent solely responsible.
- Show confidence and deference simultaneously.
- In a job interview, that means showing deference to your interviewer, while also demonstrating self-confidence. One way to do that is to say something like, "I love your work on [whatever area]. It reminds me of my work on [whatever area]."
- Emphasize how you took control of events in your previous jobs.
- To impress your interviewer, you should talk about past work experiences where you took initiative.
- Be candid about your weaknesses.
- It's wiser to say something genuine like, "I'm not always the best at staying organized," which sounds more honest, and could make your interviewer more inclined to recommend you for the position.
- Speak expressively.
- Showcase your potential.
- You might be tempted to tell your interviewer all about your past accomplishments — but research suggests you should focus more on what you could do in the future, if the organization hires you.
###### References
- [Business Insider](http://www.businessinsider.com/psychological-tricks-to-ace-job-interview-2015-11)

View File

@@ -0,0 +1,74 @@
Questions to Ask
==
Here are some good questions to ask at the end of the interview, extracted from various sources. The ones in **bold** are the ones that I like 😄.
## General
- How do your clients and customers define success?
- What would you change around here if you could?
- What are some weaknesses of the organization?
- What does a typical day look like for you?
- **What are you most proud about in your career so far?**
- What do you think the company can improve at?
- What is the most important/valuable thing you have learnt from working here?
- How would you see yourself growing at this company in the next few years?
- What do you wish you were told about the company before you joined?
## Culture
- What was your best moment so far at the company?
- What do you like most about working here?
- **What is the most frustrating part about working here?**
- **How will the work I will be doing contribute to the organization's mission?**
- How are you improving diversity?
- When you were last interviewing, what were some of your other options, and what made you choose this company?
- What is something you wish were different about your job?
- How often have you moved teams? What made you join the team youre on right now? If you wanted to move teams, what would need to happen?
- (If the company is a startup) When's the last time you interacted with a founder? What was it regarding? Generally how involved are the founders in the day-to-day?
- Does the company culture encourage entrepreneurship? Could you give me any specific examples?
- What was something you wish someone would have told you before you joined?
- What is unique about working at this company that you have not experienced elsewhere?
- What does the company do to nurture and train its employees?
## Technical
- How would you describe your engineering culture?
- **What are the engineering challenges that the company/team is facing?**
- How has your role changed since joining the company?
- What is your stack? What is the rationale for/story behind this specific stack?
- Do you tend to roll your own solutions more often or rely on third party tools? Whats the rationale in a specific case?
- **What has been the worst technical blunder that has happened in the recent past? How did you guys deal with it? What changes were implemented afterwards to make sure it didn't happen again?**
- **What is the most costly technical decision made early on that the company is living with now?**
- How does the engineering team balance resources between feature requests and engineering maintenance?
- **What is the most fulfilling/exciting/technically complex project that you've worked on here so far?**
- **How do you train/ramp up engineers who are new to the team?**
## Behavioral
- Was there a time where you messed up and how was it handled?
- How would you see yourself growing at this company in the next few years?
## HR
- What concerns/reservations do you have about me for this position?
- What can I help to clarify that would make hiring me an easy decision?
- **How do you see this position evolving in the next three years?**
- **Who is your ideal candidate and how can I make myself more like them?**
- How does the management team deal with mistakes?
- If you could hire anyone to join your team, who would that be and why?
## Attrition
- How long does the average engineer stay at the company?
- Why have the last few people left?
- Have you ever thought about leaving? If you were to leave, where would you go?
#### References
- [Business Insider](http://www.businessinsider.sg/impressive-job-interview-questions-2015-3/)
- [Lifehacker](http://lifehacker.com/ask-this-question-to-end-your-job-interview-on-a-good-n-1787624433)
- [Fastcompany](https://www.fastcompany.com/40406730/7-questions-recruiters-at-amazon-spotify-and-more-want-you-to-ask)
- [Questions I'm asking in interviews](http://jvns.ca/blog/2013/12/30/questions-im-asking-in-interviews/)
- [How to interview your interviewers](http://blog.alinelerner.com/how-to-interview-your-interviewers/)
- [How to Break Into the Tech Industry—a Guide to Job Hunting and Tech Interviews](https://haseebq.com/how-to-break-into-tech-job-hunting-and-interviews/)

View File

@@ -0,0 +1,10 @@
Self Introduction
==
You can rephrase the question like this:
"Tell me about your journey into tech. How did you get interested in coding, and why was web development a good fit for you? How is that applicable to our _____ role or company goals?"
###### References
- [8 Secrets to Software Engineer Self Introduction](http://blog.gainlo.co/index.php/2016/10/14/8-secretes-software-engineer-self-introduction)