Skip to content

Instantly share code, notes, and snippets.

View GreggSetzer's full-sized avatar

Gregg GreggSetzer

  • USA
View GitHub Profile
@GreggSetzer
GreggSetzer / vowel.js
Last active October 18, 2022 16:28
JavaScript Interview Question: Find all Vowels in a string
/*
Create a function to return the total number of vowels in a string.
Use String.prototype.match() to find matches
using a regular expression.
/[aeiou]/gi
// denotes a regex pattern.
[] instructs match() to find any of these characters.
@GreggSetzer
GreggSetzer / spiral-matrix.js
Last active July 7, 2018 18:10
Javascript Interview Question: Spiral Matrix
/*
Draw a spiral matrix.
[ 1, 2, 3, 4]
[12, 13, 14, 5]
[11, 16, 15, 6]
[10, 9, 8, 7]
1. Initialize the multidimensional array.
2. Create counter variables to track positions.
@GreggSetzer
GreggSetzer / constructor-pattern.js
Last active March 2, 2018 01:00
Javascript Interview Question: Constructor Pattern
/*
1. Use the constructor pattern for object creation using the new keyword.
2. Each instance of the object will have its own reference to this.
3. Link functions to the object using the prototype. This provides a
performance gain because functions aren't copied into each
instance of the object. They are linked to the prototype.
It's better to have one copy of functions around, not multiple copies.
Now, if we can use ES 2015 syntax:
1. Use the class keyword.
@GreggSetzer
GreggSetzer / revealing-module-pattern.js
Created March 2, 2018 17:19
Javascript Interview Question: Revealing Module Pattern
/*
Use the module pattern to group together similar methods such as database services.
In the example below, the ItemDao (Data Access Object) simulates several functions
that interact with a database.
1. Use modules to encapsulate related functionality.
2. A module pattern at its core is an object literal.
3. When using the module in code, call the functions using the key/value syntax.
For example: itemDao.findOne(1);
4. Wrap the object into a function to create a closure for private variables. Examples
@GreggSetzer
GreggSetzer / refactoring-for-loops-example-2.js
Last active June 20, 2018 15:22
Simplifying JavaScript code using Functional Programming
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* Given an array of orders, find the top 3 customers with the
* highest lifetime value (those that spent the most over time).
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
// * * * * * * * * * * * * * * * * * * * * * * * * * * *
// Start with the initial implementation.
//
// One approach to solving this task would be to create
@GreggSetzer
GreggSetzer / fibonacci.js
Created June 22, 2018 14:40
JavaScript Interview Question: Fibonacci
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* Write a program to find a fibonacci number.
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
// * * * * * * * * * * * * * * * * * * * * * * * * * * *
// Iterative solution
// O(n) Linear Runtime Complexity
// This is an alternative approach to solving fibonacci
// without recursion. However, this shoudn't be the
// final answer in an interview setting.
@GreggSetzer
GreggSetzer / queue.js
Last active June 22, 2018 15:45
JavaScript Interview Question: Queue
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* Solve some arbitrary problem using a queue.
* The interviewer has asked to provide a solution to a problem
* using a Queue as the data structure. Using the native Array
* in JavaScript with restricted access to its full list of methods
* is one possible solution.
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
//Queues implement the FIFO method. First in, first out.
class Queue {
@GreggSetzer
GreggSetzer / queue-stack.js
Created June 22, 2018 19:01
JavaScript Interview Question: Create a Queue using Stacks
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* Create a Queue implementation using two stacks. Do not use an
* array inside the Queue class. Queue should implement add() and
* remove().
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
class Stack {
constructor() {
this.data = [];
}
@GreggSetzer
GreggSetzer / linked-list.js
Last active July 27, 2018 13:42
JavaScript Interview Question: Linked List
/*
Linked List example.
*/
/**
* Node class
* Contains two properties and no methods.
* data - The data to be stored in a single node.
* next - The reference to the next node in the chain.
*/
@GreggSetzer
GreggSetzer / equality.js
Created July 16, 2018 15:39
JavaScript Interview Questions: Equality
/*
Write a function that determines whether two integers are equal without using any comparison operators.
Use the bitwise XOR operator.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Bitwise_Operators#Bitwise_XOR
Using XOR, if any of the bits are different, a 1 is returned, otherwise, a 0 is returned.
*/
function isEqual(n1, n2) {
return (n1 ^ n2) === 0;