深信服C++秋招一面复盘 9-16

背景:深信服MSS海外组——后端开发实习

本次面试,重点围绕实习期间的需求:ip2region微服务化改造需求深入探讨。本菜鸡觉得压力满满,全程斯米马赛,感觉蛋了个糕。
(注:复盘时候发现录像忘记录本地音了woc,之前面百度也是现在也是- -, 只能尽量去回忆当时说了什么)
(再注:面试是面试官的摄像头一闪一闪亮晶晶的(绿屏花屏),把我眼睛闪瞎了)
(继续住:简历上根本没有写了解分布式理论,笑死。)

面试内容

  1. 介绍一下自己
  • 背到烂的自我介绍
  1. 介绍一下ip2region
  • ip2region我们海外组的一个需求,因为之前只服务国内,所以地理位置信息只有中文,现在第三方服务商提供了一个英文的更全的离线包,不过这个包太大了,组长就让我起一个微服务,对内提供ip地理位置映射接口(忘了面试咋说的了,差不多是这样)。
  1. 你的这个微服务是用什么语言写的,平台是什么?(???平台- -,我能理解成注册中心吗)
  • Python,注册中心用的consul。
  1. 只是用的注册中心是吧?那服务的访问呢?
  • 我们部门有人将consul的服务注册服务发现服务监控等封装成包了,我只需要调用这个包提供的方法就行,不过这个包的具体实现我还是看过他的源码的。
  1. 为什么用的consul?(first blood,已经不会了。。)
  • (沉默是金)呃。。。我从分布式一致性方面来说吧,consul他是强一致性和有分区容错性的,牺牲了高可用性。可能是因为这个原因?
  1. 那为什么不保证高可用呢?(double kill,9m我不会分布式原理aaaaaaa)
  • (胡说八道ing),可能是我们的产品面向的b端,流量不是很大,可能没有高可用也可以(复盘后翻译的人话:对高可用没有很强烈的需求),反而是对强一致性有需求。(这答的啥这是。。。)
  1. 不需要高可用为什么需要分区容错性?(trible kill????别问了哥,人已经不好了,已经感觉寄了)
  • 额,我不知道。
  1. 你怎么理解分区容错性?(听我说谢谢泥,(bushi),这个我背过,直接八股)
  • consul的分区容错性首先他的所有请求需要半数以上的节点同意才能生效,当发生网络分区,假设分成两个区域,那么超过一般节点的那个分区将会生效。(这里面试的时候说错了,说成没有leader分区的那个分区会选举出新leader,--)假如超过有一半节点的那个分区没有leader,就会自动选取出一个新leader。我的理解是分区容错性不能保证高可用,因为另外一个少于半数节点的分区,无论有多少请求,都不会成功。这就保证了分区容错性。(个人理解啊,如果有误麻烦大佬们指正qaq)
  1. 那他跟高可用有什么区别?
  • 不会,忘记怎么回答了(个人理解是高可用可以保证服务请求成功,比如说之前b站崩溃就导致了可用性为0。)
  1. 按我的理解一般来说用户对高可用还是要求很高的。为什么你们要舍弃高可用而保证了一致性?
  • 解答同5(为什么要反复鞭尸啊)
  1. 有看过Raft算法嘛?
  • 有的,我在接到这个需求的时候有查资料了解过这个分布式一致性算法。
  1. 有看过代码嘛?(听我说。。。不听了已经麻了)
  • 这个没有。。。

