绿盟 研发 一面二面三面+意向
零、前言
本人去年7-10月在成都绿盟进行了三个月的实习,算是第一次进入企业工作,学到了很多东西而且也认识了很多新朋友/新老师,所以对绿盟还是很有好感的。
由此在我8月初开始秋招投递时首先便投递了绿盟,base选择了武汉,因为离家近而且去年有认识朋友在武汉绿盟。下面简单记录一下面经,也算是攒攒人品。
一、8.26一面
- 8月23提醒约面,约了8月26。
面:简单自我介绍一下吧。
我:balabala。
面:去年在绿盟实习感觉咋样?
我:balabala。
面:去年你在某某组干了哪些内容,现在在某某厂实习干了哪些内容?简单讲一下。
我:balabala。
面:简单介绍下项目。
我:balabala。
面:问C语言项目中的命令补全怎么做的?
我:将命令特化为令牌结构,然后匹配balabala。
面:C/C++项目都是自己写的吗?
我:是的,balabala。
面:select/epoll区别?
我:balabala(讲了自己的学习路径、使用场景以及底层实现,并且根据自己使用经验分析了优劣)。
面:redis基础数据结构?
我:balabala(这我熟,源码都看过)大概讲了基础五种数据结构,以及redis中的数据结构实现,字典、sds、跳表、压缩列表啥的。
面:跳表怎么理解,复杂度?
我:就是一个多层级链表,复杂度跟红黑树一样,然后简单讲了下实现。
面:跳表使用场景?
我:红黑树能用的地方,跳表都能用,个人认为跳表可以当作红黑树的下位替代,其优点为实现简单,而且可以比较简单的实现区间选择,红黑树区间选择得回溯,而且实现也麻烦。
面:现在实习中,用过redis 6.0的多线程I/O?
我:没用过,不是瓶颈,没需求,不稳定。
面:进入反问环节。
一共15min左右,上面可能有些东西不全,凭感觉记的。感觉因为面试官的组和我去年实习的组好像有交集,所以问的也不算多,一面进行的很快,算是给实习过的同学的优待吧,毕竟技术栈比较相似,总体面试体验还是很不错的。
二、9.7二面
- 8月26面完过了两个多小时就来约二面了,一开始约的9月6,面试官临时有事改为9月7。
面:简单自我介绍一下吧。
我:balabala。
面:你个人比较擅长什么语言?
我:C++ > C > Go。
面:代码量如何?
我:应该算挺多的,github上自己敲着玩的项目,再加上两段实习里敲的,几万行肯定有。
面:去年在绿盟实习的经验讲一下?
我:balabala。
面:去年实习中主要都在用DPDK吧,讲一下DPDK?
我:个人理解这个工具的主要用处就是为了高速包转发,涉及到软硬件层面的优化。比如说零拷贝技术、用户态驱动、轮询代替中断、CPU亲和性优化...balabala(面完想起来忘说大页技术和无锁编程部分了,面试还是有点紧张)
面:讲讲为什么要搞CPU亲和性优化?
我:因为现在CPU中一般都有L1L2L3缓冲,其中L1L2一般是多核之间不共享的,亲和性相当于绑核嘛,不绑核导致进程在多个CPU上执行,L1L2的缓冲就会失效,cache MISS增多降低执行速度balabala(核心就围绕这个讲)
面:讲讲零拷贝,为什么有零拷贝,你怎么理解零拷贝?
我:零拷贝简单来说就是为了降低拷贝次数,减少的拷贝一般指的是内核态与用户态的缓冲区之间数据拷贝。然后讲了下传统I/O read/write 4次拷贝的流程,接着讲了讲DPDK的零拷贝方案,不过感觉可能讲的有点不是太清晰。
面:来点语言的,C++多态?
我:虚指针balabala。
面:C语言能搞多态吗?
我:想跟C++一样简单来搞肯定没办法,因为语言层面没继承那套东西。但是可以通过void指针/回调函数之类的来实现C语言形式的多态。
面:开发怎么防止内存泄漏?
我:可以正确使用C++11的智能指针...
面:C语言呢?
我:额,个人感觉只能完善编码规范,毕竟C语言比较自由和原始,感觉只能从规范上来避免。也可以多用内存泄漏工具来检测一下。小问题的话,也可以快速通过gdb看内存啥的。
面:内存泄漏工具的原理?
我:简单来讲就是实现了个内存池,然后重载内存申请/释放操作,并且操作时在内存块上记录操作函数之类的内容,然后泄漏的时候看看***存都是谁申请的。
面:讲一下操作系统内存?
我:讲了下虚拟内存和其需求,然后讲了下多级页表和虚拟内存转物理内存,然后顺便讲了下TLB和ASID。最后讲了下分配的流程吧,MMU啥的。
面:聊一下进程调度?
我:主要分两种吧,抢占和非抢占,比如时间片轮转和现来先服务。现在Linux用的是抢占式调度算法CFS,即完全公平调度算法,然后简单讲了下,nice值和底层红黑树啥的。
面:TCP面向连接?
我:TCP几个特点、拥塞控制、流量控制啥的熟练吟唱...就是讲的有点乱...
面:TCP为什么要给报文分段啊?
我:因为有MTU啊。
面:那为啥要有MTU啊?
我:个人理解是防止网卡堵塞之类的,可能还是网卡限制。
面:不太对,再想想补充一下?
我:好吧,没太接触过这块内容。(确实知识盲区,出去查了下应该是防止大报文影响其他报文发送)
面:开聊网络编程项目
我:讲了设计思路,网络编程的流程之类的,还有学习的流程啥的。
面:有遇到啥困难吗,咋解决的
我:balabala。
面:未来想走啥方向啊
我:想底层点吧,个人比较喜欢C/C++这种没GC的或者Go这样能玩指针的,玩起来比较明白踏实。
面:为啥今年不接着来绿盟实习了?
我:今年3.4月找实习的时候,绿盟好像没开啊,然后就去某某厂了(面试官吐槽:谁说我们没开的,我们今年有招的)
面:还有啥没问到的优点吗,可以补充一下。
我:算法竞赛吧,大一大二混了点奖。
面:OK,那就先这样。
一共30多分钟吧,最后可能因为时间关系没反问。上面可能有些东西不全,凭感觉记的。二面问的还是相对比较偏实际工程吧,而且也确实有不会的,面完火速学习。总体面试体验挺不错,但是可能有点紧张,很多答得有点乱。
三、综合面+测评
- 9.9约综合面,约了9月15
一共10分钟吧,本来以为是hr面,但是除了问比如学习的方法之类的问题以外也问了一些还算深入的技术问题,所以更像是综合面。下午2点多点面完,大概6点多发了测评邮件。
四、OC+意向
9月16号上午收到OC,随后隔了半小时发了意向,正式offer hr说要等国庆节后。
小结
绿盟去年的技术和wlb还是给我留下了很好的印象的(虽然听说现在也稍微卷起来了),但是可以说我有很多新东西和技术都是当初在绿盟实习时接触到的,所以我对绿盟还是挺有好感的,本次收到绿盟的意向还是很开心的。
#绿盟##C/C++##面经##秋招##绿盟科技#