微软 AzurePaaS 二面
整个面试过程极简,35min,kpi
- 自我介绍 3min
- 介绍一个你觉得可以的项目 5min
- 做题 20min:给你一个string,输出这个string+1(十进制)
- 我做的是判断这个string是否为int/float,是就数位+1
- 如果是其他的,就直接最后一个字符+1
- 但是这里面试官我没考虑到哪些,我想到了没考虑到负数,面试官提示字符串溢出问题,我当时没想出来,后面一搜发现字符串竟然还分unsigned和signed,属实是扫盲了
- 无符号 char (unsigned char): 可以表示的范围是从 0 到 255。
- 有符号 char (signed char): 通常可以表示的范围是从 -128 到 127。
unsigned char uch = 255; uch++; // 由于溢出,uch 的值变成 0 signed char sch = 127; sch++; // 行为未定义,但在很多实现中,sch 可能会变成 -128
#软件开发2024笔面经#当你对一个
char
类型的变量进行增加或减少操作,使其超过了上述范围时,就会发生溢出。在 C++ 中,无符号类型的溢出行为是定义良好(well-defined)的,会发生模(modulo)运算,例如,对于unsigned char
类型,256 会变成 0,-1 会变成 255(如果你在代码中直接写-1
或其他负值,编译器在编译时会把它转换成对应的正值)。对有符号类型而言,溢出是未定义的行为(undefined behavior),编译器可以随意来处理这种情况。