27届转码Day4
#笔试##秋招白月光#- 面试常见题目:
1. 求最大公约数:gcd(a,b) = gcd(b,r) 因为 a = b * q + r(余数)=> gcd(a,b) = gcd(b, a % b) = ... gcd(x,0) = x solution: int gcd(int a, int b){return gcd(a, a%b);
2. a找到一个整数中,从右往左第一个1所在的位置: 求lsb?方法一:有一个指针0x1 每次判断 (n & lsb) ==0 如果是0的话,进入循环然后 lsb <<= 1; 直到(n & lsb) !=0 方法二: 的 return n & (-n);
3. 不用中间变量把 a和b换掉。两种思路: a = a+ b; b = a -b; a = a - b; a = a^ b; b = a ^b; a =a ^b;
- 语句:
1. 三目运算符号 k = i > j ? i : j;
2. 指令语句:if else, switch case break; while true; do while; for; break; continue;
- 数组:
1. 一维数组:数组的内存空间:一片连续的内存空间,并提前分配好大小相等的小空间
[一维内存空间图片]
2. 为什么大多数语言都是从零开始?因为这个 i代表的是内存空间的偏移量:i_add = base_add + i * sizeof(elen)
3. 常见:数组的效率 > 链表的效率
内存:链表内存消耗(离散) > 数组(连续)cpu: 数组可以利用空间局部性
4. c语言不检查数组是否越界。无论是否越界他都会执行。
- 二维数组:
1. 本质是:一维数组,在每个内存子空间下面再竖向添加一个子空间
[二维数组内存图片]
2. 数组的初始化:推荐 int matrix[2][3] = {0};
3. 常量数组:不能修改数组的元素。
- 好处:防止篡改,安全性高;有助于编译器优化程序。 应用场景:存储不会发生改变的数据(静态数据)
- 例子:扑克牌发牌
        1. 求最大公约数:gcd(a,b) = gcd(b,r) 因为 a = b * q + r(余数)=> gcd(a,b) = gcd(b, a % b) = ... gcd(x,0) = x solution: int gcd(int a, int b){return gcd(a, a%b);
2. a找到一个整数中,从右往左第一个1所在的位置: 求lsb?方法一:有一个指针0x1 每次判断 (n & lsb) ==0 如果是0的话,进入循环然后 lsb <<= 1; 直到(n & lsb) !=0 方法二: 的 return n & (-n);
3. 不用中间变量把 a和b换掉。两种思路: a = a+ b; b = a -b; a = a - b; a = a^ b; b = a ^b; a =a ^b;
- 语句:
1. 三目运算符号 k = i > j ? i : j;
2. 指令语句:if else, switch case break; while true; do while; for; break; continue;
- 数组:
1. 一维数组:数组的内存空间:一片连续的内存空间,并提前分配好大小相等的小空间
[一维内存空间图片]
2. 为什么大多数语言都是从零开始?因为这个 i代表的是内存空间的偏移量:i_add = base_add + i * sizeof(elen)
3. 常见:数组的效率 > 链表的效率
内存:链表内存消耗(离散) > 数组(连续)cpu: 数组可以利用空间局部性
4. c语言不检查数组是否越界。无论是否越界他都会执行。
- 二维数组:
1. 本质是:一维数组,在每个内存子空间下面再竖向添加一个子空间
[二维数组内存图片]
2. 数组的初始化:推荐 int matrix[2][3] = {0};
3. 常量数组:不能修改数组的元素。
- 好处:防止篡改,安全性高;有助于编译器优化程序。 应用场景:存储不会发生改变的数据(静态数据)
- 例子:扑克牌发牌
全部评论 
 相关推荐
 点赞 评论 收藏   
分享
 