一面&二面:

1. 链表排序;

2. 给定n个数,有两个数字出现了1次,其他出现了2次,找出这两个数字;

3. 把二叉树按列打印出来;

4. ac自动机问题;

5. 最大子序列和问题;

6. virtual关键字;

 

三面:

1. 项目经验;

2. 根据项目经验进行系统设计;

我的是:设计一个服务器监控通知系统,使一个服务器可以监控多台服务器,当服务出现问题的时,可以及时通知工程师,要做到4点要求:

  A 可扩展性,可以方便的增加或删除需要监控的服务器;

  B 可以监控服务器的死活;

  C 可以监控不同的服务异常;

  D 可以对不同的服务进行不同等级的警报。

 

其他网站的资源:

http://www.cnblogs.com/buptLizer/archive/2011/09/22/2185133.html

最基本:虚函数,quick sort,三次握手 ok,进程通信

1.虚函数 作用:实现动态联编,即在程序执行期间动态的选择合适的成员函数。 封装、继承和多态。

2.快排 void quickSort(int l,int r) { if(lb[j]) {++j;} else {++i;} } }

3.//最大子矩阵和 m[N][N] int getMaxSub(int *a,int len) { int curMax; curMax=a[0]; for(i=0;i>n>>m; for(int i=0;iresult) result=tmp; } } }

4.//链表快排

5.//7进制转化为14进制 //思路:将7进制数字转化成10进制,然后再转换成14进制 void NumtoNum(char s[],int len,int from,int to) { ///////////////////////////////////////////// //无符号整形,当为0时,再--的话直接变成最大值 ///////////////////////////////////////////// int sum=0,k=1,i=len-1,j=0; cout<= 0;i--) { cout<=10) re[i++]=(char)('A'+j-10); else re[i++]=(char)(j+'0'); } for(j=0;j<i/2;j++) { char ch=re[j]; re[j]=re[i-1-j]; re[i-1-j]=ch; } cout<<re<<endl; }

6.分配一个大小为3的string和分配一个大小为1000的string,时间是一样的吗? 我把这个题放到 了算法群里,让大牛们讨论,结论是相同的,因为STL 给string预分配的大小为1024个字节,所以两者时间一样,但是如果超过这个范围, 我个人感觉应该考虑内存管理方面的东西,用首次匹配,最佳匹配或者最差匹配等等,不同的分配方式应该是不一样的。还有一个大牛说:“ 如果实际底层申请的是一样的内存,时间差不多 否则不一样 ”。

7.为什么要使用滑动窗口协议 滑动窗口协议是TCP中流量控制的一种方法,该协议允许发送端可以在停止并等待确认前发送多个分组,而且可以通过接受端控制发送端的发送。只有收到接受端的确认之后, 发送窗口才有可能向前滑动。是TCP协议软件利用滑动窗口有效解决传输效率和流量控制问题。

8. 设计一个C++垃圾回收机制 有析构函数、智能指针、引用计数去管理资源的释放。 方法1:使用引用计数和智能指针,给每一块分配的内存提供引用计数,然后通过智能指针(smart pointer)自动完成引用计数的加减, 如果引用技术减少到零,就代表没有人使用该内存了,这块内存就可以回收了。 具体可以在网上看下:

http://blog.csdn.net/yeahhook/article/details/6796242

http://familyandjob.blog.51cto.com/523471/110494

最后一个问题可以采用钩子函数实现,具体见:

http://www.cnblogs.com/buptLizer/archive/2011/09/22/2185002.html

posted on 2014-09-22 23:17  zhang123shuo  阅读(310)  评论(0编辑  收藏  举报