서버 개발자 시험 문제

옛날에는 프로그래머 면접볼때 이런 시험을 봤었습니다.
일명 손코딩.

이건 제가 팀장으로 근무할 때 만들었던 시험문제 입니다.

서버 개발자 시험 문제

Design Pattern

template <typename T>
class CSingleton {
	public:
	 	CSingleton() {}
 		virtual ~CSingleton() {}
    
        static T* GetInstance() {
            if ( false == isptr(ms_Instance) ) {
                LOCKING( ms_Locker );
                if ( false == isptr(ms_Instance) ) {
                    ms_Instance = new T();
                }
            }
            return ( ms_Instance );
        }

        static T& GetInstanceRef() {
            if ( false == isptr(ms_Instance) ) {
                LOCKING( ms_Locker );
                if ( false == isptr(ms_Instance) ) {
                    ms_Instance = new T();
                }
            }
            return ( *ms_Instance );
        }

        static void ReleaseInstance() {
            if ( isptr(ms_Instance) ) {
                LOCKING( ms_Locker );
                if ( isptr(ms_Instance) ) {
                    delete ms_Instance;
                    ms_Instance = NULL;
                }
            }
        }
  
	private:
        static T* ms_Instance;
        static CLocker ms_Locker;
};

template <typename T>
T* CSingleton<T>::ms_Instance = NULL;

template <typename T>
CLocker CSingleton<T>::ms_Locker;

1. 위 보기의 Singleton 패턴을 Array로 접근 할 수 있도록 수정 하세요.
template <typename T>
class CSingletonArray {



};

template <typename T>
T** CSingletonArray<T>::ms_Instance = NULL;

template <typename T>
CLocker CSingletonArray< T>::ms_Locker;

Protocol Design

2. Send/Recv용 구조체를 설계 할 때 #pragma pack(4)를 사용 하는 이유를 설명 하세요.






3. Broadcast를 위한 Player의 구조체를 정의 하세요.
#pragma pack(4)
struct SPlayerData {





};
#pragma pack()

Parsing

원본: abcdefghijklmnopqrstuvwxyz
결과: abcdefghijklmnopqrstUVwxyz
4. Standard Template Library만을 사용 하여 위 보기의 string 치환 함수를 작성 하세요.
INT Replace(std::string& sData_,const std::string& sSearch_,const std::string& sReplace_) {
	INT iCount = 0;
	INT iPosition = 0;
	size_t stSearch = sSearch_.size();
	size_t stReplace = sReplace_.size();
	while(true) {





	}
	return iCount;
}

문자열: abc|def|ghi|jkl|mno|pqr|stu|vwx|yz\\
5. strtok() 함수 만을 사용 하여 위 보기의 string을 ‘|’ 단위로 분리 하세요.





Distributed Processing

6. Grid Computing에 대한 이해와 게임 서버(World)에 적용 할 수 있는 방법을 설명 하세요.




7. 구조적으로 부하가 집중 될 수 밖에 없는 Database를 특별한 장비 없이 분산 접근 할 수 있는 방법을 설명 하세요.




8. Replication Database를 구성 하였을 때 어떠한 성능적 장점이 있는지 설명 하세요.




Flexible Threading

9. 하나의 동작(Packet)을 위한 Single Threading 처리 방식과 Multi Threading 처리 방식을 장점과단점을 포함 하여 설명 하세요.




Survey

10. 실용주의 프로그래밍과 범용주의 프로그래밍에 대한 자신의 생각을 서술 해 주세요.




댓글

이 블로그의 인기 게시물

개발팀 일정 계획하는 방법

게임을 출시하는 것은 출산의 고통과도 같다.

상용화를 위한 서버 프로젝트 이슈 정리