分享深信服(信锐科技)C/C++ 开发面经(已OC)

可能有的内容答得不完善不正确,请大家注意甄别。

一面(9.15 40min)
1.    自我介绍
2.    C 与 Python 区别(C 是编译型语言,Python 是解释型语言;C 是把 C 源码经预处理、编译、汇编、链接生成可执行文件,然后运行,Python 是解释器把 Python 源码解释成 C 代码等运行;C 是面向过程的编程语言,Python 是面向对象的编程语言;C 需要程序员手动管理内存,Python 用 GC 自动管理;区别很多 )
3.    socket 在 TCP/IP 模型的哪一层,从 socket 中读写除了 read() 和 write(),还可以用什么(传输层,还可以用 recv( )和 send(),这两个系统调用的最后一个参数如果为0,那么等同于  read() 和 write(),这个参数还可以是NOROUTE 不路由,PEEK 只读取不清空等;UDP 还可以使用 recvfrom( )和 sendto() 参数列表最后再加两个参数,标识对端的地址
4.    堆和栈(栈由编译器管理,内存地址自上向下生长,无内存碎片,不需要程序员手动释放,空间较小;堆由程序员手动管理或智能指针辅助管理,内存地址自下向上生长,可能有先申请但已释放,但后申请的未释放造成的内存碎片,ptmalloc 用一个哈希表帮助管理这些内存碎片(合并,分配),空间较大。堆在发生 malloc 的时候会根据申请的大小使用 brk() 或 mmap() 系统调用,这是实际从用户态陷入内核态向操作系统申请内存空间的操作。malloc() 的大小未必等于 brk() 的大小,brk() 会申请出一个内存池,由 ptmalloc 管理;当堆的上方申请空间(top chunk)足够大会发生 brk 紧缩,这是实际从用户态陷入内核态向操作系统归还内存空间的操作)
5.    常见二叉树(大(小)顶堆,二叉搜索树,AVL平衡树,红黑树等)
6.    快速排序的思路,选轴策略,如果递归实现快排最后小尺度的优化思路(选轴后,从左到右搜索到一个比轴大的,从右向左搜索到一个比轴小的,交换位置,左右相遇时,左右中间是轴的位置,然后两侧重新选轴,继续分治;选轴策略是为了避免快排在某些极端情况下时间复杂度退化到 O(n^2)(比如:选第一个为轴的降序数组快排),可以随机选轴,中位选轴;递归实现最后小尺度时,寻找函数入口,保存现场等工作会造成较大的开销,可以使用选择排序替代快速排序。C++ 中的 sort() 方法用的就是快速排序结合选择排序的实现)
7.    数组和链表(数组在存储上是物理连续的,链表不是。所以链表在存储上更加灵活,对于在链表插入删除的时间复杂度是 O(1),但是链表查找的时间复杂度是 O(n) 不支持随机访问;相反数组插入删除的时间复杂度是 O(n),因为需要调整后续的存储,但支持随机访问,查找的时间复杂度是 O(1))
8.    怎么优化链表遍历(我理解的面试官的提问意图是结合数组链表的优秀特性,答的 STL 库中的 deque 容器,deque 的存储结构是一段连续的内存空间作为中控区,每一个中控区挂在一个哈希桶,用双向链表实现;deque 需要做的工作就是,让使用者感觉在使用一段连续的内存空间,所以 deque 的迭代器复杂,需要存储四个值(中控区中的哈希桶索引,哈希桶链表的首地址,尾地址,和当前地址)。思路在于把一个长链表剪短,挂载在可以随机访问的中控区中,用较多的迭代器信息记录帮助随机访问,从而实现随机访问和灵活物理存储)
9.    SQL 事务(在 MySQL 中在 begin; 和 commit; 中间的内容,使用事务是为了实现多条语句在运行时数据库系统也能为其提供原子性,和对应的隔离性(RC,RR))
10.  怎么优化数据库 (合理设置索引;添加缓存;主写从读,读写分离;分库分表等

二面(9.16 45min)
1.    自我介绍
2.    设计模式了解哪些,用过哪些(用过工厂模式,适配器模式,代理模式)
3.    用 OC 手撕一个代理模式(不会,写不出来)
4.    算法:冒泡排序
5.    项目(20分钟拷打,通信板子是什么架构的?从数据产生到信号产生的过程(用户态产生数据,通过套接字被用户态获取,编码、调制,用网卡发出去的详细过程,答得不好

HR面(9.23 1h10min)次日已OC,开奖(21 * 13~15)已拒
全部评论
信锐的c++总比字节快手客户端强吧,大厂客户端都是劝退的啊
1 回复 分享
发布于 2022-10-21 09:47 湖北
这是实习岗还是正式岗?
点赞 回复 分享
发布于 2023-10-21 06:39 广东
为啥拒了信锐的啊
点赞 回复 分享
发布于 2022-10-21 09:45 湖北
楼主的项目大概是个什么呀 自己做着玩的还是工业上的?
点赞 回复 分享
发布于 2022-10-20 20:44 湖南
楼主没有线下三面吗
点赞 回复 分享
发布于 2022-10-20 01:53 广东

相关推荐

03-24 12:36
门头沟学院 Java
秋招跑了大半年,前前后后做了几十家公司的笔试,从互联网大厂到量化私募,从国企总行到游戏公司,真的见识了什么叫 “没有最难,只有更难”。1. 头部量化私募(九坤、幻方、灵均、宽德)难度天花板,没有之一,能完整做完的都是真大神。难在哪里:题型极其硬核,完全不是互联网笔试的量级。除了超难的算法题(普遍是 LeetCode Hard + 难度,还会涉及竞赛题),还有大量的概率论、线性代数、随机过程、高数证明题,甚至还有 C++ 底层原理、Linux 内核相关的硬核选择题,对数学和编程功底的要求拉到极致。真实体感:我做九坤的笔试,120 分钟,10 道选择 + 3 道编程 + 2 道证明题,选择题一半靠蒙,编程题一道没完整 AC,证明题直接空着,考完直接怀疑人生,非科班 + 数学功底弱的,直接会被劝退。2. 华为「天才少年计划」/ 高端岗位笔试普通 OD 岗的笔试难度就不低,天才少年 / 高端研发岗的笔试,更是地狱级。难在哪里:题量超大,难度拉满,对代码的时间、空间复杂度要求极其严格。通常是 5 道算法题,150 分钟,几乎全是 Hard 难度,涉及动态规划、图论、复杂模拟、数据结构设计,很多题都有隐藏坑,暴力解法直接超时,必须想到最优解才能 AC。真实体感:身边的 985 硕学长,刷了 600 多道 LeetCode,做华为高端岗的笔试,也只 AC 了 2 道半,对边界情况的处理、代码优化能力的要求,远比普通大厂高得多。3. 腾讯游戏 / 米哈游 游戏客户端 / 引擎开发岗笔试游戏圈的笔试,是出了名的难,完全是另一个维度的考核。难在哪里:不只是考算法,更是考游戏开发的硬核功底。题型覆盖 C++ 底层原理、计算机图形学、OpenGL/DirectX、物理引擎、数据结构、操作系统,还有超难的算法编程题,很多题都是针对游戏开发场景设计的,没接触过的话,连题干都读不懂。真实体感:做米哈游的客户端开发笔试,选择题一半都是图形学和 C++ 内存管理的硬核题,编程题考了游戏里的碰撞检测算法,完全没接触过的话,根本无从下手,非游戏开发方向的,大概率会直接交白卷。4. 字节跳动 算法岗 / 后端开发岗笔试互联网大厂里,字节的笔试难度是公认的第一梯队,虐哭了无数校招生。难在哪里:题量超大,时间极紧,难度梯度离谱。通常是 40 道行测 + 4 道算法题,120 分钟完成。行测题烧脑耗时间,算法题 2 道中等 + 2 道 Hard,几乎没有送分题,对做题速度和心态都是极致的考验,很多人行测就耗掉了一大半时间,算法题根本没时间写。真实体感:秋招做字节的后端笔试,行测就做了 50 分钟,剩下的时间 4 道算法题,只 AC 了 1 道半,身边很多同学都是全程被按在地上摩擦,能 AC3 道以上的,都能被称为大神。5. 六大行总行 / 政策性银行 科技岗笔试非技术岗里的地狱难度,难在离谱的题量和无所不包的考点。难在哪里:和互联网公司完全不同,不只是考编程,考点覆盖行测、英语、计算机专业知识(计算机网络、操作系统、数据库、组成原理、C++/Java)、金融知识、时政、常识,甚至还有性格测试,题量能到 200 多道,考试时间 3 个小时,全程手不停,做到最后眼睛都花了。真实体感:做某国有大行总行的科技岗笔试,3 个小时,200 多道题,英语还有 10 道完形填空 + 5 篇阅读理解,计算机专业知识考得又偏又细,做到最后手都酸了,连蒙带猜才勉强做完,考完直接脑子一片空白。最后想跟牛友们说,笔试只是秋招的一关,哪怕考崩了也不用自我否定,很多笔试的通过率本来就极低,不是你不够优秀。
你做过最难的笔试是哪家公...
点赞 评论 收藏
分享
评论
12
56
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务