华为面试经历简记

无线部门

(1)  最长公共子序列

(2)   交换两个数

void myswap(int *a, int *b){
    int tmp;
    tmp = *a;
    *a = *b;
    *b = tmp;
}
int main(){
    int a = 10;
    int b = 20;
    myswap(&a, &b);
    cout << "a=" << a << endl;
    cout << "b=" << b << endl;
    system("pause");
    return 0;
}
(3)   定义宏Max(a,b)

#define Max(a,b) a>b?a:b

(4)   一个二进制数a,将其第N位置(低位)为1:

x = a | (1 <<n);
将其第N位置为0:

int change(int x, int n) { // 这里的n都是从0开始的
// 高位的话插一句 n = sizeof(int)*8-n-1
return x & ~(1 << n);
}


先把1左移n位,得到00010000形式的一个数字,然后取反得到11101111形式的数字,然后和原来的数进行“位与”操作。与0得0,与1不变。所以第n位就变成0其他位不变。

int main(){
    int a = 15;
    int n = 1;//位数从0开始
    int x = a &~ (1 << n);
    cout << x << endl;//13
    system("pause");
    return 0;
}

(5)  struct,union大小

struct 简单来说就是一些相互关联的元素的集合,说是集合,其实它们在内存中的存放是有先后顺序的,并且每个元素都有自己的内存空间。那么按照什么顺序存放的呢?其实就是按你声明的变量顺序来存放的,下面先看一个例子:

struct sTest{

int a; //sizeof(int) = 4

char b; //sizeof(char) = 1

shot c; //sizeof(shot) = 2

}x;

所以在内存中至少占用 4+1+2 = 7 byte。然而实际中占用的内存并不是7 byte,这就涉及到了字节对齐方式。

union 的不同之处就在于,它所有的元素共享同一内存单元,且分配给union的内存size 由类型最大的元素 size 来确定,如下的内存就为一个double 类型 size :
union uTest{

int a; //sizeof(int) = 4

double b; //sizeof(double) = 8

char c; //sizeof(char) = 1

}x;

所以分配的内存 size 就是8 byte。

既然是内存共享,理所当然地,它不能同时存放多个成员的值,而只能存放其中的一个值,就是最后赋予它的值,如:

x.a = 3; x.b = 4.5; x.c = ‘A’;

这样你只看到x.c = ‘A’,而其它已经被覆盖掉,失去了意义。


(6)  C和C++的不同


视频监控部门

(1)  彩色图像、灰度图像和索引图像的定义

(2)  1024*1024的RGB彩色图像、灰度图像所占的空间大小

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值