软件智力面试题及答案

2024-10-07

软件智力面试题及答案(精选8篇)

1.软件智力面试题及答案 篇一

1、白箱测试和黑箱测试是什么?什么是回归测试?答题建议:简述下概念即可。

2、单元测试、集成测试、系统测试的侧重点是什么?答题建议:围绕重点简单概括即可。如下:单元测试的重点是系统的模块,包括子程序的正确性验证等。集成测试的重点是模块间的衔接以及参数的传递等。系统测试的重点是整个系统的运行以及与其他软件的兼容性。

3、设计用例的方法、依据有那些?答题建议:测试分为白盒测试和黑盒测试,回答时,要注意分开说。白盒测试用例设计有如下方法:基本路径测试、等价类划分、边界值分析、覆盖测试、循环测试、数据流测试、程序插桩测试、变异测试。依据就是详细设计说明书及其代码结构。黑盒测试用例设计方法:基于用户需求的测试、功能图分析方法、等价类划分方法、边界值分析方法、错误推测方法、因果图方法、判定表驱动分析方法、正交实验设计方法。依据是用户需求规格说明书,详细设计说明书。

4、一个测试工程师应具备那些素质和技能?答题建议:一个好的测试工程师,不仅要基础扎实,对自身的性格、责任心都有非常高的要求。具体如下:(1)掌握基本的测试基础理论(2)本着找出软件存在的问题的态度进行测试,即客观吧,不要以挑刺形象出现(3)可熟练阅读需求规格说明书等文档(4)以用户的观点看待问题(5)有着强烈的质量意识(6)细心和责任心(7)良好的有效的沟通方式(与开发人员及客户)(8)具有以往的测试经验(9)能够及时准确地判断出高危险区在何处.

5、集成测试通常都有那些策略?答题建议:大致说四点即可,当然说全更好。集成测试有十种策略:(1)大爆炸集成(2)自顶向下集成(3)自底向上集成(4)三明治集成(5)分层集成(6)基干集成(7)基于功能的集成(8)基于消息的集成(9)基于风险的集成(10)基于进度的集成.

2.有趣又简单的经典智力题及答案 篇二

下列格子中,问号处可以填入哪个一位数数字?

2、一个让人棘手的数学智力题

你能解出下面这个棘手的数学问题吗,一个奖杯等于多少?

3、李雷要去池塘中心,帮帮他

李雷准备到池塘中心的小岛上去,小岛距离他9米远。他不会游泳,他有2根8米长的木板,他能过去吗?

4、考眼力:找手机

据说能在30秒内找到手机的都是高手!

5、沿着花形滚动的硬币

把七枚相同的硬币互相紧贴排成花形(如下图没有红圈处的硬币),再拿一枚相同大小的硬币(如下图红圈处),从最上方开始,紧贴着花形硬币周围滚动一周再回到原处。

请问,这枚硬币自己旋转了几圈呢?

答案:

3.交警面试题及答案 篇三

1)我非常认同这种说法,“适度紧张”确实有助于提高我们的工作效率;

2)如果是我,我会这样做:我会把完成某项工作所需要的时间或者指定的时间进行分节,比如每30分钟为一节,并把每小节时间所要完成的工作进行计划,要求自己在小节时间内完成计划的工作。

3)当然,我在提高工作效率的同时,我也会保证我的工作质量;回答完毕,谢谢;

2、你新到单位,有一定能力,却经常炫耀能力,导致别人不理你,后来你工作也难开展,你怎么解决?

1)首先,我会想领导以及我周围的同事作自我检讨并诚挚道歉,检讨我以前的那些不理智、不正确、不成熟的做法,并保证在以后的工作中改正以前的错误做法,恳请他们原谅;

2)我会用实际行动来证明我在改变,并恳请周围的同事能够接受,比如说话语气柔和,遇到问题会虚心求教,当有同事问我问题时我会耐心解释等;

3)我会把我的全部能力都用在工作上,把领导安排的工作尽量完美的完成;回答完毕,谢谢;

3、《警察条理》规定,警察执法要依法执法,恪尽职守(类似的要求),你如何做到?

1)首先,我认为作为公安系统中的一员,我们应该熟练掌握国家法律赋予我们的权利和义务,知道我们该做什么、能作什么、不该做什么、不能做什么;

