Skip to content

Latest commit

 

History

History
135 lines (96 loc) · 8.31 KB

Interviews.md

File metadata and controls

135 lines (96 loc) · 8.31 KB

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

  1. 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.
  1. 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!
  1. 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.
  1. 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.