一些IT公司笔试真题汇总

搜集了一些题目,其中答案仅做参考用

 

巨人网络java笔试基础题分享

 

1、String是最基本的数据类型吗?
基本数据类型包括byte、int、char、long、float、double、boolean和short。
java.lang.String类是final类型的,因此不可以继承这个类、不能修改这个类。为了提高效率节省空间,我们应该用StringBuffer类

 
2、int 和 Integer 有什么区别
Java 提供两种不同的类型:引用类型和原始类型(或内置类型)。Int是java的原始数据类型,Integer是java为int提供的封装类。Java为每个原始类型提供了封装类。
原始类型封装类
booleanBoolean
charCharacter
byteByte
shortShort
intInteger
longLong
floatFloat
doubleDouble
引用类型和原始类型的行为完全不同,并且它们具有不同的语义。引用类型和原始类型具有不同的特征和用法,它们包括:大小和速度问题,这种类型以哪种类型的数据结构存储,当引用类型和原始类型用作某个类的实例数据时所指定的缺省值。对象引用实例变量的缺省值为 null,而原始类型实例变量的缺省值与它们的类型有关。
3、String 和StringBuffer的区别
JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据。这个String类提供了数值不可改变的字符串。而这个StringBuffer类提供的字符串进行修改。当你知道字符数据要改变的时候你就可以使用StringBuffer。典型地,你可以使用StringBuffers来动态构造字符数据。


4、运行时异常与一般异常有何异同?
异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误。java编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要求必须声明抛出未被捕获的运行时异常。


5、说出Servlet的生命周期,并说出Servlet和CGI的区别。
Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其destroy方法。
与cgi的区别在于servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于servlet。


6、说出ArrayList,Vector, LinkedList的存储性能和特性
ArrayList和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector由于使用了synchronized方法(线程安全),通常性能上较ArrayList差,而LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。


7、EJB是基于哪些技术实现的?并说出SessionBean和EntityBean的区别,StatefulBean和StatelessBean的区别。
EJB包括Session Bean、Entity Bean、Message Driven Bean,基于JNDI、RMI、JAT等技术实现。
SessionBean在J2EE应用程序中被用来完成一些服务器端的业务操作,例如访问数据库、调用其他EJB组件。EntityBean被用来代表应用系统中用到的数据。
对于客户机,SessionBean是一种非持久性对象,它实现某些在服务器上运行的业务逻辑。
对于客户机,EntityBean是一种持久性对象,它代表一个存储在持久性存储器中的实体的对象视图,或是一个由现有企业应用程序实现的实体。
Session Bean 还可以再细分为 Stateful Session Bean 与 Stateless Session Bean ,这两种的 Session Bean都可以将系统逻辑放在 method之中执行,不同的是 Stateful Session Bean 可以记录呼叫者的状态,因此通常来说,一个使用者会有一个相对应的 Stateful Session Bean 的实体。Stateless Session Bean 虽然也是逻辑组件,但是他却不负责记录使用者状态,也就是说当使用者呼叫 Stateless Session Bean 的时候,EJB Container 并不会找寻特定的 Stateless Session Bean 的实体来执行这个 method。换言之,很可能数个使用者在执行某个 Stateless Session Bean 的 methods 时,会是同一个 Bean 的 Instance 在执行。从内存方面来看, Stateful Session Bean 与 Stateless Session Bean 比较, Stateful Session Bean 会消耗 J2EE Server 较多的内存,然而 Stateful Session Bean 的优势却在于他可以维持使用者的状态。


8、Collection 和 Collections的区别。
Collection是集合类的上级接口,继承与他的接口主要有Set 和List.
Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。

9、&和&&的区别。
&是位运算符,表示按位与运算,&&是逻辑运算符,表示逻辑与(and)。


