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.
- 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 theclass
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
- 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
andgit fetch
? - What is the difference between
merge
andrebase
? - What is
cherry-picking
?
- What continuous integration tool do you use and why?
- 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.
- 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
andvoid
?
- 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
andconcatMap
?
- 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?
- 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
andangular-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.
- 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?
- 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?
- 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?
- When do you use template driven vs model driven forms? Why?
- How do you submit a form?
- What's the difference between
NgForm
,FormGroup
, andFormControl
? How do they work together? - What's the difference between
dirty
,touched
, andpristine
on a form element? - How can you access validation errors in the template to display error messages?
- 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()
andforChild()
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
andLoggerService
)? - What is the purpose of exports in a
NgModule
? - Why is it bad if
SharedModule
provides a service to a lazy loaded module?
- 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?
- What is a structural directive?
- How do you identify a structural directive in html?
- 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
?
- How would you select a custom component to style it.
- What pseudo-class selector targets styles in the element that hosts the component?
- 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()
andconstructor()
of a component?
- 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?
- What is the difference between
RouterModule.forRoot()
vsRouterModule.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?
- How do you mock a service to inject in a unit test?
- What is the purpose of
TestBed
?
- 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?
- Describe a personal project you did (or last thing you did that you're proud of)
- What is the difference between QA and Testing
- 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?
- 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?