2011深信服校园招聘笔试面试

时间:2021-01-22 14:42:09

http://blog.sina.com.cn/s/blog_48c9576b0100me1y.html

926号深信服校园招聘笔试

都说深信服的题又偏又难,果然不假。不过还有有很多值得多思考的题。

这套题共有10页,涵盖了操作系统,网络,汇编程序,算法和数据结构,题还是很有难度的。但是操作系统,网络,汇编程序都不是很多,都是1-2道题的样子,但是都很偏,不好做。

以下是个人感觉比较不错的题:

 

程序填空:

快排的实现

不限精度的整数(大数)加法,链表实现(比较不错的题)

 

算法题:

二分查找实现

链表逆置

链表排序

 

问答:

X86平台下,strcpy易出错原因

对于一个未初始化的对象,为什么调用其虚函数会出错,但调用其非虚函数不会有错

strcat的效率问题,更好的解决方案?

2011深信服校园招聘笔试面试

小数点的第60位是多少

 

输出结果填空:

第一题

struct S{

void * operator new(unsigned int size, void* p, int i)

{

((S*)p)->i = i;

return p;

}

int i;

};

S ss;

S* pss = new(&ss, 10)S();

 

int main()

{

cout<<ss.i<<"  "<<pss->i<<endl;

S* pss2 = new(&ss,20)S;

cout<<ss.i<<"  "<<pss2->i<<endl;

return 0;

}

输出:0  0

              20  20

 

第二题

class A

{

public:

void f(int)

{

cout<<"A::f(int)"<<endl;

}

void f(double)

{

cout<<"A::f(double)"<<endl;

}

virtual void g()

{

cout<<"A::g(void)"<<endl;

}

};

class B:public A

{

public:

void f(double)

{

cout<<"B::f(double)"<<endl;

}

void g()

{

cout<<"B::g()"<<endl;

}

};

int main()

{

A* pa = new B;

pa->f(1);

pa->g();

B* pb = (B*)pa;

pb->f(2);

pb->g();

}

输出:

A::f(int)

B::g()

B::f(double)

B::g()

 

找错题:

const int b=0;

int * const p4 = &b;         (有错,不能将const int型赋给int型指针类型)

*p4=10;

cout<<*p4<<endl;

 

 

一面:

         昨天928日收到深信服的面试通知,29号上午11点,我了个去啊,我自己都感觉自己做的很差,没想到还能去面试,不过估计就是去打酱油吧,呵呵,现在沦为酱油男了。

         本来准备10点坐车,但是不巧的是,早上喝了点早餐奶,有点想啦肚子,K,冲进厕所。还好,坐上车时10:15,应该不算晚。到了金融基地,24楼。环境还是挺好的,我看有的员工在休息区在热烈的讨论着什么,挺好的气氛。等了一会就过来一个挺年轻的面试官,我们到一个小桌那开始了面试。没有自我介绍,挺让我意外的,不过后边让我很纠结啊。

          第一个问题就让哥郁闷了,说说Dijkstra算法,我晕,这个图算法都问,我直接如实相告,自己学过忘记了。下马威啊。第二个题关于平衡树的调整,还好就是一个很简单的判断是不是平衡树。第三个是C++中对类的静态成员函数的理解,这个挺简单,有过开发经验的都应该清楚吧。第四题是Cprintf函数中,可以有多个输出参数,是怎么实现的?郁闷这个 也不会,这个实在是不清楚。然后看我简历上熟悉STL,就问vector这个容器,当它空间不足的时候是怎么处理的,哈哈这个不难,我就巴拉巴拉的一阵忽悠,然后扯到STL算法中的sort算法,我一阵忽悠,我说Sort函数我看过源码(小小的漏下,哥也是有过深入学习的,哈哈),是用类似快排算法实现的,但不是标准的快排,是快排的一中改进,效果很好。然后就问我快排的实现,我就一阵的啪啦啪啦的讲解。后来问到我对socket编程熟不熟,我说只是有过简单的接触,它问TCP协议用什么机制保证数据的可靠性,我就大致说了使用ack验证这个,估计不会很正确,这个回去要好好的查查。然后问我linux编程熟不熟,我说还行,问linux的异步机制是什么,答曰信号量,同步机制,答曰信号,问linux自带的同步机制是什么,答曰不知道。然后进程间通信的方式,答曰管道,有名管道,消息队列和共享内存,还有同步信号,异步信号量。然后给我写了一个fork函数,问我的作用,我就答:创建子进程,返回int值,当返回0时,说明在子进程中,返回值大于0的时候,在父进程中执行,当饭后小于0时,表示出错。然后问我wait函数的作用,答曰等待子结束,防止僵尸进程出现,然后问我僵尸进程怎么预防,我就说设置SIGCHLD信号调用waitwaitpid函数进行处理,或则设置信号直接忽略掉。然后看我简历上有一个项目是网络舆情检测,就问了项目,我一阵的忽悠,不过在忽悠的过程中,有很多实现细节他都进行了发问,比如我说到我对分词的关键技术进行改进的时候,他会问怎么改进,我就说我们加了新词模块,提取网络新词。还有一些细节问题,感觉他还是懂这方面的。等我介绍完了,他笑着说,我们也是做网络监测的,我去,那我不是刚才在班门弄斧吗?然后我就给他解释下,我们这个项目是*局网监的,侧重的是网页上已经形成的文本详细,而贵公司可能更侧重网络监测吧,他笑笑说,我们也做文本的监测。我晕。在问完我之后,他不停的在我的评价表上写着什么,大约谢了快一分钟。然后让我等会。他拿着我的评价表出去了有3分钟,然后回来说:明天人力资源那边会给我打电话,安排我方便的一个时间进行复试。然后就出来了。就这样结束了面试!

 

