Theory(4)
-
HashMap의 내부 동작 원리와 시간 복잡도
HashMap이 뭔지 확실히 알았다BST를 공부하다가 HashMap을 비교하는 질문이 나와서 공부하게 됐다.Key-Value 저장 방식전화번호부를 떠올려보면 이해하기 쉽다.이름(Key) → 전화번호(Value)"철수" → "010-1234-5678""영희" → "010-9876-5432""민수" → "010-5555-6666"사물함에 비유해봤다:사물함 번호만 알면 바로 찾을 수 있다다른 사물함을 하나씩 열어볼 필요가 없다해시 함수라는 게 핵심이었다해시 함수의 역할을 이해했다"Key를 숫자로 바꾸는 마법"Key 해시 함수 숫자(인덱스)"철수" ─────────→ 3"영희" ─────────→ 7"민수" ─────────→ ..
2026.02.02 -
이진 탐색 트리(BST)와 균형 이진 탐색 트리
트리(Tree)부터 이해하기면접 준비하면서 BST를 공부하게 됐는데, 트리가 뭔지는 알고 있었지만 기초개념부터 정리했다.트리가 뭔지?가계도를 떠올려보니 이해가 쉬웠다. 할아버지 / \ 아버지 삼촌 / \ / \나 동생 사촌1 사촌2트리 용어들을 정리해봤다:루트(root): 최상위 노드 (할아버지)부모(parent): 바로 위 노드자식(child): 바로 아래 노드잎(leaf): 자식이 없는 노드높이(height): 루트에서 가장 먼 잎까지의 거리이진 트리는 뭔가?이진 = 두 갈래. 각 노드가 최대 2개의 자식만 가질 수 있다. 10 / \ 5 15 / \3 7이진 탐색 트리(BST) 공부하기BST의 핵심 규칙을 알게 됐다왼쪽 이..
2026.02.02 -
웹 서버 동작 원리
시작하며나는 컴퓨터공학을 전공하지 않았다. 그래서 CS 지식이 부족한 편인데, 이번 기회에 웹 서버 어플리케이션의 작동 방식을 제대로 정리해보기로 했다. 특히 내가 주로 사용하는 NestJS와, 많은 기업에서 사용하는 Spring Boot의 차이를 깊이 이해하고 싶었다.HTTP나 라우팅 같은 개념은 이미 알고 있었지만, 왜 Node.js는 싱글 스레드인데 동시에 여러 요청을 처리할 수 있는지, Spring Boot는 왜 멀티 스레드를 사용하는지에 대한 근본적인 이해가 부족했다.이 글에서는 그 의문을 해결하는 과정에서 배운 CS 기초 개념들을 정리했다.1. 프로세스와 스레드프로세스란?실행 중인 프로그램이다. 디스크에 저장된 프로그램 파일을 실행하면 메모리에 로드되는데, 이게 프로세스다.[디스크의 프로그램]..
2026.01.29 -
메모리 계층 구조
개념메모리는 성능과 용량의 균형을 맞추기 위해 계층구조로 설계된다.데이터 처리 속도와 저장 속도의 차이를 극복하기 위해 빠른메모리(레지스터, 캐시) ↔ 느린메모리(RAM, SSD/HDD)를 조합하여 효율적으로 운영한다.계층속도용량역할위치레지스터(Register)매우 빠름매우 작음CPU 연산을 위한 임시저장CPU 내부캐시(cache)매우 빠름작음자주 사용되는 데이터 저장CPU와 RAM사이(L1 - L3)RAM빠름중간실행 중인 프로그램 및 데이터 저장CPU 외부SSD / HDD느림큼영구적인 데이터 저장CPU 외부메모리 계층구조(빠른순서) 캐시 메모리캐시 메모리 (Cache Memory)는 CPU와 RAM 사이에 위치하여 자주 사용하는 데이터를 저장하고 빠르게 접근할 수 있도록 하는 고속 메모리이다.CPU가 ..
2025.12.12