20250902

Jaemyeong Lee·2025년 9월 3일

로드맵

목록 보기
2/3

Part 1. 객관식 (Step 1: 함수)

1-1. [Quiz] 함수의 주된 사용 목적은 무엇일까요?

① 코드 실행 속도 향상

② 변수 선언 없이 사용

③ 코드 재사용성 및 관리 용이성 증대

④ 컴파일 오류 방지


1-2. [Quiz] 함수의 반환 타입이나 매개변수 목록에 'void' 키워드를 사용하는 것은 무엇을 의미할까요?

① 매개변수나 반환값이 임시 메모리에 저장된다

② 함수가 아무런 매개변수를 받지 않거나, 아무런 값을 반환하지 않는다

③ 함수가 전역 변수만 사용한다

④ 함수 실행 중 오류가 발생할 수 있다


1-3. [Quiz] 함수 내에서 선언된 지역 변수는 프로그램 실행 중 주로 메모리의 어느 영역에 할당될까요?

① 힙 (Heap)

② 코드 섹션 (Code section)

③ 스택 (Stack)

④ 데이터 섹션 (Data section)


1-4. 함수 선언(Declaration)과 정의(Definition)의 차이로 옳은 것은?

① 선언은 .cpp에, 정의는 .h에 작성한다

② 선언은 실제 구현을 포함하고, 정의는 시그니처만 가진다

③ 선언은 시그니처만(세미콜론으로 끝), 정의는 실제 구현({} 안에 코드)

④ 선언 없이 정의만 있으면 컴파일이 더 빠르다


1-5. 함수 오버로딩이 성립하는 조건으로 옳은 것은?

① 함수 이름만 같으면 된다

② 매개변수 개수나 타입이 달라야 한다

③ 반환 타입만 다르면 된다

④ 같은 .cpp 파일에 있어야 한다


1-6. C++에서 함수 호출 전에 선언이 먼저 있어야 하는 이유는?

① 실행 속도를 높이기 위해

② C++는 위에서 아래로 분석하므로, 호출 시점에 해당 함수의 존재를 알아야 함

③ 메모리 절약을 위해

④ 링커가 연결하기 위해


1-7. 전역 변수와 지역 변수의 차이로 옳은 것은?

① 전역 변수는 스택에, 지역 변수는 Data 영역에 저장된다

② 전역 변수는 Data 영역·프로그램 전체 유효, 지역 변수는 스택·함수 내 유효

③ 지역 변수는 함수 종료 후에도 값이 유지된다

④ 전역 변수를 사용하는 것이 항상 권장된다


Part 2. 객관식 (Step 2~3: 스택, 스택 프레임)

2-1. 스택 메모리의 특징으로 옳은 것은?

① FIFO(선입선출) 구조이다

② LIFO(후입선출) 구조이며, 가장 나중에 호출된 함수가 먼저 종료된다

③ 프로그램 종료 시까지 데이터가 유지된다

④ 힙보다 크기가 크다


2-2. 스택 오버플로우가 발생하는 주된 원인은?

① 전역 변수를 너무 많이 사용할 때

② 재귀 함수의 종료 조건 누락 등으로 스택 프레임이 무한히 쌓일 때

③ 지역 변수를 선언할 때

④ #include를 많이 할 때


2-3. 스택 프레임에 포함되지 않는 것은?

① 매개변수

② 반환 주소

③ 지역 변수

④ 전역 변수


2-4. 다음 코드의 출력 결과는?

void AddHp(int hp, int value) { hp += value; }
int main() {
    int hp = 100;
    AddHp(hp, 20);
    cout << hp << endl;
}

① 120

② 100

③ 20

④ 컴파일 에러


2-5. 다음 코드의 출력 결과는?

int Test(int& a) { a += 10; return a; }
int main() {
    int x = 5;
    Test(x);
    cout << x << endl;
}

① 5

② 15

③ 10

④ 컴파일 에러


2-6. 복사 전달(Call by Value)과 참조 전달(Call by Reference)의 차이로 옳은 것은?