2)其次,我们应该熟练掌握公安工作所涉及到的相关法律知识,比如《行政处罚法》、《治安管理处罚法》《人们警察内务条例》等,以便我们在遇到违法行为时能够做出合理的判断和裁决;

3)第三,公安或者警察作为一种职业,它也有它的职业道德,只有我们遵守职业道德才能恪尽职守、忠于工作,同时我们还要主动接受党、国家、上级领导以及社会各界、人们群众的监督,以此来促进我们依法执法、恪尽职守;

4)我想,随着我国公安和警察素质的提高以及相关法律法规、制度的健全,人民公安和人民警察一定会做到忠于人民、忠于党、忠于国家,全心全意为人民服务,依法执法,恪尽职守;

4.前端开发面试题及答案 篇四

前端开发面试题及答案

1、对Web标准以及W3C的理解与认识?

答:标签闭合、标签小写、不乱嵌套、提高搜索机器人搜索几率、使用外链CSS和JS脚本、结构行为表现的分离、文件下载与页面速度更快、内容能被更多的用户所访问、内容能被更广泛的设备所访问、更少的代码和组件、容易维护、改版方便,不需要变动页面内容、提供打印版本而水需要复制内容、提高网站易用性。

2、XHTML和HTML有什么区别?

答:HTML是一种基本的WEB网页设计语言,XHTML是一个基于XML的置标语言 最主要的不同:

XHTML元素必须被正确地嵌套;

XHTML元素必须被关闭;

标签名必须用小写字母;

XHTML文档必须拥有根元素。

3、Doctype?严格模式与混杂模式-如何触发这两种模式,区分它们有何意义? 答:Doctype用于声明文档使用哪种规范(HTML/XHTML)

该标签可声明三种DTD类型,分别为严格版本、过度版本以及基于框架的HTML文档。

加入XML声明可触发,解析方式更改为IE5.5拥有IE5.5的bug。

4、行内元素有哪些?块级元素有哪些?CSS的盒模型?

答:行内元素:a b br i span input select

块级元素:div p h1 h2 h3 h4 form ul

CSS盒模型:内容,border margin padding5、CSS引入的方式有哪些?link和@import的区别是?

答:方式:内联 内嵌 外链 导入

区别:同时加载

前者无兼容性,后者CSS2.1以下浏览器不支持

Link支持使用javascript 改变样式,后者不可。

6.CSS选择符有哪些?哪些属性可以继承?优先级算法如何计算?内联和important哪个优先级高?

答:标签选择符、类选择符、id选择符

继承不如指定 id>class>标签选择

后者优先级高

7、前端页面有哪三层构成,分别是什么?作用是什么?

答:结构层HTML 表示层CSS 行为层JS8、你做的页面在哪些浏览器测试过?这些浏览器的内核分别是什么? 答:Ie(Ie内核)

火狐(Gecko)

谷歌(webkit)

opear(Presto)

9、img标签上title与 alt属性的区别是什么?

答:Alt当图片不显示时,用文字代表

Title为该属性提供信息。

10、描述CSS Reset的作用和用途

答:Reset重置浏览器的CSS默认属性 浏览器的品种不同,样式不同,然后重

置,让他们统一。

11、http状态码有那些?分别代表是什么意思?

100-199 用于指定客户端应响应的某些动作。

200-299 用于表示请求成功。

300-399 用于已经移动的文件并且常被包含在定位头信息中指定新的地址信息。400-499 用于指出客户端的错误。

400 语义有误,当前请求无法被服务器理解。

401 当前请求需要用户验证

403 服务器已经理解请求,但是拒绝执行它。

500-599 用于支持服务器错误。

503 – 服务不可用

13.解释css sprites,如何使用。

Css 精灵 把一堆小的图片整合到一张大的图片上,减轻服务器对图片的请求数量

14.浏览器标准模式和怪异模式之间的区别是什么?

盒子模型 渲染模式的不同

使用 window.top.document.compatMode 可显示为什么模式

15.你如何对网站的文件和资源进行优化?期待的解决方案包括:

文件合并

文件最小化/文件压缩

使用CDN托管

缓存的使用

