What to Expect from Coding/Technical Interviews:
Assessment of interview performance:
[Interviewers assess you relative to other candidates on that same question by the same interviewer]
1) Analytical Skills
- Did you need help solving the problem
- How optimal was your solution/How long did it take to solve it
- Did you structure the problem well and that you thought of different tradeoffs of solutions?
2) Coding Skills
- Did you translate your algorithm to reasonable code?
- Clean and well organized
- Good style
3) Technical knowledge/Computer Science Fundamentals
- Strong foundation in computer science/relevant technologies
4) Experience
- Good technical decisions in the past
- Build interesting challenging projects
5) Culture Fit/ Communication Skills
- Personality/values fit from the company and team
- Did you communicate well with the interviewer
Prepare for False Negatives: Companies are ok with rejecting good candidates as they don't want people who do well in interviews but are not very good at the actual coding/job.
Problem Solving Skills, basic data structure/algorithm knowledges are VERY useful!
** Note, even 'screening' initial interviews can involve coding/algorithm questions, so ask your recruiter what position your interviewer holds! If the interviewer is an engineer, he/she will usually perform a technical interview **
After the technical interviews, follow up with the recruiter if there is no decision after a week.
*** Microsoft Interview *** Typical Interview is: Show up in the morning and fill out paperwork -Get asked questions (basic technical questions) by the recruiter as he/she may want to ease you in. -Be friendly with your recruiter as he/she may or may not push you for a re-interview if you need it. -During the day, you'll do 4 - 5 interviews with two different teams. -If you talk with the hiring manager afterwards(app), then most likely you passed the technical interview.
Definitely prepare: "why do you want to work for microsoft?"
Possible Answer: "I've been using Microsoft software as long as I can remember, and I'm really impressed at how Microsoft manages to create a product that is universally excellent!:
*** Amazon Interview *** Typical Interview is: Phone screen where the candidate interviews with a specific team. - Most likely two or more interviews, which means either the interviewer wasn't convinced or the candidates are being considered for a different team. - Engineer who interviews will asjk simple code via shared document editor. - Fly to Seattle and go through 4 or 5 interviews with one to two teams based on resume and phone interview. Code on a whiteboard and interviewers will stress other skills. -Then meet with 'Bar raiser" interviewer who ask significantly more difficult questions to raise the bar. Must impress both the bar-raiser AND the hiring manager. -Tend to be delays in responses.
Definitely Prepare: Amazon cares a lot about scale. Prepare for scalability questions.
Amazon asks a lot about object-oriented design.
*** Google Interview *** Typical Interview is: Google engineer performs first phone screen (so expect technical questions) via coding/shared document
-On site interview: 4 to 6 people, one with a lunch interviewer.
- Interviewer feedback is kept confidential from other interviewers.
- Lunch interviwer does not submit feedback, so can ask honest questions.
- Graded from a scale of 1.0 to 4.0 from the 4 categories.
- To be hired, wants at least one interviewer who is an 'enthusiastic endorser'.
[Scores of 3.6, 3.1, 3.1, 2.6 is better than a score of all 3.1s]
-Offer is measured from the scores you got, and decision can take up to several weeks.
Definitely Prepare: Scalable systems, strong focus on analytical skills.
*** Apple Interview *** Typical Interview is : Recruiter phone screen to get a basic sense of your skills, then a series of technical phone screens with team members. -Then an on site interview with 6 - 8 interviews with members of the team. -Mix of one on one or two on one interviews, expect to code on a whiteboard. - Lunch interview with a manager, wants to measure other aspects beyond coding. - If interviewed at the end of the day, then it is with the director and VP of the organzation and good measure that you have made it.
Definitely Prepare: be knowledgeable about the product that you wish to be a part of. What you like, what you would improve, etc.
*** Facebook Interview *** Typical interview is: Candidates do one or two phone screens which involve technical quesitons with shared document coding.
- Homework assignment with a mix of coding and algorithms, and be careful of your coding style.
- On site interview with primarily other software engineers, but hiring managers may be involved whenever they are available.
-Each interviewer is given a role on the on site interviews.
-Measure: Behavioral[Jedi], Coding and Algorithm[Ninja], and Design/Architecture[Pirate].
Typically expect two ninjas and one jedi interview.
-After the interviewes, written feedback is submitted, then the intervieweing team and a hiring manager make final decision.
Definitely Prepare: Want developers with entrepreneurial spirit, show that you love to build stuff fast. C++, Python, Erland, and other languages are more important backend.
*** Front End Developer Interviews *** https://medium.freecodecamp.org/cracking-the-front-end-interview-9a34cd46237 https://www.hongkiat.com/blog/html-5-semantics/
https://www.sitepoint.com/understanding-css-grid-systems/ https://css-tricks.com/almanac/properties/a/animation/ https://css-tricks.com/css-sprites/ https://medium.com/@fat/mediums-css-is-actually-pretty-fucking-good-b8e2a6c78b06
https://trello.com/c/6ROaCxCW/71-can-you-name-two-programming-paradigms-important-for-javascript-app-developers https://scotch.io/tutorials/javascript-promises-for-dummies
*** What is Object-oriented programming? ***
https://medium.freecodecamp.org/object-oriented-programming-concepts-21bb035f7260
The four principles of object-oriented programming are encapsulation, abstraction, inheritance, and polymorphism
- Encapsulation
- When each object keeps its state private inside a class.
- Other objects don't have access to this state, can only call public functions (methods)
- The object manages its own state via methods with no other class allowed to touch it unless given explicit consent.
- Abstraction
- natural extension of encapsulation.
- Each object should only epxose a high-level mechanism for using it.
- Mechanism should hide internal implementation details and should reveal only operations relevant for the other objects.
- e.g. imagine a coffee machine where you push one button and everything works!
- Inheritrance
- Done to reuse the common logic and extract unique logic into a separate class.
- Creating a child class by deriving from another parent class. (Via forming of hierarchies)
- Child class reuses all fields and methods of the parent class and can implement its own.
- Polymorphism
- Gives a way to use a class exactly like its parent so that there's no confusion with mixing types.
- Define a parent interface then each child class can implement its own version of the methods.
- When a collection/method expects an instance of the parent, the language will take care of evaluating the right implementation of the method.