深信服提前批一面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++##校招##深信服##秋招#
全部评论
怎么知道一面挂了 是收到感谢信了吗
1 回复 分享
发布于 2021-09-01 19:38
双指针,先让一个走k步,然后两个一起走,快的为nullptr时,返回慢指针即可。 class Solution { public:     ListNode* getKthFromEnd(ListNode* head, int k)      {         ListNode* l1 = head;         ListNode* l2 = head;         while(k)         {             l2 = l2->next;             k--;         }         while(l2)         {             l2 = l2->next;             l1 = l1->next;         }         return l1;     } };
3 回复 分享
发布于 2021-08-31 01:00
strcpy() 函数还要判断内存重叠,用 memcpy()函数
1 回复 分享
发布于 2021-08-27 16:13
我也考的这拷贝字符串,说我没有检查输入。
点赞 回复 分享
发布于 2021-08-27 15:35
算法都写出来了吗
点赞 回复 分享
发布于 2021-08-28 13:51
大文件FILE*?
点赞 回复 分享
发布于 2021-08-30 20:22
服务器项目?
点赞 回复 分享
发布于 2021-09-01 13:46
一般不要用assert,-d NDEBUG 就没了
点赞 回复 分享
发布于 2021-09-02 18:05
感谢信是调查问卷嘛
点赞 回复 分享
发布于 2021-09-04 22:08

相关推荐

做人要有梦想dji:最新工位查看图片
点赞 评论 收藏
分享
评论
1
36
分享

创作者周榜

更多
牛客网
牛客企业服务