[99클럽 면접 스터디 TIL 1일차] 동시성 문제 해결
·
CS/TIL
Q. 동시성 문제란 무엇이며, 이를 해결하기 위한 기본적인 전략을 설명해주세요. 실제 운영 환경에 적용한 사례가 있다면 함께 설명해 주어도 좋습니다. ✅ 동시성 문제란?동시성 문제(Concurrency Issue)란 여러 스레드가 동시에 동일한 자원에 접근하거나 수정하려고 할 때 발생하는 문제입니다.멀티스레드 환경에서 자주 나타나며, 잘못된 동작이나 비정상 종료로 이어질 수 있습니다.❗️대표적인 동시성 문제 유형 문제 유형 설명 Race Condition 두 스레드가 동시에 자원에 접근하여 실행 순서에 따라 결과가 달라지는 현상Deadlock서로의 자원을 기다리며 무한 대기하는 상태Livelock서로 양보만 하다가 진전 없이 루프를 반복하는 상태Starvation특정 스레드가 자원 접근 기회를 계속 박탈..
[자료구조] 스택 vs 큐
·
CS/자료구조 & 알고리즘
스택(Stack) 입력과 출력이 방향이 한 곳으로 제한이 되며, 후입선출(LIFO, Last In First Out) 원칙을 가지고 있습니다. 스택의 사용 예시 1. 웹 브라우저 방문기록(뒤로 가기) : 가장 나중에 열린 페이지부터 다시 보여주는 형식으로 스택 구현 2. 역순 문자열 만들기 : 가장 나중에 실행된 것부터 실행을 취소한다 3. 후위 표기법 계산 4. 수식의 괄호 검사 (연산자 우선순위 표현을 위한 괄호 검사)  스택(Stack) 코드 예시 데이터 넣을 때는 push()데이터 최상위 값을 뺄 때는 pop()비어있는 지 확인하고자 한다면 isEmpty()꽉차있는 지 확인하고자 한다면 isFull()  push와 pop할 때는 해당 위치를 알고 있어야 하므로 기억하고 있는 '스택 포인터(SP)'..
[자료구조] Array, Array List, Linked List
·
CS/자료구조 & 알고리즘
배열(Array) 배열은 메모리 상에서 연속적 데이터를 저장합니다. 또한, 인덱스와 번호에 대응하는 데이터로 이루어져 있습니다.배열에는 데이터들이 순차적으로 저장되어 값의 번호가 곧 배열의 시작점으로부터 값이 저장되어 있습니다.첫 번째 값의 인덱스는 0으로 시작하고 마지막 값은 배열의 길이 - 1까지의 인덱스 번호로 되어 있습니다.   Array List 배열과 같은 순차리스트이며 인덱스를 내부의 객체를 관리한다는 점은 유사합니다.하지만 한번 생성되면 크기가 변하지 않는 배열(Array)와 달리ArrayList는 객체들이 추가되어 저장 용량을 초과한다면 자동으로 부족한 크기만큼 저장 용량이 늘어납니다.  연결 리스트(Linked List) 연속적인 메모리 위치에 저장되지 않는 선형 데이터 구조를 말합니다..
[Algorithm] 선택 정렬(Selection Sort)
·
CS/자료구조 & 알고리즘
선택 정렬 선택 정렬(Selection Sort)는 버블 정렬(Bubble Sort)와 유사한 알고리즘으로,해당 순서에 원소를 넣을 위치는 이미 정해져 있고, 어떤 원소를 넣을지 선택하는 알고리즘입니다. 선택 정렬과 삽입 정렬(Insertio Sort)과 헷갈려할 수 있는데,선택 정렬은 배열에서 해당 자리를 선택하고 그 자리에 오는 값을 찾는 것이라고 생각하면 편하다. Process (Ascending) 1. 주어진 배열 중에 최소값을 찾는다.2. 그 값을 맨 앞에 위치한 값과 교체한다. (Pass)3. 맨 처음 위치를 뺀 나머지 배열을 같은 방법으로 교체한다.Java Code (Ascending) void selectionSort(int[] arr){ int indexMin, temp; for(..
[Algorithm] 거품 정렬 (Bubble Sort)
·
CS/자료구조 & 알고리즘
거품 정렬(Bubble Sort) 거품 정렬(Bubble Sort)은 선택 정렬(Selection Sort)과 유사한 알고리즘으로,서로 인접한 두 원소의 대소를 비교하고, 조건에 맞지 않는다면 자리를 교환하면 정렬하는 알고리즘입니다. 이름의 유래로는 정렬 과정에서 원소의 이동이 거품이 수면으로 올라오는 듯한 모습을 보이기 때문에 지어졌다고 합니다.   Process(Ascending) 1. 1회전에서 첫 번째 원소와 두 번째 원소를,두 번째 원소와 세 번째 원소를,세 번째 원소와 네 번째 원소를, ...이런 식으로 (마지막-1)번째 원소와 마지막 원소를 비교하여조건에 맞지 않는다면 서로 교환합니다.  2. 1회전을 수행하고 나면 가장 큰 원소가 맨 뒤로 이동합니다.2회전에서는 맨 끝에 있는 원소는 정렬에..