讲述自己项目经验的基本框架:START
正确解体思路:
- 字符串为空串或空指针.
- 字符串含有非0到9的字符.
- 特别注意字符串转换到int值,要考虑溢出的问题,正整数的最大值是0x7FFFFFFF,负数的最小值是0x80000000.
enum Status {kValid = 0, kInvalid};
int g_nStatus = kValid;
///
// Convert a string into an integer
///
int StrToInt(const char* str)
{
g_nStatus = kInvalid;
long long num = 0;
if(str != NULL)//至少保证字符串不为空
{
const char* digit = str;//用了一下中间变量,保存原始字符串,防止被破坏
// the first char in the string maybe '+' or '-'
bool minus = false;
if(*digit == '+')//通过第一个字符判断是正是负
digit ++;
else if(*digit == '-')
{
digit ++;
minus = true;
}
// the remaining chars in the string
while(*digit != '\0')//字符串结束标志
{
if(*digit >= '0' && *digit <= '9')
{
num = num * 10 + (*digit - '0');
// overflow
if(num > std::numeric_limits::max())//整数溢出的情况
{
num = 0;
break;
}
digit ++;
}
// if the char is not a digit, invalid input
else
{
num = 0;
break;
}
}
if(*digit == '\0')
{
g_nStatus = kValid;
if(minus)
num = 0 - num;//转化为负数的方式
}
}
return static_cast(num);
}
代码来自博客:http://blog.sina.com.cn/s/blog_74a459380101ennz.html
此博客 :https://blog.youkuaiyun.com/u010412719/article/details/48108533 也同样进行了分析
应聘者提问环节
1. 问关于自己职位相关的
2. 技术面试不问薪水
3. 可以问公司项目的问题