深信服提前批一面C++软件开发
1、自我介绍。
2、说一说你所做的项目还有哪些可以改进的地方。
3、定时器是用堆实现的,那如何去触发定时器呢。
4、你这个项目是单线程还是多线程,当Socket来了之后,如何处理。
5、进程、线程、协程得区别。
6、如何保证线程同步。(面试官还问了自旋锁,没学...)
7、文件IO:一个大文件如何复制到另一个文件中。(只答了用buff存储...,大文件不会)
8、
int a = 1;
int arr[3] = {1, 2, 3};
char str[] = "Hello";
int len_a = sizeof(a); // 4
int len_arr = sizeof(arr);// 12
int len_str = sizeof(str);// 6 9、内存对齐 union x {
int a;
float b;
double c;
char d;
};
sizeof(x); 10、实现 char* strcpy(char* dst, char* src)
char* strcpy(char* dst, const char* src) {
// 检查传递参数的有效性
assert(NULL != dst);
assert(NULL != dst);
if (NULL == dst || NULL == src) {
return NULL;
}
char* ret = dst;
while ((*dst++ = *src++) != '\0') ;
return ret;
} 当时没有判assert,直接一个for循环进行拷贝,面试官还问我还有吗?我...。 11、求一个链表的倒数第K个节点。
[1] 先求整个链表的长度得到N,N-K+1就是第K个节点。
[2] 链表反转,再求第K个节点
[?] 面试官问:还有吗? 我:???
估计凉了~,面试官说我语言描述不生动,算法很差...。
更新一下:一面挂了!,果然是自己基础不好,算法太差。
#深信服面经##面经##C/C++##校招##深信服##秋招#