10、HashMap和Hashtable的区别。
HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key),由于非线程安全,效率上可能高于Hashtable。
HashMap允许将null作为一个entry的key或者value,而Hashtable不允许。
HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因为contains方法容易让人引起误解。
Hashtable继承自Dictionary类,而HashMap是Java1.2引进的Map interface的一个实现。
最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap 就必须为之提供外同步。
Hashtable和HashMap采用的hash/rehash算法都大概一样,所以性能不会有很大的差异。

11、final, finally, finalize的区别。
final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。
finally是异常处理语句结构的一部分,表示总是执行。
finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。


12、sleep() 和 wait() 有什么区别?
sleep是线程类(Thread)的方法,导致此线程暂停执行指定时间,给执行机会给其他线程,但是监控状态依然保持,到时后会自动恢复。调用sleep不会释放对象锁。
wait是Object类的方法,对此对象调用wait方法导致本线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象发出notify方法(或notifyAll)后本线程才进入对象锁定池准备获得对象锁进入运行状态。


13、Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?
方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被"屏蔽"了。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。Overloaded的方法是可以改变返回值的类型。


14、error和exception有什么区别?
error 表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处理这样的情况。
exception 表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况。

15、同步和异步有何异同,在什么情况下分别使用他们?举例说明。
如果数据将在线程间共享。例如正在写的数据以后可能被另一个线程读到,或者正在读的数据可能已经被另一个线程写过了,那么这些数据就是共享数据,必须进行同步存取。
当应用程序在对象上调用了一个需要花费很长时间来执行的方法,并且不希望让程序等待方法的返回时,就应该使用异步编程,在很多情况下采用异步途径往往更有效率。


16、abstract class和interface有什么区别?
声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。Abstract 类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。
接口(interface)是抽象类的变体。在接口中,所有方法都是抽象的。多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽象的,没有一个有程序体。接口只可以定义static final成员变量。接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(即将程序体给予)所有这种接口的方法。然后,它可以在实现了该接口的类的任何对象上调用接口的方法。由于有抽象类,它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换,instanceof 运算符可以用来决定某对象的类是否实现了接口。

 

百度笔试题

现在有一组共计N个固定的集合(N为万量级),每个集合有个从0开始递增的集合ID,每个集合包含1-M个term(M为o-100的量级),希望设计一个程序,能够持续对外服务,输入是一个term数组,输出其中任意一个集合ID(如果该term数组包含该集合的所有term),如果找不到,输出-1。要求:
1、时间复杂度最优,能够在短时间内对大量输入逐个输出。
2、实现具体的代码(可以是伪代码),其中常用的数据结构可以采用标准库
3、给出时间复杂度和空间复杂度
 TERM_1 空格 TERM_2
   TERM_1 空格 TERM_3
   TERM_1 空格 TERM_3 TERM_4
   输入的为TERM数组。
   (说明:TERM为一个词,可能是中文,用字符串表示)

百度2010校招运维部门笔试
第一题:说明链表和数组作为数据的不同组织形式,各自的优缺点。
第二题:TCP滑动窗口协议,窗口过大或过小有什么影响,举例。
第三题:操作系统的,上面的命令都不知道啥意思,也没记住
第四题:数据库方面的,有两个结构完全一样的表baiduA和baiduB,主键为int把baiduA中baiduB没有的记录插入到baiduB中。
第五题:是逻辑题,关于扑克牌的,题目较长,记不清了,不过很容易判断出答案是方块5
第六题:用递归和非递归两种方法实现二叉树的前序遍历。
第七题:是一道很长的题,挺难的,也没怎么写。

第一部分:
1. 简述链表和数组的优缺点。

 


