logo资料库

金山软件·西山居游戏 笔试试题.doc

第1页 / 共7页
第2页 / 共7页
第3页 / 共7页
第4页 / 共7页
第5页 / 共7页
第6页 / 共7页
第7页 / 共7页
资料共7页,全文预览结束
一 填空题
二 诊断题:(以下说法如果正确直接回答“正确”即可,如果错误请指出并说明原因。)
三 简答题
四 指出以下几个代码片段分别都存在什么问题
五. 编程题
文件名:西山居笔试试题 模板号:XSJ-HR-DOC-2012-03 金山软件有限公司西山居工作室 程序类笔试试卷 (考试时间:120分钟) 个人信息(必填) 基本信息 姓 名:______________ 性 别:______________ 年 龄:______________ 学校名称:______________ 学院名称:______________ 专 业:______________ 学 历:______________ 毕业日期:201___年 联系方式 手 机:________ Q Q:________ 电子邮箱:______________ 紧急联系人:____________ 手 机:______________ 获知此次招聘会的渠道: 海报宣传 校园网站 官网网站 老师同学 其他:_________ 应聘岗位: 后台开发 测试开发 答题说明 客户端开发 我还不是很清楚我在哪一方面擅长,服从公司安排 逻辑开发 3D 开发 移动开发 数据开发 A)您开始答题时间: 结束时间: B)交卷时简历和试卷一起交,试卷在上,简历在下 C) 本试卷为非计分制,并非以答题数量作为评判标准 D) 考试中如对题目内容有任何疑问,请不要询问监考人员 正式答题 一 填空题 1、 32 位 x86 平台下,char memory[] = { 1,2,3,4,5,6,7,8,9, };int* p = (int*) memory;则*p 的值用 16 进制表示为_____,*(p+1)的值用 16 进制表示为______。 2、 32 位 MSC 编译环境下,struct K1{ char a; short b; int c;}; struct K2{ char a; int b; char c; }; sizeof(K1) = _____, sizeof(K2) = _____. 3、 32 位编译环境下定义 int a[5][10],则 a[2][4]相对于 a[0][0]的内存地址偏移是___________。 4、 数据的插入,查找,删除操作都比较频繁时,采用________数据结构可以得到较好的效率平衡,stl 的_________容器采用了这种数据结构。 5、 下面一段程序: #include class A { Seasungame Studio(c)1995-2011 http://www.seasungame.com
文件名:西山居笔试试题 模板号:XSJ-HR-DOC-2012-03 void fun() { printf(“A”); } virtual void fun() { printf(“B”); } void fun() { printf(“C”); } virtual void fun() { printf(“D”); } virtual void funD() { printf(“D_Test”); } virtual void fun() { printf(“E”); } virtual void funE() { printf(“E_Test”); } virtual void fun() { printf(“E1”); } virtual void funE1() { printf(“E1_Test”); } } ; class B : public A { }; class C : public B { }; class D : public C { }; class E : public D { }; class E1 : public D { }; int main() { } A* p1 = (A*)new B; p1->fun();printf(“,”); B* p2 = (B*)new C; p2->fun();printf(“,”); B* p3 = (B*)new D; p3->fun();printf(“,”); B* p4 = (E*)new D; p4->fun();printf(“,”); D* p5 = (D*)new E; p5->funD();printf(“,”); E1* p6 = (E1*) new E; p6->funE1();printf(“,”); p6->funD();printf(“,”); printf(“ %d, %d”, sizeof(B) – sizeof(A), sizeof(D) – sizeof(A)); 以上程序在 32 位环境下执行结果是(按输出结果的逗号分隔填空):_______,_______,_______, _______,_______,_______,_______,_______,________。 6、 防止头文件被重复包含的方法是_______。 7、 8086 体系中指向栈顶的寄存器为_______,指向代码段偏移地址的寄存器为______,整型函数返回值 一般放在______寄存器。 8、 完成以下二分查找算法函数的代码: template int BinarySearch(Type a[], const Type& x, int n) Seasungame Studio(c)1995-2011 http://www.seasungame.com
文件名:西山居笔试试题 模板号:XSJ-HR-DOC-2012-03 { } int left=0; int right=n-1; while(__________) { int middle=(left + right) / 2; if (x == a[middle]) return middle; if (x > a[middle]) ___________; ___________; else } return -1; 二 诊 断 题 : (以下说法如果正确直接回答“正确”即可,如果错误请指出并说明原因。) 1、 如果源字符串长度已知,用 memcpy 拷贝字符串比 strcpy 效率要高。 2、 可以使用 memcpy 拷贝一个对象。 3、 在调用有 overload, override 或者 overwrite 的函数时均要进行运行期绑定。 4、 stl 的 sort 排序算法可以应用于 vector,list,map,set 等容器。 5、 指针 p 指向一个对象,则 sizeof(p)的值是 4,sizeof(*p)的值是 p 指向对象的实际大小。 6、 每个运行中的程序至少包含一个主线程,也称为进程。 7、 内存泄漏是指程序申请的内存在程序退出前也没有得到释放,直到操作系统重启。 8、 SQL 是一种跨平台的数据库。 Seasungame Studio(c)1995-2011 http://www.seasungame.com
三 简答题 1、 分别阐述析构函数被定义为 private 的作用及被定义为 virtual 的作用 文件名:西山居笔试试题 模板号:XSJ-HR-DOC-2012-03 2、 类增加成员函数是否会增加使用该类定义的对象占用内存的大小,增加虚函数呢? 3、 void fun(T a, T b); void fun(const T& a, const T& b); 以上两种函数定义有何区别?实际编程时该 如何选择? 4、 按照你的猜测,一个含客户端程序的网络游戏,从玩家开启客户端主程序到进入游戏世界,客户端与 服 务 端 需 要 进 行 哪 些 必 须 的 网 络 协 议 交 互 ? 5、 驱动 Windows 窗口的消息系统的运行机制是怎样的,有哪些关键 API 6、 程序运行时出现间程序无响应,CPU 占用 100%。此时可能是出现了什么问题?该如何确认问题所在? 四 指出以下几个代码片段分别都存在什么问题 { } 1、 char* ToStr(int a) char buf[16]; itoa(buf, a, 10); return buf; Seasungame Studio(c)1995-2011 http://www.seasungame.com
文件名:西山居笔试试题 模板号:XSJ-HR-DOC-2012-03 2、 int Player::CalcExp(int nRadix, int nNpcId) Npc* pNpc = ::GetNpc(nNpcId); int nExpBase = this->GetCurExpBase(); return nExpBase + nRadix / (pNpc->GetLevel() - this->GetLevel()); 3、 bool Player::ChangePsw(const char* pswOld, const char* pswNew) { } { } { if (strcmp(m_szPsw, pswOld) != 0) return flase; strcpy(m_szPsw, pswNew); retrun true ; 4、 void OuputTxtFile(const char* szFileName) if (!szFileName) return; fstream fs; fs.open(szFileName, ios_base::in); while(fs.good() && !fs.eof()) { char readbuf[1024]; fs.getline(readbuf, sizeof(readbuf)); printf(readbuf); printf(“\n”); } } 5、 template class ObjectMgr { std::vector m_vecObject; public: size_t Add(T obj) { m_vecObject.push_back(obj); return m_vecObject.size(); } T* GetByIndex(size_t index) { if (index < m_vecObject.size()) return &m_vecObject[index]; Seasungame Studio(c)1995-2011 http://www.seasungame.com
return NULL; } }; 文件名:西山居笔试试题 模板号:XSJ-HR-DOC-2012-03 6、 typedef LPCSTR const char*; class KString { public: char *m_Str; KString() { m_Str = ""; } KString(KString& str) { m_Str = new char[str.len()]; memcpy(m_Str, (LPCSTR)str, str.len()); } ~KString() { delete m_Str; } unsigned int len() { return sizeof(m_Str); } operator LPCSTR() { return m_Str; } operator = (char szSrc[]) { m_Str = new char[sizeof(szSrc)]; memcpy(m_Str, szSrc, sizeof(szSrc)); } } 五. 编程题 1、实现一个内存缓冲区类(用 char 数组做缓冲即可),至少实现:创建定长缓冲区、类拷贝、扩大缓冲 区 。 保 留 功 能 度 ( 据 ) 三 个 主 要 长 数 Seasungame Studio(c)1995-2011 http://www.seasungame.com
文件名:西山居笔试试题 模板号:XSJ-HR-DOC-2012-03 2、实现一个快速排序函数 void qsort(int* numbers, int count),对输入的指定数量的整数进行排序,排序后 的整数仍保存在原数组中。 六.附加题(可选) 1、数据表 Item 的字段信息如下: 字段名 Item_ID Item_Name Item_Type 类型 number varchar2(32) number 1) 请用 SQL 实现一个函数或存储过程,要求: a) 输入参数为 Item_Name,Item_Type,输出参数为 Item_ID。 b) 如果 Item_Name 和 Item_Type 的组合在表中已存在,则返回原有的 Item_ID。 c) 如果不存在,则向表中插入新的记录,并返回新插入记录的 Item_ID。 d) e) 对 Item_Name 的判断不区分大小写。 f) 需要考虑函数或存储过程被多个 Session 同时调用的问题。 Item_ID 是唯一的序列编号 2) 请设计合适的索引,并写出创建索引的 SQL 语句。 2、某个对战类游戏,每局游戏由两个队伍参战,同时会有很多支队伍同时进行游戏。该游戏设计有匹配 系统,该匹配系统要求尽量把两个水平接近的队伍匹配在一起进行对战。现由你来负责实现这个游戏的匹 配系统,写出需求分析,程序实现方案、要点。 Seasungame Studio(c)1995-2011 http://www.seasungame.com
分享到:
收藏