Node.js 백엔드 기술면접 면접질문 모음
RDS특징관계형 데이터 베이스 조작 및 관리를 수행하는 완전 관리형 웹서비스automated backups와 DB snapshot으로 백업 기능AWS IAM을 사용하여 사용자를 제어할 수 있음장점서버와 분리되어 있기 때문에 보안성이 높아짐서버가 다운 될 경우 DB도 영
Restful APIRespresentational State Transfer자원의 이름을 구분하여 자원의 상태를 주고받음HTTP URI를 통해 자원 명시, HTTP Method(POST, GET, PUT, DELETE)를 사용하여 CRUD Operation 적용RES
데이터의 일관성, 최소한의 데이터 중복, 최소한의 데이터 유연성을 위한 방법이며 데이터를 분해하는 과정정규화된 모델은 테이블이 분해된다.정규화를 하면 불필요한 데이터를 입력하지 않아도 되기 때문에 중복 데이터가 제거된다.정규화 절차제 1정규화 : 속성(Attribute
select \* from A inner join B on A.column = B.column;select \* from A,B where A.column=B.column결과Inner Join의 결과로는 A테이블과 B테이블이 모두 가지고 있는 데이터만이 검색됨종류로는
Promise 객체는 비동기 작입이 맞이할 미래의 완료 또는 실패와 그 결과 값을 나타낸다.자바스크립트의 특성 상 특정 코드의 실행이 완료될 때까지 기다리지 않고 다음 코드를 먼저 수행함.Promise의 3가지 상태대기(Pending) : 이행하지도, 거부하지도 않은
JavaScript를 이용한 비동기 프로그래밍시 발생하는 문제로서, 함수의 매개변수로 넘겨지는 콜백 함수가 반복되어 코드의 들여쓰기 수준이 감당하기 힘들 정도로 깊어지는 현상비동기를 제어하는 방법 (콜백 지옥 탈출 방법)1\. PromiseES6의 Promise를 이용
자바스크립트는 싱글 스레드이다? ○NodeJs는 싱글 스레드이다? XNodeJs 자체는 다중 스레드이나 디스크 또는 네트워크 요청에서 파일 읽기와 같은 I/O작업을 처리 하는 라이브러리를 통해 숨겨진 스레드를 제공한다숨겨진 스레드를 사용하여 NodeJs는 코드가 기본
클러스터 모듈은 싱글 프로세스로 동작하는 노드가 CPU 코어를 모두 사용할 수 있게 해주는 모듈이다포트를 공유하는 노드 프로세스를 여러개 둘 수 있으므로 요청이 많이 들어올 시 병렬로 실행된 서버의 개수만큼 요청이 분산되게 할 수 있다. 즉 서버에 부담이 덜 가게 된다
노드 공식 사이트에서는 노드를 다음과 같이 설명하고 있다.Node.js는 Chrome V8 JavaScript 엔진으로 빌드된 JavaScript 런타임입니다.즉, 노드를 통해 다양한 자바스크립트 애플리케이션을 실핼할 수 있으며, 서버를 실행하는 데 제일 많이 사용된다
인터프리터가 변수와 함수의 메모리 공간을 선언 전에 미리 할당하는 것참고: https://tecoble.techcourse.co.kr/post/2021-04-25-hoisting/
한 문자 단위가 아닌 미리 정해진 수 만큼 문자열을 한 묶음으로 만들어서 일시에 전송하는 방법 (프레임 단위)데이터와는 별도로 송신 측과 수신 측이 하나의 기준 클럭으로 동기신호를 맞춰 동작 함에디터 내에 동기신호를 포함시켜 데이터를 전송 함.송신 측의 송신 클럭에 관
콜백 함수Promiseasync & await코드를 통해 명시적으로 호출하는 함수가 아니라, 함수를 등록시킨 후 어떤 이벤트가 발생했거나 특정 시점에 도달했을 때 시스템에서 호출되는 함수비동기 작업이 길어질수록 콜백이 깊어지는데 이와 같은 방법은 'callback he
완전 이진트리의 일종으로 우선순위 큐를 위하여 만들어진 자료구조모든 노드에 저장된 값(우선순위)들은 자식 노드들의 것보다(우선순위가) 크거나 같다.힙은 일종의 반정렬 상태(느슨한 정렬 상태)를 유지한다.최대 힙 부모 노드의 키 값이 자식 노드의 키 값보다 크거나 같은
파일 전체를 읽은 뒤 코드의 의미를 해석하고 파일 전체를 기계어로 변환 한다.(컴파일)코드를 한줄 한줄 읽어 내려가며 한줄씩 중간 단계의 ByteCode로 변환한다(인터프리팅)실행되는 플랫폼에 따라 인터프리팅과 컴파일이 혼합되어 사용 된다.먼저 엔진이 실행할 JS 파일
소프트웨어 개발 방법으로 사용되는 디자인패턴(Desigin Pattern)은 과거의 소프트웨어 개발 과정에서 발견된 설계의 노하우를 축적하여 그 방법에 이름을 붙여서 이후에 재사용하기 좋은 형태로 특정 규약을 만들어서 정리한 것객체 생성에 관련된 패턴객체의 생성과 조합
header / payload / signaturetyp: 토큰의 타입alg: 해싱 알고리즘클레임(claim): name / value로 이루어진 정보의 한 조각토큰에는 여러개의 클레임을 넣을 수 있다클레임의 종류등록된 클레임(registered claim)공개 클레임
1~5 단계는 데이터를 받아온은 과정6~12 단계는 웹 브라우저에 랜더링 되는 과정참고주소창에 www.google.com을 입력했을 때 일어나는 과정
관계형 데이터베이스란 테이블(table)로 이루어져 있으며, 이 테이블은 키(key)와 값(value)의 관계를 나타낸다. 테이블은 이름을 가지고 있으며, 행(row)과 열(column) 그리고 거기에 대응하는 값을 가진다. 즉 관계형 데이터베이스는 위와 같이 구성된
소셜로그인 처리과정 (카카오)카카오 서버에 인가코드 요청발급된 인가코드로 토큰 요청(카카오 토큰 발급)발급된 카카오 토큰으로 로컬DB에서 id 유효성 검증3-1 사용자 정보가 있으면 로그인3-2 사용자 정보가 없으면 회원가입소셜 로그인 플랫폼에 따라 접근할 수 있는 범
HTTP의 일종으로 사용자가 어떠한 웹 사이트를 방문할 경우,그 사이트가 사용하고 있는 서버에서 사용자의 컴퓨터에 저장하는 작은 기록 정보 파일이다.HTTP에서 클라이언트의 상태 정보를 클라이언트의 PC에 저장하였다가필요시 정보를 참조하거나 재사용할 수 있다.쿠키 특징
서버/클라이언트 모델을 따라 데이터를 주고 받기 위한 프로토콜80포트를 사용HTTP에 데이터 암호화가 추가된 프로토콜443번 포트를 사용
HTTP 동작 과정HTTPS는 대칭키 암호화와 비대칭키 암호화를 모두 사용하여 빠른 연산 속도와 안정성을 모두 얻고 있다.HTTPS 연결 과정(Hand-Shaking)에서는 먼저 서버와 클라이언트 간에 세션키를 교환한다. 여기서 세션키는 주고 받는 데이터를 암호화하기
전역 변수의 생명 주기 === 전역 객체의 생명주기모든 코드가 전역 변수를 참조하고 변경할 수 있는 암묵적 결합을 허용한다.변수의 유효 범위가 커지면서 코드의 가독성은 나빠지고,의도치 않게 상태가 변경될 수 있는 위험성도 높아진다.전역 변수는 생명 주기가 길다.즉, 메
변수, 함수의 선언부가 위치한 인접 스코프의 시작 지점에서 해당 식별자의 관측이 가능한 현상변수의 선언과 초기화를 분리한 후, 선언만 코드의 최상단으로 옮기는 것출처
자바스크립트의 비동기 처리를 담당하는 메커니즘단일 스레드에서 동작하면서 여러 개의 작업을 비동기적으로 처리할 수 있도록 해준다.단일 스레드에서 비동기 처리를 가능하게하며, 콜 스택과 큐를 기반으로 동작하여 비동기적으로 실행되는 작업들을 적절한 시점에 콜스택으로 이동시켜
테이블 내의 데이터를 검색하거나 정렬하는 데 사용되는 자료구조테이블의 컬럼(column) 중에서 검색 또는 정렬의 기준이 되는 컬럼에 대해 생성 된다.
B-tree: 데이터를 저장하는 데 사용되는 트리 구조의 일종으로 데이터를 쉽게 검색하고 정렬할 수 있음.B+tree: B-tree의 변형으로 내부 노드에만 인덱스 값을 저장하고 리프노드(루트 노드를 제외한 차수가 1인 정점)에는 인덱스 값과 함께 데이터 값을 함께 저
다른 프로그램이나 애플리케이션에서 현재 프로그램의 기능을 호출하고 사용할 수 있도록 정의된 인터페이스
각 메소드의 기능은 이미 HTTP 메소드에서 정의 되어 있다.객체명이 URI에 포함된다면 가급적이면 복수를 써야한다.슬래시 (/)를 통하여 계층관계를 표시하는 것.명사로 URI를 구성해야 한다파일 확장자는 URI에 포함하지 않는다URI는 호스트를 제외한 나머지 모든 요
상태 코드는 3자리 숫자로 만들어져 있으며, 첫번째 자리는 1에서 5까지 제공됩니다. 첫번째 자리가 4와 5인 경우는 정상적인 상황이 아니기 때문에 사이트 관리자가 즉시 알아야 하는 정보입니다.1xx (정보) : 요청을 받았으며 프로세스를 계속 진행합니다.2xx (성공
후보키(Candidate key): 유일성과 최소성을 만족하는 키. 기본키가 될 수 있는 후보이기 때문에 후보키라고 불린다.기본 키(Primary key): 후보 키에서 선택된 키. NULL값이 들어갈 수 없으며, 기본키로 선택된 속성(Attribute)은 동일한 값이
악의적인 사용자가 보안상의 취약점을 이용하여, 임의의 SQL 문을 주입하고 실행되게 하여 데이터베이스가 비정상적인 동작을 하도록 조작하는 행위논리적 에러를 이용한 SQL InjectionUnion 명령어를 이용한 SQL InjectionBoolean based SQLT
파티셔닝이란?파티셔닝이란 데이터베이스를 여러 부분으로 분할하는 것즉, 큰 테이블이나 인덱스를 작은 파티션(Partition) 단위로 나누어 관리하는 기법수평 파티셔닝하나의 테이블의 각 행을 다른 테이블에 분산시키는 것장점데이터의 개수를 기준으로 나누어 파티셔닝한다.데이
string, number, bigint, boolean, undefined, symbol원시타입은 변수에 할당될 때, 메모리의 고정 크기로 원시 값을 저장하고 해당 저장된 값을 변수가 직접적으로 가리키는 형태를 띈다.또한 값이 절때 변하지않는 불변성을 갖고있기때문에
객체(Object), 배열(Array), 함수(function)참조 타입 데이터는 크기가 정해져 있지 않고 변수에 할당될 때 값이 직접 해당 변수에 저장되는 것이 아니라, 변수의 값이 저장된 힙(Heap) 메모리의 주소 값을 저장한다.따라서 참조 타입은 변수의 값이 저
||중복선언|재할당| |------|---|---| |var|가능|가능| |let|불가능|가능| |const|불가능|불가능|
ORM은 Object Relational Mapping(객체-관계-매핑)의 약자이다.ORM은 객체와 데이터베이스의 관계를 매핑해주는 도구이다.ORM은 프로그래밍 언어의 객체와 관계형 데이터베이스의 데이터를 자동으로 매핑(연결)해주는 도구이다.ORM은 프로그래밍 언어의