본문 바로가기

CS

(8)
Process & Thread 2 1. ⭐⭐ Multi thread에 대해서 설명해 주세요. thread는 한 process 내에서 실행되는 동작(기능 function)의 단위입니다. 각 thread는 속해있는 process의 Stack 메모리를 제외한 나머지 memory 영역을 공유할 수 있습니다. Multi thread란 하나의 process가 동시에 여러개의 일을 수행할수 있도록 해주는 것입니다. 즉, 하나의 process에서(실행이 된 하나의 program에서) 여러 작업을 병렬로 처리하기 위해 multi thread를 사용합니다. multi thread에서는 한 process 내에 여러 개의 thread가 있고, 각 thread들은 Stack 메모리를 제외한 나머지 영역(Code, Data, Heap) 영역을 공유하게 됩니다. ..
Process & Thread 1 1. process를 간단히 설명해 주세요. 실행파일(program)이 memory에 적재되어 CPU를 할당받아 실행되는 것을 process라고 합니다. 2. process의 memory영역(code, data, stack, heap)에 대해서 설명해 주세요. 프로세스가 운영체제에서 할당받는 메모리 공간은 code, data, stack, heap 영역으로 구분됩니다. code 영역은 실행한 프로그램의 코드가 저장되는 메모리 영역입니다. data 영역은 프로그램의 전역 변수와 static 변수가 저장되는 메모리 영역입니다. heap 영역은 프로그래머가 직접 공간을 할당(malloc)/해제(free) 하는 메모리 영역입니다. stack 영역은 함수 호출 시 생성되는 지역 변수와 매개 변수가 저장되는 임시 ..
OAuth 1. OAuth란? 인터넷 사용자들이 비밀번호를 제공하지 않고, 다른 웹사이트 상의 자신들의 정보에 대해 웹사이트나 애플리케이션의 접근 권한을 부여할 수 있는 공통적인 수단으서 사용되는, 접근 위임을 위한 개방형 표준 → 페이스북, 구글, 카카오 로그인 등의 외부 서비스의 로그인 방식으로 인증하는 방법 2. OAuth 참여자 Resource Server 클라이언트가 제어하고자 하는 자원을 보유하는 서버 Facebook, Google, Kakao Resource Owner 자원의 소유자(유저) Client 서비스를 통해 로그인하는 실제 유저 Client Resource Server에 접속해서 정보를 가져오고자 하는 클라이언트(웹 어플리케이션) 내 서비스 3. OAuth 구현 방법 DB 테이블에 OAuth와..
쿠키(cookie), 세션(session), JWT 1. 쿠키 1. 쿠키란? 클라이언트가 어떤 웹사이트를 방문할 경우, 그 사이트가 사용하고 있는 서버를 통해 클라이언트의 브라우저에 설치되는 작은 기록 정보 파일 무상태 환경에서 기록하고자 하는 데이터를 쿠키에 담고, 다음 번 요청 시에 쿠키를 요청에 담아 보냄으로써 무상태를 극복 2. 쿠키 인증 과정 사용자의 로그인 요청 로그인 성공 시, 서버는 쿠키를 생성 쿠키에 회원 정보를 담아 응답 사용자는 브라우저 저장소에 쿠키를 저장 다음 번 요청 , 쿠키를 요청에 함께 전달 서버는 쿠키를 보고 유저를 확인하고 응답 3. 쿠키 단점 보안에 취약함 요청 시 쿠키의 값을 그대로 보내기 때문에 개인 정보가 외부에 노출 유출 및 조작 당할 위험 존재 브라우저 간 공유 불가능 웹 브라우저마다 쿠키에 대한 지원 형태가 다..
인증 & 인가 1. 인증 & 인가 1. 인증 유저가 누구인지 확인하는 절차 EX) 로그인 2. 인가 유저에 대한 권한을 허락하는 것 EX) 관리자, 회원 판별 2. 로그인 방식 1. HTTP 무상태성 클라이언트에 대한 이전 상태 정보 및 현재 통신 상태가 남아있지 않기 때문에 로그인한 유저 정보를 유지하기 위한 여러 방법들이 고안되었음 2. 세 가지 로그인 방식 쿠키 & 세션 JWT OAuth
Hash Table & BST 1. BST는 어떤 자료구조 인가요? 이진탐색트리(Binary Search Tree; BST)는 정렬된 tree입니다. 어느 node를 선택하든 해당 node의 left subtree에는 그 node의 값보다 작은 값들을 지닌 node들로만 이루어져 있고, node의 right subtree에는 그 node의 값보다 큰 값들을 지닌 node들로만 이루어져 있는 binary tree입니다. 검색과 저장, 삭제의 시간복잡도는 모두 O(logn)이고, worst case는 한쪽으로 치우친 tree가 됐을 때 O(n)입니다. 2. 이진트리(Binary tree)는 어떤 자료구조 인가요? 모든 node의 child nodes의 갯수가 2 이하인 트리를 이진 트리라고 합니다. 3. BST의 worst case 시간..
Queue & Stack 1. Queue는 무슨 자료구조 인가요? queue는 선입선출 FIFO(First In First Out)의 자료구조입니다. 시간 복잡도는 enqueue O(1), dequeue O(1) 입니다. 활용 예시는 Cache구현, 프로세스 관리, 너비우선탐색(BFS) 등이 있습니다. 2. Array-Base 와 List-Base의 경우 어떤 차이가 있나요? Array-Base의 경우 queue는 circular queue로 구현하는 것이 일반적입니다. 이는 메모리를 효율적으로 사용하기 위함입니다. 또한, enqueue가 계속 발생하면 fixed size를 넘어서게 되기 때문에, dynamic array와 같은 방법으로 Array의 size를 확장시켜야 합니다. 그럼에도 enqueue의 시간복잡도는 (amort..
Array & Linked List 1. Array는 어떤 자료구조 인가요? Array는 연관된 data를 메모리상에 연속적이며 순차적으로 미리 할당된 크기만큼 저장하는 자료구조 입니다. 2. 미리 예상한 것보다 더 많은 수의 data를 저장하느라 Array의 size를 넘어서게 됐습니다. 이 때, 어떻게 해결할 수 있을까요? 기존의 size보다 더 큰 Array를 선언하여 데이터를 옮겨 할당합니다. 모든 데이터를 옮 겼다면 기존 Array는 메모리에서 삭제하면 됩니다. 이런식으로 동적으로 배열의 크기를 조절하는 자료구조를 Dynamic array라고 합니다. 3. Dynamic Array는 어떤 자료구조 인가요? Array의 경우 size가 고정되었기 때문에 선언시에 설정한 size보다 많은 갯수의 data가 추 가되면 저장할 수 없습니..