Skip to content

Instantly share code, notes, and snippets.

@bcabanes
Created May 7, 2019 22:12
Show Gist options
  • Save bcabanes/6b9cef4f71bd57eb610d4b5509b3b371 to your computer and use it in GitHub Desktop.
Save bcabanes/6b9cef4f71bd57eb610d4b5509b3b371 to your computer and use it in GitHub Desktop.
Interview questions Angular

Frontend interview questions

First, you should ask for his/her Github username and check public repositories.

Note: Keep in mind that many of these questions are open-ended and could lead to interesting discussions that tell you more about the person's capabilities than a straight answer would.

General

  • What Javascript Frameworks do you know? Which one do you like? Why?
  • What is the atomic design?

Coined by Brad Frost, Atomic Design is a methodology that involves breaking a website layout down into its basic components, which are then reused throughout the site. You have Atoms => Molecules => Organisms => Templates => Pages.

  • Can you name two programming paradigms important for JavaScript app developers?

JavaScript is a multi-paradigm language, supporting imperative/procedural programming along with OOP (Object-Oriented Programming) and functional programming. JavaScript supports OOP with prototypal inheritance.

Prototypal inheritance (also: prototypes, OLOO), Functional programming (also: closures, first class functions, lambdas).

  • What is functional programming?

Pure functions / function purity, Avoid side-effects, Simple function composition Mention of features that support FP: first-class functions, higher order functions, functions as arguments/values.

  • What is the difference between classical inheritance and prototypal inheritance?

Class Inheritance: instances inherit from classes (like a blueprint — a description of the class), and create sub-class relationships: hierarchical class taxonomies. Instances are typically instantiated via constructor functions with the new keyword. Class inheritance may or may not use the class keyword from ES6.

Prototypal Inheritance: instances inherit directly from other objects. Instances are typically instantiated via factory functions or Object.create(). Instances may be composed from many different objects, allowing for easy selective inheritance.

  • Can you name some software design pattern and when do you need them?

Constructor, Module, Singleton, Observer, Factory, Facade, Decorator...

  • What is a regex and can you give one example?

A regular expression is a special text string for describing a search pattern.

  • What is the difference between unit testing and integration testing?

Integration testing is a type of testing to check if different pieces of the modules are working together. Unit testing checks a single component of an application.

  • What is continuous integration?

Continuous Integration (CI) is the process of automating the build and testing of code every time a team member commits changes to version control.

  • What is a race condition?

A race condition is an undesirable situation that occurs when a system attempts to perform two or more operations at the same time, but the operations must be done in the proper sequence to be done correctly.

  • How do you organize your code?

module pattern, component folder, angular style guide

Source control

  • Can you name some source control system (at least 2)?

Git, SVN, Mercucial, Apache Subversion, Tortoise

  • How do you find the current branch of the working directory?

git branch

  • What is the difference between git pull and git fetch?
  • What is the difference between merge and rebase?
  • What is cherry-picking?

Build system

  • What continuous integration tool do you use and why?

Javascript

  • Can you name some ESNext features (ES6 / ES7 / ES8)?
  • What is a closure?
  • What is variable hoisting?
  • Explain the difference between var, let and const key words.
  • What is the javascript event loop?
  • Explain Object.assign and possible use cases.
  • Explain Object.freeze and possible use cases.

TypeScript

  • Why do you need type definitions?
  • How would you define a custom type?
  • What is the difference between an Interface and a Class?
  • What are Discriminated union types?
  • What is the difference between never and void?

Observables/RxJS

  • What is RxJS?
  • What is an observable?
  • What is the difference between an Observable and a Promise?
  • What is the difference between an Observable and a Subject?
  • What is the difference between an observable and a BehaviourSubject?
  • What are some of the angular apis that are using Observables?
  • What is the difference between cold and hot observable?
  • How would you implement a multiple api calls that needs to happen in order using rxjs?
  • If you need to respond to two different Observable/Subject with one callback function, how would you do it?(ex: if you need to change the url through route parameters and with prev/next buttons).
  • What is the difference between switchMap, mergeMap and concatMap?

Angular

  • What did you learn about Angular yesterday/this week?
  • What are some of the reasons you would choose to use Angular in your project?
  • What did you like about working with Angular?
  • How do you keep your Angular code more readable and maintainable?

