校园招聘笔试面试题及部分答案

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

笔试面试题汇总

一、笔试题

1、给你一个二叉树的前序序列和中序序列,求其后续序列?(淘宝)

先看三个公式:

PreOrder(T)=T的根节点+PreOrder(T的左子树)+PreOrder(T的右子树);

InOrder(T)= InOrder(T的左子树)+T的根节点+ InOrder(T的右子树);

PostOrder(T)= PostOrder(T的左子树)+ PostOrder(T的右子树)+T的根节点。

根据以上的三给公式就可以很容易解决一下两个问题:

前序+中序→后序;

中序+后序→前序。

当然也可把树画出来,再求他的各种序列。

2、Cache替换算法命中率最高是?(淘宝)

这个组成原理就有讲到了,可以找组成原理的书看下,把各种替换算法在理解下,在书上的P98-P99讲得很详细。

3、给一个顺序表,然后再给你一个码值,求在二分查找改码值的比较次数?(淘宝)

自己去做二分的查找的过程,我们知道二分查找是log(n)的,一次比较次数大于log(n)肯定是错的。具体可以看下数据结构的书,P17-P一八讲的很详细。

4、编译程序中安排中间代码生成的目的是?(淘宝)

把与机器相关的工作集中到目标代码生成阶段,难度和工作量下降。便于移直和维护。利于优化。

5、假设在n进制下,17*456=8206成立,n是多少?(淘宝)

从上面的等式中可以看到8,则进制可定大于8,因此可以从9进制开始枚举,直至满足等式,就可以了。(建议:先都转换成十进制,在实现乘法运算)

6、要从一亿会员中抽出100万会员,考虑到公平性、相对分散、相对随机,不能重复,抽取速度

要快。有一个random函数,能产生0-9的随机数。请写出你能想到的抽取方法?并写明步骤。

(淘宝)

用random函数产生两个数x1、x2,那么会员号mod 100 等于x1x2的话,该会与就被选中。这样每个会员的中奖概率是1/100。

7、Malloc和new的区别?

8、++、--、sizeof(字符串、结构体)(融通)

9、字符串函数的实现(strlen、strcpy等)(网龙、亿联网络)

10、字符串以单词逆序

11、CSTRING类的一些基本函数的实现

12、DEBUG 和RELESE 两种调试的区别

13、CONST的用法

我只要一听到被面试者说:"const意味着常数",我就知道我正在和一个业余者打交道。去年Dan Saks已经在他的文章里完全概括了const的所有用法,因此ESP(译者:Embedded Systems Programming)的每一位读者应该非常熟悉const能做什么和不能做什么.如果你从没有读到那篇文章,只要能说出const意味着"只读"就可以了。尽管这个答案不是完全的答案,但我接受它作为一个正确的答案。(如果你想知道更详细的答案,仔细读一下Saks的文章吧。)

如果应试者能正确回答这个问题,我将问他一个附加的问题:

下面的声明都是什么意思?

const int a;

int const a;

const int *a;

int * const a;

int const * a const;

前两个的作用是一样,a是一个常整型数。第三个意味着a是一个指向常整型数的指针(也就是,整型数是不可修改的,但指针可以)。第四个意思a是一个指向整型数的常指针(也就是说,指针指向的整型数是可以修改的,但指针是不可修改的)。最后一个意味着a是一个指向常整型数的常指针(也就是说,指针指向的整型数是不可修改的,同时指针也是不可修改的)。如果应试者能正确回答这些问题,那么他就给我留下了一个好印象。顺带提一句,也许你可能会问,即使不用关键字const,也还是能很容易写出功能正确的程序,那么我为什么还要如此看重关键字const呢?我也如下的几下理由:

1) 关键字const的作用是为给读你代码的人传达非常有用的信息,实际上,声明一个参数为常

量是为了告诉了用户这个参数的应用目的。如果你曾花很多时间清理其它人留下的垃圾,你就会很快学会感谢这点多余的信息。(当然,懂得用const的程序员很少会留下的垃圾让别人来清理的。)

2) 通过给优化器一些附加的信息,使用关键字const也许能产生更紧凑的代码。

3) 合理地使用关键字const可以使编译器很自然地保护那些不希望被改变的参数,防止其被无

意的代码修改。简而言之,这样可以减少bug的出现。

14、虚基类抽象基类的用法

答:在派生类继承基类时,加上一个virtual关键词则为虚拟基类继承,如:classderive:virtual public base

{

};

虚基类主要解决在多重继承时,基类可能被多次继承,虚基类主要提供一个基类给派生类,如:

classB

{

};

classD1:public B

{

};

classD2:public B

{

};

classC:public D1,public D2

{

};

这里C在D1,D2上继承,但有两个基类,造成混乱。因而使用虚基类,即:

classB

{

};

classD1:virtual public B

{

};

classD2:virtualpublicB

{

};

classC:public D1,public D2

15、Java线程中的sleep,yeild,notify的作用和区别

sleep:让线程睡眠

yeild:暂停当前正在执行的线程对象,并执行其他线程

notify:唤醒线程

16、面向对象的特征有哪些方面

封装、继承、多态

17、ServletConfig对象与ServletContext对象的作用和区别

servlet config对象可以使用一个或多个标签为servlet配置一些初始化参数,servlet配置了初始化参数后,web容器在创建servlet实例对象时,会自动将这些初始化参数封装到ServletConfig对象中,并在调用servlet的init方法时,将ServletConfig对象传递给servlet。进而,程序员通过ServletConfig对象就可以得到当前servlet的初始化参数信息。

WEB容器在启动时,它会为每个WEB应用程序都创建一个对应的ServletContext对象,它代表当前web应用。

ServletConfig对象中维护了ServletContext对象的引用,开发人员在编写servlet时,可以通过ServletConfig.getServletContext方法获得ServletContext对象。

18、编程:链表的反转、两个排好序链表结合成一个有序链表

19、写一个程序实现字符串反转。(新大陆)

20、多态性意味着一个操作在不同的类中可以有不同的实现方式。(淘宝)

21、二分搜索算法

具体可以看下数据结构的书,P17-P一八讲的很详细。

22、树:节点个数与树高的计算

这个可以用深搜和广搜实现,节点个数没遇到一个还没标记的节点就加1并标记该节点。把根节点记为1,然后对于还没标记的节点就等于他父亲的值+1,这过程中出现的最大值就是树高。

对于树的一些定义数据结构书上有P一三8-P一三9。

23、操作系统:内存的大小端,生产者、消费者问题

1-2.生产者消费者问题:

生产者与消费者问题可以被描述为:一个有限缓冲区和两类线程,它们是生产者和消费者,生产者把产品放入缓冲区,相反消费者便是从缓冲区中拿走产品。

生产者在缓冲区满时必须等待,直到缓冲区有空间才继续生产。消费者在缓冲区空时必须等待,直到缓冲区中有产品才能继续读取。

P,V操作来解决进程同步与进程通信的问题。

信号量是最早出现的用来解决进程同步与互斥问题的机制,包括一个称为信号量的变量及对它进行的两个原语操作。信号量为一个整数,我们设这个信号量为:sem。很显然,我们规定在sem大于等于零的时候代表可供并发进程使用的资源实体数,sem小于零的时候,表示正在等待使用临界区的进程的个数。根据这个原则,在给信号量附初值的时候,我们显然就要设初值大于零。

p操作和v操作是不可中断的程序段,称为原语。P,V原语中P是荷兰语的Passeren,相当于英文的pass, V是荷兰语的Verhoog,相当于英文中的incremnet。

相关文档
最新文档