16.什么是语义化的HTML?

直观的认识标签 对于搜索引擎的抓取有好处

17.清除浮动的几种方式,各自的优缺点

1.使用空标签清除浮动 clear:both(理论上能清楚任何标签,增加无意义的标签)

2.使用overflow:auto(空标签元素清除浮动而不得不增加无意代码的弊端,使用zoom:1用于兼容IE)

3.是用afert伪元素清除浮动(用于非IE浏览器)

18.css hack

_marging IE 6

+margin IE 7

Marging:0 auto 9 所有Ie

Margin IE 8

前端开发面试题之Javascript部分

1.javascript的typeof返回哪些数据类型

Object number function boolean underfind

2.例举3种强制类型转换和2种隐式类型转换?

强制(parseInt,parseFloat,number)

隐式(== – ===)

3.split()join()的区别

前者是切割成数组的形式,后者是将数组转换成字符串

4.数组方法pop()push()unshift()shift()

Push()尾部添加 pop()尾部删除

Unshift()头部添加 shift()头部删除

5.事件绑定和普通事件有什么区别

6.IE和DOM事件流的区别

1.执行顺序不一样、2.参数不一样

3.事件加不加on

4.this指向问题

7.IE和标准下有哪些兼容性的写法

Var ev = ev || window.event

document.documentElement.clientWidth || document.body.clientWidth

Var target = ev.srcElement||ev.target

8.ajax请求的时候get 和post方式的区别

一个在url后面 一个放在虚拟载体里面

有大小限制

安全问题

应用不同 一个是论坛等只需要请求的,一个是类似修改密码的9.call和apply的区别

Object.call(this,obj1,obj2,obj3)

Object.apply(this,arguments)

10.ajax请求时,如何解释json数据

使用eval parse 鉴于安全性考虑 使用parse更靠谱

11.b继承a的方法

12.JavaScript this指针、闭包、作用域

13.事件委托是什么

让利用事件冒泡的原理,让自己的所触发的事件,让他的父元素代替执行!

14.闭包是什么,有什么特性,对页面有什么影响

闭包就是能够读取其他函数内部变量的函数。

15.如何阻止事件冒泡和默认事件

canceBubble return false

16.添加 删除 替换 插入到某个接点的方法

obj.appendChidl()

obj.innersetBefore

obj.replaceChild

obj.removeChild

17.解释jsonp的原理,以及为什么不是真正的ajax

动态创建script标签,回调函数

Ajax是页面无刷新请求数据操作

18.javascript的本地对象,内置对象和宿主对象

本地对象为array obj regexp等可以new实例化

内置对象为gload Math 等不可以实例化的宿主为浏览器自带的document,window 等

19.document load 和document ready的区别

Document.onload 是在结构和样式加载完才执行js

Document.ready原生种没有这个方法,jquery中有 $().ready(function)

20.”==”和“===”的不同

前者会自动转换类型

后者不会

21.javascript的同源策略

5.c面试题及答案 篇五

1、三种基本的数据模型

答:按照数据结构类型的不同,将数据模型划分为层次模型、网状模型和关系模型,

2、结构与联合有和区别?

答:(1). 结构和联合都是由多个不同的数据类型成员组成, 但在任何同一时刻, 联合中只存放了一个被选中的成员(所有成员共用一块地址空间), 而结构的所有成员都存在(不同成员的存放地址不同)。

(2). 对于联合的不同成员赋值, 将会对其它成员重写, 原来成员的值就不存在了, 而对于结构的不同成员赋值是互不影响的

3、什么是预编译,何时需要预编译?

答:预编译又称为预处理,是做些代码文本的替换工作。处理#开头的指令,比如拷贝#include 包含的文件代码,#define 宏定义的替换,条件编译等,就是为编译做的预备工作的`阶段,主要处理#开始的预编译指令,预编译指令指示了在程序正式编译前就由编译器进行的操作,可以放在程序中的任何位置。

c 编译系统在对程序进行通常的编译之前,先进行预处理。c 提供的预处理功能主要有以下三种:1)宏定义 2)文件包含 3)条件编译

1、总是使用不经常改动的大型代码体。