2. 给了一长串代码,说明函数实现的功能?执行函数打印的结果?优化的算法设计?
another_func()…
some_func()…
其实就是比较给定的字符串集合{“cafe”, “baidu”, “duiba”,”face”, “thisone”,”iseasy”}中是否存在有这样的字符串,它们包含的字符以及字符个数相同,出现顺序不必相同,找到并打印出来。
3. 纸牌的问题,具体题目太长了,我没有记下来,就是魔术师分别告诉观众一张牌的花色和点数,然后两位观众说几句话来判断这张牌到底是什么?
第二部分:
1. 二叉树的前序遍历算法,分别用递归和非递归的方式实现,要求写出可执行的代码。

 


2. 给定一个M*M的字符矩阵,给出了找到连续对角线字符串的方法,从左上到右下,从右上到左下,共有四种对角线字符串,(1)让你写出怎么在这个字符矩阵的对角线字符串中找到给定的子串,写出算法设计。(2)如果M*M矩阵超大,无法载入内存,怎么办呢?

 

 


3. 系统设计题:设计一个服务调度管理器,服务器接收数据包,数据包大小为32个字节,第一个字节是请求的优先级,后面31个字节是请求的命令,服务器根据客户端发来的命令,分配资源,完成相应的服务,然后将操作的结果返回给客户端,但是由于服务器资源有限,故服务器可以存储操作的结果,如果下次有同样的命令到来的时候,直接获取操作结果返回给客户端即可。
要求设计一个服务器调度管理器,满足以下调度条件:
(1)同样条件下,请求次数多的请求首先获得服务,请求次数最大255
(2)同样条件下,请求优先级高的请求首先获得服务,优先级等级最高16.
要做的是:
(1)设计服务器的核心调度算法:
(2)数据结构设计
(3)如果服务器的记录容量是20万条,分析需要占用多大内存空间??

 

 

08-9-24成都电子科技大学百度笔试题(第一套题)

一:编程题
现有一组共计N个固定的集合(N为万量级),每个集合有个从0开始递增的集合ID,每个集
合包含1~M个TERM(M为0~100的量级),希望设计一个程序能够持续对外服务,输入是一个
TERM数组,输出其中任意一个集合ID(如果该TERM数组包含该集合的所有TERM),如果找
不到输出-1。要求:
1, 时间复杂度最优,能够在短时间内对大量输入逐个输出
2, 实现具体的代码(可以是伪代码),其中常用的数据结构可以采用标准库。
3, 给出时间复杂度和空间复杂度。
TERM组合集合的文件格式举例:
TERM_1 空格 TERM_2
TERM_1 空格 TERM_3
TERM_1 空格 TERM_3 TERM_4
输入的为TERM数组(说明:TERM为一个词,可能是中文,固定字符串表示)
二:算法题
你现在有一个文件,文件中顺序存有N个记录,R1,R2,...,RN,这些记录不是有序的,但是
你知道一个整数M,这些记录满足R1
1,设计一个算法或编写一个程序,将文件中的记录排序为R1'取文件的次数为O(N),不限内存使用,
2,设计一个算法或编写一个程序,将文件中的记录排序为R1'写文件的次数为O(N),空间复杂度为O(1),(亦即,你使用的内存大小和M,N均无关。)
三:系统设计题
网络上所有的链接都可以用以下的三元素进行描述:
From_url(链接所在页面的URL)
to_url(链接所指向的URL)
anchor(链接在页面上所显示的内容)
现在假设所有的网页链接信息(from_url / to_url /anchor)按from_url为轴都存储在M
个(M:1k以内)巨型数据库中:
1, 链接存储形式:from_url to_url anchor;
2, 一个from_url的所有的to_url都存储在同一个数据库中;
3, 假设每个数据库存储的数据量相同
4, 要求设计一个获取所有链接分发程序,将这些数据均匀分发到N个远程数据库中(N:1
00以内)要求做到:1所有to_url相同的链接需要分到同一个远程数据库,2所有to_url的
站点相同的需要分发到同一个远程数据库,3每个远程数据库获取的链接总数要尽量均匀,
4每台数据库完成时间尽量保持一致5,获取网页的速度尽量快(从数据库中)
信息。

