思科题 || atheros

http://blog.csdn.net/truelie?viewmode=contents


1. 用宏定义写出swap(x,y) 
2.数组a[N],存放了1至N-1个数,其中某个数重复一次。写一个函数,找出被重复的数字.时间复杂度必须为o(N)函数原型: 
int do_dup(int a[],int N) 
3 一语句实现x是否为2的若干次幂的判断 
4.unsigned int intvert(unsigned int x,int p,int n)实现对x的进行转换,p为起始转化位,n为需要转换的长度,假设起始点在右边.如x=0b0001 0001,p=4,n=3转换后x=0b0110 0001 

参考答案:

1。

#define swap(x, y)/ 
x = x + y;/ 
y = x - y;/ 
x = x - y; 

#define swap1(x, y)/ 
x ^= y;/ 
y ^= x;/ 
x ^= y; 

对于swap,当输入的数据是不同种类型的话,这个宏的结果是不对的。 
对于swap1,只适用于整型数据。

2。

第二题,采用hash表,对访问到的每一个数N,在hash表中记录其值为true,那么当再次访问到时,如果值已经为true,那么表明重复了,这样只要扫描一次,时间复杂度为O(n),而对hash表的访问时间复杂度是O(1) 
3。

((i & (i - 1)) ? false : true)

4。

result ^= (  ((1<<n)-1)  <<  p );


A. 100人参加考试,共5道题,第1、2、3、4、5题分别有80、72、84、88、56做对,如果至少做对3题算及格,问:至少几人及格?


B. 有10个人要从城市A出发去往城市B. 他们只有一辆(两个座位,包括司机)的车.


已知A,B相距1000公里,开车速度100公里/小时,步行速度5公里/小时.


问,当10个人都到达城市B,最少要花多长时间?

 我的解答:1:62人     2 :92.16小时 
第一题过程:为了使得及格的人数尽可能少 就让每一个人尽可能多的答对题目 
答对5题:56人     则剩下的答对的题目是:24;16;28;32;0 
答对4题:16人     则剩下的答对的题目是:8; 0; 12;16;0 
答对3题:8 人    则剩下的答对的题目是: 0; 0 ;  4;   8;0 
一共用了 56+16+8=80人,剩下20人 
这20人先做如下分配:4个人 答对第3,4两题       4人答对第4题 12人全错 
显然这样的分配是浪费了可能不及格的机会  因为只答对 第四题和全错的可以改造成答对2题的人 
先拿出拿出只答对第4题的四个人 和 4个全部大错的人 来占据 答对3题的人每个人一道答对的题目 
那么答对三题的人没有了 
现在可以利用的资源是4个答对1题的人和8个全部答错的人 然后来针对答对4题的人 一共可以使得 
4/2+8=10个答对四题的人变成答对2题 
所以最后及格的人数为56+16-10=62 ,这也就是及格人数的最少的数目

答对0道题的最多 100-88=12
答对1道题的最多 88-84=4
答对2道题的最多 84-80=4
答对3最少 100-12-4-4=80 

设汽车向前开的总时间为x,向后开的总时间为y。

10个人共走了(包括坐车)10*1000公里

在x时间内8个人在走,2人坐车,在y时间内9人在走,一人开车往回走。

汽车最终由A地到达B地。


所以

(1)(8*5+100*2)*x+(9*5-100*1)*y=10000

(2)   100*(x-y)=1000

总时间t=x+y=92.16小时

=============================


6道题目,
1 是swap的宏的定义
2. 用一个语句判断一个数是不是2的n次幂
3.判断sizeof作为参数传入的 char[]的长度
4.用两个栈实现一个队列
5.将字符串bcde转换为edcb
6.循环计数1-n,如果计到m,则打印出来

第一个面试官问了一些kernal的问题
第二个面试官问了更多kernal包括kernal panic,进程间通信,kernal向用户空间传递数据的方式,makefile正则表达式,OSPF路由算法的问题,软件体系结构,芯片与芯片的连接接口,main()如何调用,如何在main前调用不让main调用,kernal下分配内存的方法的问题
第三个面试官问了很多kernal的问题,如何调试kernal panic的问题,进程同步通信,make file ,cpu与芯片和芯片与芯片的连接方式,linux版本,不同体系结构下的移植,编译选项,文件系统,驱动的种类、编写方法,程序调试方法硬件调试仪器、方法,ip-table,arp-table?、socket类型,排序算法的种类,怎样把C程序反汇编看到汇编语言(gcc工具),代码编译的过程,所独立完成的项目等等等等

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值