本帖最后由 xioaxu790 于 2014-11-21 22:27 编辑
问题导读
1、vector在erase之后,指向下一个元素的位置的流程是怎样的?
2、hash冲突时候的解决方法有哪些?
3、如何快速访问ipv6地址呢?ipv6地址如何存放的思想是怎样的?
本文接上一篇:十月下旬腾讯,网易游戏,百度迅雷校园招聘笔试题集锦(第271-330题)(1)
盛大游戏2011.10.22校园招聘会笔试题
1、下列代码的输出为:
- #include "iostream"
- #include "vector"
- using namespace std;
-
- int main(void)
- {
- vector<int>array;
- array.push_back(100);
- array.push_back(300);
- array.push_back(300);
- array.push_back(500);
- vector<int>::iterator itor;
- for(itor=array.begin();itor!=array.end();itor++)
- {
- if(*itor==300)
- {
- itor = array.erase(itor);
- }
- }
- for(itor=array.begin();itor!=array.end();itor++)
- {
- cout<<*itor<<" ";
- }
- return 0;
- }
复制代码
A、100 300 300 500 B、100 300 500 C、100 500 D、程序错误
vector在erase之后,指向下一个元素的位置,其实进行erase操作时将后面所有元素都向前移动,迭代器位置没有移动。itor=array.erase(itor) erase返回下一个元素的地址,相当于给itor一个新值。
2、下列代码的输出为:
- class CParent
- {
- public:
- virtual void Intro()
- {
- printf("I'm a Parent, ");
- Hobby();
- }
- virtual void Hobby()
- {
- printf("I like football!");
- }
- };
- class CChild:public CParent
- {
- public:
- virtual void Intro()
- {
- printf("I'm a Child, ");
- Hobby();
- }
- virtual void Hobby()
- {
- printf("I like basketball!\n");
- }
- };
- int main(void)
- {
- CChild *pChild = new CChild();
- CParent *pParent = (CParent*)pChild;
- pParent->Intro();
- return 0;
- }
复制代码
A、I'm a Child,I like football! B、I'm a Child,I like basketball!
C、I'm a Parent,I like football! D、I'm a Parent,I like basketball!
3、在win32平台下,以下哪种方式无法实现进程同步?
A、Critical Section B、Event C、Mutex D、Semaphore
4、以下哪句的说法是正确的
A、在页式存储管理中,用户应将自己的程序划分为若干个相等的页
B、所有的进程都挂起时,系统将陷入死锁
C、执行系统调用可以被中断
D、进程优先数是进程调度的重要依据,必须根据进程运行情况动态改变
5、以下描述正确的是
A、虚函数是可以内联的,可以减少函数调用的开销提高效率
B、类里面可以同时存在函数名和参数都一样的虚函数和静态函数
C、父类的析构函数是非虚的,但是子类的析构函数是虚的,delete子类对象指针会调用父类的析构函数
D、以上都不对
简答题:快速排序的思想是递归的,但是它的平均效率却是众多排序算法中最快的,为什么?请结合本例说明你对递归程序的理解。
算法题:用你熟悉的编程语言,设计如下功能的函数:输入一个字符串,输出该字符串中所有字母的全排列。程序请适当添加注释。
C++函数原型: void Print(const char *str)
输入样例: abc
输出结果: abc、acb、bca、bac、cab、cba
后续整理
1、12个工厂分布在一条东西向高速公路的两侧,工厂距离公路最西端的距离分别是0、4、5、10、12、18、27、30、31、38、39、47.在这12个工厂中选取3个原料供应厂,使得剩余工厂到最近的原料供应厂距离之和最短,问应该选哪三个厂 ?
2、
3、hash冲突时候的解决方法?
1)、开放地址法
2)、再哈希法
3)、链地址法
4)、建立一个公共溢出区
- int main()
- {
- if()
- {
- printf("Hello ");
- }
- else
- {
- printf("World !!!");
- }
- return 0;
- }
复制代码
在if里面请写入语句 使得打印出 hello world。
5、今天10.19西山居笔试题:
分别写一个宏和函数来获取元素个数 如count(a) 会得到a数组元素个数 。
6、平均要取多少个(0,1)中的随机数才能让和超过1。(答案: e 次, 其中e是自然对数的底数)
7、今天支付宝10.20笔试题:
汉诺塔一共为 2*N,2个一样大小,有编号顺序 每次只能移动一个 大的不能叠在小得上面 移动完之后,相同大小的编号必须和原来一样 问最小要移动多少次? 如 A1 A2 B1 B2 C1 C2 ...... 这样叠,A<B<C.... B不能放A上面,C不能放B A上面,移动到另外一个柱子后,还必须是 A1 A2 B1 B2 C1 C2 ....
8、socket编程的问题
TCP连接建立后,调用send 5次,每次发100字节,问recv最少要几次,最多要几次?
9、迅雷笔试题:
下面的程序可以从1....n中随机输出m个不重复的数。请填空
- knuth(int n, int m)
- {
- srand((unsigned int)time(0));
- for (int i=0; i<n; i++)
- if ( )
- {
- cout<<i<<endl;
- ( );
- }
- }
复制代码
10、四个线程t1,t2,t3,t4,向4个文件中写入数据,t1只能写入1,t2只能写入2,t3只能写入3,t4只能写入4,对4个文件A,B,C,D写入如下内容
A:123412341234.....
B:234123412341....
C:341234123412....
D:412341234123....
怎么实现同步可以让线程并行工作?
11、比如一个数组[1,2,3,4,6,8,9,4,8,11,18,19,100]
前半部分是是一个递增数组,后面一个还是递增数组,但整个数组不是递增数组,那么怎么最快的找出其中一个数?
12、今日10.21迅雷笔试题:
1、一棵二叉树节点的定义(和平时我们定义的一样的) 它给出了一棵二叉树的根节点 说现在怀疑这棵二叉树有问题 其中可能存在某些节点不只有一个父亲节点 现要你编写一个函数判断给定的二叉树是否存在这样的节点 存在则打印出其父亲节点返回true 否则返回false
打印节点形式:
[当前节点][父亲节点1][父亲节点的父亲节点][。。。]
[当前节点][父亲节点2][父亲节点的父亲节点][。。。]
2、有一亿个整数,请找出最大的1000个,要求时间越短越好,空间占用越少越好
13、在频繁使用小内存时,通常会先申请一块大的内存,每次使用小内存时都从大内存里取,最后大内存使用完后一次性释放,用算法实现。
14、今天亚马逊A卷校招笔试题:
输入一个字符串,如何求最大重复出现的字符串呢?比如输入ttabcftrgabcd,输出结果为abc,canffcancd,输出结果为can。
15、今天10.22盛大:删除模式串中出现的字符,如“welcome to asted”,模式串为“aeiou”那么得到的字符串为“wlcm t std",要求性能最优。
16、数组中的数分为两组,让给出一个算法,使得两个组的和的差的绝对值最小
数组中的数的取值范围是0<x<100,元素个数也是大于0, 小于100
比如a[]={2,4,5,6,7},得出的两组数{2,4,6}和{5,7},abs(sum(a1)-sum(a2))=0;
比如{2,5,6,10},abs(sum(2,10)-sum(5,6))=1,所以得出的两组数分别为{2,10}和{5,6}。
17、百度北京研发一道系统设计题,如何快速访问ipv6地址呢?ipv6地址如何存放?
18、百度2012校招北京站笔试题系统设计:正常用户端每分钟最多发一个请求至服务端,服务端需做一个异常客户端行为的过滤系统,设服务器在某一刻收到客户端A的一个请求,则1分钟内的客户端任何其它请求都需要被过滤,现知每一客户端都有一个IPv6地址可作为其ID,客户端个数太多,以至于无法全部放到单台服务器的内存hash表中,现需简单设计一个系统,使用支持高效的过滤,可使用多台机器,但要求使用的机器越少越好,请将关键的设计和思想用图表和代码表现出来。
19、
- #include <iostream>
- using namespace std;
- class A
- {
- public:
- A(){cout<<"A"<<endl;}
- ~A(){cout<<"~A"<<endl;}
- };
- class B
- {
- public:
- B(A &a):_a(a)
- {
- cout<<"B"<<endl;
- }
- ~B(){cout<<"~B"<<endl;}
- private:
- A _a;
- };
- int main()
- {
- A a;
- B b(a);
- return 0;
- // 构造次序和析构次序是对称的,这种题解答都是有技巧的.
- // 拷贝构造就不说了,构造过程是:
- // A A B ,那么析构必然是对称的:B A A。
复制代码
本文转载自:http://blog.csdn.net/v_july_v/article/details/6880698
作者:结构之法 算法之道
|