迅雷上机笔试
算法题:
1.连接两个单向链表,返回排序后的结果。
2.一个保存有10000个URL的文本文件,删除其中相同的URL。
3.将9个石子放在9x9的方格中,要求同行、同列、45度上无两个石子。
智力题:
1.一笔画四条直线穿过3x3的9个点。
2.国王给三个囚犯每人戴了一顶帽子,帽子不是黑色就是白色,并且告诉囚犯们谁看到其它两个人都是白帽子或者知道自己戴的是黑帽子,谁就能被释放。囚犯们能看到其它的人帽子颜色,但是看不到自己的帽子颜色。过了一段时间,三个囚犯都没有说话,其中一个聪明的囚犯马上肯定自己戴的是黑帽子,你知道为什么吗?
3.有16个硬币,A和B轮流拿,每次拿的个数只能是1,2,4之一,谁最后拿谁就输。问可以保证赢吗?
上机题:
nxn的方格,去掉一条对角线的两个对角,余下部分用面积为2的矩形覆盖,即1x2或2x1的矩形,结果是不可能完全覆盖,请编程枚举所有的覆盖情况

 

迅雷广州C++二笔题09.10.13ZZ

 

第一题:
n个文件长度记载在无符号64位整数数组file_length[]中,逻辑首尾拼接在一起形成一个逻辑上的大文件。
struct range
{
__int64 pos;
__int64 length;
};
记载数据片段的起始点和长度,range_array[]记载若干个片断,求n个文件每个文件共有多长的数据在range_array[]的数据片断中
struct range
{
__int64 pos;
__int64 length;
};
void get_length(__int64 file_length[],unsigned n,range range_array[],unsigned m,__int64 result[])


第二题:
求循环节,若整除则返回NULL,否侧返回char*指向循环节。先写思路。
函数原型:char* get_circle_digits(unsigned k,unsigned j)
第三题:
i)求两个绝对路径的共同深度。函数原型:unsigned get_common_depth(const char *path1,const char *path2)
ii)设计测试用例和函数测试上述函数。函数原型:bool text_get_common_depth()
迅雷广州站C++笔试面试09.10.14
感慨一下迅雷的笔试面试,真的迅雷不及掩耳... 4天搞定二笔三面...
发此文章赚RP...
11日一笔:主要是C++语法题,有考继承、友元、虚函数、简单代码填空...
12日二笔:三道算法题,我想应该考思路和编程细节。
13日等待面试通知... 13日晚终于等来通知。
14日的面试:去之前以为今天只有一面,一面是技术面,听说主要是针对简历问技术的。 所以去前我把以前做过的东西看了一下,把两门重要的课程(计算机网络和操作系统)看了看。
一面:面试官很随和,我一坐下去,他便说这次我们只是随便聊聊,不用自我介绍。由于我简历上ACM参赛经历写得比较多,他就叫我讲讲我的ACM历程... 我从大一讲到现在... 之后问了几个问题考察除数据结构和算法的其他方面(面试说搞ACM应该数据结构和算法比较好,我就问其他的吧)。 有操作系统的产生死锁的情况以及如何解决。 有计算机网络的TCP三次握手... 然后聊天聊了很久...
一面完后本来以为就可以走了,面试官叫我在外面等通知...
二面:先问如果进迅雷后希望做哪方面的技术,我之前没准备,对迅雷的各技术方向也只是大概知道,一时想不出做什么。突然想到一面问的TCP,我就说希望做传输协议那样块的。之后面试官就问我P2P,我居然忘了,之后(忘了怎么聊天谈到UDP)问UDP与TCP,我打的还不错。再问问搜索引擎的,我说没学(只是大概知道些),然后就闲聊(又谈到搜索引擎...)。再问,同这么多研究生竞争这个职位,你感觉自己有什么优势... 二面就这样在聊天中结束...
HR面:先是叫我自我介绍,由于自己完全没准备HR面,所以自我介绍时我讲得很短,就几个优势点... 之后聊天(聊了很久),再问问我的期望工资... 会不会考虑后面腾讯、百度的招聘等公司,为什么选择来迅雷面试...  我拿迅雷和腾讯比较,讲了大概为什么。(之后讲如果能留在迅雷,可以怎样怎样,有点太过自信,不知不会回被认为太niuB,不好管理...)。之后问有没什么问题提问,我有很多想了解的,但当时就是想不出问什么(可能给他印象对迅雷的兴趣不是很大),很尴尬,(我直接坦白),我希望知道的有很多方面,但一时想不起来。我想了解的一部分已经在一二面得到答案了,把一二面我问面试官的问题讲下,还有得到的问题回答...  (就这么结束了HR面)
三次面试的面试官都很随和,给人亲切感...  但自我感觉HR面表现太差了...
发此文章期望能赚点RP... 期待迅雷的offer...

