CS 37
TMap을 std::map에 대응시켜 이해하고 있었는데 답변으로 정리하다 그 대응이 틀렸다는 게 드러났다. 자료구조·복잡도·순회 순서·메모리 레이아웃·균형 규칙 다섯 축으로 갈라 비교했다.
두 주제를 한 번에 발표하려면 잇는 문장이 필요했다. 같은 용어를 두 번 정의하지 않는 구성과, 이어 본 최종 테스트에서 답은 맞았지만 근거가 부실했던 지점을 다시 채운 기록.
차이를 설명하려 하면 막히는 주제. 주소 공간과 레지스터 폭 두 축으로 가르고, 거기서 이어지는 메모리 계층 — 레지스터에서 디스크까지 왜 층을 쌓는가 — 를 한 축 위에 놓았다.
외부 단편화를 없애면 내부 단편화가 생기고, 내부를 없애면 메타데이터 비용이 붙는다. 두 단편화가 각각 누구의 공간을 못 쓰게 만드는지, Paging이 무엇을 대신 받아들였는지.
답변 흐름 — 정의(공유 자원 + 동시 접근 + 비결정성) → Critical Section → 동기화 객체 카탈로그(Mutex·Semaphore·Critical Section·SRWLock·Event·
답변 흐름 — 왜 IPC가 필요한가(주소 공간 격리) → 분류축 3개 → 파이프·메시지 큐·공유 메모리·동기화 객체·시그널·소켓·RPC/COM → 비용·보안 트레이드오프 → 언리얼 적용
IPC 모의면접 직후 나온 후속 질문 — 소켓이란 무엇인가 — 를 결론 → 흐름 → 표 → 코드 → 면접 답변 순으로 정리한 노트.
적이 나를 봤는가, 내가 적의 왼쪽에 있는가 — 두 판정은 각각 내적과 외적 하나로 끝난다. 각도를 방향 벡터로 바꾸는 삼각함수부터 RPG 시야각 판정 적용까지.
답변 흐름 — 정의·발생 시점 → PCB/TCB 저장·복원 → 모드 스위치 ≠ 컨텍스트 스위치 → 비용 요소(캐시 flush·TLB flush·파이프라인 정지) → 프로세스 vs 스레드 비용 차까지
Context Switching 모의면접 직후 나온 후속 질문 5개 — 인터럽트·PCB·레지스터·캐시 히트율·메모리 계층을 결론→근거→예시 순으로 정리한 노트
답변 흐름 — 발생 메커니즘 → 4가지 원인(무한 재귀·깊은 재귀·거대 지역 변수·상호 호출) → 플랫폼별 스택 크기 → 해결 5가지(종료 조건·반복문·메모이제이션·TCO·명시적 스택)
문서가 여덟 페이지로 늘자 어느 개념이 어디에 붙는지 안 보였다. 문서를 그래프로 바꿔 연결이 가장 많은 허브 개념과 함께 공부해야 할 묶음, 원문에 없던 연결까지 드러낸 기록.
답변 흐름 — 메모리 구조 → 컨텍스트 스위칭 비용 → IPC vs 공유 메모리 → 동기화 → 멀티프로세스/멀티스레드 선택 → 게임 스레드/렌더 스레드
답변 흐름 — iterator 카테고리 → 알고리즘 선택 → 노드 재연결 vs 데이터 이동 → stable 여부 → forward_list·set/map::find 패턴까지
답변 흐름 — 정렬 전제 → 시간복잡도 → 반환 타입 차이 → lower_bound·equal_range → set/map 멤버 함수 vs 알고리즘 꼬리질문 연결 다리
답변 흐름 — 모의면접 다음 주제: 'C++ 표준 라이브러리(STL) 기준 컨테이너에 대해서 설명해 주세요'
답변 흐름 — 모의면접 다음 주제: '`vector` 의 `push_back` 과 `emplace_back` 의 차이점에 대해 설명해 주세요'
답변 흐름 — `15_1_vector_vs_hash_concepts.md` 의 후속편. 해시 테이블이 내부적으로 어떻게 크기를 관리하고, 언제 비싼 rehash가 일어나는지 정리
답변 흐름 — `15_pushback_vs_emplaceback.md` 를 읽으며 나온 질문들을 모아 정리한 보충 파일.
'적을 향해 초속 300으로 이동'을 코드로 옮기려면 방향과 속도를 분리해야 하고 그게 정규화다. y-up·y-down 좌표계 차이부터 √를 걷어낸 사거리 판정까지 손계산으로 확인했다.
답변 흐름 — 모의면접 후속 주제: '`std::map`은 어떻게 동작하나요? `unordered_map`과 어떻게 다른가요?'
답변 흐름 — std::map(cs-14) 모의면접 직후 나온 후속 질문 16개를 1:1로 정리한 노트.
답변 흐름 — 메모리 레이아웃 → 시간 복잡도 함정 → **CPU 캐시(★ 핵심)** → iterator 무효화/예외 안전성 → 언제 list를 써야 하나 → 언리얼 TArray 매핑
답변 흐름 — 단독 소유 자원 → `= delete` / `private` / `noncopyable` → Rule of Three/Five/Zero → move-only(`unique_ptr`) → 슬라이싱 → virtual 소멸자 꼬리질문 연결
답변 흐름 — RAII → unique_ptr / shared_ptr / weak_ptr → 참조 카운팅 → 순환 참조 → virtual 소멸자 → vtable 꼬리질문 연결 다리
답변 흐름 — 포인터·레퍼런스(cs-07) 기반 심화 노트
답변 흐름 — RAII → 스마트 포인터 → virtual 소멸자 → vtable 꼬리질문 연결 다리
답변 흐름 — 오늘 모의면접에서 막힌 질문들을 정리한 심화 파일
포인터는 주소를 담는 변수, 레퍼런스는 별칭 — 문법 차이부터 함수 인자 선택 기준, 언리얼 TObjectPtr까지 답변 흐름 정리
기반 클래스 포인터로 delete할 때 파생 소멸자가 안 불리는 이유와 virtual 소멸자가 필요한 조건 정리
vtable과 vptr, 동적 디스패치의 동작 원리를 면접 답변 흐름으로 정리
OOP 4대 원칙과 SOLID를 C++ 문법과 짝지어 면접 답변 흐름으로 정리
new와 malloc의 차이를 30초 답변 + 꼬리질문 브랜치로 정리
class와 struct의 두 가지 기능 차이와 꼬리물기 질문 대비 정리
컴파일 타임과 런타임의 차이, RTTI와 런타임 에러를 면접 답변 흐름으로 정리
한 클래스에 다 몰아넣으면 기능 하나 고칠 때마다 전체를 다시 읽어야 한다. 단일 책임 원칙으로 경계를 먼저 긋고, 그 위에 vector·map으로 창고와 레시피를 얹은 구현.
배열·포인터로 상태창을 만들고, 상속·다형성으로 전투를 얹고, 템플릿과 직접 짠 동적 배열로 인벤토리를 만드는 3단 구성. 한글 깨짐·LNK2019 같은 빌드 트러블슈팅까지.