1. RDBMS(관계형 DB)와 NoSQL(비관계형 DB)의 장단점에 대해 설명해주세요관계형DB특징• 트랜잭션(전부 아니면 무): 전체 트랜잭션이 하나의 단위로 기록. 실패 시 전체 롤백• 정규화: DB설계 시 중복을 최소화해서 구조화하는 프로세스장점• 데이터의 성능이 일반적으로 좋아 정렬, 탐색, 분류가 빠름• 신뢰성이 높아 데이터의 무결성을 보장• 정규화에 따른 갱신 비용을 최소화단점• 기존에 작성된 스키마를 수정하기 어려움• 데이터베이스의 부하를 분석하기 어려움• 빅데이터를 처리하는데 매우 비효율적임비관계형 DB특징• 거대한 Map으로서 key-value 형식을 지원함.• 관계형 db와 달리 PK,FK JOIN등 관계를 정의하지 않음.• 스키마에 대한 정의가 없다.장점• 대용량 데이터 처리를 하는데..
1. CORS란?• 교차 출처 리소스 공유(Cross-Origin Resource Sharing, CORS)는 추가 HTTP 헤더를 사용하여, 한 출처에서 실행 중인 웹 애플리케이션이 다른 출처의 선택한 자원에 접근할 수 있는 권한을 부여하도록 브라우저에 알려주는 체제이다. 웹 애플리케이션은 리소스가 자신의 출처(도메인, 프로토콜, 포트)와 다를 때 교차 출처 HTTP 요청을 실행한다. 브라우저는 보안상의 이유로, 스크립트에서 시작한 교차 출처 HTTP 요청을 제한한다. 따라서 다른 출처의 리소스를 불러오기 위해서는, 그 출처에서 교차 출처 리소스 공유에 대한 헤더(CORS)를 응답 시 반환해주어야 한다. preflight request는 실제 요청을 보내도 안전한지 판단하기 위해 사전에 보..
디자인 패턴이란? 디자인 패턴이란 프로그래밍 할 때에 문제를 해결하고자 코드의 구조들을 일정한 형태로 만들어 재이용하기 편리하게 만든 일정한 패턴이다. 즉, 구조적인 문제를 해결하는 방식을 이름을 붙여서 재이용하기 좋은 형태로 정리해둔 것이다. 사용하는 목적은 SW 재사용성, 호환성, 유지보수성을 보장함에 있다. 일반적으로 문제가 있어보이는 코드 구조 및 패턴을 'Design Smells' 스파게티 코드라고 한다. 이것들은 아래와 같다.Rigidity (경직성)시스템이 변경하기 어렵고 하나의 변경을 위해서 다른 것들을 변경 해야할 때 경직성이 높다. 경직성이 높다면 non-critical한 문제가 발생했을 때 관리자는 개발자에게 수정을 요청하기가 두려워진다.2. Fragility (취약성)취약성이 높다면..
데이터 베이스 면접 질문 데이터베이스란? 구조화된 정보 또는 데이터의 조직화된 모음으로 일반적으로 컴퓨터 시스템에 전자적으로 저장된다. DB는 일반적으로 DBMS에 의해 제어된다. MySQL, Orcale등이 DBMS의 대표적인 예시들이고 DB에서는 보통 SQL을 사용한다. 1-1. 데이터베이스의 장점? 데이터는 구조적으로 저장되므로 중복성이 제어됩니다. 입력 한 데이터의 유효성을 검사하고 데이터베이스에 대한 무단 액세스에 대한 제한을 제공합니다. 필요한 경우 데이터 백업 및 복구를 제공합니다. 여러 사용자 인터페이스를 제공합니다. 1-2. 데이터 베이스에서 다양한 유형의 관계? 일대일 : 일대다: 다대다: SQL 이 무엇인가요 DDL,DML,DCL 세가지 종류로 나눌수 있으며 각각 데이터 구조 정의 /..
운영체제 퀴즈 1. 프로세스의 스케줄링 알고리즘 아는 것 설명해주세요 First Come First Served(FCFS) Shortest Job First (SJF) Round Robin(RR) Shortest Remaining Time First (SRTF) Multilevel Feedback Queue(다중 레벨 피드백 큐) 2. 프로세스와 쓰레드의 차이에 대해 설명해주세요 프로세스란, 실행중에 있는 프로그램으로 독립적이다. 그래서 ( 코드, 데이터, 스택, 힙 ) 메모리 영역을 다른 프로세스와 공유하지 않는다. 프로세스는 최소 하나의 쓰레드를 갖고 있다. 스레드란, 프로세스 안에서 스택만 따로 할당 받고 나머지 영역은 공유를 하기에 자원의 생성과 관리가 중복되는 것을 줄일 수 있다. 프로세스가 할..
CSRF(Cross-Site Request Forgery) 사이트 간 요청 위조의 줄인말이다. 웹 애플리케이션 취약점 중 하나로 사용자가 자신의 의지와 무관하게 공격자가 의도한 행동을 해서 특정 웹페이지를 취약하게 한다거나 수정, 삭제 등의 작업을 하게 만드는 공격 방법이다. 공격자의 요청이 사용자의 요청인 것처럼 속이는 공격 방식이기에 크로스 사이트 요청 위조라는 명칭이 붙었다. 공격 난이도가 높지 않아 흔히 사용된다. CSRF 공격 방식 Perpetrator(침입자)는 서버로 넘어가는 자금 전송에 대한 요청을 조작하려고 합니다. 침입자는 하이퍼링크에 자금 전송 요청에 대한 스크립트를 삽입하고 사이트에 로그인할 사람들에게 전송합니다. 사용자는 링크를 누르고, 의도치않게 서버로 요청을 보내게 됩니다. 서..
트랜잭션이란? 데이터베이스의 상태를 변화시키는 하나의 논리적 기능을 수행하기 위한 작업의 최소 단위 트랜잭션의 특징 트랜잭션은 데이터베이스 시스템에서 병행 제어 및 회복 작업 시 처리되는 작업의 논리적 단위이다. 사용자가 시스템에 대한 서비스 요구 시 시스템이 응답하기 위한 상태 변환 과정의 작업단위이다. 하나의 트랜잭션은 Commit되거나 Rollback된다. 예를 들어, ATM으로 계좌이체를 한다고 생각해보면, A 은행에서 출금하여 B은행으로 송금 송금 중, 알 수 없는 오류가 발생하여 A은행 계좌에서 돈은 빠져 나갔지만 B은행의 계좌에 입금되지 않음 이와 같은 상황을 막기위해 거래가 성공적으로 모두 끝나야 이를 완전한 거래로 승인하고, 거래 도중 뭔가 오류가 발생했을 때는 이 거래를 처음부터 없었던..
메모리란? : 메인 메모리, RAM을 뜻한다. 프로그램 실행 시 필요한 주소, 정보들을 저장하고 가져다 사용할 수 있게 만드는 공간. 즉, 작업을 위해 사용되는 공간. 메모리 관리가 필요한 이유는? : 사용자들이 프로그래밍을 하면서 쉽게 메모리를 사용할 수 있도록 해준다. 사용자가 프로그래밍 언어를 활용해 코드를 작성할 떄 내부적으로 운영체제가 메모리를 관리해준다는 것이다. 운영체제가 메모리를 관리를 해준다는 것은 효율적으로 사용할 수 있도록 도와준다는 뜻이다. 또한, 메모리를 보호해준다. 메모리 보호란, A라는 프로세스가 있는데 다른 B라는 프로세스가 동시에 실행중에 있다. 그런데 B가 A의 메모리를 침범한다면 서로의 프로세스가 섞이기는 일이 발생할 것이다. 이러한 문제를 막는 행위이다. 운영체제의 역..