转自http://www.coderarea.net/bbs/read.php?tid=728

 

方正笔试

总体来说比较简单,做起来比较轻松,要求80分钟,实际上用不了 分两部分
c/c++
1. 用 c/c++ 描述 strstr 函数的函数体
2. 将一个 1M -10M 的文件,倒过来存储到另一个文件,就是前一个文件的最后一个字符存到新文件的第一个字符,以此类推。
3. 将一个文件按行排序,比较每一行的第一个字符,字符小的靠前,相同再比较下一个结果也存到一个新文件里
数据库部分
具体题目记不清了,就是3张表,一个用户表,用户组表,还有一个,用户和组的关系表然后题目就是来回的添加删除,修改。 最后一个是一个复杂查询,要求写 sql 语句,写出来也不是很复杂,只有一层子查询。。。。

SOHU公司的面试题目

1)Please describe the different between XML,XSD,XSL through their definition.
2)Do you know the Persistent Object in J2EE;if yes ,please describe some mechanism of it.
3)Please describe some famous encryption arithmetic as many as you know, one of arithmatics to explain if possible.
智力逻辑题
1.某一密码仅使用K、L、M、N、O共5个字母,密码中的单词从左向右排列,密码单词必须遵循如下规则:
(1)密码单词的最小长度是两个字母,可以相同,也可以不同
(2)K不可能是单词的第一个字母
(3)如果L出现,则出现次数不止一次
(4)M不能使最后一个也不能是倒数第二个字母
(5)K出现,则N就一定出现
(6)O如果是最后一个字母,则L一定出现
问题一:下列哪一个字母可以放在LO中的O后面,形成一个3个字母的密码单词?
A) K B)L C) M D) N
问题二:如果能得到的字母是K、L、M,那么能够形成的两个字母长的密码单词的总数是多少?
A)1个 B)3个 C)6个 D)9个
问题三:下列哪一个是单词密码?
A) KLLN B) LOML C) MLLO D)NMKO
问题四:3个相同的字母可以构成的不同密码单词的总数是多少?
A) 1个 B)2个 C) 3个 D) 4个
问题五:单词密码MMLLOKN可以通过下列变成另一个密码单词,除了:
A) 用N代替每个L B)用O代替每一个M C)用O代替 D)把O移到N的左边 2.62-63=1 等式不成立,请移动一个数字(不可以移动减号和等于号),使得等式成立,如何移动?
技术编程题
1) 请用VB(或者c#)语言来描述一下blowfish的加密解密算法。如果不行,可以用中文+图的形式来说明。如果不了解blowfish算法,请描述一下自己比较熟悉的加密解密算法。
2) 如果你是一位软件架构师,您将如何去搭建一个符合n-tie的架构?并请描述一下您搭建的每一层的作用。(注意:请您考虑项目中有WebService的情况)3) 请用代码简单描述一下Singleton、抽象工厂、Bridge、Composite(任选三个)的设计模式的概念。

