技术面试题目及答案_第1页
技术面试题目及答案_第2页
技术面试题目及答案_第3页
技术面试题目及答案_第4页
技术面试题目及答案_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、时间有限公司技术部面试试题游戏开发类:编程题: 1 请写代码打印100之内的素数,讲求效率(请做你的解法的效率分析) 2 求m,n的最大公约数3 输入10个字符串,打印出其中重复的字符串以及重复的次数4 请画图例(UML最好),给出windows下的文件目录的设计模式5用多种方法对数据进行排序。(选择排序、插入排序、冒泡排序、快速排序等)技术问答题: 1 什么是单元测试?你用过哪些单元测试工具?他们的区别和好处各有哪些?你主要倾向于哪一种?2 什么是编程规范?你倾向于什么样的规范?他的好处在哪?3 什么是头文件依赖?你注意过这些问题吗?你注意过编译的时间吗?你怎么改进编译时间?4 什么是面向对

2、象?你在哪些方面用过面向对象?带来了什么好处?又有什么弊端?5 什么是设计模式?使用设计模式有什么好处?列举你使用过的设计模式知识。6 什么是“引用”?申明和使用“引用”要注意哪些问题?7 面向对象的三个基本特征,并简单叙述之?8 请尽可能举出你所知道的数据库备份与还原的方法9 中断是什么?CPU在中断的时候做了些什么?10 多任务系统里面,一个任务可以在占有资源的同时申请资源,这会导致什么情况?并简述发生这种情况的必要条件。数学题1 1-9这9个数字中,选3个出来,其和为奇数的组合有几个?2 请把16进制数270F转化为十进制数游戏策划类:关于游戏的了解:1.您从什么时候开始接触游戏的(不论

3、是街机或者是电视游戏,还是电脑游戏)?第一眼见到游戏的时候,您感觉如何?您觉得现在的游戏怎么样?2.游戏的哪些因素是您最关注的,画面、剧情、音乐、整体流畅感和平衡性?哪些类型的游戏您最喜欢玩?3.在您玩游戏的时候,突然游戏出现某个漏洞,您的感觉是?4.请问你使用过何种游戏修改工具,特别擅长哪种,请就你熟悉的一款单机游戏把里面一段数据完整的分析出来5.请问您知道BUG一次的含义吗?游戏中的致命BUG一般频繁出现在什么地方?所谓致命BUG:就是能让一款游戏玩家人数锐减的那种啦,如:游戏金钱方面的,游戏平衡方面的等等。6.如果您玩网络游戏的话,举几个你曾经在网络游戏中发现的BUG,最好是你站在玩家的

4、立场上看,觉得可利用价值最高的BUG,然后简述一下当时发现的情景和过程。7.在熟悉或者通关游戏之后您会为您付出的这段游戏时间写点东西吗?或者会下其余时间研究研究您玩过的这款游戏?8.您关注游戏市场上的行情吗?请就你熟悉的游戏类型对现在的游戏市场简要说明一下。分为以下三方面:手机游戏市场,电视游戏和单机市场,网络游戏市场。Web前端开发类:1、CSS+DIV开发Web页面的优势有哪些?2、两种跳转方式分别是什么?有什么区别? 有两种,分别为:<jsp:include page="included.jsp" flush="true"> <j

5、sp:forward page= "nextpage.jsp”>3、搜索引擎如何抓取网页和如何索引网页4、简述列举文档对象模型DOM里document的常用的查找访问节点的方法5、在IE中,HTML对象的ID 可以作为document 的下属对象变量名直接使用,在FF中不能,此兼容性问题如何解决?6、引入样式表的方式有几种?7、JavaScript是一门基于解释性的语言,它和java语言的区别?8、JS中的三种弹出式消息提醒(警告窗口、确认窗口、信息输入窗口)的命令是什么?游戏美术类:考查对于PS,3DsMax(或MAYA),AE等软件的熟悉程度答案:编程题:1 考察数据结构的

6、知识点,这里可使用筛选法,该方法是大部分数据结构书籍都有讲解的算法,当然还有时间复杂度更低的算法(空间复杂度),但是因为求值范围为 1 100 ,故综合来看,筛选法的效率是最高的。int main()int *sieve;int n;int iCounter=2, iMax, i;printf(“Please input max number:”);scanf(“%d”, &n);sieve=(int*)malloc(n-1)*sizeof(int);for(i=0;i<n-1;i+) sievei=i+2; iMax = (int)sqrt(n);while (iCounter

7、<=iMax) for (i=2*iCounter-2; i<n-1; i+=iCounter)sievei = 0;iCounter+; for(i=0; i<n-1; i+)if (sievei!=0) printf(“%d ”,sievei);return 0;2、考察数据结构的知识点,求公约数的算法很多,可考虑效率较高的欧几里德递归算法 ,int gcd(int m,int n)int temp = 0;if(m < n)temp = m;m = n;n = temp;if(n = 0)return m;elsereturn gcd1(n, m%n);3、考察

8、C 容器的知识,这里考察的 MAPint main()string str;map<string, int> content;for( int cnt = 0; cnt < 10; cnt+ )cin >> str;(content.insert(make_pair(str, 0).first)->second+;map<string, int>:iterator it = content.begin();for( ; it != content.end(); +it )cout << it->first << ”:

9、 ” << it->second << endl;return 0;4、考察数据结构,文件目录是一个树5、考察基础编程能力#include<iostream>using namespace std; template <class T>void Swap(T *a, T *b)     T temp;    temp = *a;    *a = *b;    *b = te

10、mp; /* 简单排序算法 begin */ /* * 简单选择排序 * A: 以数组存放的无数数 * n: 数组A中从位置0到n排序(从小到大) */template <class T>void SelectSort(T A, int n)    int small;    for( int i = 0; i < n - 1; i+)         

11、60;   / 执行 n-1 趟        small = i;                              / 先假定待排序序列中第一个元素最小    

12、;    for( int j = i + 1; j < n; j+ )        / 每趟扫描待排序序列n-i-1次            if( Aj < Asmall )               / 如果扫描到一个比最小值元

13、素还小的,则记下其下标                small = j;                               &#

14、160;  Swap(&Ai,&Asmall);                  / 最小元素与待排序序列中第一个元素交换     /* * 直接插入排序 * A: 以数组存放的无数数 * n: 数组A中从位置0到n排序(从小到大) */template <class T>void Ins

15、ertSort(T A, int n)    for(int i = 1; i < n; i+)              / 执行 n-1 趟        int j = i;        T temp = Ai;    

16、60;                     / 待插入元素存入临时变量        while(j > 0 && temp < Aj-1)            / 从后往前查找插入位置

17、            Aj = Aj-1;                      / Aj-1元素后移            j-; 

18、                               / j指针前移                Aj = temp; 

19、                           / 待插入元素存入找到的插入位置     /* * 冒泡排序 * A: 以数组存放的无数数 * n: 数组A中从位置0到n排序(从小到大) */template <class T>vo

20、id BubbleSort(T A, int n)    int i,j,last;    i = n - 1;    while ( i > 0 )                            

21、; / 最多进行n-1躺        last = 0;                               / 将last赋值为0      

22、60; for( j = 0; j < i; j+)                 / 从前往后进行相邻元素的两两比较            if(Aj+1 < Aj)            &#

23、160;    Swap(&Aj,&Aj+1);                / 后者小,则交换                last = j;       &

24、#160;               / 有交换,last置为j                            i = last;   &#

25、160;                           /如果一趟没有元素交换,则last为0     /* 简单排序算法 end */ /* 快速排序 begin */ /* * 快速排序 * A: 以数组存放的无数数 * left

26、和right: Aleft 和 Aright 之间的元素排序 */template <class T>void QuickSort(T A, int left, int right)    int i,j;    if(left < right)                     &#

27、160;      / 若待排序序列多于一个元素,则继续快速排序        i = left;                               / 游动指

28、针i,j        j = right + 1;        Swap(&Aleft,&A(left + right)/2);    / 避免最坏境况发生        do            

29、                         / 开始一趟快速排序,Aleft做为分割元素            do i+; while(Ai < Aleft);     

30、60; / i指针从左往右找第一个 大于等于 分割元素的元素            do j-; while(Aj > Aleft);       / j指针从右往左找第一个 小于等于 分割元素的元素            if( i < j ) Swap(&Ai,&Aj

31、);       / 若 i < j,则交换两个元素         while(i<j);                            / 若 i < j,则继

32、续本趟排序        Swap(&Aleft,&Aj);                   / 交换分割元素Aleft和Aj的位置        QuickSort(A,left,j-1);    

33、              / 对低端序列快速排序        QuickSort(A,j+1,right);                 / 对高端序列快速排序     /

34、* 快速排序 end */ /*对上面的几种排序算法,进行简单的测试*/int main()     int a5 = 2,1,6,8,3;/  SelectSort(a,5);/  InsertSort(a,5);/  BubbleSort(a,5);     QuickSort(a,0,4);    for(int i = 0; i < 5; i+)      

35、60;  cout << ai << " "        cout << endl;    return 0;技术问答题:1、单元测试(模块测试)是开发者编写的一小段代码,用于检验被测代码的一个很小的、很明确的功能是否正确。通常而言,一个单元测试是用于判断某个特定条件(或者场景)下某个特定函数的行为。主要单元测试工具:QTP:quicktest Professional.,C+ TEST2、 规范编

36、程内容:标识符规则 - 类,方法,变量,同时也是包名的规范 由字母(汉语中的一个汉字是一个字母),数字,下划线和$组成,不能以数字开头。 大小写敏感 没有长度限制,不能有空格 不能使用Java的关键字和保留字 java中的关键字 goto和const在java中虽然不再使用但是还作为保留字存在 java中没有sizeof这个关键字了,java中的boolean类型的值只能用true和false,且这两个也是关键字 enum 枚举 assert 断言 一个标识符尽量符合语义信息,提高程序可读性 类 名 :每个单词首字母大写, 变量和方法 :第一个单词小写,后边的每个单词首字母大写 包 名 :全部

37、小写 常 量 :全部大写 以下划线分词 局部变量:定义在方法中的变量 (1)先赋值后使用 (2)从定义变量的代码块开始到代码块结束 (3)在同一范围内不允许两个局部变量发生命名冲突3、简单点说,对于一个vector&lt;int&gt;的函数,比如size(),如果在不同的cpp中出现,在这些文件编译的时候都要把vector&lt;int&gt;:size()编译一遍。然后在链接的时候把重复的函数去掉。很显然增加了编译时间。模板的声明是不编译的,更没有空间,它根本不是实际的类型或函数,编译器根本不管它。只有实例化的时候,才生成真正的类型、函数,而实例化的地方不在

38、一起,必然造成同一个类型、函数被编译了多次。反观类的编译,只在它的cpp中编译一次,其他地方都使用它的头文件得到声明。4、面对对象就是:把数据及对数据的操作方法放在一起,作为一个相互依存的整体对象。对同类对象抽象出其共性,形成类。类中的大多数数据,只能用本类的方法进行处理。类通过一个简单的外部接口与外界发生关系,对象与对象之间通过消息进行通信。程序流程由用户在使用中决定。5、设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢

39、的;设计模式使代码编制真正工程化;设计模式是软件工程的基石脉络,如同大厦的结构一样。好处:(1)、复用解决方案通过复用已经公认的设计,能够在解决问题时取得先发优势,而且避免重蹈前人覆辙。可以从学习他人的经验中获益,用不着为那些总是会重复出现的问题再次设计解决方案。 (2)、确立通用术语开发中的交流和协作都需要共同的词汇基础和对问题的共识。设计模式在项目的分析和设计阶段提供了共同的基准点。 (3)、提高观察高度模式还提供了观察问题、设计过程和面向对象的更高层次的视角,这将可以从“过早处理细节”的桎梏中解放出来。 (4)、大多数设计模式还能使软件更容易修改和维护。其原因在于,它们都是久经考验的解决

40、方案。所以,它们的结构都是经过长期发展形成的,比新构思的解决方案更善于应对变化。而且,这些模式所用代码往往更易于理解从而使代码更易维护。6、引用就是对某个变量其别名。对引用的操作与对应变量的操作的效果完全一样。 2. 申明一个引用的时候,切记要对其进行初始化。 引用声明完毕后,相当于目标变量名有两个名称,即该目标原名称和引用名,不能再把该引用名作为其他变量名的别名。声明一个引用,不是新定义了一个变量,它只 表示该引用名是目标变量名的一个别名,它本身不是一种数据类型,因此引用本身不占存储单元,系统也 不给引用分配存储单元。 3.不能建立数组的引用。 / 切记不能建立数组的引用7、面向对象是一种程

41、序设计的思想,简单的讲,就是封装,继承,多态;当然,也可以说抽象。封装这个概念简单的说,对于简单的数据类型,有它自己的封装类(通常我们说的打包);对于引用类型,类就是一个封装体的一个表现.继承:子类继承父类(也就是派生类继承基类),它具有可扩展性,便于程序代码的重用性。 继承可以实现多态:通过重写(覆写),通过对象上传可以实现多态:通过重写和重载实现抽象:面向接口编程8、(1).打开块检查(block checking)(2).用rman备份时打开块跟踪(10g以上)(3). 镜像日志组成员。(4). 备份时使用 check logical 选项这会让rman检查块中的逻辑损坏以及头尾校验,这

42、是获得良好备份的最好方式。(5) . 测试你的备份做任何操作都不如实际恢复一次数据库。(6). 每个数据文件在一个单独的备份片中做部分恢复时rman必须读取整个备份片和必须的归档日志。(7). 维护 rman 的恢复目录和控制文件仔细选择你的保留政策。(8). 预防控制文件丢失这将确保您始终具备最新controlfile的可用。(9). 测试你的恢复在恢复场合,会让你知道恢复将怎样执行。(10). 在备份归档时不要使用delete all input DELETE INPUT 将从第一个归档位置删除日志。9、CPU工作方法分为中断模式和查询模式. 查询模式就是说CPU轮翻的对外设顺序访问,比方

43、说它先看看键盘有没被按下有的话处理,没的话继续往下看鼠标有没有移动再看看打印机印的怎么样了,再看.等等.显然查询方式的效率低.但稳定可靠. 中断模式时就是说CPU不主动访问这些设备,只管处理自己的任务,没任务就闲着.也就是说在那等着.如果有设备要与CPU联系,或要CPU处理一些事情,他会给CPU发一个中断请求信号.一种情况是这时CPU就会放下正在进行的工作而去处理这个外设的要求.这叫做响应中断.处理完中断后,CPU返回去继续执行中断以前的工作.还有一种情况如果CPU这时正在做更重要的事情他就会让这个设备先在那等着.有空时响应他.如果同时有好几个设备都要CPU来处理,CPU就会从按重要程度来逐个

44、处理.这就是中断和中断的优先级10、死锁(1) 互斥条件:一个资源每次只能被一个进程使用。(2) 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。(3) 不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。(4) 循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。数学题:1、采用分类讨论的方法,首先,要是 三个数字的和是奇数.那么共有 1 奇数+奇数+奇数=奇数 2 偶数+偶数+奇数=奇数 第一种情况是在5个中取出3个奇数.共有10方法.(这是一个组合) 第二种情况是在这九个数字中取出两个偶数,即在4个偶数中取出2个偶数.共有4×3/2!=6种

45、方法.忘记了还有五个奇数中再选取一个.5×6=30所以一共有40种方法.2、9999Web前端开发类:1、(1)div+css,这个网页设计模式中,div承担了网页的内容,css承担了网页的样式。这样就使网页的内容和样式的分离开来。有利于页面的维护升级。(2)有助于提高搜索引擎亲和力(快速找到需要的数据,而不是像在table中一层层的查找)(3)有助于页面的重构(换皮肤如blog,直接套用另外一套样式就可以实现,而不用改动网页脚本。)2、在JSP中,跳转页面有两种方式:1.forward跳转:<jsp:forward page="跳转页面地址" />2

46、.response跳转:response.sendRedirect("跳转页面地址");两种跳转的区别如下:1.forward跳转:a.服务器端跳转,地址栏不改变;b.执行到跳转语句后马上无条件跳转,之后的代码不再执行(跳转之前一定要释放全部资源);c.request设置的属性在跳转后的页面仍可以使用;d.使用<jsp:param name="参数名" value="参数值" />传递参数。2.response跳转:a.客户端跳转,地址栏改变;b.所有代码执行完毕后跳转;c.跳转后的页面不能使用上一个页面的request属性;d.使用地址重写传递参数(response.sendRedirect("URL?参数名参数值"))。3、每个独立的搜索引擎都有自己的网页抓取程序(spider)。Spider顺着网页中的超链接,连续地抓取网页。被抓取的网页被称之为网页快照。由于互联网中超链接的应用很普遍,理论上,从一定范围的网页出发,就能搜集到绝大多数的网页。抓取网页信息需要有高性能的“网络蜘蛛”程序(Spider)去自动地在互联网中搜索信息。一个典型的网络蜘蛛工作的方式,是查看一个页面,并从中找到相关信息,然后它再从该页面的所有链接中出发,继续寻找相关的信息,以此类推,直至穷尽。网络蜘蛛要

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论