면접 요약 정리 12

기술 면접 준비 - 네트워크

- GET과 POST GET URI와 헤더에 데이터를 담아서 전송 데이터 크기가 제한적 URI에 포함된 데이터는 사용자에게 그대로 노출됨(보안에 취약) GET요청은 캐싱이 가능하므로 단순 조회, 데이터가 사용자에게 노출되어도 상관 없을때 사용 POST URI와 헤더, body에 데이터를 담아서 전송 GET요청 보다 담을 수 있는 데이터 크기가 큼 body 안에 담긴 데이터는 사용자에게 노출 되지 않으므로 안정적인 데이터 전송이 가능함(개발자 도구에선 노출) - HTTP와 HTTPS HTTP HyperText Transfer Protocol 텍스트 기반의 통신규약, 인터넷에서 데이터를 주고 받을 수 있는 프로토콜 특징 비연결성 : 클라이언트가 서버에 요처을 보내고 응답을 하면 연결을 끊는 방식 무상태성 :..

기술 면접 준비 - 기초 CS 지식

- 객체지향 프로그래밍(OOP) 데이터를 추상화 시켜 상태와 행위를 가진 객체로 만들고, 객체들간의 상호작용을 통해 로직을 구성하는 프로그래밍 방법 장점 : 코드재사용이 용이, 유지보수가 쉬움, 대형 프로젝트에 적합 단점 : 설계시 시간과 노력이 필요 클래스 : 추상화를 거쳐 공통된 속성, 행위를 정의한 객체를 만들기 위한 메타정보 객체 : 클래스에서 정의한 것을 토대로 실제 메모리에 할당된 것 - 객체지향 프로그래밍 4가지 특성 추상화 : 공통된 상태, 행위를 파악하여 타입을 정의하는 것 캡슐화 : 상태와 기능을 결합시켜 묶는것 코드 재활용이 용이하고, 정보은닉을 목적으로 함 상속 : 부모 클래스의 속성과 기능을 그대로 이어 받아 사용하고, 일부분만 수정하여 다시 정의하여 사용 다형성 : 하나의 변수,..

기술 면접 준비 - 데이터베이스

- RDBMS(관계형) 데이터는 엄격한 스키마에 따라 테이블에 저장 관계를 통해 연결된 여러 개의 테이블에 저장 사용 데이터가 자주 수정되는 서비스 스키마의 변경이 없고, 명확한 스키마 구조를 필요로 할 때 장점 명확한 데이터 구조 보장(정해진 스키마에 따라 데이터를 저장하기 때문에) 중복 데이터 방지 단점 관계로 인한 시스템 복잡도를 고려하여 구조화해야 함 시스템이 복잡하면 쿼리문이 복잡해지고, 성능이 저하됨 - NoSQL(비 관계형) 정해진 스키마가 없고, 테이블 개념의 컬렉션에 저장 관계 설정을 하지 않음 사용 데이터가 자주 변경되지 않는 서비스 정확한 데이터 구조를 사용하지 않거나 데이터 구조의 변경, 확장을 필요로 할 때 막대한 양의 데이터를 다룰 때(수평적 확장 용이) 장점 테이블 간의 복잡한..

기술 면접 준비 - JavaScript

- 이벤트 루프 task 큐와 call 스택을 수시로 감시하여 call 스택에 처리할 함수가 없고, task 큐에 처리할 함수가 존재하면 task 큐에 있는 함수를 call 스택으로 전달하는 역할 자바스크립트는 싱글 스레드로 그 자체로는 비동기 작업을 할 수 없지만, 웹 브라우저의 도움을 받아서 구현이 가능함 ex) 비동기 함수를 호출 → WebAPI에서 처리 → 개발자가 지정한 작업(콜백 함수)이 task큐에 등록 → 이벤트 루프에 의해 call 스택으로 전달 → 처리 - 프로토타입(Prototype) 자바스크립트는 프로토타입 기반의 객체 지향 프로그래밍을 지원하며, 자바스크립트의 대부분은 객체이고, 모든 객체는 부모 객체와 연결되어 있음 이때 부모 객체를 프로토타입이라고 함 프로토타입 체인을 이용하여..

socket.io 정리

소켓이란 데이터를 주고받는 창구 역할이며, 떨어져 있는 두 호스트를 연결해주는 도구입니다. socket.io란 Websocket을 기반으로 클라이언트와 서버를 실시간 양방향 통신을 가능하게 해주는 Node.js의 모듈입니다. Websocket를 사용해 실시간 채팅을 구현할 수 있지만, socket.io를 사용하면 room이나 namespace 같은 편의 기능들을 사용할 수 있어 다양한 기능들을 보다 쉽게 구현할 수 있습니다. 이벤트 기반으로 동작하기 때문에 이벤트명을 맞추어 입장, 퇴장, 채팅 등을 정의하여 클라이언트와 서버가 통신이 가능합니다. emit으로 메시지를 보내고, on으로 메시지를 받습니다. Websocket이란 TCP 기반의 양방향 통신을 제공하는 프로토콜 HTTP통신은 단방향 방식으로 연..

