Report Node JS Developer Backend Jncamelog
Report Node JS Developer Backend Jncamelog
90.9 Juan Nicolas Camelo Garzon PDF generated at: 24 Jun 2024 16:25:24 UTC
Score
90.9% • 150 / 165
scored in Node JS Developer (Backend) in 89 min 15 sec on 24 Jun 2024 09:54:01 -05
Candidate Information
Email [email protected]
Invited by Sandra
Coding patterns
1 question
Skill Distribution
Node.js
1 0%
Basic
JavaScript
2 0%
Basic
JavaScript
3 0%
Advanced
Problem Solving
4 100%
Basic
Tags Distribution
Medium 96% Javascript 0%
Node.js 0% Hard 0%
JavaScript 0% Closure 0%
Questions
Time
Status No. Question Skill Score
Taken
Express JS 26 Node.js
1 0/5
Multiple Choice sec (Basic)
1 min
APIs in Express JS 2 Node.js
2 18 0/5
Multiple Choice (Basic)
sec
2 min
JavaScript Function JavaScript +1
3 38 0/5
Multiple Choice (Basic)
sec
43
Ancestral Names min Problem
4 75/75
Coding 13 Solving (Basic)
sec
41
GET Requests for GIF Images min Problem
5 75/75
Approximate Solution 30 Solving (Basic)
sec
1. Express JS Incorrect
Question description
Interviewer guidelines
The code has a syntax error. The response.end method is called with an array as its argument, which will
cause a TypeError to be thrown because response.end expects a string or a buffer. To fix this error, the
array should be converted to a JSON string using JSON.stringify.
Candidate's Solution
The server responds with a JSON array that contains user data.
The server responds with a plain text message that contains the request data.
No comments.
Question description
setImmediate(() => {
a /= 2;
});
process.nextTick(() => {
a += 2;
});
console.log(a);
res.end("End");
});
Interviewer guidelines
The exact order in which these operations are executed is not guaranteed, and can change based on
various factors such as the state of the system, the availability of resources, and the behavior of the event
loop.
So, while the output of the code will always be a specific value, that value may not be the same each time
the code is executed, as it can be influenced by the conditions of the system at runtime.
Candidate's Solution
10
The output is not guaranteed to be a specific value as the execution order may vary.
The output throws an error because the execution order is not guaranteed.
No comments.
Question description
Have a look at the following code snippet and select the appropriate statement(s):
Candidate's Solution
No comments.
Question description
Given a list of strings comprised of a name and a Roman numeral, sort the list first by name, then by the
decimal value of the Roman numeral.
In Roman numerals, a value is not repeated more than three times. At that point, a smaller value
precedes a larger value to indicate subtraction. For example, the letter I represents the number 1, and
V represents 5. Reason through the formation of 1 to 10 below, and see how it is applied in the following
lines.
I, II, III, IV, V, VI, VII, VIII, IX, and X represent 1 through 10.
XX, XXX, XL, and L are 20, 30, 40, and 50.
For any other two-digit number < 50, concatenate the Roman numeral(s) that represent its multiples
of ten with the Roman numeral(s) for its values < 10. For example, 43 is 40 + 3 = 'XL' + 'III' = 'XLIII'
Example
names = ['Steven XL', 'Steven XVI', 'David IX', 'Mary XV', 'Mary XIII', 'Mary XX']
The result with Roman numerals is the expected return value. Written in decimal and sorted, they are
['David 9', 'Mary 13', 'Mary 15', 'Mary 20', 'Steven 16', 'Steven 40']. The return array is ['David IX', 'Mary
XIII', 'Mary XV', 'Mary XX', 'Steven XVI', 'Steven XL'].
Function Description
Complete the function sortRoman in the editor below.
Returns
string[n]: an array of strings sorted first by given name, then by ordinal
Constraints
1 ≤ n ≤ 50
Each names[i] is a single string composed of 2 space-separated values: givenName and
romanNumeral.
romanNumeral represents a number between 1 and 50, inclusive.
1 ≤ |givenName| ≤ 20
Each givenName starts with an uppercase letter ascii[A-Z] which is followed by lowercase letters
ascii[a-z].
There is a space between givenName and romanNumeral
Each names[i] is distinct.
Input from stdin will be processed as follows and passed to the function.
The first line contains an integer n, the size of the array names.
Each of the next n lines contains an element names[i].
SAMPLE CASE 0
Sample Input
STDIN Function
----- -----
2 → names[] size n = 2
Louis IX → names = ['Louis IX', 'Louis VIII']
Louis VIII
Sample Output
Louis VIII
Louis IX
Explanation
Sort first by givenName and then, if givenName is not unique, by the value of the Roman numeral. In
decimal, the list is sorted ['Louis 8', 'Louis 9'].
SAMPLE CASE 1
Sample Input
STDIN Function
----- -----
2 → names[] size n = 2
Philippe I → names = ['Philippe I', 'Philip II']
Philip II
Sample Output
Philip II
Philippe I
Interviewer guidelines
Python 3 Solution
def roman_to_int(roman):
roman_values = {'I':1,'V':5,'X':10,'L':50}
result = 0
prev_value = 0
for char in reversed(roman):
value = roman_values[char]
if value >= prev_value:
result += value
else:
result -=value
prev_value = value
return result
def sortRoman(names):
1 'use strict';
2
3 const fs = require('fs');
4
5 process.stdin.resume();
6 process.stdin.setEncoding('utf-8');
7
8 let inputString = '';
9 let currentLine = 0;
10
11 process.stdin.on('data', function(inputStdin) {
12 inputString += inputStdin;
13 });
14
15 process.stdin.on('end', function() {
16 inputString = inputString.split('\n');
17
18 main();
19 });
20
21 function readLine() {
22 return inputString[currentLine++];
23 }
24
25
26
27 /*
28 * Complete the 'sortRoman' function below.
29 *
30 * The function is expected to return a STRING_ARRAY.
31 * The function accepts STRING_ARRAY names as parameter.
32 */
33
34 function sortRoman(names) {
35 // Write your code here
36 names = names.sort((a, b) => {
37 let givenNameA = a.split(' ')[0];
38 let givenNameB = b.split(' ')[0];
85 }
86
87 const result = sortRoman(names);
88
89 ws.write(result.join('\n') + '\n');
90
91 ws.end();
92 }
93
TIME MEMORY
TESTCASE DIFFICULTY TYPE STATUS SCORE
TAKEN USED
Testcase
Easy Sample Success 1 0.0431 sec 42.1 KB
0
Testcase
Easy Sample Success 1 0.0489 sec 42 KB
1
Testcase
Easy Sample Success 1 0.0509 sec 42 KB
2
Testcase
Easy Sample Success 6 0.0445 sec 42.1 KB
3
Testcase
Easy Sample Success 11 0.0593 sec 42.6 KB
4
Testcase
Easy Hidden Success 11 0.0603 sec 42.9 KB
5
Testcase
Easy Hidden Success 11 0.0522 sec 42.6 KB
6
Testcase
Easy Hidden Success 11 0.0511 sec 42.7 KB
8
Testcase
Easy Hidden Success 11 0.0618 sec 42.6 KB
9
No comments.
Back-End Development
Question description
You are given a log file with a list of responses, some of the records in the log file may contain filenames.
Generate a new file containing the unique names of all gif files that were requested via GET and that had
a response code of 200.
A sample and the structure of the text file containing the responses are given below.
burger.letters.com
- - [01/Jul/1995:00:00:12 "GET 200 0
-0400] /shuttle/countdown/video/livevideo.GIF
HTTP/1.0"
Hostname of
The HTTP
the host that
- - Timestamp Format The request is enclosed in quotes response
made the
code.
request
Given a filename that denotes a text file in the current working directory. Create an output file with the
name "gifs_" prefixed to the filename (gifs_filename) which stores the unique gif filenames that match
the requirements.
Write the name of a GIF file (without its path) to the output file, for each of the records in the input file
which satisfy the below:
The GIF file was requested by a GET request.
The record has an HTTP response code of 200.
Note:
The output file has to be written to the current directory.
The line order in the output file does not matter.
There must not be any duplicates (if duplicates exist, you will receive only 70% of the score).
Constraints
The log file contains no more than 2 × 105 records.
Input from stdin will be processed as follows and passed to the function.
The only line contains a string filename, the name of the log file.
SAMPLE CASE 0
Sample Input 0
hosts_access_log_00.txt
Sample Output 0
Given filename = "hosts_access_log_00.txt", process the records in hosts_access_log_00.txt and create
an output file named gifs_hosts_access_log_00.txt that contains the following rows:
livevideo.GIF
count.gif
NASA-logosmall.gif
KSC-logosmall.gif
Explanation 0
The log file hosts_access_log_00.txt contains the following log records:
A GET request requested a file named livevide.GIF and the HTTP response code was 200.
2. The sixth log record:
In both records, a GET request requested a file named count.gif and the HTTP response code was
200.
3. The seventh log record:
A GET request requested a file named NASA-logosmall.gif and the HTTP response code was 200.
4. The eighth log record:
A GET request requested a file named KSC-logosmall.gif and the HTTP response code was 200.
Append the four distinct GIF file names satisfying our conditions to the output file.
1 process.stdin.resume();
2 process.stdin.setEncoding('ascii');
3
4 let consoleInput = '';
5 process.stdin.on('data', (data) => {
6 consoleInput += data;
7 });
8
9 process.stdin.on('end', () => {
10 consoleInput = consoleInput.split('\n');
11 main();
12 });
13
14 let currentLine = 0;
15 function readLine() {
16 if (currentLine >= consoleInput.length) {
17 return null;
18 }
19
20 return consoleInput[currentLine++];
21 }
22
23 const fs = require('node:fs');
24
25 function main() {
26 // read the string filename
27 const filename = readLine();
28 const resFilename = 'gifs_'+filename;
29 const fileNames = new Set();
30
31 try {
32 const data = fs.readFileSync(filename, 'utf8');
33 let rowData = data.split('\n');
34 rowData.forEach((row) => {
35 const reqData = row.split(" ");
36 // Process only 200 responses
37 if (reqData[8] === "200") {
38 // Get request path and file
39 let reqFile = reqData[6].split("/");
40 let reqFileName = reqFile[reqFile.length-1];
41 // Check file extension
42 let fileMatch = reqFileName.match(/\.[0-9a-z]+$/i);
43 if (fileMatch && fileMatch[0].toLowerCase() === ".gif") {
44 // Unique file names are added to a set
45 fileNames.add(reqFileName);
46 }
47 }
48 });
49 // Save filenames to file
50 fs.writeFileSync(resFilename, Array.from(fileNames).join("\n"));
51 } catch (err) {
52 console.error(err);
53 }
54 }
55
56
TIME MEMORY
TESTCASE DIFFICULTY TYPE STATUS SCORE
TAKEN USED
TestCase
Easy Hidden Success 3/3 0.1837 sec 68 KB
10
TestCase
Easy Hidden Success 3/3 0.1758 sec 67.6 KB
11
TestCase
Easy Hidden Success 3/3 0.2998 sec 93.8 KB
12
TestCase
Easy Hidden Success 3/3 0.2994 sec 92.4 KB
13
No comments.