总结问到的题包括(有几个忘记了,不太全):

Dijkstra算法  (哥心中的痛啊,这就是下马威!)

平衡树

C++中类的静态成员函数的理解

printf函数中,可以有多个参数,是怎么实现的          (这个真不知道,在C++部分已经补上答案)

STLvector容器空间不足的时候的处理方式

STLsort函数

快排算法的实现

socket编程中,(自己不太熟,如实相告,没有什么问题)

TCP协议用什么机制保证数据的可靠性   (自己感觉答得不好,在网络部分补上答案)

linux异步机制

linux同步机制,linux自带的同步机制        

linux进程间通信的方式都有什么

fork函数的用法

wait函数的作用

如何防止僵尸进程出现

做过的项目介绍  (问的很细,他既然问你这个项目,就是有一定兴趣,一定要如实回答,这个会问的很细的,你做过没做过很容易就会问出来的。)

 

从深信服的笔试就能看出来,这个公司很注重基础和底层。笔试题很难,也很全,不过没关系,只要有一方面答得好就行,我的笔试中,感觉就编程和算法还不错,其他基本没写什么。

 

 

二面:

930日二面:

           一阵的猛问,接近40分钟。很多题,大概回忆下都有什么问题吧。

          1 项目讲解,让后问的很细,具体到实现级别上。

         2STL vector在插入的时候,迭代器是否失效,   (失效)

         3STLvector当空间不足处理方式

         4IO的几种方式          4

               阻塞IO 非阻塞IO(默认为阻塞IO,通过函数fcntl(sockfd, F_SETFL, O_NONBLOCK)),多路选择IO,信号驱动IO

        5)算法,在100万个数种取最大的1000个,(我了个去啊,能不能有点新意啊,我都碰到好机会啦)

        6C++类中static成员函数的用法

        …………………………..

        …………………………..

        n)职业规划

       n+1)愿意做开发还是研究     开发

后来问我有问题吗?我直接问他对我今天面试的评价,得到的答复是这关过去了,下午HR会联系我。

 

三面:

930号下午,就是发offer,以前还没接触过呢。原来就是在一个会议室,这次在这边有12个人拿到offer,共有三个我们系的,包括我。然后一顿的讲解offer事宜,一顿猛夸深信服的发展前景,明年要上市等等。。。