[말랑 퀴즈] 26/10/17 문제
카테고리: MallangQuiz
태그: Quiz
제 말랑말랑 퀴즈 생성기는 이곳에서 확인하실 수 있습니다.
말랑말랑 퀴즈 📝
날짜: 2026-10-17 문제 수: 6문제
Q1. 🟢 쉬움
다음 명제가 참(O)인지 거짓(X)인지 판단하라.
string *p = new string[100];로 할당한 배열을delete p;로 해제하면 첫 번째 객체의 소멸자만 호출되고 나머지는 호출되지 않아 정의되지 않은 동작이 발생할 수 있다. 한편typedef string AddressLines[4];처럼 배열 타입을typedef로 감추면 포인터가 배열을 가리킨다는 사실이 드러나므로,delete와delete[]를 혼동할 위험이 줄어든다.
출처:
game_dev/cpp/chapter3/2025-06-12-cpp_3_16.md
📝 내 답: X. 두번째 줄이 틀렸다. typedef는 오히려 감춰지기에 벡터와 같은 다른 대안을 권장한다.
Q2. 🟡 보통
온라인 게임에서 플레이어가 인벤토리의 아이템을 클릭해 사용하는 흐름에 대한 설명으로 가장 올바른 것은?
- A. 클라이언트는 아이템 ID를 담은 사용 요청만 서버에 보낸다. 서버가 유효한 플레이어인지, 해당 아이템을 갖고 있는지 판단한 뒤 개수를 줄이고, 그 결과를 클라이언트에 통보한다.
- B. 클라이언트가 아이템 보유 여부를 먼저 판단한 뒤, 사용이 가능할 때만 서버에 사용 결과를 보낸다.
- C. 서버는 아이템 개수만 줄이고, 클라이언트에는 아무것도 통보하지 않는다. 클라이언트가 스스로 개수를 계산해 화면을 바꾼다.
- D. 아이템 사용은 중요한 판단이 아니므로 서버를 거치지 않고 클라이언트끼리 직접 처리한다.
출처:
server/game_server/5/2026-02-16-game_server_5_7.md
📝 내 선택: A.
B: 사용 결과를 보내는 것이 아니라 사용 요청이다.
C: 서버는 아이템 개수를 줄이고, 클라이언트에 결과를 알려준다.
D: 클라이언트에 맡기면, 조작이 가능해진다.
Q3. 🟡 보통
빈칸을 채우시오.
C++에서 소멸자와 예외에 대한 설명이다.
- 소멸자에서 던져진 예외가 다른 예외와 충돌하면, C++ 런타임은 ①
___를 호출해 프로그램을 종료시킨다. (함수 이름, 영문 소문자, 괄호는 제외) DBConn의 소멸자 안에서db.close()가 예외를 던질 위험이 있으므로, 사용자가 직접 호출해 예외에 대응할 수 있도록close()를 소멸자와 별개인 ②___로 제공한다. (두 단어)- 그래도 소멸자 안에서 예외가 발생할 수 있다면
try-catch로 잡은 뒤, 로그만 남기고 삼키거나 프로그램을 ③___한다. (두 글자 단어) - 예외는 반드시 ④
___(이)가 처리할 수 있는 곳에서 발생해야 하는데, 소멸자는 그런 곳이 아니다. (누가 처리하는지를 나타내는 한 단어)
출처:
game_dev/cpp/chapter2/2025-05-28-cpp_2_8.md
📝 내 답: throw, 예외 처리, 종료, 호출자
Q4. 🟡 보통
다음 명제가 참(O)인지 거짓(X)인지 판단하라.
시퀀스 다이어그램은 객체 간 메시지를 시간 순서대로 표현하는 데 강점이 있어 통신 프로토콜 설계에 쓰기 좋다. 액티비티 다이어그램은 활동 상태를 타원으로 표현하고 조건 분기도 쓸 수 있어 게임 로직 흐름 설계에 쓰기 좋은데, 시간적 순서는 시퀀스 다이어그램보다 오히려 명확하게 드러난다.
출처:
server/game_server/5/2026-02-12-game_server_5_1.md
📝 내 답: X. 앞은 맞는데, 시간적 순서는 시퀀스 다이어그램에서 나타난다는 점에서 틀렸다.
Q5. 🟡 보통
C++ 예외 안전성 보장 수준 중 강력한 보장(strong guarantee)에 대한 설명으로 가장 올바른 것은?
- A. 함수 실행 중 예외가 발생하면 프로그램 상태를 변경하지 않아, 함수가 성공적으로 끝난 상태와 함수 호출 이전 상태, 두 가지 상태만 존재한다.
- B. 함수 실행 중 예외가 발생해도 프로그램을 유효한 상태로만 유지하며, 그 상태가 정확히 어떤지는 예측할 수 없어도 된다.
- C. 함수가 어떤 경우에도 예외를 던지지 않겠다는 보장이다.
- D. 함수 선언에
throw()로 예외 지정을 해 두면 구현과 관계없이 자동으로 제공된다.
출처:
game_dev/cpp/chapter5/2025-09-14-cpp_5_29.md
📝 내 선택: A.
B: 기본적인 보장이다.
C: 예외불가 보장이다.
D: throw는 강력한 보장을 하지 않으며, 구현이 결정한다.
Q6. 🔴 어려움 · 📌 오답노트 (2번째 복습)
RPG에서 플레이어가 바닥을 클릭해 캐릭터를 이동시키는 기능을 만든다. 서버가 이동을 연산하고 클라이언트가 서버가 보낸 이동 정보 메시지로 위치를 추측항법으로 갱신하는 기본 방식에서 출발하여 아래에 답하시오.
(1) 이 기본 방식은 플레이어에게 답답하게 느껴진다. 그 이유를 쓰시오.
(2) 이동 계산을 클라이언트가 먼저 하되 치터(해커)를 막는 방법으로 값 검증과 예측/보정이 있다. 각 방법에서 클라이언트가 서버에 무엇을 보내고, 서버가 무엇을 하는지 쓰시오. 예측/보정에서는 클라이언트가 서버의 응답을 받은 뒤 무엇을 하는지도 쓰시오.
(3) 예측/보정이 잘 맞는 레이턴시 조건과, 레이턴시가 어느 수준을 넘으면 어떤 문제가 생기는지 수치와 함께 쓰시오.
(4) “일단 보여주고 나중에 해결” 방식에서, 레이턴시가 높을 때 행동 연출은 어떤 순서로 진행되는가? 이 방식을 사용한 게임의 예를 두 가지 쓰시오.
출처:
server/game_server/5/2026-02-14-game_server_5_3.md오답노트:wn-0594c0aa· 2026-09-16 최초 오답 · 이번이 2번째 복습
📝 내 풀이: (1) 입력 후 결과를 받기까지 지연이 발생해, 즉각적인 반응이 안된다.
(2) 값 검증에서는 클라이언트가 보낸 값이 유효한 범위인지 확인하고, 그렇지 않다면 거절한다.
예측/보정은 클라이언트가 먼저 예측해서 진행하고, 서버에선 클라이언트에게 받은 데이터를 토대로 서버에서 시뮬레이션하고, 차이가 발생하면 보정시킨다.
클라이언트는 서버에게 받은 보정 데이터를 토대로 업데이트한다.
(3) 100ms 아래의 저지연 환경에서 잘 작동한다.
(4) 행동 애니메이션 먼저 후, 결과를 받으면 수치 조정 및 파티클 발생. 스타크래프트, WOW
댓글남기기