① 복사 전달은 원본을 수정할 수 있고, 참조 전달은 불가능하다

② 복사 전달은 값만 복사되어 원본 영향 없음, 참조 전달은 원본 직접 수정 가능

③ 참조 전달은 int a 형태로 받는다

④ 복사 전달이 항상 더 빠르다


Part 3. 객관식 (Step 4: 디버깅)

3-1. [Quiz] 디버깅 시 '중단점(Breakpoint)'을 설정하는 주된 목적은 무엇일까요?

① 프로그램의 전체 실행 시간을 측정하기 위해

② 특정 코드 줄에서 프로그램 실행을 일시 중지시키기 위해

③ 코드의 문법 오류를 자동으로 수정하기 위해

④ 다른 함수를 호출하는 것을 방지하기 위해


3-2. Visual Studio에서 브레이크포인트를 설정/해제하는 단축키는?

① F5

② F9

③ F10

④ F11


3-3. F10(Step Over)과 F11(Step Into)의 차이로 옳은 것은?

① F10은 함수 내부로 진입하고, F11은 그렇지 않다

② F10은 현재 줄만 실행하고 함수 안으로 들어가지 않음, F11은 함수 내부로 진입

③ F10은 프로그램을 종료하고, F11은 재시작한다

④ 둘은 동일하다


3-4. 호출 스택(Call Stack) 창의 역할로 옳은 것은?

① 변수 값을 수정한다

② 현재까지 호출된 함수들의 순서를 추적한다

③ 컴파일 에러를 표시한다

④ 실행 속도를 측정한다


3-5. 조건부 브레이크포인트의 용도로 옳은 것은?

① 모든 줄에서 멈춘다

② 특정 조건(예: hp <= 0)이 만족될 때만 정지한다

③ 컴파일 시점에만 작동한다

④ 링킹 오류를 수정한다


3-6. 조사식(Watch) 창에서 할 수 있는 것은?

① 소스 코드를 수정한다

② 변수나 수식(hp + 200 등)을 등록해 실시간으로 값 추적

③ 브레이크포인트를 자동 설정한다

④ 실행 파일을 생성한다


Part 4. 객관식 (Step 5~6: TextRPG, 파일 분할)

4-1. [Quiz] C++에서 코드를 여러 파일로 분할할 때, 헤더 파일(.h 또는 .hpp)의 주된 역할은 무엇일까요?

① 함수의 실제 구현 내용을 담는다

② 전역 변수나 상수 값을 저장한다

③ 다른 파일에서 사용할 함수나 변수 등의 선언을 제공한다

④ 프로그램 실행에 필요한 라이브러리를 모두 포함시킨다


4-2. TextRPG의 게임 흐름 순서로 옳은 것은?

① main → EnterBattle → EnterField → SelectPlayer

② main → EnterField → EnterLobby → CreateRandomMonster

③ main → EnterLobby → SelectPlayer → EnterField → CreateRandomMonster → EnterBattle

④ main → CreateRandomMonster → EnterBattle → EnterLobby


4-3. extern int GTest;의 의미로 옳은 것은?

① GTest 메모리를 이 파일에서 정의한다

② GTest는 다른 파일에서 정의되어 있다고 선언한다

③ GTest를 반드시 사용해야 한다

④ GTest를 삭제한다


4-4. #pragma once의 역할은?

① 컴파일 속도를 높인다

② 헤더 파일이 중복으로 포함되지 않도록 한다

③ extern을 대체한다

④ 링킹을 수행한다


4-5. 컴파일·링킹 흐름 순서로 옳은 것은?

① 링킹 → 전처리 → 컴파일 → 어셈블

② 전처리 → 컴파일 → 어셈블 → 링킹

③ 컴파일 → 링킹 → 전처리 → 어셈블

④ 어셈블 → 링킹 → 컴파일 → 전처리


4-6. 'LNK: 확인할 수 없는 외부 기호' 에러의 원인은?

① #include 누락

② 선언만 있고 정의(구현)가 없음

③ #pragma once 누락

④ 매개변수 타입 불일치


profile
李家네_공부방

0개의 댓글