ARCHITECTURE · 수 표현과 비트 연산
2의 보수
부호 있는 정수를 표현할 때 음수를 나타내는 널리 쓰이는 방식입니다.
예시8비트에서 −1은 모든 비트가 1인 11111111입니다.
CHECK · 0이 하나뿐이고 덧셈 회로를 공유할 수 있다.NETWORKS · TCP/IP와 계층
계층화
통신 기능을 역할별 층으로 나눠 각 층이 아래 층 서비스를 이용하게 하는 설계입니다.
예시HTTP는 전달 방식의 세부 사항 대신 TCP/QUIC가 제공하는 전송을 이용합니다.
CHECK · 상위 계층은 하위 구현을 완전히 알 필요가 없다.DISCRETE MATH · 경우의 수와 조합
곱셈 법칙
단계 A의 선택 수와 단계 B의 선택 수를 곱해 전체 경우의 수를 구하는 원리입니다.
예시셔츠 3개와 바지 2개는 3×2=6가지 조합입니다.
CHECK · 각 단계가 순서대로 모두 일어날 때 곱한다.ALGORITHMS · 시간 복잡도와 점근 표기
공간 복잡도
입력 외에 알고리즘이 추가로 사용하는 메모리의 성장률입니다.
예시길이 n의 보조 배열을 만들면 보통 O(n) 추가 공간입니다.
CHECK · 시간과 공간을 함께 비교한다.SYSTEMS · 파일 시스템과 권한
권한
소유자·그룹·그 외 사용자에게 읽기(r)·쓰기(w)·실행(x)를 나누어 허용하는 규칙입니다.
예시rwxr-x---는 소유자는 모두, 그룹은 읽기·실행만 가능합니다.
CHECK · 디렉터리의 x는 진입·탐색 권한이다.DISCRETE MATH · 재귀와 귀납적 사고
귀납법
기본 단계가 맞고 n에서 맞다면 n+1에서도 맞음을 보여 모든 자연수에서 성립하게 하는 증명입니다.
예시반복문 불변식을 증명할 때도 비슷한 사고를 씁니다.
CHECK · 가정과 증명해야 할 다음 단계를 분리한다.ALGORITHMS · 그래프 탐색과 최단 경로
그래프
정점과 정점 사이의 간선으로 관계를 표현하는 구조입니다.
예시친구 관계, 지하철 노선, 웹 페이지 링크를 그래프로 모델링합니다.
CHECK · 방향·가중치 유무를 먼저 확인한다.DATABASE · 관계형 모델과 정규화
기본 키
각 행을 유일하게 식별하는 값입니다.
예시student_id가 같으면 같은 학생 행을 가리켜야 합니다.
CHECK · 이름은 중복될 수 있으므로 좋은 기본 키가 아닐 수 있다.DISCRETE MATH · 재귀와 귀납적 사고
기저 사례
재귀 호출을 멈추고 답을 바로 반환하는 가장 작은 문제입니다.
예시factorial(0)=1을 정하지 않으면 factorial(1)이 끝나지 않습니다.
CHECK · 기저 사례 누락은 무한 재귀로 이어진다.DISCRETE MATH · 명제 논리와 조건
대우
p → q의 대우는 ¬q → ¬p이며 원래 명제와 항상 같은 진리값을 가집니다.
예시‘정사각형이면 직사각형’의 대우는 ‘직사각형이 아니면 정사각형이 아니다’입니다.
CHECK · 역과 이는 원명제와 동치가 아닐 수 있다.SYSTEMS · 프로세스와 스레드
동기화
공유 자원에 접근하는 순서를 조절해 결과가 우연에 따라 바뀌지 않게 하는 것입니다.
예시count++는 읽기·증가·쓰기 단계로 나뉘므로 동시에 실행하면 값 하나가 사라질 수 있습니다.
CHECK · 원자성·뮤텍스·세마포어의 필요성을 연결한다.SYSTEMS · 파일 시스템과 권한
디렉터리
파일 이름을 파일 메타데이터로 연결하는 항목들의 집합입니다.
예시이름을 바꿔도 같은 데이터 블록을 가리킬 수 있습니다.
CHECK · 디렉터리도 파일의 한 종류다.SYSTEMS · CPU 스케줄링
라운드 로빈
준비 큐의 작업에 일정 시간 할당량을 순서대로 주는 선점형 알고리즘입니다.
예시q=4ms라면 A→B→C를 각 4ms씩 실행하고 남은 작업을 뒤로 보냅니다.
CHECK · q가 너무 작으면 문맥 교환 비용이 커진다.ARCHITECTURE · CPU와 명령어 사이클
레지스터
CPU 안에 있는 매우 빠르고 작은 저장 공간입니다.
예시연산할 피연산자와 중간 결과를 레지스터에 두면 RAM 접근보다 빠릅니다.
CHECK · 레지스터 수와 크기는 제한적이다.ARCHITECTURE · 캐시와 메모리 계층
메모리 계층
레지스터·캐시·RAM·보조 저장장치는 속도·용량·가격이 다른 계층을 이룹니다.
예시가까운 레지스터는 매우 빠르지만 작고, SSD는 크지만 훨씬 느립니다.
CHECK · 속도와 용량은 보통 반대 방향으로 움직인다.NETWORKS · HTTP 메서드와 상태 코드
멱등성
같은 요청을 여러 번 해도 의도된 최종 상태가 한 번 실행한 것과 같은 성질입니다.
예시PUT으로 학생 이름을 ‘민수’로 설정하는 요청은 반복해도 결과가 같습니다.
CHECK · 재시도 설계와 연결한다.ARCHITECTURE · CPU와 명령어 사이클
명령어 사이클
명령어를 메모리에서 가져오고(fetch), 해석하고(decode), 실행(execute)하는 기본 흐름입니다.
예시ADD 명령은 피연산자를 읽고 ALU가 더한 뒤 결과를 저장합니다.
CHECK · 한 줄의 코드가 하나의 CPU 명령과 같지는 않다.DISCRETE MATH · 명제 논리와 조건
명제
참인지 거짓인지 분명하게 판별할 수 있는 문장입니다.
예시‘7은 홀수다’는 명제지만 ‘맛있는 점심’은 기준이 없어 명제가 아닙니다.
CHECK · 의문문·명령문·주관적 평가는 보통 명제가 아니다.SYSTEMS · CPU 스케줄링
문맥 교환
실행 중인 작업의 레지스터·프로그램 카운터 상태를 저장하고 다음 작업의 상태를 복원하는 과정입니다.
예시스레드 전환도 비용이 0은 아닙니다.
CHECK · 공정성과 오버헤드의 거래 관계를 기억한다.ALGORITHMS · 배열·연결 리스트·스택·큐
배열
연속된 인덱스로 원소에 접근하는 자료구조입니다.
예시arr[500]처럼 위치를 아는 접근은 빠르지만 중간 삽입은 뒤 원소를 밀 수 있습니다.
CHECK · 인덱스 접근 O(1)을 기억한다.ARCHITECTURE · 수 표현과 비트 연산
비트 연산
AND, OR, XOR, NOT처럼 각 비트 자리끼리 수행하는 연산입니다.
예시권한 플래그에서 AND 마스크로 특정 권한이 켜졌는지 검사합니다.
CHECK · XOR은 서로 다를 때 1이다.NETWORKS · DNS와 HTTP 요청
상태 없음
HTTP 자체는 이전 요청의 기억을 자동으로 이어 가지 않는 성질입니다.
예시로그인 상태는 쿠키·세션·토큰 같은 별도 장치로 연결합니다.
CHECK · 무상태와 무세션은 같은 말이 아니다.NETWORKS · HTTP 메서드와 상태 코드
상태 코드
응답이 정보·성공·리다이렉션·클라이언트 오류·서버 오류 중 어디에 속하는지 나타냅니다.
예시존재하지 않는 경로는 보통 404, 인증이 안 된 요청은 401/403을 고려합니다.
CHECK · 400과 500의 책임 주체를 구분한다.SYSTEMS · CPU 스케줄링
선점
운영체제가 실행 중인 작업의 CPU를 빼앗아 다른 작업에 넘길 수 있는 성질입니다.
예시긴 계산을 하는 프로그램이 있어도 UI가 멈추지 않게 합니다.
CHECK · 선점형은 반응성을 높일 수 있다.DATABASE · 인덱스와 트랜잭션
선택도
조건이 전체 행 중 얼마나 적은 행을 골라내는지와 관련된 특성입니다.
예시성별처럼 값 종류가 매우 적은 열은 단독 인덱스 효과가 작을 수 있습니다.
CHECK · 실제 쿼리와 데이터 분포를 본다.DISCRETE MATH · 경우의 수와 조합
순열
서로 다른 n개 중 r개를 순서 있게 고르는 경우의 수입니다.
예시금·은·동 3명을 5명 중에서 뽑는 것은 순서가 중요합니다.
CHECK · nPr = n!/(n-r)!SYSTEMS · 프로세스와 스레드
스레드
프로세스 내부에서 CPU가 명령을 실행하는 흐름입니다. 같은 프로세스의 코드·힙을 공유하지만 각자 스택과 레지스터 상태를 가집니다.
예시채팅 앱은 화면 갱신 스레드와 네트워크 수신 스레드를 둘 수 있습니다.
CHECK · 공유 메모리는 빠르지만 경쟁 상태를 만들 수 있다.ALGORITHMS · 배열·연결 리스트·스택·큐
스택·큐
스택은 LIFO, 큐는 FIFO 규칙으로 출입구를 제한한 선형 구조입니다.
예시함수 호출은 스택, BFS의 방문 대기는 큐로 모델링합니다.
CHECK · 문제의 ‘순서 규칙’에서 고른다.SYSTEMS · 메모리와 가상 메모리
스택과 힙
스택은 함수 호출·지역 변수처럼 순서가 뚜렷한 데이터를, 힙은 실행 중 필요한 크기로 할당하는 데이터를 주로 담습니다.
예시재귀 호출이 깊어지면 스택이, 해제하지 않는 객체가 쌓이면 힙이 문제가 됩니다.
CHECK · 스택 오버플로와 메모리 누수를 구분한다.ARCHITECTURE · 캐시와 메모리 계층
시간·공간 지역성
최근 쓴 데이터는 다시 쓸 가능성이 높고, 가까운 주소 데이터도 곧 쓸 가능성이 높다는 경향입니다.
예시반복문에서 같은 변수·인접 배열 원소를 계속 읽는 경우입니다.
CHECK · 캐시는 이 경향을 이용한다.NETWORKS · HTTP 메서드와 상태 코드
안전한 메서드
서버의 의도된 상태를 바꾸지 않는 메서드라는 HTTP 의미론의 구분입니다.
예시GET은 조회에 쓰며, 조회 버튼이 데이터를 삭제하면 안 됩니다.
CHECK · 안전과 보안은 다른 개념이다.ALGORITHMS · 배열·연결 리스트·스택·큐
연결 리스트
노드가 다음 노드를 가리켜 순서를 만드는 구조입니다.
예시삽입 위치 노드를 이미 알고 있으면 연결만 바꿔 빠르게 넣을 수 있습니다.
CHECK · 특정 위치 찾기는 O(n)이다.DATABASE · 관계형 모델과 정규화
외래 키
다른 테이블의 기본 키를 참조해 관계를 표현하는 열입니다.
예시enrollment.student_id가 student.id를 참조합니다.
CHECK · 존재하지 않는 학생의 수강 기록을 막을 수 있다.DATABASE · 백엔드 API 설계
요청 검증
API 경계에서 타입·범위·필수값·권한을 확인하는 처리입니다.
예시page는 1 이상 정수인지, limit은 최대값을 넘지 않는지 검사합니다.
CHECK · 오류 메시지는 사용자에게 안전하고 구체적이어야 한다.ALGORITHMS · 트리와 해시
이진 탐색 트리
각 노드의 왼쪽에는 더 작은 값, 오른쪽에는 더 큰 값을 두는 트리입니다.
예시균형이 잡히면 탐색 경로가 높이만큼이라 O(log n)을 기대합니다.
CHECK · 한쪽으로 치우치면 O(n)이 될 수 있다.DATABASE · 인덱스와 트랜잭션
인덱스
테이블 전체를 훑지 않고 원하는 행을 찾도록 만드는 보조 자료구조입니다.
예시학생 학번 조회가 많다면 student_id 인덱스를 검토합니다.
CHECK · 읽기는 빨라질 수 있지만 쓰기는 더 비싸진다.NETWORKS · 웹 보안의 기본
인증과 인가
인증은 ‘누구인가’를 확인하고, 인가는 ‘무엇을 해도 되는가’를 판단합니다.
예시로그인은 인증, 관리자만 성적을 수정하게 하는 것은 인가입니다.
CHECK · 둘을 같은 체크로 처리하지 않는다.ARCHITECTURE · 입출력과 인터럽트
인터럽트
장치가 처리할 일이 생겼을 때 CPU에 신호를 보내 현재 작업을 잠시 멈추게 하는 방식입니다.
예시네트워크 패킷이 도착하면 CPU가 필요한 처리 루틴으로 이동합니다.
CHECK · 인터럽트 처리 후 원래 작업으로 돌아간다.DISCRETE MATH · 집합·함수·관계
일대일·전사
일대일은 서로 다른 입력이 같은 출력으로 가지 않는 성질, 전사는 공역의 모든 원소가 적어도 하나의 입력과 연결되는 성질입니다.
예시좌석 번호를 학생에게 배정할 때 중복 없이 배정하면 일대일 관계를 기대합니다.
CHECK · 역함수 가능성은 일대일성과 연결된다.NETWORKS · 웹 보안의 기본
입력 검증
사용자가 보낸 값은 신뢰하지 않고 형식·범위·권한을 서버에서 확인하는 원칙입니다.
예시프론트엔드에서 버튼을 숨겨도 API의 권한 검증을 생략할 수 없습니다.
CHECK · 클라이언트 검증은 UX, 서버 검증은 보안이다.ALGORITHMS · 시간 복잡도와 점근 표기
입력 크기 n
알고리즘이 처리해야 하는 데이터 양을 나타내는 변수입니다.
예시학생 목록 탐색이라면 n은 학생 수가 될 수 있습니다.
CHECK · 실행 시간의 절대 초가 아니라 성장률을 본다.DATABASE · 백엔드 API 설계
자원 중심 URL
URL은 보통 동작이 아니라 관리 대상 명사를 표현하고, 동작의 의미는 HTTP 메서드로 전달합니다.
예시/courses/3/enrollments는 수강 관계 자원을 표현합니다.
CHECK · 동사 URL이 항상 틀린 것은 아니지만 의미를 먼저 정한다.DISCRETE MATH · 재귀와 귀납적 사고
재귀 관계
큰 문제의 해답을 더 작은 같은 종류의 문제 해답으로 표현한 규칙입니다.
예시factorial(n)=n×factorial(n−1)입니다.
CHECK · 문제 크기가 반드시 기저 사례로 가까워져야 한다.SYSTEMS · 파일 시스템과 권한
절대·상대 경로
절대 경로는 루트(/)부터, 상대 경로는 현재 작업 디렉터리 기준으로 위치를 표현합니다.
예시../logs는 한 단계 위 디렉터리의 logs를 뜻합니다.
CHECK · 현재 위치에 따라 상대 경로는 달라진다.DATABASE · 관계형 모델과 정규화
정규화
중복과 갱신 이상을 줄이기 위해 사실을 적절한 테이블로 분리하는 설계 과정입니다.
예시학생 이름을 수강 테이블마다 저장하면 이름 변경 때 여러 행을 고쳐야 합니다.
CHECK · 조회 요구가 강하면 의도적 비정규화도 검토한다.DISCRETE MATH · 명제 논리와 조건
조건명제
p이면 q이다(p → q)는 p가 참이고 q가 거짓일 때만 거짓입니다.
예시‘비가 오면 우산을 쓴다’에서 비가 안 오는 날은 약속을 어긴 반례가 아닙니다.
CHECK · p → q가 거짓인 경우는 하나뿐이다.DISCRETE MATH · 경우의 수와 조합
조합
서로 다른 n개 중 r개를 순서 없이 고르는 경우의 수입니다.
예시팀원 5명 중 2명을 뽑는 경우는 {A,B}와 {B,A}가 같습니다.
CHECK · nCr = nC(n-r)SYSTEMS · 메모리와 가상 메모리
주소 공간
프로세스가 자신만의 메모리처럼 보는 가상 주소의 범위입니다.
예시두 프로그램 모두 0x1000을 쓸 수 있지만 실제 RAM 위치는 다를 수 있습니다.
CHECK · 가상 주소와 물리 주소를 구분한다.ALGORITHMS · 시간 복잡도와 점근 표기
지배항
n이 충분히 커졌을 때 가장 크게 영향을 주는 항입니다.
예시3n² + 10n + 7은 n² 항이 지배하므로 O(n²)로 봅니다.
CHECK · 상수와 낮은 차수 항은 생략한다.ARCHITECTURE · 수 표현과 비트 연산
진법
자릿값이 밑(base)의 거듭제곱으로 커지는 수 표현 방식입니다.
예시1011₂ = 8+0+2+1 = 11₁₀입니다.
CHECK · 오른쪽부터 2⁰, 2¹, 2²를 대응한다.DISCRETE MATH · 집합·함수·관계
집합 연산
합집합은 어느 한쪽에 속한 원소, 교집합은 양쪽 모두에 속한 원소를 모읍니다.
예시동아리 A와 B의 공통 인원을 찾는 것은 A ∩ B입니다.
CHECK · 차집합 A − B는 A에만 있는 원소다.NETWORKS · 웹 보안의 기본
출력 인코딩
데이터를 HTML·URL·SQL 등 문맥에 맞게 안전하게 표현하는 처리입니다.
예시사용자 글을 HTML에 넣을 때 태그로 실행되지 않게 이스케이프합니다.
CHECK · 문자열 연결 SQL 대신 파라미터를 쓴다.ALGORITHMS · 트리와 해시
충돌 처리
같은 해시 값이 나왔을 때도 모든 키를 저장·검색하도록 하는 방법입니다.
예시체이닝은 한 버킷에 리스트를 두고, 개방 주소법은 다른 빈 칸을 찾습니다.
CHECK · 해시의 O(1)은 평균적 기대값이다.ARCHITECTURE · 캐시와 메모리 계층
캐시 미스
필요한 데이터가 캐시에 없어 더 느린 계층에서 가져와야 하는 상황입니다.
예시큰 배열을 불규칙한 순서로 접근하면 미스가 늘 수 있습니다.
CHECK · 알고리즘 복잡도가 같아도 체감 성능은 다를 수 있다.DATABASE · 인덱스와 트랜잭션
트랜잭션
여러 데이터 변경을 모두 성공시키거나 모두 취소하는 작업 단위입니다.
예시송금에서 출금만 성공하고 입금이 실패하면 안 됩니다.
CHECK · COMMIT 전 오류면 ROLLBACK을 고려한다.SYSTEMS · 메모리와 가상 메모리
페이지 폴트
요청한 가상 페이지가 현재 물리 메모리에 없어 운영체제가 가져와야 하는 상황입니다.
예시처음 큰 배열을 훑을 때 디스크나 스왑에서 페이지를 가져오느라 느려질 수 있습니다.
CHECK · 폴트는 오류가 아니라 처리 과정일 수 있다.DATABASE · 백엔드 API 설계
페이지네이션
많은 목록을 한 번에 보내지 않고 일정 단위로 나눠 조회하는 방식입니다.
예시GET /posts?page=2&limit=20처럼 범위를 전달합니다.
CHECK · 정렬 기준이 안정적이어야 중복·누락을 줄인다.ARCHITECTURE · 입출력과 인터럽트
폴링
CPU가 장치의 준비 상태를 반복적으로 확인하는 방식입니다.
예시키보드 입력이 왔는지 계속 물어보는 단순한 방식입니다.
CHECK · 단순하지만 CPU 시간을 낭비할 수 있다.ARCHITECTURE · CPU와 명령어 사이클
프로그램 카운터
다음에 실행할 명령어의 주소를 가리키는 레지스터입니다.
예시분기 명령을 만나면 PC가 다음 순차 주소 대신 목적지 주소로 바뀝니다.
CHECK · 반복·if의 흐름 제어와 연결한다.SYSTEMS · 프로세스와 스레드
프로그램 vs 프로세스
프로그램은 저장된 명령의 묶음이고, 프로세스는 운영체제가 실행 중인 프로그램에 메모리·파일·PID를 부여한 단위입니다.
예시같은 Chrome 앱을 창 두 개로 실행하면 하나 또는 여러 프로세스가 자원을 배정받아 동작합니다.
CHECK · 디스크의 파일 자체는 프로세스가 아니다.DISCRETE MATH · 집합·함수·관계
함수
정의역의 각 원소에 공역의 원소 하나를 대응시키는 관계입니다.
예시학번 → 학생 이름은 각 학번에 하나의 이름을 연결하는 함수로 모델링할 수 있습니다.
CHECK · 입력 하나가 출력 둘로 가면 함수가 아니다.ALGORITHMS · 트리와 해시
해시 함수
키를 배열의 위치로 바꾸는 함수입니다.
예시학번을 해시해 버킷에 넣으면 평균적으로 빠르게 찾을 수 있습니다.
CHECK · 서로 다른 키가 같은 버킷을 가리킬 수 있다.ALGORITHMS · 그래프 탐색과 최단 경로
BFS
시작점에서 가까운 정점을 먼저 넓게 방문하는 탐색입니다.
예시가중치 없는 그래프에서 처음 도달한 거리가 최단 간선 수입니다.
CHECK · 큐를 사용한다.ALGORITHMS · 그래프 탐색과 최단 경로
DFS
한 경로를 가능한 깊게 탐색한 뒤 되돌아오는 방식입니다.
예시연결 요소, 사이클 탐지, 백트래킹 문제에 자주 쓰입니다.
CHECK · 재귀 또는 스택을 사용한다.ARCHITECTURE · 입출력과 인터럽트
DMA
CPU가 데이터 하나하나를 옮기지 않고 장치와 메모리 사이의 블록 전송을 맡기는 방식입니다.
예시디스크에서 큰 버퍼를 읽을 때 CPU 부담을 줄일 수 있습니다.
CHECK · CPU는 전송 시작·완료 통지에 집중한다.NETWORKS · DNS와 HTTP 요청
DNS
도메인 이름을 IP 주소 같은 네트워크 정보로 해석하는 분산 시스템입니다.
예시cs.example.kr을 입력해도 컴퓨터는 먼저 어느 IP로 가야 하는지 묻습니다.
CHECK · DNS 결과는 캐시될 수 있다.DATABASE · SQL 조회와 조인
GROUP BY
같은 값을 가진 행을 묶어 COUNT·AVG 같은 집계를 계산합니다.
예시과목별 평균 점수는 subject로 그룹을 만든 뒤 AVG(score)를 씁니다.
CHECK · 집계 전 행과 집계 후 그룹을 구분한다.NETWORKS · DNS와 HTTP 요청
HTTP 요청·응답
클라이언트가 메서드·경로·헤더 등을 담은 요청을 보내고 서버가 상태 코드·헤더·본문으로 응답하는 모델입니다.
예시GET /courses HTTP/1.1 요청 뒤 200 OK와 HTML이 돌아옵니다.
CHECK · HTTP는 애플리케이션 계층이다.NETWORKS · TCP/IP와 계층
IP
서로 다른 네트워크의 목적지까지 패킷을 전달하기 위한 논리 주소와 라우팅 규약입니다.
예시라우터는 목적지 IP의 네트워크 부분을 보고 다음 경로를 고릅니다.
CHECK · IP만으로는 순서·도착이 보장되지 않는다.DATABASE · SQL 조회와 조인
JOIN
관련된 열을 기준으로 여러 테이블의 행을 결합하는 연산입니다.
예시Enrollment와 Student를 student_id로 JOIN해 이름과 점수를 함께 봅니다.
CHECK · JOIN 조건이 빠지면 행이 폭증할 수 있다.NETWORKS · TCP/IP와 계층
TCP
바이트 흐름의 순서와 신뢰성을 제공하는 전송 계층 프로토콜입니다.
예시손실된 세그먼트는 확인 응답이 없으면 다시 보낼 수 있습니다.
CHECK · 포트는 한 IP 안에서 프로세스를 구분한다.DATABASE · SQL 조회와 조인
WHERE
개별 행을 조건으로 걸러내는 절입니다.
예시WHERE grade >= 90은 점수 90점 이상 행만 남깁니다.
CHECK · 집계 결과 조건은 HAVING을 검토한다.