diff --git a/src/questions/javascript-questions.md b/src/questions/javascript-questions.md index 51a7028..618c072 100644 --- a/src/questions/javascript-questions.md +++ b/src/questions/javascript-questions.md @@ -4,51 +4,33 @@ layout: layouts/page.njk permalink: /questions/javascript-questions/index.html --- -* Explain event delegation -* Explain how `this` works in JavaScript -* Explain how prototypal inheritance works -* What do you think of AMD vs CommonJS? -* Explain why the following doesn't work as an IIFE: `function foo(){ }();`. - * What needs to be changed to properly make it an IIFE? +* Explain event delegation. +* Explain how `this` works in JavaScript. + * Can you give an example of one of the ways that working with `this` has changed in ES6? +* Explain how prototypal inheritance works. * What's the difference between a variable that is: `null`, `undefined` or undeclared? * How would you go about checking for any of these states? * What is a closure, and how/why would you use one? +* What language constructions do you use for iterating over object properties and array items? * Can you describe the main difference between a `forEach` loop and a `.map()` loop and why you would pick one versus the other? * What's a typical use case for anonymous functions? -* How do you organize your code? (module pattern, classical inheritance?) * What's the difference between host objects and native objects? -* Difference between: `function Person(){}`, `var person = Person()`, and `var person = new Person()`? -* What's the difference between `.call` and `.apply`? +* Explain the difference between: `function Person(){}`, `var person = Person()`, and `var person = new Person()`? +* Explain the differences on the usage of `foo` between `function foo() {}` and `var foo = function() {}` +* Can you explain what `.call` and `.apply` do? What's the notable difference between the two? * Explain `Function.prototype.bind`. * What's the difference between feature detection, feature inference, and using the UA string? -* Explain Ajax in as much detail as possible. -* What are the advantages and disadvantages of using Ajax? -* Explain how JSONP works (and how it's not really Ajax). -* Have you ever used JavaScript templating? - * If so, what libraries have you used? * Explain "hoisting". * Describe event bubbling. * Describe event capturing. * What's the difference between an "attribute" and a "property"? -* Why is extending built-in JavaScript objects not a good idea? -* Difference between window load event and document DOMContentLoaded event? +* What are the pros and cons of extending built-in JavaScript objects? * What is the difference between `==` and `===`? * Explain the same-origin policy with regards to JavaScript. -* Make this work: -```javascript -duplicate([1,2,3,4,5]); // [1,2,3,4,5,1,2,3,4,5] -``` * Why is it called a Ternary operator, what does the word "Ternary" indicate? -* What is `"use strict";`? what are the advantages and disadvantages to using it? -* Create a for loop that iterates up to `100` while outputting **"fizz"** at multiples of `3`, **"buzz"** at multiples of `5` and **"fizzbuzz"** at multiples of `3` and `5` -* Why is it, in general, a good idea to leave the global scope of a website as-is and never touch it? -* Why would you use something like the `load` event? Does this event have disadvantages? Do you know any alternatives, and why would you use those? -* Explain what a single page app is and how to make one SEO-friendly. -* What is the extent of your experience with Promises and/or their polyfills? -* What are the pros and cons of using Promises instead of callbacks? +* What is strict mode? What are some of the advantages/disadvantages of using it? * What are some of the advantages/disadvantages of writing JavaScript code in a language that compiles to JavaScript? * What tools and techniques do you use debugging JavaScript code? -* What language constructions do you use for iterating over object properties and array items? * Explain the difference between mutable and immutable objects. * What is an example of an immutable object in JavaScript? * What are the pros and cons of immutability? @@ -56,15 +38,21 @@ duplicate([1,2,3,4,5]); // [1,2,3,4,5,1,2,3,4,5] * Explain the difference between synchronous and asynchronous functions. * What is event loop? * What is the difference between call stack and task queue? -* Explain the differences on the usage of `foo` between `function foo() {}` and `var foo = function() {}` * What are the differences between variables created using `let`, `var` or `const`? * What are the differences between ES6 class and ES5 function constructors? * Can you offer a use case for the new arrow `=>` function syntax? How does this new syntax differ from other functions? * What advantage is there for using the arrow syntax for a method in a constructor? * What is the definition of a higher-order function? * Can you give an example for destructuring an object or an array? -* ES6 Template Literals offer a lot of flexibility in generating strings, can you give an example? +* Can you give an example of generating a string with ES6 Template Literals? * Can you give an example of a curry function and why this syntax offers an advantage? * What are the benefits of using `spread syntax` and how is it different from `rest syntax`? * How can you share code between files? * Why you might want to create static class members? + +## Coding questions +* Make this work: +```javascript +duplicate([1,2,3,4,5]); // [1,2,3,4,5,1,2,3,4,5] +``` +* Create a for loop that iterates up to `100` while outputting **"fizz"** at multiples of `3`, **"buzz"** at multiples of `5` and **"fizzbuzz"** at multiples of `3` and `5`