개발자23 [개발자 기술 면접 대비] 📦 허프만 코딩(Huffman Coding)이란? 문자의 등장 빈도를 기반으로 데이터를 압축하는 대표적인 손실 없는 압축 알고리즘입니다.1️⃣ 개념 요약자주 등장하는 문자에는 짧은 이진 코드,드물게 등장하는 문자에는 긴 이진 코드를 부여하여전체 메시지의 평균 길이를 최소화하는 것이 목표입니다.이 방식을 통해 데이터를 효율적으로 저장하거나 전송할 수 있습니다.2️⃣ 동작 원리각 문자와 빈도 수(가중치)를 기반으로 노드를 생성가장 낮은 빈도를 가진 두 노드를 하나의 부모 노드로 합침이 과정을 반복하여 하나의 이진 트리(허프만 트리)를 생성왼쪽 경로에는 0, 오른쪽 경로에는 1을 부여하여 각 문자에 대한 코드 생성3️⃣ 주요 특징특징 설명✅ 접두부 코드 (Prefix Code)어느 한 코드도 다른 코드의 접두어가 될 수 없음 → 디코딩 시 혼동 없음✅ 최적 .. 2025. 7. 25. [개발자 기술 면접 대비] 📚 선형 구조 자료형에서의 가산성과 동차성 선형 구조 자료형(Linear Data Structures)에서는 데이터가 나열된 순서와 추가/삭제 방식에 따라 성질이 달라집니다.이때 중요한 개념이 바로 가산성(Accretion)과 동차성(Order Sensitivity)입니다.1️⃣ 가산성 (Accretion / Aggregation)✔️ 정의각 요소를 독립적으로 추가하거나 삭제할 수 있는 성질즉, 하나의 원소를 추가하거나 제거해도 다른 원소에 영향을 주지 않는 구조를 의미합니다.구성 요소들이 자유롭게 존재할 수 있는 구조라고 볼 수 있어요.🧪 예시리스트 (List)중간에 데이터를 자유롭게 삽입하거나 삭제 가능큐 (Queue)앞뒤 요소가 서로 독립적으로 존재하며 삽입/삭제됨2️⃣ 동차성 (Order Sensitivity / Homogeneity)✔.. 2025. 7. 25. [개발자 기술 면접 대비] 🌳 검색 자료구조로서 해시 테이블과 이진 탐색 트리 비교 검색(탐색)을 위한 대표적인 자료구조는 Hash Table과 Binary Search Tree (BST)입니다.이 두 구조는 각기 다른 방식으로 데이터를 저장하고 찾습니다.1️⃣ 핵심 비교표항목 해시 테이블 (Hash Table) 이진 탐색 트리 (Binary Search Tree, BST)구조배열 기반 + 해시 함수 사용노드 기반 트리 구조키 기준해시 함수로 인덱스 계산노드의 값 대소 비교탐색 방식key → hash → 인덱스 → 버킷 탐색루트부터 대소 비교하며 좌/우로 이동시간복잡도 (탐색)평균 O(1), 최악 O(n)평균 O(log n), 최악 O(n)정렬 여부❌ 정렬되지 않음✅ 항상 정렬된 상태 유지범위 검색어려움효율적 (예: x > 10 검색)공간 효율배열 공간 낭비 가능노드 기반, 동적 구조활.. 2025. 7. 25. [개발자 기술 면접 대비] 🧩 Hash 충돌 시 내부 데이터 탐색은 어떻게 이루어질까? 1️⃣ 해시 함수란?임의의 크기를 가진 키(key)를 고정된 크기의 해시값(정수 인덱스)로 변환해주는 함수key → hash(key) → index 형태로 해시 테이블의 위치를 결정2️⃣ 해시 충돌이란?서로 다른 키가 같은 해시값(인덱스)을 가질 때 발생하는 현상예시:hash("apple") % 10 == 3 hash("banana") % 10 == 3 # → 충돌 발생두 키 모두 인덱스 3번에 저장되려고 할 때 → 충돌 해결 필요3️⃣ 충돌 해결 방법 & 내부 탐색 방식✅ [1] Chaining 방식 (Separate Chaining)충돌된 데이터를 같은 인덱스의 연결 리스트(또는 트리)에 차곡차곡 저장탐색 시 해당 인덱스에 있는 리스트를 순차적으로 순회하면서 key를 비교table[3] = [(".. 2025. 7. 25. [개발자 기술 면접 대비] 🔄 I/O와 Non-blocking I/O의 차이 네트워크 프로그래밍, 시스템 설계, 백엔드 개발 면접에서 자주 나오는 질문Blocking I/O와 Non-blocking I/O는 어떻게 다를까?1️⃣ I/O란?I/O는 Input/Output의 줄임말로,프로그램이 외부 장치(디스크, 네트워크, 키보드 등)와 데이터를 주고받는 모든 행위를 말합니다.예:파일 읽기사용자 입력 받기서버로부터 응답 받기2️⃣ Blocking I/O vs Non-blocking I/O구분 Blocking I/O Non-blocking I/O (N/I/O)동작 방식요청을 보내면 작업이 끝날 때까지 기다림요청을 보내면 바로 리턴, 결과는 나중에 확인흐름 제어함수 호출이 완료될 때까지 다음 코드 실행 X함수 호출 직후 다음 코드 실행 가능코드 흐름단순하고 직관적복잡하지만 유연함병렬성낮.. 2025. 7. 25. [개발자 기술 면접 대비] 🧠 메모리 구조의 네 가지 영역 설명 프로그램이 실행되기 위해서는 메모리에 적절히 로드되어야 하며,운영체제는 실행을 위해 RAM 내부를 네 가지 영역으로 나누어 관리합니다.이 네 가지는 바로 Code, Data, Heap, Stack 영역입니다.1️⃣ Code 영역기계어로 번역된 코드(함수, 명령어 등)가 저장되는 공간보통 읽기 전용으로 되어 있어 수정이 불가능CPU가 직접 이 영역을 읽어 명령을 실행🧩 예: C, Python 등에서 작성한 함수들의 기계어 코드2️⃣ Data 영역프로그램 실행 중 사용되는 전역 변수(Global variable) 및 정적 변수(Static variable)가 저장됨프로그램이 시작될 때 할당, 종료 시 해제초기화된 데이터와 초기화되지 않은 데이터를 나누어 관리하기도 함🧩 예: static int count.. 2025. 7. 25. 이전 1 2 3 4 다음