字节跳动游戏服务端三面面经
做做别人的面试题
一面
1. 小写char转大写char
大写字母AZ的ascii码的范围是65-90122
大小写字母的值相差32,所以小写字母的范围是97
void change(char source)
{
return source-32;
}
2. 比较两个char数组是否相同
直接循环
bool compare(char s[], char t[])
{
if (sizeof(s) != sizeof(t)) return false;
for (int i = 0; i < sizeof(s); i++)
{
if (s[i] != t[i]) return false;
}
return true;
}
3. printf过程
???这想问的啥
大概是printf底层调用了puts,而puts使用的是系统调用
4. c++进程异常退出有哪些可能
- 程序错误,访问非法内存,比如空指针,空路径,指针释放失败
- 程序主动结束,kill()等
- 其他进程发送终止信号
5. 重复delete出错原因
重复delete会抛出异常,指针存的是地址,所以因为第一次delete后,对应地址的内存内容被清空了,此时指针置空,对一个空指针操作会产生异常
6. 静态库和动态库
静态库一般是.lib文件, 动态库一般是dll文件
静态库是在程序编译时加载,而动态库时程序运行时加载,所以使用静态库的工程体积和占用内存较大,而动态库的较小
7. 斐波那契数列,数很大时如何优化
这个题目我理解为斐波那契数列如何优化
我会用空间换时间,定义一个数组,保存该轮计算的结果供下次使用,例如
vector<int> record<n+1, 0>;
record[1]=1;
record[2]=1;
int Feb(int n){
if(record[n]!=0)
{
record[n];
}
record[n]=Feb(n-1)+Feb(n-2);
return record[n];
}