2012百度校园招聘(笔试,一面,二面)

笔试
1. 死锁产生的原因及其必要条件
2. 面向对象的三个基本特征和五个设计原则
3. windows内存管理方式有些,并讲解每种方式的优缺点
4. 有1001个运动员,现在要找出其中的冠军,最少需要多少次比赛,并写程序模拟比赛过程
5. 有100个灯,初始化全部熄灭,现在一次做如下操作:先将所有灯打开,在间隔一个将灯关闭(即2的倍数被关闭),在间隔3个如果灯是打开的就关闭,如果是关闭的就打开,这样以此类推,知道做到低100次,请问还有几个灯是打开的
6. 写一个字符串左旋转算法,要求时间复杂度O(n),空间复杂度O(1)。 例如: "ABCDEF"左旋转3得到DEFABC
7. 有10万条记录需要提供查询,记录由两部分组成:键值key为16字节(键值是唯一的),对应的value是1M字节的,现在给你6台64G的计算机,请你设计如何能够提供查询服务,注意:这些计算机随时可能down掉

一面
1. 自我介绍和项目面
2. 写一个函数将链表翻转
3. 证明一个数n能被3整除即是n的各个位的和能被3整除。 即123能被3整除即1+2+3=6能被3整除
4. c和c++中long占几个字节,指针占几个字节
5. 指针和引用的区别
6. 一个空类,编译器为其实现了那些函数
7. 链表和线性表的插入的区别
8. 堆栈和队列的区别
9. 一个有3个节点的二叉树,有几种形态
10. 给定树的后序和中序遍历写出先序遍历
11. 在一个大小为n的数组中,冒泡排序要做多少次比较。
12. 在基本有序的数组中那种排序算法最快
13. 什么是虚拟的内存,虚拟内存放在计算机的哪个硬件上。

二面
1. 项目面
2.
class A
{
    A() {fa();}
 ~A() {fb();}
 
 void fa() {cout << "A:fa" << endl;}
 virtual void fb(){cout << "A:fb" << endl;}
};

class B : pulic A
{
     B() {fa();}
 ~B() {fb();}
 
 void fa() {cout << "B:fb" << endl;}
 virtual void fb(){cout << "B:fb" << endl;}
};

A* p = new B;
delete p;

问输出什么?
如果将A中fb的virtual去掉又输出什么
如果将A中~A前面加virtual输出又是什么
如果~A前面加virtual,但是将A中fb的virtual去掉又输出什么

3.
char* p = "ABCD";
char q[] = "ABCD";
问p和q的区别

char* p1 = "ABCD";
char q1[] = "ABCD";
问:p == p1 ?
    q == q1 ?
4.
class A
{
    int a;
 int b;
 
 A() : b(100),a(b) {}
}
问:A.a,A.b
5. 问如何让一个类A只能在堆上定义,不能在栈上定义,即A a 错误, new A正确。
6. 一个数组中所有数都出现两次,现在数组中有两个数,各自都只出现了一次,请你设计一个算法在O(n)时间复杂度,O(1)空间复杂度找出这两个数
7. 一个有序字符串数组,现在将其循环左移n位,得到一个新的数组。请你设计一个二分算法来查询其中的字符。不能通过遍历找出移动的位数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值