xml方面笔试题

 

91、xml有哪些解析技术?区别是什么?
答:有DOM,SAX,STAX等
DOM:处理大型文件时其性能下降的非常厉害。这个问题是由DOM的树结构所造成的,这种结构占用的内存较多,而且DOM必须在解析文件之前把整个文档装入内存,适合对XML的随机访问SAX:不现于DOM,SAX是事件驱动型的XML解析方式。它顺序读取XML文件,不需要一次全部装载整个文件。当遇到像文件开头,文档结束,或者标签开头与标签结束时,它会触发一个事件,用户通过在其回调事件中写入处理代码来处理XML文件,适合对XML的顺序访问
STAX:Streaming API for XML (StAX)

92、你在项目中用到了xml技术的哪些方面?如何实现的?
答:用到了数据存贮,信息配置两方面。在做数据交换平台时,将不能数据源的数据组装成XML文件,然后将XML文件压缩打包加密后通过网络传送给接收者,接收解密与解压缩后再同XML文件中还原相关信息进行处理。在做软件配置时,利用XML可以很方便的进行,软件的各种配置参数都存贮在XML文件中。

93、XML文档定义有几种形式?它们之间有何本质区别?解析XML文档有哪几种方式?
答:a: 两种形式 dtd  schema,b: 本质区别:schema本身是xml的,可以被XML解析器解析(这也是从DTD上发展schema的根本目的),c:有DOM,SAX,STAX等
    DOM:处理大型文件时其性能下降的非常厉害。这个问题是由DOM的树结构所造成的,这种结构占用的内存较多,而且DOM必须在解析文件之前把整个文档装入内存,适合对XML的随机访问
SAX:不现于DOM,SAX是事件驱动型的XML解析方式。它顺序读取XML文件,不需要一次全部装载整个文件。当遇到像文件开头,文档结束,或者标签开头与标签结束时,它会触发一个事件,用户通过在其回调事件中写入处理代码来处理XML文件,适合对XML的顺序访问
STAX:Streaming API for XML (StAX)

 

网易游戏,武汉笔试,游戏开发工程师

1.一次考试,有25人参加,有ABC三题,每人至少会做一题,在不会做A的人中,会做B的人是会做C的人的两倍,在会做A的人中,只会做A的人比其他的少一人,不会做A的人和只会做A的人数相等,问只会做B的有几人?
解:设绿色加白色为X  紫色加白色为X/2   白色为Z   红色为Y   蓝色为Y+1
所以由条件可得X+0.5X-Z+2Y+1=25     X+0.5X-Z=Y  故3X=16+2Z 当且仅当Z=4,X=8时为整数解,故题目答案为X-Z=4人或以下三组解: Z=1,X=6;  Z=7,X=10;   Z=10,X=12;

2.李氏夫妇请4对夫妇来家吃饭,已知每人不和自己和配偶握手,每人至少握手一次,不重复和人握手,李先生最后一问每人握手次数都不一样,问李太太握手几次...
解:既然每人次数不同,就说明有1到8八种次数,每人一种.
初始:87  65  43  21  (00)  括号内为李氏夫妇的次数
    从8看起,那个人肯定和另外的8人握手,否则没有8次,而且他的配偶肯定是7次,否则不可能有8次握手的人.(X表示已计算的握手)
第一次:X7  54  32  10  (11)
第二次:XX  43  21  00  (22)
第三次:XX  X3  10  00  (33)
第四次:XX  XX  00  00  (44)
所以李先生和李太太都握手了4次.

3.几何题如图,两圆交于AB两点,由A作直线交于两圆于CD,问CD何时最长?并证明.提示:相同弧段的圆周角是圆心角一半
感谢影子情人提供解法…
答案是让AB和CD垂直,这样BD和CB是两个直角三角形的斜边…提示可知道是直径…得整….

