百度c++研发工程师暑期实习面经

​3.29号笔试, 选择题基础,一般,ac2.3,第三题本来能过,但条件写错了,过了30%,后面修改好了之后提交接近考试结束,一直再转,没结果
4.10号面试
一面
自我介绍
c++11新特性(基本上都说到了,忘记说了构造函数初始化列表)
{nullptr替代 NULL
引入了 auto 和 decltype 这两个关键字实现了类型推导
基于范围的 for 循环for(auto& i : res){}
类和结构体的中初始化列表
Lambda 表达式(匿名函数)
std::forward_list(单向链表)
右值引用和move语义}

右值和右值引用
stl容器(顺序容器、关联容器,展开说了一下,嘿嘿看了c++primerplus 1到15章)
dequeue怎么实现的,操作的复杂度(说了一下中继器和缓冲区,表述不是很清楚)
linux常用命令(我文件经常使用的一些命令,还有系统相关的,说了一下)
怎么看cpu使用率(我top)
gdb调试知道吗(说了i,b,list,list:,display,printf)
你怎么调试一个程序,从一开始,到断点处,打印变量啥的
select和epoll什么区别(经典八股文)
epoll的使用过程(从socket 到 构造epoll树,epoll_wait这些说了)
epoll常用的操作(epoll_ctl,好像忘记说epoll_create)
来写两道题:
1、二叉树的层次遍历 基础题,很快就写好了
2、环形链表的第一个节点 基础题,但是出了一点小问题,15组只过了12组,原因是用fast->next&&fast->next->next当条件时,不能用fast == nullptr作为条件返回无环链表。因为当链表有两个节点时,没有环也会被判断有环,因为while循环不会进去。需要定义一个flag标记辅助。有点紧张就换了标记的方法,用的set来存放已经遍历的节点,谁知道编译器不支持,哭了
还好面试官看了一下,也没说啥,说可以了,就到这
很快就收到二面通知了

二面
面试官找了一下简历,没找到,一是我就共享了简历给他
按照简历来问
研究方向,想做的工作与你的研究方向不同会接受吗,说了自己目前想做c++,都可以。要是有相关的更好
有没有论文,一篇在投,你什么时候毕业,明年6月份
简历的两个项目
c++和opencv的传统图像识别,问了有没有用深度学习方式来试试,说了cnn图像分类识别的过程,解释了为什么要用传统的图像处理算法
信息安全的模型 rsa和des有什么区别,经常使用在哪,(说了一下,因为我这个项目跟https还挺相关的就说了在https里也用,但面试官没深入问)
比赛问了一下,比赛的内容是什么
linux熟悉吗,平时用的开发环境,我平时主要在服务器上训练模型(基本上都可以用到一块a100,可惜自己不喜欢调参),在虚拟机上学习
硬链接和软链接,就说了一下ext2是索引式文件系统,硬链接是指向相同inode号,说了一下inode和数据区块,命令ln ln -s

那你Linux还挺熟悉的,了解ext2这些 (我本想说您误会了,但只能说文件系统是linux的一个重要概念,学习的时候就了解了一下)
自己又多说了分区,挂载这些,面试官就说那你用命令的过程来说一下,但我只记得fdisk了,想了一下是fdisk dev相关文件名 ,之后用monode挂载啥的,说了m什么node,面试官就提醒了是mount

linux从开机到用户界面(我就说了从外存读取系统相关文件,初始化,图形用户界面,没说到加载内核这些)
后面我主动展开话题说了比赛中用到的两个算法,textrank和bm25算法,展开说了textrank算法和谷歌的pagerank的相同和区别,面试官问了原理,表示懂了,问了一下应用场景。然后我说bm25算法是搜索中比较常见的算法,说了一下,面试官没怎么问,后面问了你的研究方向在工业界的落地你了解吗?我说应该是基于谷歌的bert,进行文本分类和抽取的一些工作,还有一些机器学习和规则的使用。然后就是三面了。

三面
面试官感觉是个部门领导,首先说不急,我找一下你简历,我说共享,面试官说没事,就在系统里找。找到了之后又说你等一会,我看一下你前面的面评。看完之后,我自我介绍,然后面试官问简历的项目,随便问了一下。之后说,我们来聊几个技术问题吧,你是科班的吧,我说嗯。

一个程序从编写到运行的过程?
我很快的说了编写完用gcc和g++预处理 编译 汇编 链接 可执行文件加载到内存 从第一条指令执行。 面试官说不行,要具体展开过程来讲,我就说了编译原理的词法分析句法分析,然后预处理,编译,汇编器as,链接器这些,面试官说可以,听到你说了as,之后问链接器有哪些,我说了ld-linux.so.x,面试官说你没有说静态连接器,我说不知道了,面试官说了是什么link我记不住了

目标模块怎么链接所需要的模块?
我说函数和变量其实就是名字,面试官说你说的是符号吧
我又说目标模块有相关的数据结构指导链接,面试官说那叫符号表

两个目标模块,都有定义了一个stactic变量,变量的名字相同,在运行的时候怎么区分这两个模块的变量,我一开始从编译的角度说,static只能内部查找,但面试官说要从运行的角度来说,我就说了两个模块加载到内存的地址不一样的话,也可以区分。面试官就说,你说到了一点吧,加载到内存后,程序只知道变量的地址,不会被名字影响。

内存管理说一下,我说了一堆,为了多道程序的并发执行,虚拟内存这些,好像不太是面试官想问的

存储器的层次结构
我从寄存器-> cache cache->内存 内存->外存 细致的说了,虽然表面上只有后面两层,面试官又问寄存器为什么比存储器快,我说离cpu近,直接就读到了,还有一些底层硬件的支持,什么底层硬件,你们科班学过数电模电应该知道,想了半天说了触发器和电容,存储器要维持电容操作,需要更新,面试官说专业术语叫flash。

后面就是问日常作息、对疫情怎么看、兴趣爱好,打不打游戏、追剧吗这些
一面 40多分钟 二面 30多分钟 三面最久的,后面两面都没有写题了

作者:西南叶孤城

链接:暑期实习面经_笔经面经_牛客网

来源:牛客网​

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值