Skip to content
Snippets Groups Projects
Commit b9627f58 authored by Andrej Rasevic's avatar Andrej Rasevic
Browse files

adding Final Exam

parent 00ad6909
No related branches found
No related tags found
No related merge requests found
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 841.9 595.3"><g fill="#61DAFB"><path d="M666.3 296.5c0-32.5-40.7-63.3-103.1-82.4 14.4-63.6 8-114.2-20.2-130.4-6.5-3.8-14.1-5.6-22.4-5.6v22.3c4.6 0 8.3.9 11.4 2.6 13.6 7.8 19.5 37.5 14.9 75.7-1.1 9.4-2.9 19.3-5.1 29.4-19.6-4.8-41-8.5-63.5-10.9-13.5-18.5-27.5-35.3-41.6-50 32.6-30.3 63.2-46.9 84-46.9V78c-27.5 0-63.5 19.6-99.9 53.6-36.4-33.8-72.4-53.2-99.9-53.2v22.3c20.7 0 51.4 16.5 84 46.6-14 14.7-28 31.4-41.3 49.9-22.6 2.4-44 6.1-63.6 11-2.3-10-4-19.7-5.2-29-4.7-38.2 1.1-67.9 14.6-75.8 3-1.8 6.9-2.6 11.5-2.6V78.5c-8.4 0-16 1.8-22.6 5.6-28.1 16.2-34.4 66.7-19.9 130.1-62.2 19.2-102.7 49.9-102.7 82.3 0 32.5 40.7 63.3 103.1 82.4-14.4 63.6-8 114.2 20.2 130.4 6.5 3.8 14.1 5.6 22.5 5.6 27.5 0 63.5-19.6 99.9-53.6 36.4 33.8 72.4 53.2 99.9 53.2 8.4 0 16-1.8 22.6-5.6 28.1-16.2 34.4-66.7 19.9-130.1 62-19.1 102.5-49.9 102.5-82.3zm-130.2-66.7c-3.7 12.9-8.3 26.2-13.5 39.5-4.1-8-8.4-16-13.1-24-4.6-8-9.5-15.8-14.4-23.4 14.2 2.1 27.9 4.7 41 7.9zm-45.8 106.5c-7.8 13.5-15.8 26.3-24.1 38.2-14.9 1.3-30 2-45.2 2-15.1 0-30.2-.7-45-1.9-8.3-11.9-16.4-24.6-24.2-38-7.6-13.1-14.5-26.4-20.8-39.8 6.2-13.4 13.2-26.8 20.7-39.9 7.8-13.5 15.8-26.3 24.1-38.2 14.9-1.3 30-2 45.2-2 15.1 0 30.2.7 45 1.9 8.3 11.9 16.4 24.6 24.2 38 7.6 13.1 14.5 26.4 20.8 39.8-6.3 13.4-13.2 26.8-20.7 39.9zm32.3-13c5.4 13.4 10 26.8 13.8 39.8-13.1 3.2-26.9 5.9-41.2 8 4.9-7.7 9.8-15.6 14.4-23.7 4.6-8 8.9-16.1 13-24.1zM421.2 430c-9.3-9.6-18.6-20.3-27.8-32 9 .4 18.2.7 27.5.7 9.4 0 18.7-.2 27.8-.7-9 11.7-18.3 22.4-27.5 32zm-74.4-58.9c-14.2-2.1-27.9-4.7-41-7.9 3.7-12.9 8.3-26.2 13.5-39.5 4.1 8 8.4 16 13.1 24 4.7 8 9.5 15.8 14.4 23.4zM420.7 163c9.3 9.6 18.6 20.3 27.8 32-9-.4-18.2-.7-27.5-.7-9.4 0-18.7.2-27.8.7 9-11.7 18.3-22.4 27.5-32zm-74 58.9c-4.9 7.7-9.8 15.6-14.4 23.7-4.6 8-8.9 16-13 24-5.4-13.4-10-26.8-13.8-39.8 13.1-3.1 26.9-5.8 41.2-7.9zm-90.5 125.2c-35.4-15.1-58.3-34.9-58.3-50.6 0-15.7 22.9-35.6 58.3-50.6 8.6-3.7 18-7 27.7-10.1 5.7 19.6 13.2 40 22.5 60.9-9.2 20.8-16.6 41.1-22.2 60.6-9.9-3.1-19.3-6.5-28-10.2zM310 490c-13.6-7.8-19.5-37.5-14.9-75.7 1.1-9.4 2.9-19.3 5.1-29.4 19.6 4.8 41 8.5 63.5 10.9 13.5 18.5 27.5 35.3 41.6 50-32.6 30.3-63.2 46.9-84 46.9-4.5-.1-8.3-1-11.3-2.7zm237.2-76.2c4.7 38.2-1.1 67.9-14.6 75.8-3 1.8-6.9 2.6-11.5 2.6-20.7 0-51.4-16.5-84-46.6 14-14.7 28-31.4 41.3-49.9 22.6-2.4 44-6.1 63.6-11 2.3 10.1 4.1 19.8 5.2 29.1zm38.5-66.7c-8.6 3.7-18 7-27.7 10.1-5.7-19.6-13.2-40-22.5-60.9 9.2-20.8 16.6-41.1 22.2-60.6 9.9 3.1 19.3 6.5 28.1 10.2 35.4 15.1 58.3 34.9 58.3 50.6-.1 15.7-23 35.6-58.4 50.6zM320.8 78.4z"/><circle cx="420.9" cy="296.5" r="45.7"/><path d="M520.5 78.1z"/></g></svg>
\ No newline at end of file
const reportWebVitals = onPerfEntry => {
if (onPerfEntry && onPerfEntry instanceof Function) {
import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {
getCLS(onPerfEntry);
getFID(onPerfEntry);
getFCP(onPerfEntry);
getLCP(onPerfEntry);
getTTFB(onPerfEntry);
});
}
};
export default reportWebVitals;
// jest-dom adds custom jest matchers for asserting on DOM nodes.
// allows you to do things like:
// expect(element).toHaveTextContent(/react/i)
// learn more: https://github.com/testing-library/jest-dom
import '@testing-library/jest-dom';
This diff is collapsed.
Problem 4 (40 points)
In `problem4.js` you need to define a single endpoint, `/library` that needs to respond to a `get` request. It needs to handle the following query parameters:
`/library?sort=ascending`
If this is passed the server should respond with the data sorted by title in ascending order
`/library?sort=descending`
If this is passed the server should respond with the data sorted by title in descending order
`/library?sort=ascending&byAuthor=true`
If this is passed the server should respond with the data sorted by author last name in ascending order
`/library?sort=descending&byAuthor=true`
If this is passed the server should respond with the data sorted by author last name in descending order
`/library?filter=authorLastName`
If this is passed the server should respond with all the data associated with the authorLastName
If no query params are passed then the server should respond with all the data in the array.
In `functions.js` you need to define the 4 functions that you will need to use to perform the different operations on the data.
__HINT__ You may find the javascript String.prototype.split method helpful. It takes a separator as a parameter and returns an array of substrings based off of that separator. For example:
"How are you doing today?".split("o") returns:
[ 'H', 'w are y', 'u d', 'ing t', 'day?' ]
exports.sortByTitleAscending = function() {}
exports.sortByTitleDescending = function() {}
exports.sortByAuthorAscending = function() {}
exports.sortByAuthorDescending = function() {}
exports.filterData = function() {}
\ No newline at end of file
const express = require('express')
const router = express.Router()
const { sortByTitleAscending, sortByTitleDescending, sortByAuthorAscending, sortByAuthorAscending, filterData } = require('./functions')
const data = [
{
title: "100 Years of Solitude",
author: "Gabriel Garcia Marquez"
},
{
title: "Sun Also Rises",
author: "Ernest Hemingway"
},
{
title: "Bridge over the River Drina",
author: "Ivo Andric"
},
{
title: "Love In the Time of Cholera",
author: "Gabriel Garcia Marquez"
},
{
title: "Death of Ivan Ilych",
author: "Leo Tolstoy"
},
{
title: "Ulysses",
author: "James Joyce"
},
{
title: "Old Man and the Sea",
author: "Ernest Hemingway"
}
]
// define your get request here
\ No newline at end of file
Problem 5 (10 Points)
Type below the output from the script in `problem5.js`.
How many ticks of the javascript event loop are there for the entire script to execute to completion?
\ No newline at end of file
let firstpromise = new Promise((resolve, reject) => {
resolve('first promise is done')
});
async function f() {
let secondpromise = new Promise((resolve, reject) => {
setTimeout(() => resolve("second promise is done!"), 0)
});
console.log("Start async")
secondpromise.then(data => {
console.log('thenning is first')
})
let result = await new Promise((res, rej) => {
res('This happens before the await')
})
console.log(`result from await is ${result}`)
secondpromise.then(data => {
console.log('thenning a second time')
console.log(`result passed to second then is ${data}`)
})
let foo = await secondpromise
console.log("Done Async function");
}
console.log('in the middle of the script')
f();
firstpromise.then( (message) => console.log(message))
console.log('outside of async function call')
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment