본문 바로가기

프로그래밍/C++

C++ 기본 문제 By Choo

얼마나 아시겠나요 ? 후후후.
GameHi Myskit 팀의 컴공 99 김연추 씨께서 출제한 문제입니다.
다 알겠으면 당신의 내공을 자랑하셔도 될겁니다. !!

=-=-=
// (l-value & r-value) & operator & operator overloading
//postfix increment operator prefix increent operator 에는 근본적인 차이가 있다.
{
int i = 0;
printf(“%d\n” , i++); //1
i++++; //2
++++i; //3
};
1. 1에서의 진행과정을 자세히 설명해보라. iprintf 가 호출된 이후 증가 하는가 아니면 printf가 호출 되기 전에 증가하는가?
2. l-value r-value 는 무엇인가?
3. 23중에 한가지는 컴파일이 안된다. 이유는?
4. postfix increment operator prefix increment operator 보다 느리기 쉽다. 이유는?
5. operator overloading 혹은 function overloading 이란 무엇인가?
6. overloading postfix increment operator prefix increment operator 를 작성하려고 한다. 그 둘을 어떻게 구별할 수 있는가? (둘은 이름이 operator++ 로 같다는 사실을 주의하자)


//linking
header.h

int variable = 0;

a.c
#include “header.h”
void A()
{
printf(“%0x\n” , &variable);
}
b.c
#include “header.h”
void B()
{
printf(“%0x\n” , &variable);
}
1.linking 이란 무엇인가?
2.위 코드를 컴파일한면 link 시에 error가 발생할 것이다. 어떤 에러가 발생하고 이유는 무엇인가?
3.Header.h 의 내용을
const int variable = 0; 이나
static int variable = 0; 으로 바꿨을때는 어떻게 달라지는가? 이유는 무엇인가?
4.const int WINDOW_X = 100; 과 같은 것을 헤더에 쓰는 경우는 매우 일반적이다. 이 코드가 컴파일시 최적화 되지 않는다면 어떤 문제가 생길 수 있는가?
5.일반적으로 이 코드는 최적화 과정을 거치기 때문에 그러한 문제가 생기지 않는다. 이 경우 #define 을 사용하는 것에 비해 장점은 무엇인가?

//type
1. char , short , int, 의 최대값은 각각 얼마인가. unsigned 의 경우에는 어떻게 되는가? 그 이유는?
2. float , double 의 최대값 최소값 , 유효숫자는 대략 얼마인가?
3. {
int i ;
float f ;
i = f = 1,999,999,999
}
위 코드를 실행하면 i f 의 값은 어떻게 될까?
4. 타입별로 최대값을 얻거나 정의 하는 가장 좋은 방법은 무엇이라고 생각 하는가?


// inheritance , access control , virtual function , RTTI
1. public , protected , private 는 각각 무엇인가.
2. constructor private으로 선언 하는 경우가 있다. 어떤 용도가 있을까?
3. virtual function 은 어떻게 구현 되는가. RTTI 란 무엇인가.
4. virtual function 을 갖는 class 와 그렇지 않은 class 의 크기를 비교하라. 다르다면 그 이유는 무엇인가?
5. overriding 이란 무엇인가?
6. virtual function 이 아닌 함수를 overriding 하는 것은 왜 좋지 않은가?
7. static_cast,dynamic_cast,reinterdivt_cast,const_cast 는 각각 무엇이고. C-style casting 에 비해서 좋은점은 무엇인가?
8. virtual function 이 하나도 없는 classdynamic_cast 를 할 수 없다. 그 이유는?


//std
1. #include <limits.h> #include <limits>
#include <string.h> #include <string> 는 어떻게 다른가.

//template
1. template 이란 무엇이며 어떤 장점과 단점을 갖는가.

//STL & 자료구조
1. listvector 의 차이점은 무엇이며 어떤 경우에 유용한가.
2. random-access iterator bidirectional iterator 는 무엇인가?
3. list vector 의 장점을 모두 살린 자료구조를 만들어야 한다면 어떻게 하면 좋을까?
4. setlist 보다 random access 가 빠르고 vector 보다는 insert , delete 가 빠른 유용한 자료구조이다. set 의 단점은 어떤 것이 있으며 이것은 어떻게 극복할 수 있을까 ?
5. 전화번호부를 list , vector , set , map 으로 나타내야 한다면 어떤 것이 좋을까? 또한 그것에는 장단점이 있을까?

//Process & Thread
1. Process Thread 의 장단점을 비교해보라.
2. critical section , mutex , event , semaphore 의 차이점을 설명할 수 있는가?
3. critical section 과는 달리 mutex , event , semaphore 에는 windows 전체에서 통용될 수 있는 이름이 있다. 이것이 어떤 의미가 있을까?
4. 예전의 strtok localtime 등의 함수는 thread-safe 하지 않았다. 왜 그런가?
5. process 간 동기화가 필요하다는 것은 process간에 공유되는 자원이 있다는 것을 의미한다. 어떠한 자원들이 프로세스간에 공유될 수 있는가?

//DLL & Library
1. DLL 이란 무엇인가. import library 란 무엇인가.
static/dynamic link static/dynamic load 는 각각 무엇인가?
2. 게임 클라이언트를 배포함에 있어서 특정 DLL을 사용하는 실행파일이 하나밖에 없는 경우에도 DLL을 배포 하는 것은 장점을 가질 수 있다. 어떤 장점을 가질 수 있겠는가?

'프로그래밍 > C++' 카테고리의 다른 글

My C++ Tips  (4) 2009.02.18
STL에 대한 단상  (4) 2008.01.29
임시변수의 범위는 어디까지일까요  (2) 2007.07.13
ANSI와 UTF-8과의 상호 변환  (9) 2007.05.04
스트림에서 스트림으로 전송하기  (0) 2007.03.15