2、程序由多个模块组成,所有模块都使用一组标准的包含文件和相同的编译选项。在这种情况下,可以将所有包含文件预编译为一个预编译头。

4、描述内存分配方式以及它们的区别?

答:1) 从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static 变量。

2) 在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放,

栈内存分配运算内置于处理器的指令集。

3) 从堆上分配,亦称动态内存分配。程序在运行的时候用 malloc 或 new 申请任意多少的内存,程序员自己负责在何时用 free 或 delete 释放内存。动态内存的生存期由程序员决定,使用非常灵活,但问题也最多

5、局部变量能否和全局变量重名?

答:能,局部会屏蔽全局。要用全局变量,需要使用”::“

局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在那个循环体内

6、如何引用一个已经定义过的全局变量?

答 、可以用引用头文件的方式,也可以用 extern 关键字,如果用引用头文件方式来引用某个在头文件中声明的全局变量,假定你将那个变量写错了,那么在编译期间会报错,如果你用 extern 方式引用时,假定你犯了同样的错误,那么在编译期间不会报错,而在连接期间报错。

7、全局变量可不可以定义在可被多个.C 文件包含的头文件中?为什么?

答 、可以,在不同的 C 文件中以 static 形式来声明同名全局变量。

可以在不同的 C 文件中声明同名的全局变量,前提是其中只能有一个 C 文件中对此变量赋初值,此时连接不会出错。

8、语句 for( ;1 ;)有什么问题?它是什么意思?

答 、和 while(1)相同,无限循环。

9、do„„while 和 while„„do 有什么区别?

6.经典java面试题及答案 篇六

基本数据类型有四类八种

整形:byte short int long

浮点型:float double

字符型:char

布尔型:boolean

2.编码转换,把GB2312的字符串转换成ISO8859-1。

String str = “abcd”;

str = new String(str.getBytes(“GB2312”), “ISO8859_1”);

3.String和StringBuffer有什么区别,“==”和equals有什么区别。

char能不能放下一个中文字符,为什么?

(1)本质上的区别是:String是不可变类(immutable),而StringBuffer是可变类。

StringBuffer是可以改变字符串长度的,用append(“str”)的方法可以不断增加内容,

而String则不可以,并且相同的字符串对象是相同的地址引用,

若要String改变值,需要改变String变量的引用(指向新的对象)。

(2)== 是对引用进行判断,对内存地址的判断

equals()是判断引用的值是否相等,对实际存储的值的判断

内存地址相同的值一定相同,但值相同的内存地址就不一定相同

(3)char可以放下一个中文字符,因为java采用的是unicode编码,一个字符为两个字节。

4.写一个字符串反转的方法,把“abcdefg”转换成“gfedcba”。

String str = “abcdefg”;

//方法一:利用StringBuffer的reverse()方法实现

public static String reverse2(String str) {

StringBuffer sb = new StringBuffer(str);

sb.reverse().toString();

return sb.toString();

}

//方法二:

public static String reverse(String str) {

if (str == null) {

throw new NullpointerException();

}

return (new StringBuffer(str)).reverse().toString();

}

//方法三:参照StringBuffer的reverse()方法

public static String reverse(String s){

int length=s.length();

StringBuffer result=new StringBuffer(length);

for(int i=length-1;i>=0;i--)

result.append(s.charAt(i));

return result.toString();

}

5.替换字符串,把“abc.abc.abc”替换成“abc/abc/abc”。

String rep = “abc.abc.abc”;

String rep2 = rep.replaceAll(“.”, “/”);

//由于.是特殊字符,需要加上转义,否则全部转换成/了

6.类型转换,把int类型的“123456”转换成String后再转换为int,方法越多越好。

int i = 123456;

将整数i转换成字串 s

1.) String s = String.valueOf(i);

2.) String s = Integer.toString(i);

3.) String s = “” + i;

将字串 s 转换成整数 i

1.)int i = Integer.parseInt(s);

2.)int i = Integer.parseInt(s,10);//int radix为进制

3.)int i = Integer.valueOf(s).intValue();

注: double, float, long 转换的方法大同小异.

7.日期处理,取得从1970到现在的毫秒数,格式为yyyy-MM-dd-HH:mm:ss再转换成String输出。

//获取当前系统的时间new

