百度移动开发笔试题

http://bbs.yingjiesheng.com/thread-1556967-1-1.html

百度的移动软件这面题比较少,也都是基础经典题。

1,解释一下精简指令集RISC。

它是在CISC指令系统基础上发展起来的。各种指令的使用频度相当悬殊,最常使用的是一些比较简单的指令,它们仅占指令总数的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

参考:http://www.2cto.com/kf/201110/106607.html

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函数

就这些吧,感觉就是云里雾里,。


你可能感兴趣的:(多线程,数据库,移动开发,sqlite,百度,终端)