星网锐捷笔试
http://blog.csdn.net/beyondyangkai/article/details/5951578
1 把-4传给函数参数类型为unsigned int
2 传输层协议
3 串行总线,半双工通讯
4 *++优先级
5 进程间通信方式
6 语句优化:y=x%16; y=h*63;
7 函数指针
8 显存的计算
9 宏定义:把一个整数的第k位清零
10 数据在内存中的存储方式,例如-2, 3.14是如何存储的?
11m和n的平均值(或者接近)的计算是 y=(m+n)/2; y=m/2+n/2;哪一种对?
12 操作系统,数据结构的知识,网络知识
13 计算一个字符串中汉字的个数。每个汉字占2个字节,1开头,英文字母1个字节,0开头
http://blog.csdn.net/Joogle/article/details/8104092
2013星网锐捷笔试题
啤酒一块钱一瓶,两个空瓶可以换一瓶啤酒,一个人有n元钱,问这个人可以喝到多少瓶啤酒?要求用递归实现。
1.非递归
- {
- int battl = 0;
- int empty = 0;
- while (n > 0)
- {
- --n;
- ++battl;
- if (++empty == 3)
- {
- empty = 0;
- ++n;
- }
- }
- return battl;
- }
2.递归
- int fun(int n)
- {
- if (n/2 > 0)
- return (n-n%2) + fun(n/2 + n%2);
- return n;
- }
优化%和*操作的效率(星网锐捷笔试题) http://blog.csdn.net/ruanxuewu0120/article/details/5962807
优化下面2个语句的效率:
(1)y=x%16
(2)y=m*63
解题思路:将操作符转化为二进制的移位操作可以大大提高效率
(1)x%16就是保留x(二进制)最后四位,所以只要将x转化为二进制后再和(前面高位补0)1111相与&,即可得x%16结果。
(2)乘法可以用二进制数的移位操作来实现,向右移是除法,向左移是乘法,空位补0。m*63可以转化为m*64-m=m*2的6次方-m
因此m*2的6次方可以转化为将二进制的m向左移6次
2010星网锐捷软件方面笔试题 http://blog.csdn.net/jimbeing/article/details/5934388
选择题:
1.逻辑题
2.英语题
3.二叉树:深度一样的满二叉树和完全二叉树的结点
4.
int test(int num)
{
return (num>>4%256);
}
test(16)?test(256)?
5.
int main()
{
int i;
char *a = "123456789"
char *b = "987654321"
for(i=0;i<7;i++)
if(*(a+i) == *(b+i))
printf("%c",*(a+i));
}
6.
int i,j=2,*p = &i;
*p = *&j来实现i = j 的赋值?
7.
http用来web?
nntp?
ftp用来传输文件?
dns用来域名解析?
8..编译的时候?高级语言汇编语言和什么目标文件关系?
9.#define LEN 100是在哪里(预处理?编译?还是运行?)把LEN全部用100代替
10.
int test(int a,unsigned int b)
{
if((a+b)>0){
return 0;
}
return -1;
}
void main()
{
printf("%d/n",test(3,-4)+test(-5,6)+7&8);
}
填空题:
1.一个带一位小数的float型四舍五入来表示一个整形num?
2..在链表i结点前插入个结点,后面要移动几个元素?
3.数组a[m][n],a[0][0] = 644,a[2][2]=676,求a[3][3]?
4.怎么定义一个常指针?
5.
int a[5] = {7,8,9,10,11};
int *p = a;
*(p++) += 123;
printf("%d,%d/n",*p,*(++p));
6..十个进程,进程片200ms,切换进程片10ms,系统开销大概占多少?
7.osi几层模型啊第四层第五层各为什么?
8.从底层看,用户使用什么来请求操作系统的服务
9.某个lcd分辨率1280*1024,每点24bit,刷屏为60hz,问要至少有多少兆的缓冲空间?
10.int **a[3][4]内存?
11. float a = 1.1;
double b = 1.1;
if(a == b){
printf("a == b");
}
else{
printf("a != b");
}
12.隐形表达时时缺省项是哪个?
13.
unsigned char *p1;
unsigned long *p2;
p1 = (unsigned char*)0x801000;
p2 = (unsigned long*)0x810000;
printf("%d,%d/n",(p1+5),(p2+5));
14..单链表的逆序?
15..
· char a[8] = "hello";
char b[] = "worldyou";
printf("%d/n",sizeof(a)+sizeof(b));
int *c;
char *d;
void *e;
printf("%d/n",sizeof(c)+sizeof(d)+sizeof(e));
16,进程间通信的方式?
简答题:
1.int strcpy(char*source,char*det)不用库函数
2.串行为什么有时比并行传数据要快?
3.
int i;
int a[5];
int *p = a;
for(i=0;i<5;i++){
p++;
*p = i;
}
4.求两个值的平均值?
int q,m,n;
q = (m+n)/2正确否?
q = m/2+n/2正确否?
5.一些ip是否能用在主机上,为什么?
【锐捷笔试题】将整形变量a的最高n位清零,其它位不变,宏定义:#define clear_bits(a,n) http://blog.csdn.net/zhizunwudi/article/details/11706875
锐捷昨天的一道互联网C++笔试题,我的写法如下:
#define clear_bits(a,n) (a)&~(((1<<n)-1)<<(32-n))
注:1、n应该加上括号,上面括号比较多,再写上比较混乱,所以没给n写上括号,大家写的时候记得加上;另外,宏定义所有变量最好都加上括号。
2、(1<<n)-1就是2的n次方减1(当时我直接写的2^n-1,把异或^当成了次方运算,Faint!),即最低n位都置为1,例如(1<<4)-1即2的4次方-1,二进制表示为0000 1111
3、((1<<n)-1)<<(32-n)即把最低的n个1左移到最高的n个1,即最高n为都置为了1,eg,n=4时(以8位二进制为例),((1<<4)-1)<<(8-4),结果为1111 0000
4、然后对上面结果取反~,即最高的n位置为0,其他位全为1;最后a与这个数,即把a的最高n为清零了。