最近在找工作,把遇到的笔试、面试题记录在此,总结经验教训,为后面的笔试、面试打好基础。
闲话少叙,看题:
1、
声明以下变量(简单的就不列了,列我觉得稍微有点难度的吧)
a、指向整型的指针的指针的数组: int **p[];
b、指向数据的指针: int (*p)[];
c、参数为void,返回值为void的函数数组:void (*p[])();
2、下列代码输出什么?
int a = -5;
unsigned int b = 1;
b > a ? cout << b : cout << a ;
输出 -5 ,因为算术转化把int提升为unsigned int。
3、下列代码输出什么?
int a = 1;
int b = 2;
int c = a+++b;
cout << "a=" << a << " b=" << b << " c=" << c;
a=2 b=2 c=3;
优先级后置++ > 前置++ > + ;NC题,那个写代码的时候不会加个括号。
4、实现下列运算
1-2+3-4+5-6+7-8+9
方法1:
int sum = 0;
for (int i=1; i<10; i++) {
if (i % 2) {
sum += i;
} else {
sum -= i;
}
}
方法2:
int sum = 0;
int flag = -1;
for (int i=1; i<10; i++) {
flag *= -1;
sum += flag * i;
}
答题的时候写了两种,以为方法2的效率高,不过回来加大循环量后,发现方法1快些,两次乘法比一次求余慢。
5、memcpy是,目标内存与源内存有重叠是怎么copy?
可以从后往前拷。
未完待续