——————————————

  1. 好的,你的ip2region这个东西,提供了ip地址映射,这个映射是什么呀?(终于问别的了,我哭死)
  • 这个是根据IP地址返回对应的地理位置信息。
  1. ip地址量有多大?
  • 里面应该记录了全球范围的ip地址。
  1. 他的ip信息会有多少呢?
  • 这个数据是第三方提供的离线数据包,具体我不太清楚。
  1. 都是ipv4地址嘛?
  • 是的之前只实现了ipv4的。
  1. 你的离线包,他一定有4个255的内容嘛?
  • emmm,应该有地址分类或者可能有想同一子网地址相同的情况,就可以合并记录成一个地址区间。(当时已经说的语无伦次了)
  1. 对于ip地址段,你是怎么匹配的呢?(草,是绿色的)
  • 额,我不太清楚,我有去查找相关资料,他离线包里面的内容大概划分成了索引区和数据区,我想应该是先从索引区找到对应ip的内容区的地址,再到内容区读取响应内容,这样就能匹配到地理位置信息。
  1. 你这个索引段是怎么查找的?
  • 额。。。。。不太清楚,我想应该是二分。
  1. 二分法怎么查找地址段?你不是说查找的是地址段嘛?不是一个确切的ip地址诶。
  • 额。。。。。我想一下。。。。应该取折中的确切ip地址?
  1. 那么会这有两个问题,第一个问题是地址段是怎么进行索引的,或者说地址段是怎么进行排序的?
  • 还是和查找方法法一样?取折中的ip地址,在进行排序。
  • (面试官:ip地址不是字符串嘛?)答:可以先转换成一个确切的数,就是比如说1.1.1.1,可以通过1 * 256 ^ 0 + 1 * 256 ^ 1 + 1 * 256 ^ 2 + 1 * 256 ^ 3,这样子转换,再对转换后的数进行排序。
  1. 这个数是什么类型的数?他会有多大?(忘了问的啥。。突然说如果数过大会涉及大数排序,0A0又是啥555)
  • 我想先设成long long吧,怕设成int会超(现在想想确实,应该设置成unsigned int32)。有多大啊。。。255255255*255?
  1. 有了解过ipv4地址的格式嘛?
  • 点分。。。(说道这里卡住了突然不知道是几进制了,可能被前面的问题问晕了,面试才进行了15分钟啊555)十进制吧好像。
  1. ipv4,C语言是怎么存储的,用的什么样的数据结构?
  • 额。。。。。我没了解过。
  • (面试官:能想一想嘛)我想想啊,我能想到两种,一种是我之前说的直接转换成一个确切的数,另一种是以数组形式存储,数组空间为4,存储一个八次方的数(又胡言乱语了,当时在想256是2的几次方emmm,面试官小声bb:8次方是什么鬼),(急忙补充)2的八次方的数,也就是4个空间大小的八位存储。比如说1.1.1.1,我们可以直接存到数组中。
  • (面试官:这个想法是合理的。)
  1. 那么你说的数组,这个大小是多大呢?
  • (我直接大脑高速运转知识宇宙.jpg)额。。。。(一七得七二七四十八三八妇女节五一劳动节(bushi))应该是四个字节。
  1. 那这种数据结构怎样进行索引排序呢?
  • 额。。。。。。这个不是很好排序吧。。。。。
  • (面试官:不好排序?为什么不好排序啊?)哦哦,可以排序,我们可以遍历下标定位他们的位置,比如说先确定下标为零的数组确定他们的位置,再在下标为0相同的数组确定下标为2的数的位置,以此类推(当时忘记说什么了,反正说的有点乱,好像说成查找方法了,寄。。。)
  • (面试官:有没有更好的方法?)二分?
  • (面试官:二分是查找方法?有没有更好的排序方法?)额。。。我不知道了。
  1. 那你说一下常用的排序方法?这些排序方法关注两个数的什么关系?(--???)
  • 有冒泡、插入、归并、堆排、快排等等,(后面已经语无伦次了)冒泡就是两个相邻的数相比较,每一轮排序最后确定一个数的确切位置;插入也是相邻两个数比较大小(卡壳了,说的不全);归并有点像二分的思想,把一个问题拆分成两个子问题,最后拆分成两个数比大小,然后将子问题解决完这个问题就解决了;快排也是二分思想,每次会取一个基准数,我们这里就三点取中吧,然后基于这个基准数划分为左边比基准数小右边比基准数大的部分,再对这两个部分进行排序。
  1. 那么回到刚才的问题(听我说。。。已经麻了)你觉得排序用哪个排序比较好?
  • 额。。。我想下啊,我想用快排?
  1. 快排具体怎么将ip排序呢,假如是确切的IPv4地址。
  • 和刚刚我说的思路差不多。
  1. 两个ip怎么比较?
  • (怎么又回到之前的问题了--!)回答和之前的差不多。(面试官:如果是ip段呢?)可以取折中的ip地址。(忘记我怎么说了。。。)
  1. 你怎么找到折中的ip?用什么方法?
  • emmmmm。。。(大脑已经死机了)我们说一个最朴素的吧,就直接从起始地址开始遍历,遍历到结束地址,之后找到他中间的地址。
  • (面试官具体呢?用什么遍历?)emmmmm。。。可以定义一个快慢指针。
  • (面试官:快慢指针?不是遍历链表的方法嘛?)我觉得这里也适用,你先听我说,一个走一步,一个走两步,快指针走到结束地址,满指针的地址就是折中的地址。
  • (面试官:那他ipv4不是有四个段嘛?那你怎么走呢?)可以在下标为0的地址累加1,逢255进一。(又问了一些细节。。不写了麻了)
  1. 好的,第一个问题问完了,第二个问题是,你找的这个ip地址可以代表这个ip区间嘛?什么情况下不能代表这个ip区间?
  • 额。。。。。。。不知道。(红豆泥私密马赛)(面试官:假设我的段有重叠怎么办?)额。。。。确实没考虑到。(那你现在考虑一下呢?)可以根据起始ip进行排序,如果起始ip一样的,保守一点的话就根据结束ip进行排序,或者说可以随便排序。
  1. 那如果不是重叠关系,是包含关系呢?怎么处理?
  • 额。。。。。。(听我说。。)不太了解,我想可以用树状结构,用线段树?(开始给自己挖坑)
  1. 线段树?你知道线段树是怎样的结构嘛?
  • (只了解过一次线段树。。太菜了我- -,如果有说错的地方麻烦大佬们指出)线段树就是,每个节点的值为起始值和终止值,是一段区间,然后根节点区间和其子树所有节点的区间和是包含关系。
  1. 那这个结构怎么解决重叠问题,又是怎么解决排序问题的呢?
  • 忘记当时说的啥了。。。反正在胡说八道就对了。(省略一堆与面试官的对话和我的疯狂的私密马赛)
  • 面试官:其实重叠情况是要进行数据清理的,因为一个ip并不能表示两个地理位置(原来是现实逻辑问题,听我说。。。),但是这个数据清理可能不能完全清理掉,要看你的数据的情况。我问问你,这个清理给你做,你应该怎么清理呢?— — 答:私密马赛,我不会。
  • 面试官:假设没有重叠,那ip段怎么排序?(这不是回到之前的问题了吗?直接说和之前的想法一样。)
  1. 手撕分割IPV4,返回数组。(因为时间不够了,本来还想叫我写快排,就只让我撕这个。)
  • 讨论了一下IPv4输入数据格式,返回数组的数据格式,然后开撕。(终于有个正常问题了555)

