[말랑 퀴즈] 26/10/18 문제

게시:     수정

카테고리:

태그:

제 말랑말랑 퀴즈 생성기는 이곳에서 확인하실 수 있습니다.

말랑말랑 퀴즈 📝

날짜: 2026-10-18 문제 수: 6문제


Q1. 🟢 쉬움

다음 명제가 참(O)인지 거짓(X)인지 판단하라.

4코어 CPU에서 싱글스레드로 소수를 구하면 CPU 사용량은 전체의 25%(1코어만 사용)에 그치므로, 모든 코어를 활용하려는 것이 멀티스레딩이 필요한 이유 중 하나다. 또 디스크에서 플레이어 정보를 읽는 동안 CPU가 놀아서 프로그램이 정지한 것처럼 느려지는 문제는, 멀티스레딩으로는 해결할 수 없고 비동기 프로그래밍으로만 해결할 수 있다.

출처: server/game_server/1/2025-05-28-game_server_1_3.md

📝 내 답: X. 멀티스레딩을 사용해 비동기 프로그래밍을 하는 것으로 알고 있다.


Q2. 🟡 보통

물리적 서버(온프레미스)와 클라우드 서버를 비교한 설명으로 가장 올바른 것은?

  • A. 클라우드 서버는 서버 증설과 철거가 빠르고 자동 스케일 아웃이 가능하지만, 가상 머신을 사용하므로 처리 속도 균일성은 물리적 서버보다 낮다.
  • B. 물리적 서버는 서버 한 대당 유지 비용이 높고, 서버 증설 속도가 클라우드 서버보다 빠르다.
  • C. 클라우드 서버는 처리 속도 균일성이 물리적 서버보다 높고, 장애 처리 속도는 느리다.
  • D. IaaS는 운영체제와 프레임워크 소프트웨어가 이미 돌아가고 있어서 사용자가 건드릴 수 없는 서비스 계층이다.

출처: server/game_server/4/2026-02-11-game_server_4_8.md

📝 내 선택: A.

B: 물리적 서버가 한 대당 유지 비용은 높지만, 서버 증설 속도는 클라우드 서버보다 느리다.
C: 클라우드 서버는 처리 속도 균일성은 물리적 서버보다 느리지만, 장애 처리 속도는 빠르다. D: IaaS는 사용자가 건드릴 수 있는 서비스 계층이다.


Q3. 🟡 보통

빈칸을 채우시오.

C++에서 객체를 람다의 클로저 안으로 이동하는 방법에 대한 설명이다.

  • std::unique_ptr처럼 이동 전용인 객체를 클로저 안으로 이동하려면 C++14에서 도입된 ① ___를 사용한다. (한글 용어 두 단어, ‘일반화된 람다 캡처’라고도 한다)
  • [pw = std::move(pw)]에서 =의 좌변은 람다로부터 생성되는 클로저 클래스에 속한 ② ___의 이름이고, 우변은 그것을 초기화하는 표현식이다. (두 단어)
  • C++11에서는 이동 캡처를 직접 지원하지 않으므로, 객체를 ③ ___가 생성하는 함수 객체(바인드 객체) 안으로 이동 생성한 뒤 그 객체에 대한 참조를 람다에 넘겨주는 방식으로 흉내 낸다. (함수 이름, std:: 제외)
  • 위 방식에서 람다 안에서 이동된 객체를 수정하려면, 람다를 ④ ___(으)로 선언하고 매개변수 선언에서 const를 제거해야 한다. (C++ 키워드)

출처: game_dev/moderncpp/6/2026-10-01-moderncpp_6_32.md

📝 내 답: 일반화 캡처, 지역 변수, function, const


Q4. 🟢 쉬움

다음 명제가 참(O)인지 거짓(X)인지 판단하라.

소켓은 각각 송신 버퍼와 수신 버퍼를 가지며, 송신 버퍼는 FIFO 방식으로 사용자가 push()하고 운영체제가 pop()한다. 송신 버퍼가 가득 차면 send() 함수는 보내지 못한 데이터를 버리고 즉시 리턴한다.

출처: server/game_server/3/2026-02-03-game_server_3_3.md

📝 내 답: X. 운영체제가 push하고, 송신 버퍼가 pop한다는 점만 틀렸다.


Q5. 🟡 보통

데이터베이스의 ACID 속성을 설명한 것이다.

  • 원자성: 데이터 2개 이상을 전부 변경하고자 할 때 전부 혹은 전무(全無) 처리가 되게 한다.
  • 일관성: 잘못된 상태의 데이터를 원천 봉쇄한다.
  • 고립성: 경쟁 상태로부터 자유롭게 해 준다.
  • 지속성: 장애 직전의 상태로 복구 가능한지에 관한 것이다.

ACID 속성과 그것을 지원하는 데이터베이스 기능의 짝으로 올바른 것은?

  • A. 원자성 ― 락 기능
  • B. 일관성 ― 제약(constraints) 기능
  • C. 고립성 ― 로그 버퍼 기능
  • D. 지속성 ― 트랜잭션 기능

출처: server/game_server/7/2026-03-02-game_server_7_1.md

📝 내 선택: B

A: 트랜잭션
C: 락 기능
D: 로그 버퍼 기능


Q6. 🔴 어려움 · 📌 오답노트 (2번째 복습)

C++ private 상속과 공백 클래스에 대해 답하시오.

class Empty {};

class HoldsAnInt {
private:
   int x;
   Empty e;
};

(1) 위 코드에서 sizeof(HoldsAnInt)가 sizeof(int)보다 커지는 이유를 쓰시오.

(2) HoldsAnInt가 Empty를 private으로 상속하도록 바꾸면 sizeof(HoldsAnInt)가 어떻게 되는가? 이 최적화의 이름과, 이 최적화가 적용되는 조건(상속의 형태)을 쓰시오.

(3) class Student : private Person { ... };일 때, void eat(const Person& p);에 Student 객체를 넘기면 컴파일되지 않는다. 그 이유와, private 상속이 의미하는 관계를 쓰시오. 기본 클래스에서 물려받은 멤버는 파생 클래스에서 어떤 접근 수준이 되는가?

(4) 객체 합성을 쓸 수 있다면 합성을 쓰는 것이 원칙이다. 그럼에도 private 상속을 써야 하는 경우 세 가지를 쓰시오.

출처: game_dev/cpp/chapter6/2025-10-26-cpp_6_39.md 오답노트: wn-61908b44 · 2026-09-16 최초 오답 · 이번이 2번째 복습

📝 내 풀이: (1) 공백 클래스를 멤버로 가지려면 1바이트라도 채워야하기 때문이다. 그렇기에 커진다.

(2) 공백 클래스가 크기를 가지지 않는다. EBO이며, private여야 하고 멤버로 가지면 안되며, 공백 클래스이어야한다.

(3) private 상속을 하게 되면, 암시적 변환을 허용하지 않는다. private 상속은 is-implemented-means-of이다.
물려받은 멤버는 파생 클래스에서 private 접근 수준이 된다.

(4) 함수 중 일부만 재정의하여야 하는 경우, EBO를 사용해야하는 경우, 나머지 하나는 모르겠다.


MallangQuiz 카테고리 내 다른 글 보러가기

댓글남기기