Architecture

  • What is the Redux pattern?
  • What do you know about flux, redux patterns.
  • What is ngrx?

Reactive libraries for Angular, composed of store, effects, router-store, store-devtools, entity. Moslty brings the Redux pattern to Angular the Reactive way.

  • What is a good use case for ngrx/store?

Multiple states shown differently on a screen.

  • What is the difference between ngrx and angular-redux?

Add the Redux pattern optimized with the Reactive pattern for Angular.

  • Do you know other project of ngrx?

@ngrx/store, @ngrx/effects, @ngrx/router-store, @ngrx/store-devtools, @ngrx/entity, @ngrx/db.

API

  • Why would you use renderer methods instead of using native element methods?

Your platform could change and so your native code will not work in the new context (browser / native mobile).

  • How would you protect a component being activated through the router?

Template Syntax

  • How can you add an active class to a selected element in a list component?
  • What is a template variable. How would you use it?

Component

  • What is the minimum definition of a component?
  • What is the difference between a component and a directive?
  • How do components communicate with each other?
  • How do you create two way data binding in Angular?
  • How would you create a component to display error messages throughout your application?
  • What does a lean component mean to you?

Forms

  • When do you use template driven vs model driven forms? Why?
  • How do you submit a form?
  • What's the difference between NgForm, FormGroup, and FormControl? How do they work together?
  • What's the difference between dirty, touched, and pristine on a form element?
  • How can you access validation errors in the template to display error messages?

NgModules

  • What is the purpose of NgModule?
  • How do you decide to create a new NgModule?
  • What are the attributes that you can define in an NgModule annotation?
  • What is the difference between a module's forRoot() and forChild() methods and why do you need it?
  • What would you have in a shared module?
  • What would you not put shared module?
  • What module would you put a singleton service whose instance will be shared throughout the application (e.g. ExceptionService and LoggerService)?
  • What is the purpose of exports in a NgModule?
  • Why is it bad if SharedModule provides a service to a lazy loaded module?

Services

  • What is the use case of services?
  • How are the services injected to your application?
  • How do you unit test a service with a dependency?

Structural Directives

  • What is a structural directive?
  • How do you identify a structural directive in html?

Style Guide

  • Is it important to have a style guide? Why/not?
  • What are some of the Angular Style Guide suggestions you follow on your code? Why?
  • Is it a good practice to prefix your component's custom event handler with on?

Styling

  • How would you select a custom component to style it.
  • What pseudo-class selector targets styles in the element that hosts the component?

Lifecycle hooks

  • When will ngOnInit be called?
  • How would you make use of ngOnInit()?
  • What would you consider a thing you should be careful doing on ngOnInit()?
  • What is the difference between ngOnInit() and constructor() of a component?

Pipes

  • What is a pure pipe?
  • What is an async pipe?
  • What kind of data can be used with async pipe?
  • How does async pipe prevents memory leeks?

Router

  • What is the difference between RouterModule.forRoot() vs RouterModule.forChild()? Why is it important?
  • How does loadChildren property work?
  • Do you need a Routing Module? Why/not?
  • When does a lazy loaded module is loaded?
  • How do you debug router?

Testing

  • How do you mock a service to inject in a unit test?
  • What is the purpose of TestBed?

Style

  • What is a pseudo selector?
  • What are CSS media queries and what are they used for
  • What is a CSS preprocessor and name some.
  • Can you name some methodologies or patterns for structuring/organizing your CSS? Which one do you use? Why?

Other

  • Describe a personal project you did (or last thing you did that you're proud of)
  • What is the difference between QA and Testing

Fun

  • Name a technology blog/websites people that you follow?
  • Who inspires you in the angular community?
  • Name one book you would recommend to a new junior programmer
  • What are some things you like about the developer tools you use?
  • What is your IDE why?

Personality

  • Why did you left the other companies?
  • What is the thing (action/behaviour/management) that will make you quit?
  • What level do you think you have? Junior/Senior? Why?
  • What does your typical day look like?
  • What are you searching for in the job?
  • What is your expectations of the job?
  • What team organization are you comfortable with?
  • What is your ideal number of teammates?
  • What can you bring to the team?
  • How do you see you growing into the team?
  • Did you do pair programming?
  • Are you comfortable to mentoring someone else?
  • What will be your ideal development job?

Links

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment