技术面试题目及答案.docx

上传人:b****7 文档编号:10823788 上传时间:2023-02-23 格式:DOCX 页数:18 大小:26.23KB
下载 相关 举报
技术面试题目及答案.docx_第1页
第1页 / 共18页
技术面试题目及答案.docx_第2页
第2页 / 共18页
技术面试题目及答案.docx_第3页
第3页 / 共18页
技术面试题目及答案.docx_第4页
第4页 / 共18页
技术面试题目及答案.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

技术面试题目及答案.docx

《技术面试题目及答案.docx》由会员分享,可在线阅读,更多相关《技术面试题目及答案.docx(18页珍藏版)》请在冰豆网上搜索。

技术面试题目及答案.docx

技术面试题目及答案

时间有限公司技术部面试试题

游戏开发类:

编程题:

1请写代码打印100之内的素数,讲求效率(请做你的解法的效率分析)

2求m,n的最大公约数

3输入10个字符串,打印出其中重复的字符串以及重复的次数

4请画图例(UML最好),给出windows下的文件目录的设计模式

5用多种方法对数据进行排序。

(选择排序、插入排序、冒泡排序、快速排序等)

 

技术问答题:

1什么是单元测试?

你用过哪些单元测试工具?

他们的区别和好处各有哪些?

你主要倾向于哪一种?

2什么是编程规范?

你倾向于什么样的规范?

他的好处在哪?

3什么是头文件依赖?

你注意过这些问题吗?

你注意过编译的时间吗?

你怎么改进编译时间?

4什么是面向对象?

你在哪些方面用过面向对象?

带来了什么好处?

又有什么弊端?

5什么是设计模式?

使用设计模式有什么好处?

列举你使用过的设计模式知识。

6什么是“引用”?

申明和使用“引用”要注意哪些问题?

7面向对象的三个基本特征,并简单叙述之?

8请尽可能举出你所知道的数据库备份与还原的方法

9中断是什么?

CPU在中断的时候做了些什么?

10多任务系统里面,一个任务可以在占有资源的同时申请资源,这会导致什么情况?

并简述发生这种情况的必要条件。

 

数学题

11-9这9个数字中,选3个出来,其和为奇数的组合有几个?

2请把16进制数270F转化为十进制数

 

游戏策划类:

关于游戏的了解:

1.您从什么时候开始接触游戏的(不论是街机或者是电视游戏,还是电脑游戏)?

第一眼见到游戏的时候,您感觉如何?

您觉得现在的游戏怎么样?

  2.游戏的哪些因素是您最关注的,画面、剧情、音乐、整体流畅感和平衡性?

哪些类型的游戏您最喜欢玩?

  3.在您玩游戏的时候,突然游戏出现某个漏洞,您的感觉是?

4.请问你使用过何种游戏修改工具,特别擅长哪种,请就你熟悉的一款单机游戏把里面一段数据完整的分析出来

5.请问您知道BUG一次的含义吗?

游戏中的致命BUG一般频繁出现在什么地方?

所谓致命BUG:

就是能让一款游戏玩家人数锐减的那种啦,如:

游戏金钱方面的,游戏平衡方面的等等。

  6.如果您玩网络游戏的话,举几个你曾经在网络游戏中发现的BUG,最好是你站在玩家的立场上看,觉得可利用价值最高的BUG,然后简述一下当时发现的情景和过程。

  7.在熟悉或者通关游戏之后您会为您付出的这段游戏时间写点东西吗?

或者会下其余时间研究研究您玩过的这款游戏?

  8.您关注游戏市场上的行情吗?

请就你熟悉的游戏类型对现在的游戏市场简要说明一下。

分为以下三方面:

手机游戏市场,电视游戏和单机市场,网络游戏市场。

Web前端开发类:

1、CSS+DIV开发Web页面的优势有哪些?

2、两种跳转方式分别是什么?

有什么区别?

有两种,分别为:

includepage="included.jsp"flush="true">

forwardpage="nextpage.jsp”>

3、搜索引擎如何抓取网页和如何索引网页

4、简述列举文档对象模型DOM里document的常用的查找访问节点的方法

5、在IE中,HTML对象的ID可以作为document的下属对象变量名直接使用,在FF中不能,此兼容性问题如何解决?

6、引入样式表的方式有几种?

7、JavaScript是一门基于解释性的语言,它和java语言的区别?

8、JS中的三种弹出式消息提醒(警告窗口、确认窗口、信息输入窗口)的命令是什么?

游戏美术类:

考查对于PS,3DsMax(或MAYA),AE等软件的熟悉程度