java.util.Date date = new java.util.Date();

//取得从1970年到现在的毫秒数

long now = date.getTime();

//格式化日期

java.text.SimpleDateFormat df = new java.text.SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”);

//转为字符串

String dateStr = df.format(date);

8.io文件操作,指定一个文件夹,C:temptest,

7.干部竞聘上岗面试题及参考答案 篇七

共三个题目,第一题为必做题,其他两题请任选1题,每人答题时间10分钟

1、两个学校合并以后,学生个体之间的冲突,很容易演化成原来两个学校学生之间的群体冲突。如果你是年级分管主任,你应当如何防患于未然。

(1)首先校准自己。调整自己的躯体、心理,是自己处于一种良好的运行状态;抑制住自己管好学生、出人头地的冲动,学会自我放松,学会控制自己的情绪。

(2)关注学生的实际问题和家长的担心。全心全意为学生的生活、学习服务,教会学生自理能力,利用3周的时间认真研究、对待及解决“第二断乳期”对住宿生的不适。

(3)军训期间就开始加强管理,对于学生的过错要“引忍恨”,遏制坏的苗头要“稳准狠”,充分发挥临时班委的作用,防止小团体的形成。

(4)加强班级建设。一是坚持正确的舆论导向,可以通过家长会、学生团体组织等多种形式,执照强有力的舆论氛围,弘扬正气、压制邪气,形成积极向上的集体舆论;二是通过大家共同讨论、引导的方式,尽快形成班集体契约,并极力倡导广大老师也来配合尊重学生的这种契约,防止老师成为这种契约的破坏者;三是进行以加强团队合作、情绪与压力管理、自信心和毅力、感恩心态、人际交往等方面的团体训练,形成有利于学生成长的心理氛围,促进优秀团队的尽快形成。

2、面对合校后的新校长或者改变工作方式的校长,作为中层干部如何发挥作用?

(1)思想方面的:突出四种意识:“整体意识、维护核心意识、敢于负责意识、权力有限意识”。

(2)工作方面的:合理组织好学校各项工作,注重过程管理,每一项由过程的活动都可以看成是许多由计划、执行、检查、处理四个环节组成的管理周期的反复循环管理过程中,高质量、高效率地实现学校教育目的。

(3)作用方面的:要起到承上启下的作用:接受校长下达的任务,向广大教师传达任务,并带领教师出色地完成任务。

一是关注校长的真正需求。用校长喜欢的方式与他沟通,用校长喜欢的方法去做事情,在校长需要你时给他一些建议;用行之有效的方法,促使团队齐心协力地去做事,绝不拖拖拉拉。

二是合理地安排老师们的工作并协调好各种关系。工作安排得合理与否有个前提,那就是你安排的工作是否适合他做和他是否愿意做。我们要分析老师们的能力、性格、喜好等,然后才能让老师们做他们喜欢而又善长的工作,此外工作安排还要考虑你团队其他人员的工作安排与配合问题。这种关系处理是否得当会直接影响学校的风气和管理效益。

三是确定合理的任务目标并且合理地考核老师们的工作,这个过程中考核是否公正公开的及考核结果的使用,都会对管理产生影响。

3、合并后的同事关系远比学生之间的关系要复杂得多。请您阐述一下,在新的学校如何才能处理好同事间的关系? 人际关系是一个人心理素质的集中体现,也是影响教育、教学效果的重要因素。干部在工作中能否与领导、同事、学生建立良好关系,关系到工作的成败和自己的心身健康。

(1)干部与校长的人际关系——乐队与指挥。一是校长与中层既是上下级关系,又是平等的同事关系,我们都是教育者;二是要了解校长的关切;三是要支持校长的工作;四是要学会争取校长的支持。

(2)干部之间的人际关系——森林与树木。班子间的相容性首先取决于成员自身的生理的和心理的素质以及班子的合理结构。而这种相容性和协调性需要从以下几个方面来加强:一是加强信息沟通,力求达成共识;二是明确职责范围,力求把握分寸;三是建立共同愿景,提高驾驭能力;四是遵循道德原则,塑造良好个性。

8.百度面试题及答案 篇八

* 木杆很细,不能同时通过一只蚂蚁。开始 时,蚂蚁的头朝左还是朝右是任意的,它们只会朝前走或调头,