쿠키, 세션, JWT 정리

JWT란 JSON Web Token의 약자로 JSON 객체로 사용자에 대한 정보를 안전하게 전송하기 위한 Web Token입니다. 헤더, 페이로드, 시그니처 3 부분으로 이루어져 있습니다. 각 부분은 Base64로 인코딩 되어있습니다. 헤더는 시그니처를 해싱하기 위한 알고리즘을 지정하는 곳입니다. 페이로드는 토큰 안에서 사용할 정보들이 담겨있습니다. 시그니처는 토큰을 인코딩하거나, 유효성 검증을 할 때 사용합니다. JWT 장단점 장점 사용자 인증에 필요한 모든 정보가 토큰에 포함되어있기 때문에 별도의 인증 저장소가 필요 없습니다. 단점 페이로드에 사용자들의 정보가 담겨 그대로 노출될 수 있기 때문에 중요한 정보를 담을 순 없습니다. 쿠키란 클라이언트 로컬 스토리지에 저장되는 키와 벨류 값이 들어있는 작은..

HTTP와 HTTPS 정리

HTTP란 Hyper Text Transfer Protocol로, 인터넷에서 데이터를 주고받을 수 있는 프로토콜, 규칙입니다. 클라이언트가 서버에 요청을 보내면 서버는 그에 대한 응답을 답하는 형태로 동작합니다. 클라이언트의 상태를 보존하지 않는 무상태 프로토콜 방식으로 서버 확장성이 높습니다. 요청을 주고받을 때만 연결을 유지하여 최소한의 자원으로 서버 유지하는 비연결성 특징이 있습니다. HTTPS란 HTTP 프로토콜보다 보안적으로 더 강화된 통신 규칙입니다. 정보를 암호화하여 제 3자가 중간에 가로채거나, 보는 것을 막아줍니다. 이용하는 사이트가 믿을 만한 곳인지 확인할 수 있습니다. 대칭키 방식이란 동일한 키로 암호화 복호화하여 정보를 주고받습니다. 비대칭키(공개키) 보다 빠르게 통신이 가능합니다...

REST API 정리

api란 소프트웨어가 다른 소프트웨어로부터 지정된 형식으로 통신하고, 데이터를 주고받게 하는 메커니즘입니다. REST란 각 요청이 어떤 동작이나 정보를 위한 것인지를 요청의 모습 자체로 추론이 가능한 형태입니다. REST api란 HTTP 규약에 따라 신호를 전송하는 방식으로 GET, POST, PUT, DELETE, PATCH 메서드를 사용하여 요청을 보내는 주소와 메서드를 통해 어떠한 기능을 하는지 파악이 가능한 형태입니다. URI란 자원을 구조와 함께 나타내는 형태로 리소스를 구분할 수 있는 식별자입니다. URL이란 URI에 포함되는 개념으로, 리소스의 경로를 의미. 일반적으로 사이트 도메인을 의미 URN이란 URI에 포함되는 개념으로, 리소스의 이름을 의미 CRUD란 create, read, up..

npm 정리

npm이란 Node.js의 기본 패키지 매니저입니다. 별도의 설치가 필요 없다는 게 가장 큰 장점이고, 가장 대중적인 패키지 매니저입니다. yarn이란 npm의 단점을 보완하기 위해 페이스북에서 만든 JavaScript 패키지 매니저입니다. npm의 속도, 안정성, 보안성을 보완합니다. npm도 속도와 안전성을 보완하여 큰 차이가 없고, 사용자 수와 접근성은 npm이 우세하기 때문에 사용자에게 맞는 것을 사용하는 게 좋습니다. packege.json이란 동일한 개발환경을 구축할 수 있게 프로젝트 정보와 의존성을 관리하는 문서입니다. 팀 프로젝트를 하거나, 누군가의 프로젝트를 clone 했을 때 packege.json을 통해 동일한 환경을 구축할 수 있습니다.

var, let, const 정리

var, let, const 차이 각각은 변수 선언 방식에 차이가 있습니다. var는 중복 선언, 재할당이 가능하고, let은 중복 선언은 불가능, 재할당은 가능, const는 중복 선언, 재할당 모두 불가능합니다. 스코프 차이로는 var의 경우 함수 레벨 스코프에 따라 함수 내에서 선언된 변수는 함수 내에서만 유효하고, 함수 외부에서는 참조할 수 없습니다. let, const의 경우 블록 레벨 스코프로 함수 블록 내부에서 선언된 변수는 블록 내에서만 유효하고, 블록 외부에서는 참조할 수 없습니다. 마지막 호이스팅의 경우 var는 호이스팅이 발생하여 변수 선언 전 참조가 되었더라도, 에러가 발생하지 않고, 변수 선언 시 undefined로 초기화가 진행됩니다. let, const의 경우 변수 선언 전 참..