反问

  1. 我的表现怎样?
  • 这个好像是不能说的吧,如果通过的话会通知你的。
  1. 我还以为一面问的是基础问题呢
  • 答:这个也是基础问题啊。(--,是我太菜555)
  1. 是指定部门面还是不分部门统一面试?
  • 网申的时候是指定部门嘛,没有指定就是不分部门统一面试。
  1. 多久能出结果呢?
  • 我不清楚具体什么情况哦。

最后的话

还以为一面是常规八股没想到会挖这么深入(感觉就是对需求的深入探讨吧),面试官还是挺好的,一直在引导我回答问题,感谢和面试官就我实习经历做的需求展开深入探讨,就是感觉好多答不出啊只能私密马赛qaq,如果不是面试的话,我觉得我们聊的还是挺愉快的哈哈哈。最后希望一面能过吧,许愿offer。

背分布式理论和Raft和Consul有点去了。。。

#学生时代让我难忘的事##深信服校招##深信服##面经##23届秋招笔面经#
全部评论
请问收到二面了吗
点赞 回复 分享
发布于 2022-09-19 16:14 广东
hi~同学,秋招遇“寒气”,牛客送温暖啦!23届秋招笔面经有奖征集中,参与就得牛客会员7天免费体验,最高赢300元京东卡!戳我去看>>>https://www.nowcoder.com/link/zhengjipinglun
点赞 回复 分享
发布于 2022-09-19 12:53 北京
同学同花顺尝试一下吗,面试简单不造火箭,我帖子有内推
点赞 回复 分享
发布于 2022-09-17 00:42 浙江
问八股文的时代过去了
点赞 回复 分享
发布于 2022-09-17 00:21 重庆