* 但不会后退。当任意两只蚂蚁碰头时,两只蚂蚁会同时调头朝反方向走。假设蚂蚁们每秒钟可以走一厘米的距离。

* 编写程序,求所有蚂蚁都离开木杆 的最小时间和最大时间。

*

*

* 分析:题目中的蚂蚁只可能相遇在整数点,不可以相遇在其它点,比如3.5cm处之类的,也就是可以让每只蚂蚁走 1秒,然后

* 查看是否有相遇的即可.

*

* 这样我的程序实现思路就是,初始化5只蚂蚁,让每只蚂蚁走1秒,然后看是否有相遇的,如果有则做相应处理.当每只蚂蚁都

* 走出木杆时,我就记录当前时间.这样就可以得到当前状态情况下,需要多久可以走出木杆,然后遍历所有状态则可以得到所胡

* 可能.

*/

package baidu;

public class Ant {

/*

* step 表示蚂蚁每一个单位时间所走的长度

*/

private final static int step = 1;

/*

* position表示蚂蚁所处的初始位置

*/

private int position;

/*

* direction表示蚂蚁的前进方向,如果为1表示向27厘米的方向走, 如果为-1,则表示往0的方向走。

*/

private int direction = 1;

/*

* 此函数运行一次,表示蚂蚁前进一个单位时间,如果已经走下木杆则会抛出异常

*/

public void walk {

if (isOut()) {

throw new RuntimeException(“the ant is out”);

}

position = position + this.direction * step;

};

/**

* 检查蚂蚁是否已经走出木杆,如果走出返回true

*

*/

public boolean isOut() {

return position <= 0 || position >= 27;

}

/**

* 检查此蚂蚁是否已经遇到另外一只蚂蚁

* @param ant

* @return 如果遇到返回true

*/

public boolean isEncounter(Ant ant) {

return ant.position == this.position;

}

/**

* 改变蚂蚁的前进方向

*/

public void changeDistation() {

direction = -1 * direction;

}

/**

* 构造函数,设置蚂蚁的初始前进方向,和初始位置

* @param position

* @param direction

*/

public Ant(int position, int direction) {

this.position = position;

if (direction != 1) {

this.direction = -1;//方向设置初始位置,比如为0时,也将其设置为1.这样可以方便后面的处理

} else {

this.direction = 1;

}

}

}

/////////////////////////////////////////////////////////

package baidu;

public class Controller {

public static void main(String[] args) {

int time = 0;

for (int i = 0; i < 32; i++) {

Ant[] antArray = getAntList(getPoistions(), getDirections(i));

while (!isAllOut(antArray)) {

for (Ant ant : antArray) {

if (!ant.isOut()) {

ant.walk();

}

}

time++;

// 查看是否有已经相遇的Ant,如果有则更改其前进方向

dealEncounter(antArray);

}

System.out.println(time);

// 将时间归0,这样可以重新设置条件,再次得到全部走完所需要的时间.

time = 0;

}

}

/**

* 这个函数的算法很乱,但暂时能解决问题

*

* @param list

*/

public static void dealEncounter(Ant[] antArray) {

int num_ant = antArray.length;

for (int j = 0; j < num_ant; j++) {

for (int k = j + 1; k < num_ant; k++) {

if (antArray[j].isEncounter(antArray[k])) {

antArray[j].changeDistation();

antArray[k].changeDistation();

}

}

}

}

/**

* 因为有5只Ant,所以组合之后有32种组合.刚好用5位二进制来表示,如果为0则表示Ant往0的方向走 如果为1,则表示往27的方向走

*

* 注:在通过Ant的构造函数设置初始值时,通过过滤把0修改成了-1.

*/

public static int[] getDirections(int seed) {

int result[] = new int[5];

result[0] = seed % 2;

result[1] = seed / 2 % 2;

result[2] = seed / 4 % 2;

result[3] = seed / 8 % 2;

result[4] = seed / 16 % 2;

System.out.println(“directions is ” + result[0] + “|” + result[1] + “|”

+ result[2] + “|” + result[3] + “|” + result[4]);

return result;

}

/**

* 批量设置Ant的初始位置,这样设置不是十分必要,可以直接在代码中设置

*

* @return

*/

public static int[] getPoistions() {

return new int[] { 3, 7, 11, 17, 23 };

}

/**

* 取得设置好初始值的5只Ant

*

* @param positions

* @param directions

* @return

*/

public static Ant[] getAntList(int[] positions, int[] directions) {

Ant ant3 = new Ant(positions[0], directions[0]);

Ant ant7 = new Ant(positions[1], directions[1]);

Ant ant11 = new Ant(positions[2], directions[2]);

Ant ant17 = new Ant(positions[3], directions[3]);

Ant ant23 = new Ant(positions[4], directions[4]);

return new Ant[] { ant3, ant7, ant11, ant17, ant23 };

}

/**

* 判断是否所有的Ant都已经走出了木杆,也就是设置退出条件

*

* @param antArray

* @return

*/

public static boolean isAllOut(Ant[] antArray) {

for (Ant ant : antArray) {

if (ant.isOut() == false) {

return false;

}

}

return true;

}

}