答案:

编程题:

1考察数据结构的知识点,这里可使用筛选法,该方法是大部分数据结构书籍都有讲解的算法,当然还有时间复杂度更低的算法(空间复杂度),但是因为求值范围为1-100,故综合来看,筛选法的效率是最高的。

intmain()

{

int*sieve;

intn;

intiCounter=2,iMax,i;

printf(“Pleaseinputmaxnumber:

”);

scanf(“%d”,&n);

sieve=(int*)malloc((n-1)*sizeof(int));

for(i=0;i

sieve[i]=i+2;

iMax=(int)sqrt(n);

while(iCounter<=iMax){

for(i=2*iCounter-2;i

sieve[i]=0;

iCounter++;}

for(i=0;i

if(sieve[i]!

=0)printf(“%d”,sieve[i]);

return0;

}

2、考察数据结构的知识点,求公约数的算法很多,可考虑效率较高的欧几里德递归算法,

intgcd(intm,intn){

inttemp=0;

if(m

temp=m;

m=n;

n=temp;

}

if(n==0)

returnm;

else

returngcd1(n,m%n);

}

3、考察C++容器的知识,这里考察的MAP

intmain()

{

stringstr;

mapcontent;

for(intcnt=0;cnt<10;cnt++){

cin>>str;

(content.insert(make_pair(str,0)).first)->second++;

}

map:

:

iteratorit=content.begin();

for(;it!

=content.end();++it)

cout<first<<”:

”<second<

return0;

}

4、考察数据结构,文件目录是一个树

5、考察基础编程能力

#include

usingnamespacestd;

 

template

voidSwap(T*a,T*b)

{

    Ttemp;

    temp=*a;

    *a=*b;

    *b=temp;

}

 

/****************************************简单排序算法begin****************************************/

 

/*

 *简单选择排序

 *A:

以数组存放的无数数

 *n:

数组A中从位置0到n排序(从小到大)

 */

template

voidSelectSort(TA[],intn)

{

    intsmall;

    for(inti=0;i

        small=i;                             //先假定待排序序列中第一个元素最小

        for(intj=i+1;j

            if(A[j]

                small=j;     

            }

        }

        Swap(&A[i],&A[small]);                 //最小元素与待排序序列中第一个元素交换

    }

}

 

/*

 *直接插入排序

 *A:

以数组存放的无数数

 *n:

数组A中从位置0到n排序(从小到大)

 */

template

voidInsertSort(TA[],intn)

{

    for(inti=1;i

        intj=i;

        Ttemp=A[i];                         //待插入元素存入临时变量

        while(j>0&&temp

            A[j]=A[j-1];                     //A[j-1]元素后移

            j--;                               //j指针前移

        }

        A[j]=temp;                           //待插入元素存入找到的插入位置

    }

}

 

/*

 *冒泡排序

 *A:

以数组存放的无数数

 *n:

数组A中从位置0到n排序(从小到大)

 */

template

voidBubbleSort(TA[],intn)

{

    inti,j,last;

    i=n-1;

    while(i>0){                           //最多进行n-1躺

        last=0;                              //将last赋值为0

        for(j=0;j

            if(A[j+1]

                Swap(&A[j],&A[j+1]);               //后者小,则交换

                last=j;                      //有交换,last置为j

            }

        }

        i=last;                              //如果一趟没有元素交换,则last为0

    }

}

 

/****************************************简单排序算法end****************************************/

 

/****************************************快速排序begin****************************************/

 

/*

 *快速排序

 *A:

以数组存放的无数数

 *left和right:

A[left]和A[right]之间的元素排序

 */

template

voidQuickSort(TA[],intleft,intright)

{

    inti,j;

    if(left

        i=left;                              //游动指针i,j

        j=right+1;

        Swap(&A[left],&A[(left+right)/2]);   //避免最坏境况发生

        do{                                   //开始一趟快速排序,A[left]做为分割元素

            doi++;while(A[i]

            doj--;while(A[j]>A[left]);      //j指针从右往左找第一个小于等于分割元素的元素

            if(i

        }while(i

        Swap(&A[left],&A[j]);                  //交换分割元素A[left]和A[j]的位置

        QuickSort(A,left,j-1);                 //对低端序列快速排序

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

    }

}

 

/****************************************快速排序end****************************************/

 

/*对上面的几种排序算法,进行简单的测试*/

intmain(){

    inta[5]={2,1,6,8,3};

// SelectSort(a,5);

// InsertSort(a,5);

// BubbleSort(a,5);

 

    QuickSort(a,0,4);

    for(inti=0;i<5;i++){

        cout<

    }

    cout<

    return0;

}

技术问答题:

1、单元测试(模块测试)是开发者编写的一小段代码,用于检验被测代码的一个很小的、很明确的功能是否正确。

通常而言,一个单元测试是用于判断某个特定条件(或者场景)下某个特定函数的行为。

主要单元测试工具:

QTP:

quicktestProfessional.,C++TEST

2、规范编程内容:

标识符规则---类,方法,变量,同时也是包名的规范

由字母(汉语中的一个汉字是一个字母),数字,下划线和$组成,不能以数字开头。

大小写敏感

没有长度限制,不能有空格

不能使用Java的关键字和保留字

java中的关键字

goto和const在java中虽然不再使用但是还作为保留字存在

java中没有sizeof这个关键字了,java中的boolean类型的值只能用true和false,且这两个也是关键字

enum枚举assert断言

一个标识符尽量符合语义信息,提高程序可读性

类名:

每个单词首字母大写,

变量和方法:

第一个单词小写,后边的每个单词首字母大写

包名:

全部小写

常量:

全部大写以下划线分词

局部变量:

定义在方法中的变量

(1)先赋值后使用

(2)从定义变量的代码块开始到代码块结束

(3)在同一范围内不允许两个局部变量发生命名冲突

3、简单点说,对于一个vector<int>的函数,比如size(),如果在不同的cpp中出现,在这些文件编译的时候都要把vector<int>:

:

size()编译一遍。

然后在链接的时候把重复的函数去掉。

很显然增加了编译时间。

模板的声明是不编译的,更没有空间,它根本不是实际的类型或函数,编译器根本不管它。

只有实例化的时候,才生成真正的类型、函数,而实例化的地方不在一起,必然造成同一个类型、函数被编译了多次。

反观类的编译,只在它的cpp中编译一次,其他地方都使用它的头文件得到声明。

4、面对对象就是:

把数据及对数据的操作方法放在一起,作为一个相互依存的整体——对象。

对同类对象抽象出其共性,形成类。

类中的大多数数据,只能用本类的方法进行处理。

类通过一个简单的外部接口与外界发生关系,对象与对象之间通过消息进行通信。

程序流程由用户在使用中决定。

5、设计模式(Designpattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。

使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。

毫无疑问,设计模式于己于他人于系统都是多赢的;设计模式使代码编制真正工程化;设计模式是软件工程的基石脉络,如同大厦的结构一样。

好处:

(1)、复用解决方案——通过复用已经公认的设计,能够在解决问题时取得先发优势,而且避免重蹈前人覆辙。

可以从学习他人的经验中获益,用不着为那些总是会重复出现的问题再次设计解决方案。

(2)、确立通用术语——开发中的交流和协作都需要共同的词汇基础和对问题的共识。

设计模式在项目的分析和设计阶段提供了共同的基准点。

(3)、提高观察高度--模式还提供了观察问题、设计过程和面向对象的更高层次的视角,这将可以从“过早处理细节”的桎梏中解放出来。

(4)、大多数设计模式还能使软件更容易修改和维护。

其原因在于,它们都是久经考验的解决方案。

所以,它们的结构都是经过长期发展形成的,比新构思的解决方案更善于应对变化。

而且,这些模式所用代码往往更易于理解——从而使代码更易维护。

 

6、引用就是对某个变量其别名。

对引用的操作与对应变量的操作的效果完全一样。

2.申明一个引用的时候,切记要对其进行初始化。

引用声明完毕后,相当于目标变量名有两个名称,即该目标原名称和引用名,不能再把该引用名作为其他变量名的别名。

声明一个引用,不是新定义了一个变量,它只表示该引用名是目标变量名的一个别名,它本身不是一种数据类型,因此引用本身不占存储单元,系统也不给引用分配存储单元。

3.不能建立数组的引用。

//切记不能建立数组的引用

 

7、面向对象是一种程序设计的思想,简单的讲,就是封装,继承,多态;当然,也可以说抽象。

封装这个概念简单的说,对于简单的数据类型,有它自己的封装类(通常我们说的打包);对于引用类型,类就是一个封装体的一个表现.

继承:

子类继承父类(也就是派生类继承基类),它具有可扩展性,便于程序代码的重用性。

继承可以实现多态:

通过重写(覆写),通过对象上传可以实现

多态:

通过重写和重载实现

抽象:

面向接口编程

 

8、

(1).打开块检查(blockchecking)

(2).用rman备份时打开块跟踪(10g以上)

(3).镜像日志组成员。

(4).备份时使用checklogical选项这会让rman检查块中的逻辑损坏以及头尾校验,这是获得良好备份的最好方式。

(5).测试你的备份做任何操作都不如实际恢复一次数据库。

(6).每个数据文件在一个单独的备份片中做部分恢复时rman必须读取整个备份片和必须的归档日志。

(7).维护rman的恢复目录和控制文件仔细选择你的保留政策。

(8).预防控制文件丢失这将确保您始终具备最新controlfile的可用。

(9).测试你的恢复在恢复场合,会让你知道恢复将怎样执行。

(10).在备份归档时不要使用deleteallinputDELETEINPUT将从第一个归档位置删除日志。

 

9、CPU工作方法分为中断模式和查询模式.

查询模式就是说CPU轮翻的对外设顺序访问,比方说它先看看键盘有没被按下有的话处理,没的话继续往下看鼠标有没有移动再看看打印机印的怎么样了,再看...等等..显然查询方式的效率低.但稳定可靠.

中断模式时就是说CPU不主动访问这些设备,,只管处理自己的任务,没任务就闲着.也就是说在那等着.如果有设备要与CPU联系,或要CPU处理一些事情,他会给CPU发一个中断请求信号.一种情况是这时CPU就会放下正在进行的工作而去处理这个外设的要求.这叫做响应中断.处理完中断后,CPU返回去继续执行中断以前的工作.还有一种情况如果CPU这时正在做更重要的事情他就会让这个设备先在那等着.有空时响应他.如果同时有好几个设备都要CPU来处理,CPU就会从按重要程度来逐个处理.这就是中断和中断的优先级

 

10、死锁

(1)互斥条件:

一个资源每次只能被一个进程使用。

(2)请求与保持条件:

一个进程因请求资源而阻塞时,对已获得的资源保持不放。

(3)不剥夺条件:

进程已获得的资源,在末使用完之前,不能强行剥夺。

(4)循环等待条件:

若干进程之间形成一种头尾相接的循环等待资源关系。

 

数学题:

1、采用分类讨论的方法,首先,要是三个数字的和是奇数.那么共有

1奇数+奇数+奇数=奇数

2偶数+偶数+奇数=奇数

第一种情况是在5个中取出3个奇数.共有10方法.(这是一个组合)

第二种情况是在这九个数字中取出两个偶数,即在4个偶数中取出2个偶数.共有4×3/2!

=6种方法.忘记了还有五个奇数中再选取一个.5×6=30

所以一共有40种方法.

 

2、9999

 

Web前端开发类:

1、

(1)div+css,这个网页设计模式中,div承担了网页的内容,css承担了网页的样式。

这样就使网页的内容和样式的分离开来。

有利于页面的维护升级。

(2)有助于提高搜索引擎亲和力(快速找到需要的数据,而不是像在table中一层层的查找)

(3)有助于页面的重构(换皮肤如blog,直接套用另外一套样式就可以实现,而不用改动网页脚本。

 

2、在JSP中,跳转页面有两种方式:

1.forward跳转:

forwardpage="跳转页面地址"/>2.response跳转:

response.sendRedirect("跳转页面地址");两种跳转的区别如下:

1.forward跳转:

a.服务器端跳转,地址栏不改变;b.执行到跳转语句后马上无条件跳转,之后的代码不再执行(跳转之前一定要释放全部资源);c.request设置的属性在跳转后的页面仍可以使用;d.使用

paramname="参数名"value="参数值"/>传递参数。

2.response跳转:

a.客户端跳转,地址栏改变;b.所有代码执行完毕后跳转;c.跳转后的页面不能使用上一个页面的request属性;d.使用地址重写传递参数(response.sendRedirect("URL?

参数名=参数值"))。

3、每个独立的搜索引擎都有自己的网页抓取程序(spider)。

Spider顺着网页中的超链接,连续地抓取网页。

被抓取的网页被称之为网页快照。

由于互联网中超链接的应用很普遍,理论上,从一定范围的网页出发,就能搜集到绝大多数的网页。

抓取网页信息需要有高性能的“网络蜘蛛”程序(Spider)去自动地在互联网中搜索信息。

一个典型的网络蜘蛛工作的方式,是查看一个页面,并从中找到相关信息,然后它再从该页面的所有链接中出发,继续寻找相关的信息,以此类推,直至穷尽。

网络蜘蛛要求能够快速、全面。

网络蜘蛛为实现其快速地浏览整个互联网,通常在技术上采用抢先式多线程技术实现在网上聚集

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 哲学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1