相关推荐

05-06 15:29
东华大学 C++
1. ​分布式订单ID生成? 短时间高并发下如何保证唯一性?我先回答了雪花-like, 上段实习中, 我们项目的全局GUID生成器是我写的, 考虑了短时间内大量产生的情况, 向后借用, 未考虑时钟回拨然后想起来当时和leader讨论,  单独的GUID生成中心, 分批向各个ds批发号段.. 或者是用tacplus的自增id, 但是这样效率太低2. ​CPU 性能瓶颈分析使用 prof 工具监视热点函数的性能消耗3. 上段实习工作内容? 难点?    背包/仓库/道具 ​重构模块追问​:    在两周内重构1万行代码,如何保证代码质量?是否引入单元测试或自动化验证?    10天完成15天任务,如何协调开发与测试资源?是否牺牲技术债?4. 问了一点网络: 网络通信与实时系统视频会议与代码共享的链路设计追问​:解释从你的设备到面试官屏幕的完整网络路径(如NAT穿透、协议选择)5. 游戏服务器同步机制? 和互联网开发的区别服务器作为权威状态源,定期向客户端广播游戏世界的完整或增量状态(如玩家位置、血量)电商无状态服务可通过REST API+RPC横向扩展,而游戏服务器需维护长连接和会话状态。6. 系统设计 分布式事务与最终一致性​游戏道具交易涉及多个系统(背包、仓库、邮件),如何设计分布式事务?对比电商订单支付+库存扣减。​回答方向​:​Saga模式​:将事务拆分为多个可补偿步骤(如“扣道具-发邮件-记录日志”,失败则回滚)。对比:电商更倾向异步消息队列​(如Kafka)实现最终一致性。7. 游戏服务器宕机后如何快速恢复玩家状态?电商系统如何设计类似容灾机制?定时落DB+游戏整体运行在共享内存, 方便resume7. 游戏后端请求链路分析采用自定义的可靠UDP协议​(KCP),平衡延迟与可靠性. 玩家操作(如移动、技能释放)需携带时间戳和操作序列号,用于服务端验证顺序, 请求直达, 客户端直接和服务器感觉面试内容很不"八股", 答得稀里糊涂的, 上面的顺序不是面试提问顺序, 想起来什么说什么, 大家做个参考
查看11道真题和解析
点赞 评论 收藏
分享
上班后第一次开牛客,发现99+了,非常惊喜,再分享一下字节面经。3.25 一面(至暗时刻)项目拷打 问项目设计,模块怎么拓展 某数据库字段,提出缺陷问怎么优化 项目的鲁棒性和健壮性 udp怎么可靠传输 让你实现超时重传,怎么做 讲讲操作系统内存管理 算法 下一个比当前大的数的下标一面挂了,但是侥幸复活3.31二面项目拷打  项目中遇到的最大的问题是什么 你是怎么从班级推广项目到学校的 模块是怎么设计的 模块和模块之间的关系 你项目的优化思路是什么 表的数据都是怎么设计的 索引是怎么设计的 联合索引ab 查b会不会走索引 为什么  未来数据量变大,表存不下了怎么处理算法 单向链表有无环,如果有,找到环的起始节点4.1三面ai的项目 ai问答原理是怎么样的 效果如何 你这个用户量算怎么样,做过比对吗 你问答的结果是怎么评价的,项目优化的指标是什么 你遇到哪些困难,怎么优化的 那你检索的时候为什么会检索出导致幻觉的内容,这里不做优化吗 奖学金项目给你的成长是什么 遇到最大的困难是什么,怎么解决的 这个规则引擎是怎么构建的,开源的吗 分布式系统中,多次请求导致数据重复修改怎么办 读写分离的时候,读的数据库同步不及时导致读了旧数据怎么办 算法 1-10中缺失了一个 快速找出找出每个数的二进制数中有几个14.9hr面4.15 offer4.18入职有空会补解析,可以关注一下嘞
程序员牛肉:一个地方诶,我也在杭州的国际电商,不过是5.7日入职
点赞 评论 收藏
分享
04-28 17:58
门头沟学院 Java
查看15道真题和解析
点赞 评论 收藏
分享
04-29 19:28
东南大学 Java
背景介绍:BG介绍本科计算机类双一流高校科班、硕中九,无实习但是有一些国家级计算机类竞赛奖项和校级荣誉,非ACM选手,回顾整个找暑期实习的流程,还是比较坎坷的,希望对现在还在找实习的同学提供一些情绪价值和帮助。少年自有凌云志:“少年自有凌云志,万里长空竞风流。” 小帅怀揣着对大厂的憧憬,踏入了暑期实习的求职之旅。彼时,他对暑期实习的认知尚显朦胧,在研究生岁月里,凭借着一腔热忱,自学 Java 开发技术栈,投身大模型应用相关的竞赛实践,积累了一些国家竞赛荣誉和。望着身边同学纷纷开启投递简历、背诵八股文、刷真题的忙碌模式,笔试能力欠佳的小帅坚信 “宝剑锋从磨砺出,梅花香自苦寒来”。他果断购入某刷题软件平台的 VIP,一头扎进真题练习的海洋。经过一周多的刻苦钻研,小帅鼓足勇气,向美团投递了人生第一份正式简历 (毕竟袋鼠同学有着两次笔试机会,且发 offer 时间较早)。此后,他又陆续向 30 家公司递出简历,开始自己的暑期之旅。袋鼠同学于3月27日邀请小帅参与第一次面试,这是小帅的第一次面试,甚至没有预约好面试地点,打扰到部分自习室同学的学习。小帅对自己的第一个项目了如指掌,但是没想到袋鼠同学不按照套路出牌,一个回手掏,狠狠拷打了小帅第二个黑马点评项目,小帅在RabbitMQ的一个场景题描述错误后,各种找补,无可奈何,最终虽手撕出来,但3天无果,遗憾收场。小帅经过第一次的失利后狠狠沉淀了自己的项目,却发现无人赏识,周围的同学陆续有了饿了吗、蚂蚁等知名企业的约面,小帅感到疑惑,小帅的简历不说优秀,但也不算平庸,却好像不受青睐。经过一小段的焦虑后,小帅终于等来了慢脚同学和多多同学的约面,以为是机遇,却没想到是煎熬的开始。运去英雄不自由:在 4 月 18 号之前,“多多同学” 和 “慢脚同学” 是小帅为数不多的希望。期间,因父亲身体抱恙,小帅匆忙回家,在医院陪护两夜。即便如此,他依然对这两次面试珍视有加。返回学校后,小帅一路过关斩将,面对各种面试问题,熟练背诵八股文,迅速破解场景题,轻松拿下算法题,顺利闯入两个 HR 面环节。他至今清晰记得 3 月 30 日那天的喜悦 —— 刚为相识五年的室友庆祝完生日,就收到了 “多多同学” 二面的通知,这是小帅的第一个二面。4 月 15 日,小帅参与 “慢脚同学” 的 HR 面,HR 给予了积极反馈,表示下周将给出录用通知。随后,在 18 日又完成了 “多多同学” 的 HR 面。此外,他还经历了腾讯 CSIG(上海) 的一面,面评颇佳,缺HC紧张;还有 “袋鼠同学” 第二志愿的面试,尽管体验糟糕,但彼时的小帅已不再纠结,觉得即便挂了也无妨,非核心部门不去也罢。此时的小帅有些飘了,满心以为手握两个 HR 面,工作已是十拿九稳,甚至有些得意地感慨:谁说学计算机找不到工作?这不是手到擒来嘛!然而,现实却如一盆冷水浇头。小帅开启了度日如年的等待模式,每日焦急盼着录取通知,根本无心复习,也再未收到其他面试邀约。在 4 月15 ~25 日这段漫长的日子里,小帅整日焦虑不安,满心祈祷 “慢脚同学” 的 offer 降临,还与众多同样在慢脚大池子里等待的同学交流,彼此分享消息。4月22日上午,小帅还和众多池子里的同学交流HR的反馈,催促HR推进相关流程,当天下午同学告知小帅,他们收到了 offer了。小帅瞬间心如死灰,深知自己原来处于池子的底部,难以 “上岸”,以为稳了实际G了。再想到 “多多同学” 两周才推进一次的缓慢节奏,他彻底绝望了。那一刻,小帅满心不解,为何明明通过了录用评估,却依然与 offer 失之交臂?回顾读研以来的历程,似乎总是难和好运挂钩。恰逢当晚,母上打来视频:“知道你找工作辛苦,最近都不敢打扰,就是惦记你身体,一定要健健康康的。” 小帅再也控制不住泪水,强装镇定地回应:“没事没事,还在找呢,有进展的,找到了一定告诉你们。” 匆匆挂断电话后,他躺在床上,一边是周围同学收获 offer 的喜悦,一边是自己漫长等待的绝望,第一次深刻体会到室友所说的 “找工作,运气也占很大成分”,而自己竟在这场运气的较量中败下阵来。何妨吟啸且徐行:陷入失落期的小帅,整日只盼着 “多多同学” 能带来好消息,甚至开始自我否定,质疑自己的能力。幸好,小美每日陪伴左右,给予安慰与鼓励,为他 “喷洒”“offer 喷雾”。在消沉三天后,小帅偶然看到牛友文章中 “竹杖芒鞋轻胜马,谁怕?一蓑烟雨任平生” 这句话,思绪瞬间被拉回高中时代。那时,他最爱的便是苏东坡的《定风波・莫听穿林打叶声》,尤其钟情 “何妨吟啸且徐行” 这句词。回想起曾经在篮球场上尽情挥洒汗水、熬夜刷题拼搏的自己,再看看如今因一次录用评估就颓丧失落的模样,小帅暗自下定决心:“无论如何,明天一定要重新打开 JavaGuide 和 LeetCode,哪怕只能静下心片刻,也要重新开始复习。”柳岸花明又一村:小帅重新审视过往挂掉的蚂蚁等公司的简历,精心改写后再次投递,并全身心投入紧张的复习中。“山重水复疑无路,柳暗花明又一村”,小帅突然收到了狗东、蚂蚁、携程和荣耀四家公司的面试邀请。此后的面试中,无论面试官抛出何种问题,小帅都能从容应答。当面试官开始考察场景题时,曾经在 “袋鼠同学” 面试中的失败经历,让小帅积累了丰富的应对经验,对于项目的技术选型和场景阐述,他都能条理清晰、有问必答。随着面试深入,面试官挖掘他的个人亮点,发现他在专利、竞赛方面有所涉猎,对 FAISS、COT、Embedding、RAG 等技术也略知一二,纷纷毫不吝啬地给予夸奖。小帅也顺顺利利通过狗东的 offer 流程,还进入蚂蚁、携程的二面环节。总结:人生注定不是一朝一夕的较量,这之间会有很多酸甜苦辣,你会看到学习两个月的Java选手居然可以很快的拿到ATMB的offer,也会看到本硕科班,积累一众成果和技术栈的同学,因为各种原因遗憾折戟。小帅昨天收到了狗东的真诚推进的offer,也收到了慢脚同学两周池子泡出的尘埃落定的一挂,刚刚又收到了多多同学的信息确认。这一路焦虑和被肯定的幸福只有自己知道,但是我还是记得高中的那句“何妨吟啸且徐行”,大佬们再强最终也只能选择一份 offer。即便前面经过了多次失败或者命运的嘲笑,坚持下去,有积累的同学也一定有机会得到后续面试官的赏识。
点赞 评论 收藏
分享
评论
2
4
分享

创作者周榜

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