4.假设一副扑克牌只有A,2,3,4,5,6六张,且每张有任意多张,没有不同花型(即没有桃心梅方),用PQRST表示不同的牌面,计算下列概率,并排顺序PQRST,PPQRS,PPQQR,PPPQR,PPPPR,PPPPP,PPPQQ
大概解法:概率里面的什么分子分母实在懒得打,我还用几次方和阶乘表示了相对关系,这样比较容易看,不要用大学的概率统计公式,直接用高中生想法,很容易求解.
注意,每种牌的数量不限制,所以去除某种特定牌的概率是1/6,但是取出第一张任意牌的概率是6/6,同理第二张不同牌的概率是5/6,所以第一个概率是6!/6^5然后乘以6,因为有六种取法,C65嘛等于C61,也就是6!/6^4
后面的也差不多,顺便说一下,5张一样的好难啊,竟然只有6/6^5,也就是1/1296,呵呵,要珍惜炸弹啊.然后乘以C61,也就是6/6^4

5已知二叉树的先序和中序遍历字符串,编程实现输出后序遍历字符串,如果没有成功输出Failed,最后分析时间和空间复杂度
解:这是标准的ACM 2255题,NOIp和NOI中也有一样的题目,很经典的.我也提供一下网上的标准答案,懒得打了.时间复杂度是2的n次方吧…我感觉是的,没有空间消耗,除了栈的开辟消耗空间.
#include #include using namespace std; void PrintPostOrder(const string & preorder, const string & inorder, int start1, int start2, int size){ if(size == 1) { cout << preorder[start1]; return; } if(size == 0) return; int i = inorder.find(preorder[start1]); PrintPostOrder(preorder, inorder, start1+1, start2, i-start2); PrintPostOrder(preorder, inorder, start1+1+i-start2, start2+1+i-start2, size-i+start2-1); cout << preorder[start1]; } int main(void) { string preorder, inorder; while(cin >> preorder >> inorder) { PrintPostOrder(preorder, inorder, 0, 0, preorder.size()); cout << endl; } }

其它部分见:http://topic.csdn.net/u/20091222/22/928fdbe3-abd7-493b-92a9-7d17550ad80a.html
 



百度2010校园招聘软件测试笔试题

 

1、  简答题。 请说出树的深度优先、广度优先遍历算法,及非递归实现的特点。
 
2、  找错
struct complex_t { int real; int imag; } int create(complex_t*p,unsigned int n) { p=new complex_t[n]; if(p==NULL) { return -1; } return 0; } int compute() { //implement complex_t*comps; unsigned int num=0; cin>>num; if(create(comps,num)=0) { cerr<<”create comps failes!”< return n-1; } long long int sum=0; unsigned int pos=0; cin>>pos; while(pos>comps[pos].real>>comps[pos].imag; sum+=comps[pos].real*comps[pos+1].real+comps[pos].imag*comps[pos+1].imag; pos+=2; } cout<<”sum is”< return 0; }
 
第二部分 程序与算法

1、  一个典型的大型项目,通常由众多组件构成,这些组件之间复杂的编译依赖于在构建整个系统时,是最让人头疼的地方之一。现在就有这样的一个大型项目,由N(N>1000)个组件构成,每个组件都是可以编译的,但组件之间存在着编译依赖,如组件N1依赖N2,即编译N1时N2必须已经先编译完成,否则N1不能完成编译,但组件之间没有循环依赖的问题。请设计一种快速算法,能完成整个项目的编译构建过程,并给出算法的时间复杂度。

2、  实现一个函数的完整代码。

int maxContinuNum(const char*inputstr.char*outputstr)

功能:

在以‘/0’结尾的字符串中找出连续最长的数字串,并把这个串的长度返回,并把这个最长数字串付给其中一个函数参数outputstr所指内存。不能用strlen之类的库函数。
2009.10.18-百度质量部笔试试题

你可能感兴趣的:(参考)