百度移动开发笔试题
百度移动开发笔试题
百度的移动软件这面题比较少,也都是基础经典题。
1,解释一下精简指令集 RISC。
它是在
基础上发展起来的。各种指令的使用频度相当悬殊,最常使用的是一些比较简单的指令,它们仅占指令总数的20%,但在程序中出现的频度却占80%。复杂的指令系统必然增加
的复杂性,使处理器的研制时间长,成本高。并且复杂指令需要复杂的操作,必然会降低计算机的速度。 RISC的
统一,种类比较少,
也比复杂指令集少。当然处理速度就提高很多了。 RISC可同时执行多条指令,它可将一条指
令分割成若干个进程或线程,交由多个处理器同时执行。由于RISC执行的是精简指令集,所以它的制造工艺简单且成本低廉。
2,给出二叉树后序遍历和中序遍历,写出前序遍历
给出一道例题,类似这样的题目可以用如下的方法解答:
解答方法:
1、从前序遍历ABDEGCFH得出A为根节点;
2、从中序遍历DBGEACHF得出DBGE为左子树,CHF为右子树;
3、重复1、2从前序遍历BDEG 中序遍历DBGE 得出左子树的根为B;
依次类推。
例题:
一棵二叉树前序遍历和中序遍历分别为ABDEGCFH和DBGEACHF,该二叉树的后序遍历是什么?
DGEBHFCA
这个是2叉树滴图形
A
/ \
B C
/ \ . \
D E F
. / . /
G. H
后序访问的顺序为
(1)遍历左子树;
(2)遍历右子树;
(3)访问根结点。
所以结果为DGEBHFCA
3, 重写和重载的区别
重写是对于父类与子类来说的,当一个子类继承了父类的方法,然后需要把继承来的方法重写定义其实现,这称为重写(或者覆盖),重写的方法名、返回类型以及参数列表必须与父类的一样。重载是对于类的内部来说的,当一个类中定义了多个同名的方法,但是它们的返回类型或者签名不一样,这称为重载。
编程题:
1,链表的逆序, 1->2->3->4->5 变为 5->4->3->2->1
参考:
2,两个排过序的数组,快速找出两者相同的元素。
/**
* 发现有一个 O(n)算法。因为两个数组都是排好序的(以两个数组都是升序排序为例),
* 所以只要一次遍历就行了。
* 首先设两个下标,分别初始化为两个数组的起始地址,依次向前推进 。推进的规则是
* 比较两个数组中的数字,小的那个数组的下标向前推进一步,直到任何一个数组的下
* 标到达数组末尾时,如果这时还没碰到相同的数字,说明数组中没有相同的数字。
* 注意:当两个数组都是降序排序的时候,大的那个数的下标推进。如果一个升序一个降序,
* 那么就非不从不同的两端遍历。
* @param a
* @param b
*/
public static void findSameEle(int [] a,int[] b){
int i = 0;
int j = 0;
while(i < a.length && j < b.length ){
if(a[i] == b[j]){
//输出相同的数
System.out.print(a[i]+ " ");
i++;
j++;
}
else if(a[i] < b[j]){
//当前比较小的数对应的数组下标+1
i++;
}
else{
j++;
}
}
}
3,1000瓶酒,有一瓶有毒,用多少只老鼠可以一次测出哪瓶酒是有毒的。
按照gunnimadepi的方法,可以在两个小时内就检验出哪一瓶是有毒:
10个老鼠,把每个老鼠当作一位,可以有2^10种可能性
0000000001 1号瓶
0000000010 2号瓶
0000000011 3号瓶
0000000100 4号瓶
0000000101 5号瓶
0000000110 6号瓶
0000000111 7号瓶
0000001000 8号瓶
.
.
.
1111101000 1000号瓶
找10个碗,对应以上二进制的10位,每号瓶向对应位是1的碗倒一点酒(少量,老鼠喝不了多少酒,呵呵).这样让10只老鼠喝,2小时后哪些位的老鼠有反应就把对应位置1,再把二进制转成十进制,就可以找出哪个瓶有毒.
看到没有,都超级简单的,全是经典题,亲们是不是感觉百度也不多如此吗?但是大题:
设计一个Email终端,支持多账户,POP3,IMAP,smtp。给第三方使用。
1,写出至少5种用例
2,采用sqlite数据库,写出 账户,已发邮件,已收邮件,草稿 的表
3,假设完成POP3,IMAP,smtp协议,画出模块图。
一、
百度济南笔试 移动终端 题目
刚刚参加完笔试,真是一场洗礼啊,太难了。下面我回忆下今天遇到的题目。
总共是四道大题:
1
利用互斥量和条件变量设计一个消息队列,具有以下功能:
1
创建消息队列(消息中所含的元素)
2
消息队列中插入消息
3
取出一个消息(阻塞方式)
4
取出第一消息(非阻塞方式)
注意:互斥量、条件变量和队列又系统给定
2
用非递归方法完成二叉树的周游
3
讲下cnwap 和cnnet的区别
4
设计一个内存管理策略,要求可以保证多线程时的安全,防止内存越界等,效率不低于malloc/free 函数
就这些吧,感觉就是云里雾里,。