【暑期实习】阿里c++研发一二面面经

一面约40min

本来预定是1h,但是没想到40min左右就结束了,感觉还不错

面试官看起来比较严肃(头有点秃),很厉害的样子,上来就说明今天面试分为两部分:基础知识和项目情况

基础知识方面

1.介绍一下信号量和锁,底层是如何实现的,以及它们的区别
2.你知道自旋锁吗,说一下和互斥锁的区别
3.讲一下红黑树的特征,应用场景
4.说一下浏览器输入网址后,接收到响应的一系列流程
5.说一下cookie和session的区别

(问题很少,但是每个都能叭叭很久)

项目情况
没有问深入的业务和细节,针对我的项目都是问项目是做什么的,具体的分工。

最后提问环节,他问了我对哪方面感兴趣,问了一下我简历上写的实验室研究方向;我问了他base,部门的工作,以及对我整体的评价:

说整体还不错,前面都答上来了。但是他说觉得我项目有点杂(前端,后端小程序啥都有),对我实际的一个水平还没有很清晰。建议我后面其他面试官有问到的话,好好准备一下(自我感觉应该是稳了,祈求二面)

二面 1h

二面约的是电话面,面试官和我确认了上一个面试官对我项目的提问情况,我说上一个面试官问的情况,他就表示不会细问项目,多问一些c++相关的。面试开始

  1. 因为项目写了Qt,所以他问我Qt是如何对事件响应的。我用信号和槽函数回答。
  2. 问了一个搜索问题:如何找出所有内容中含有某个字符串的文件。思路不是很明确,回答往B+树建立索引方向,讲了一下B+树的优点,为什么这么想;但是具体怎么用B+树来实现,没有回答上来。
  3. 问了一下文本压缩,知道什么算法。 上来就回答哈夫曼编码,讲了实现过程,以及能够这种编码有效的原因。
  4. 回答一下一亿个浮点数当中,如何找到最大的10个
    很显然是top-k问题,说用一个大顶堆来维护,然后又问堆是如何维护的,大概说了一下流程就过了
  5. 口述一个算法:一个二维平面中有很多点,如何找到最小的一个凸多边形,将所有的点包住。 回答思路是找到最外侧的点,一开始说的很模糊很混乱,最后回答用暴力,求所有最远的点对,最远的点对就是端点 感觉没答好
  6. 问还有用c/c++做过其他项目吗? 介绍了一下操作系统课设,做的是模拟linux的文件系统。然后是问了一些实现的细节。
  7. 让我设计一个内存池,用什么样的数据结构,提供怎样的API。

回答是仿照缓冲池,维护一个空链表,一个占用链表。
每一个节点就是一个“页”或者块whatever;
每一次申请,都从空链表当中申请节点,把结点写满,然后挂载到占用链表;以此类推。返回的是页面的索引编号。

然后又问到了如何选节点,回答四种内存分配算法。回答上,但记忆有些模糊,磕绊

  1. 问了一下项目当中的TextCnn,实现原理和过程,用的什么数据集,做了哪些优化工作等等。幸好有准备,基本都答上了。

  2. 聊天环节,让我提问,问了一下整场的表现,对于深挖项目的建议。

整场一个小时差不多。面试官挺和蔼,挺年轻,会笑(不知道是不是在嘲笑我某些愚蠢的点),然后所有问题也基本都是开放性,逐步深入引导回答。自我感觉一般,算法答得不够好,很多点口条不够顺,回答得很磕绊,语句冗余。祈求三面!!!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值