【已oc】百度 搜索内容技术部 C++日常实习 1/2/3面
总体流程
- 2022.7.5 投递简历(boss上投的,应该是组内直招)
- 2022.7.6 约面了,因为后几天都有面试,所以约到下周一(2022.7.11)晚上
- 2022.7.11 20:30 一面
- 当天晚上22:00约了二面,在周三(2022.7.13)下午
- 2022.7.13 17:00 二面
2022.7.14 oc- 当天通知加面一个经理面,放在下周一(2022.7.18)下午,后面又改成晚上
- 我就说怎么会有点击就送的大厂offer,我也觉得奇怪
- 2022.7.18 20:20 三面
- 2022.7.20 11:00 oc
一面(35min)
自我介绍
八股/项目(30min)
都是最常见的八股文,就看背的熟不熟了
- 介绍RPC项目
- 还知道哪些序列化方式?
- 除了I/O多路复用,还知道什么I/O?
- 阻塞I/O、非阻塞I/O、信号驱动I/O、异步I/O
- 阻塞I/O的性能瓶颈?
- 这块答的略微不好,因为没复习。
- 大致就是两个阶段,数据准备的阶段,也是阻塞的,影响了性能
- C++的多态概念
- C++的析构函数,可以是虚函数吗?
- 在继承的体系下,一般都是虚函数
- C++的构造函数,可以是虚函数吗?
- 不能,不过有个重要的地方忘记说了,编译就过不去
- TCP和UDP的区别?
- TCP怎么保持顺序?
- seq
- vector是怎么存的?
- 顺便说了下,怎么扩展空间,GCC默认每次扩展到原来的两倍
- static关键字是干啥的?
- C++左值和右值的区别?
- move是干啥的?使用move和不使用有啥区别?
- 使用了移动构造函数之后的性能差别
- 感觉上是好了,减少了动态内存分配
- I/O多路复用的机制,除了epoll还有什么(连续几次都被问到,感觉是个高频问题了)
- select、poll,简要说了下三者的原理差别
算法题(5min)
在自己的IDE写,无需测试
面试官说,出个简单题(想不到真是个简单题)
环形链表,判断是否有环(LeetCode 141)
简要说了思路(快慢指针)
反问
- 部门的业务,用什么技术栈或者库
- 数据抓取相关(大致是百度搜索的数据咋抓取吧)
- 什么时候能知道结果
- 如果有结果,是今天或者明天
总结
人生第一次经历常规八股面,突然有点不适应,有些问题回答不够全
好多常见八股文,是人生中第一次被问,感觉自己除了这次之前,并没有经历过啥常规面试
之后的复习要回归基础了,不能太钻牛角尖
二面(55min)
面试官很年轻,比较帅的那种
自我介绍
(面试官说,如果我想做后端开发,也许可以试试别的岗位(其实是在暗示我这个岗跟我预期的有差别,因为后端开发偏向于高性能/高并发/造轮子的东西),可是我也想啊,这不没我能投的吗,都**不给我转语言)
哦对,还说了部门改名字了(原来叫内容策略部,现在叫搜索内容技术部)
八股/项目(15min)
- 介绍webserver,为什么要做webserver,怎么做技术选型,比同类的项目的优势和劣势
- 了解网络编程,了解服务器运行原理
- 其中一个是得看I/O模型怎么选,定位是高并发
- 多做了点功能,状态保存,可变缓冲区(支持文件上传)
- 事件处理模式不够好,用的是模拟proactor,主线程做的太多,影响性能
- 知道C++的
move
吗(被问烂了)- 知道
- 移动构造函数/移动赋值是深拷贝还是浅拷贝?
- 浅拷贝
- C++11还有哪些新特性
- lambda
- 各种cast
unique_ptr
、shared_ptr
nullptr
- 很多很多
- 嗯,那就不问了,写两道简单题吧(还真是easy题,不来道mid折磨我一下吗)
算法题(15min)
在自己的IDE写,需要运行
- 买卖股票的最佳时机(LeetCode 121)
- 说了贪心法,写了代码,面试官似乎不喜欢我的代码风格(我麻了,第一次遇到这种的,因为变量用驼峰命名法)
- 我说我用Python的时候喜欢用下划线
- 最大子数组和(LeetCode 53)
- 说了动态规划法
- 然后面试官说,为了省时间就不写代码了(我还以为面试要结束了,还来个智力题?麻了麻了,不喜欢动脑)
智力题(25min)
有16辆摩托车,油箱加满油,能跑100公里。车与车之间能互相加油,在这种情况下,最后一辆摩托车能跑多远?
- 我想不出来,在纸上比划了半天,以为是个算法题
- 我就说,能不能用二分查找,确定个上下界,但是
check
函数没想好咋定义 - 面试官说这不是算法题,是数学题,不需要用算法题的角度去考虑
- 然后提示我如果有2辆车,是什么情况
- 我在纸上比划了一会,猜了个答案,两辆车走50公里,一辆车把所有油加给另一辆车,这样,另一辆车能走150公里;但是用了别的值带入,感觉没有比这个大
- 面试官说思路是对的,并且解释了为啥(油箱容量有限,走不够50公里,虽然剩的油不多,但是加不了这么多;走了50公里以上,剩的油不多了,油箱加不满)
- 然后问我如果是3辆车,是什么情况
- 我猜了个答案,就是三辆车走1/3,剩余的1/3加给一辆车,还剩1/3加给另一辆车,这样剩下两辆车就是之前的情况了
- 面试官说思路正确,然后让我推出16的情况
100/16+100/15+...+100/3+150
- 发现智力题考验的未必是智力,而是和面试官的沟通
反问
- 如果有幸通过面试,我需要提前学习什么东西?
- 网页结构(得让学点html、js、css),要识别网页结构,都是策略
- 学习点深度学习的东西(麻了,这是要深度学习了)
- 部门是否用到什么库和技术栈吗?
- 没啥,就是涉及到网页结构的识别啥的(麻了,纯C++算法开发了属于是)
- 一共有几轮面试?
- 最后一面了,如果之后有通知,就是hr的通知了
三面(50min)
三面是临时加面的经理面(电话面),因为被横向比较了,问法类似于hr面,没让写题,但是也会问开放性的技术问题
自我介绍
项目/闲聊
- 关于C++开发的方向,可能大部分人侧重底层/后端,这个偏向于算法优化,你对这个感兴趣吗
- 因为看我的简历项目跟岗位实际内容不太match
- 当然要说感兴趣,想学习
- 并且解释了一下准备的偏后端,是因为比较普适
- 你实习的目的,是侧重于学习,还是积累跟今后校招相关的经验
- 学习,因为离校招的时间还有段距离
- 希望通过实习收获什么?
- 提升技术能力、专业水平;了解大型软件合作开发的流程;公司怎么运转
- 了解过这个部门做啥,需要学习哪些东西吗
- 根据上一面反问的内容回答
- 知道网页怎么渲染吗?
- (麻了,我也不是前端人士,当然不知道啊)
- 介绍RPC项目
- 是侧重功能实现,还是性能优化
- 前者,RPC功能非常多,目前也只是做了一部分功能
- RPC为什么使用自定义通信协议
- RPC同步和异步调用在实现上的区别
- 解释不同,再解释具体实现
- 性能如何?
- 没有压测过
- 如果一个静态网页,部分内容需要点击后才能显示,这一块应该怎么识别?
- 我还以为问的是应该咋做
- 结果是问,既然如果我不知道,我会如何解决此问题
- 点击后才能显示的部分需要js脚本,这部分是动态的,可能得看看有没有模拟渲染网页的框架
- 看看有没有相关的框架,各个框架对比,易用性、是否在维护、用的人多等等,决定用啥
- 平时用多长时间完成项目,既然不是实验室的内容
- 上半年事情很多,又要科研又要上课,所以在晚上插空做
- 如果对方发来两个视频,但是两个视频错帧了,一般是什么原因导致的?
- 我说的是,可能应用是开了多线程同时收,写了同一个缓冲区,没有做同步互斥
- 面试官补充了可能之前缓冲区的内容没完全清空,导致了错误
- 目前是否正在面试其他公司,在面试哪些公司?
- 如实回答了两家大厂(在这就不说是谁家了,尴尬)
- 大失误:没有趁机插空说相比另外两家更想去百度,尽管问到偏向我会这么说;可能因为这个丢offer
- 做什么研究方向?
- 能实习多久?导师会有事叫你们回去吗?会不会过段时间就放回学校不回来了?
- 剩余的科研内容可以晚上和周末做的是吧?
反问
- 部门的氛围,平时是否有活动
- 我问出这个问题,面试官有点诧异
- 如果我有幸拿到offer,对我有什么期望吗?
- 公司怎么培养实习生?
总结
这一面暴露出自己的应变能力很差
被问及正在面试哪些公司的时候,如实回答虽然没啥问题,但是没有主动插空说更想去这里,可能因为这个丢offer(但是似乎没啥影响)
#百度##日常实习##C/C++##C++工程师#