编程:

用C语言实现一个revert函数,它的功能是将输入的字符串在原串上倒序后返回。

2 编程:

用C语言实现函数void * memmove(void *dest,const void *src,size_t n)。memmove

函数的功能是拷贝src所指的内存内容前n个字节

到dest所指的地址上。

3 英文拼写纠错:

在用户输入英文单词时,经常发生错误,我们需要对其进行纠错。假设已经有一个包

含了正确英文单词的词典,请你设计一个拼写纠错

的程序。

(1)请描述你解决这个问题的思路;

(2)请给出主要的处理流程,算法,以及算法的复杂度;

(3)请描述可能的改进(改进的方向如效果,性能等等,这是一个开放问题)。

4 寻找热门查询:

搜索引擎会通过日志文件把用户每次检索使用的所有检索串都记录下来,每个查询串

的长度为1-255字节。假设目前有一千万个记录,

这些查询串的重复度比较高,虽然总数是1千万,但如果除去重复后,不超过3百万个

。一个查询串的重复度越高,说明查询它的用户越多,

也就是越热门。请你统计最热门的10个查询串,要求使用的内存不能超过1G。

(1)请描述你解决这个问题的思路;

(2)请给出主要的处理流程,算法,以及算法的复杂度。

5 集合合并:

给定一个字符串的集合,格式如:

{aaa bbb ccc}, {bbb ddd},{eee fff},{ggg},{ddd hhh}

要求将其中交集不为空的集合合并,要求合并完成后的集合之间无交集,例如上例应

输出

{aaa bbb ccc ddd hhh},{eee fff}, {ggg}

(1)请描述你解决这个问题的思路;

(2)请给出主要的处理流程,算法,以及算法的复杂度

(3)请描述可能的改进(改进的方向如效果,性能等等,这是一个开放问题)。

////////////////////////////////1

1 题

char *revert(char * str)

{

int n=strlen(str);

int i=0;

char c;

for(i=0;i

{

c=str;

str=str[n-i];

str[n-i]=c;

}

return str;

}

///////////////////////////////////

2 题

void * memmove(void *dest,const void *src,size_t n)

{

assert((dest!=0)&&(src!=0));

char * temp=(char * )dest;

char * ss=(char * )src;

int i=0;

for(;i< p=“”>

{

*temp++=*ss++;

}

return temp;

}

/////////////////////////////////////////////////

3 题

(1)思路 :

字典以字母键树组织,在用户输入同时匹配

(2)

流程:

每输入一个字母:

沿字典树向下一层,

a)若可以顺利下行,则继续至结束,给出结果;

b)若该处不能匹配,纠错处理,给出拼写建议,继续至a);

算法:

1.在字典中查找单词

字典采用27叉树组织,每个节点对应一个字母,查找就是一个字母

一个字母匹配.算法时间就是单词的长度k.

2.纠错算法

情况:当输入的最后一个字母不能匹配时就提示出错,简化出错处理,动态提示

可能 处理方法:

(a)当前字母前缺少了一个字母:搜索树上两层到当前的匹配作为建议;

上一篇:大班社会活动礼貌的小客人说课稿下一篇:学校教务处主任的辞职报告