기술면접 준비 231011
1. how do you get the current high resolution millisecond timestamp for performanace purposes using performance hooks - 성능후크를 사용하여 성능향상 목적으로 현재의 고해상도 밀리초 타임스탬프를 얻는 방법
답: 어떤 작업을 가운데 두고 위 아래로 시간을 재서 시작시간-작업완료 시간을 계산한다.
const startTime = performance.now();
// Perform some operation you want to measure the performance of
const endTime = performance.now();
const elapsedTimeInMilliseconds = endTime - startTime;
console.log(`Elapsed Time: ${elapsedTimeInMilliseconds} ms`);
2. http2 를 사용하여 데이터 암호화과정 (SSL/TLS)
SSL(TLS)의 기본 작동원리
1. 지원 가능한 알고리즘 서로 교환
2. 키 교환 및 인증
3. 대칭키 암호로 암호화하고 메시지 인증
3-WAY HANDSHAKE (TCP/IP 프로토콜에서 사용된다.)
1. 클라이언트에서 서버로 SYN : 연결 시작해도 될까요?
2. 서버에서 클라이언트로 SYN-ACK : 네 연결 가능합니다. SYN-ACK 패킷 보냄
3. 클라이언트에서 서버로 확인 ACK : 네 그럼 연결하겠습니다.
이 이후에 TLS 연결 요청, 그러면 서버가 인증서와 키를 보내고 진행
클라이언트 요청시 cert는 전달되고 private-key는 서버측에서만 보관된다.
const http2 = require('http2');
const fs = require('fs');
//createSecureServer 함수를 통해 HTTPS(SSL/TLS) 서버를 생성
//서버에 대한 보안 설정을 제공한다
const server = http2.createSecureServer({
key: fs.readFileSync('private-key.pem'),
cert: fs.readFileSync('public-cert.pem')
});
server.on('stream', (stream, headers) => {
// Handle the incoming stream
stream.respond({
'content-type': 'text/html',
':status': 200
});
stream.end('<h1>Hello, HTTP/2!</h1>');
});
//8443 포트에서 서버를 시작, 클라이언트의 연결 요청을 수락한다
//클라이언트가 연결을 요청하면 SSL/TLS 핸드셰이크를 수행하여 연결 설정
server.listen(8443);
3. http를 통해 node.js 기본 스크립트를 실행하려면 일반적으로 .njs 파일에 저장하고 배포하면 표준 출력이 브라우저로 전송된다. -> true or false?
자바스크립트에서의 표준출력이 곧 console.log임. console.log는 서버측에서 보이는 것이지 브라우저로 전송x
4. node.js에서 built-in http 서버 모듈을 사용할 때 cors 사용 가능 여부-> 사용가능
서버에서 적절한 cors 헤더를 설정하면 구현가능
5. 외부작업을 위한 child_process 모듈, pipe()함수의 역할
var child = require('child_process');
var ls = child.spawn('ls');
// Pipe the output of ls command to process.stdout
ls.stdout.pipe(process.stdout, { end: false });
ls.on('exit', function (code) {
process.exit(code);
});
var child = require ('child_process') : 내장된 child_process 모듈을 불러온 후
var ls = child.spawn('ls) : child 모듈의 spawn 함수를 사용하여 ls 명령어를 실행하게 됌, 말그대로 자식 프로세스의 생성은 기본적으로 spawn을 통해 이루어진다. -> 새 프로세스에서 ls 명령어를 실행시키고 그 프로세스를 node.js에서 제어하는 것
ls.stdout.pipe(procee.stdout) : ls.stdout과 process.stdout은 서로 다른 프로세스의 출력 스트림을 나타냄, ls.stdout은 외부스트림이고 process.stdout은 node.js 프로세스의 표준출력스트림임, 고로 pipe 함수가 프로세스간 데이터 전송을 해주는 것
6. node.js 자체는 데이터베이스를 내장한 모듈을 갖고 있지 않다, 파일시스템과 상호작용하기 위한 fs 모듈은 존재
'개발 > 개발자 취업준비' 카테고리의 다른 글
[백엔드 개발자 취업준비] 면접 단골 질문 정리 (1) | 2024.01.17 |
---|---|
취업준비하면서 가장 힘든 점 ..몇가지 .. (0) | 2023.10.20 |
[개발자 기술면접] 자기소개 및 추가 준비 (0) | 2023.10.03 |
[개발자 기술면접] 백엔드 개발자라면 반드시 알아야할 개발지식 모음 (1) | 2023.10.02 |
[개발자 기술면접] 테스트코드, 자료구조, AWS, 정렬 알고리즘 Q.12-15 (0) | 2023.09.22 |