深信服(C++软件开发工程师)
一面 9.19 25min
- 自我介绍
- C++内存管理
- double free知道吗?什么情况会造成?
- coredump?
- Windows写代码还是Linux?
- 程序崩溃
- 什么是野指针?
- 怎么避免野指针?把指针指向的内存释放就能避免野指针吗?
野指针一般由两种原因造成:
一个是定义的指针没有初始化,指针指向随机值;
二是申请了内存,内存释放掉了,但是指针没有清空,相当于指向了无效的地址
避免:初始化;最后清空,赋值为NULL。 - 结构体对齐
struct A { char a; int b; char c; double d; };
占24个字节 - 结构体的比较,怎么判断两个对象是否相等
A a,b;
怎么判断相等?
用==,要重载
memcmp函数能不能用?为什么?
不能,有字节对齐的机制,里面是乱码
想用怎么办?
两个办法:
一,把字节对齐的机制取消
二,把整个内存初始化一遍,全部清零,再赋值 - 字符串匹配:判断一个字符串中的字母是不是都包含在另一个中
- 奇偶互换,前面全部是奇数,后面全部是偶数,算法复杂度要求:o(n)
一个无序的序列,前面全部是奇数,后面全部是偶数
前后各加一个游标,往中间走,两个游标相等,结束 - 你比较擅长哪一块?
面试官都无奈了,感觉问啥我都不会...... - 建议:基础要抓好