3.23 阿里达摩院暑期实习一面+二面+HR面总结

2.28 阿里官网无内推投简历投到了数据安全工程师,3.9电话预先沟通了一下面试意向,3.16约了一下一面时间到3.23。
edit:3.29的时候一面面试官微信通知我一面过了 3.31二面

edit2: 4.6HR面

楼主背景:
  • 985本科 信安方向
  • 有几个校级奖学金和国家级水赛的奖
  • 一段实验室和工业界联合经历
  • 一个社区项目
  • 若干个代码项目:
  1. 一个有关数据库底层安全算法以及相关SQL Planner的密码算法实现
  2. 一个密码学原语的设计
  3. 一个抵御攻击的密码算法的课题
  4. 一个很水的Java SpringBoot服务平台(可以理解成web版excel那种。。)

一面总结


一面面试官xgg人挺年轻的,上来就先让自我介绍,我就先把所有的内容大致按逻辑梳理了一下,最后提了一下未来想做的工作(画饼开始...)。随后让我白板做题,在阿里的另外一个link里面手写代码。
感觉算法题考得很简单,但是主要以follow-up为主。
一道就是简单的BST搜索的两种实现方式,马上a了就没问。
另外一道题就是手撕快排并提出各种搜索算法的优缺点和快排算法潜在的优化:
  • 哨兵pivot的选取:left mid right  / 随机选择 /  先打乱顺序再选;
  • 快排最坏情况如何优化?我没想到就胡扯了先遍历一下看看是否有序,有序就直接return;
  • 快排对于小数据量的性能如何?如果只有20个数据量该怎么做?我说的是快排、希尔等算法。继续问了如何集成到之前我写的快排里面。
  • 如果我们有上百万大量重复数据需要排序,如何进行?我说的用哈希表桶排。
  • 如果我们有大量数据其中少部分出现频次特别高,如何对排序的性能进行优化?我说,也可以用哈希。面试官问如果常数量级的空间呢?我说,因为快排递归完成,下一层的实际上已经完成了排序,所以我们可以使用双指针的思想,固定重复的区间然后把重复的元素直接通过指针跳过。面试官让我写进算法里面,没想好怎么做就停止了。
  • 找出第k个最小元素可以怎么做呢?我说了可以维护一个大小为k的大顶堆然后找。面试官问复杂度是多少?我说是O(N log k)。还有啥别的方法我没看。。。

大概问题:
  • 你的主要职责是什么?开发了具体的什么模块?
  • 你对现有的ORAM和SSE算法的实现有什么理解?
  • 保序加密(OPE ORE等)了解吗?有什么局限?
  • 了解TEE吗?数据库中应用可以以什么方式进行?
  • 你为什么要在原有的密码算法基础上进行优化迭代?意义是什么?
  • 问了之前和某大厂的数据库合作,问了我如何对研究工作进行实际落地?
  • 你对密码算法和TEE两者有什么看法吗?
  • 你对数据库底层引擎和安全性结合考虑有什么?
  • 你在设计的过程中遇到的困难是什么?为什么会有这样的需求?你的思路是怎么样的?

反问:
1. 你们的数据库实验室的方向具体而言都做了什么?是结合了阿里云的需求的嘛?你们的成果和产业界如何进行转化呢?
2. 面试结果大概啥时候出来?面试官套路:评估完会尽快通知.。。。。

面了一个小时口干舌燥的,稍微记录一下。

总结:
1. 阿里的算法和字节比起来真的简单了,但是深度比较深,也侧重于followup,而不是你解决了就OK
2. 一面面试官似乎以简历为主,以点带面兼顾深度和广度,不能泛泛而谈,必须要给出自己的见解(感觉他比较看重一下自己的看法,很多地方都让我阐述自己的理解和认识啥的)

后来面试官加了微信,感觉应该一面过了吧(立个flag 


二面总结

二面是电话面试,打的微信电话emm 大概流程走了一个小时左右吧。
流程和一面差不太多,总的来说就是个人介绍,我就串讲了一下之前做过的工作和最近手头正在follow的一些东西,还讨论了一下我目前在搞的一个paper。
不过和一面最大的区别就在于二面问的问题更加深入了,而且透露出一种"和工业界需要实际绑定"的感觉。

先说说算法题吧,是LeetCode原题 239:滑动窗口的最大值 https://leetcode-cn.com/problems/sliding-window-maximum/ 没啥好说的就一个deque维护下标的事情。

大概问的问题也比较细(还是以互相讨论为主哈),主要还是围绕着之前做的工作,大概如下:
  • 现有的ORAM设计都有哪些?你对ORAM的认识是什么?
  • 你认为ORAM结合数据库底层存储的挑战是什么(我自己挖的坑 自己填qwq)?
  • 除了ORAM你觉得还有什么方法实现access pattern的隐藏呢?
  • 问了我在做的论文。你的motivation是什么,实际意义是什么?方法是什么?
  • 你做的数据库项目中你的只要职责在于什么?你遇到的困难是什么?你如何解决?
  • 你设计了一个自己写的小语言和SQL结合起来了,那为什么要设计这样的一个东西(我只是想支持一些额外的数据库操作顺带练习一下编译原理hh)?
  • 为什么对差分隐私和数据发布有兴趣?
  • 看到我简历上有些TEE相关,问了Intel SGX的原理和机制。(太了解就扯了一堆,然后还结合了ORAM、密态算子啥的扯了一些话题)
  • 讨论了可搜索加密和数据库结合的问题。我说SEE主要用于文件系统的选取,是不是能和数据库的SQL查询结合起来有待商榷,而且前后向安全是否为数据库的目标目前也存疑。
  • 你之前参与的实验室项目中你担任了什么角色?(刚开始本科生打杂跑数据罢了 _(:з」∠)_ 后来才让我独立做课题)
  • 讨论了之前学姐发的VLDB工作(不知道他怎么精准找到这个paper的),然后我就说了设计思路、设计目标和具体实现,我怎么用MySQL UDF技术融合到加密的数据库之中的。
  • 讨论了USENIX Security 2020的一个工作(因为我做了代码复现,他蛮感兴趣的)。
  • 你对数据库SQL执行流程了解吗?(不好意思有点忘记了就说了一点还记得的东西)

后面画风突变,开始问我八股文了。大概问题有:
  • C / C++的内存泄漏是什么?怎么避免?我说及时free或者delete掉。但这样会给开发带来很多不便,所以我们采用C++ 11带来的智能指针uniqueptr,sharedptr和配套的weakptr。在引用计数为0的时候析构掉。
  • C++中析构函数可以是虚函数吗?当然可以。为什么析构函数是虚函数会比较好?防止基类对象的指针操作派生类对象时,析构函数只调用基类的,而不调用派生类的。
  • 数据库引擎了解吗?有什么区别?InnoDB和MyISAM对事务、锁、索引的设计都不一样,前者更好,支持事务,锁的粒度也很细,索引也是聚簇索引,找到索引项就是找到数据本身blabla。
  • 乐观锁和悲观锁的应用场景?前者适合高并发场景下冲突不频繁的情况,采用时间戳机制可以回滚;后者解决冲突频繁的情况,采用的是互斥、共享和意向锁等机制来保证事务的ACID。
  • 应用程序开辟内存是在操作系统内存区中的什么地方?动态堆,静态栈。数据量过大不能直接int a[10000],防止爆栈。
  • 会Linux编程吗?我说会,平时用的是Mac,跑实验用vscode ssh到ubuntu上面去写的,装了个zsh玩得很溜,也会用Linux常用指令,会写一点shell脚本。

最后问了(应该是流程中必须要问的)
  • 你的优势是什么?我说我学习新的东西很快,新框架啥的看看documentation就会了,比如grpc,asylo等
  • 你的缺点是什么?暂且不表。

反问:你觉得我给你的印象如何?他说作为本科生了解的方面很广,对自己接触的方向认识也比较深入,对于不了解的地方也能有所涉猎蛮好的。其他因为面试过短不好下定论。
后面又大谈特谈达摩院没有开发的压力,氛围很融洽的,然后扯了一些未来实习的兴趣方向和实习时间啥的。

感觉应该稳了(flag X2)




—————— HR面
问了很简单的几个问题
1. 你遇到最大的挑战是什么?怎么解决?你的角色是什么?
2. 为什么想做这个方向?
3. 以后读研吗?
4. 什么时候可以来实习?多久?
5. 你对阿里云的看法


希望早日发oc😂
#阿里巴巴##实习##面经##网络安全##C/C++#
全部评论
清华大佬
1 回复 分享
发布于 2022-03-24 02:14
楼主,请问hr面完多久有消息呀
点赞 回复 分享
发布于 2022-05-19 12:51
楼主拿到意向书了嘛?
点赞 回复 分享
发布于 2022-05-07 19:37
楼主拿到意向书了吗
点赞 回复 分享
发布于 2022-04-18 00:07
我4.2面的现在还没结果。。大佬怎么样了
点赞 回复 分享
发布于 2022-04-12 14:08
oc了吗…
点赞 回复 分享
发布于 2022-04-08 23:45
点赞 回复 分享
发布于 2022-04-04 14:32
第K个最小可以用快排+分治,时间复杂度的期望是O(n),最慢是O(n*n),可以使用随机选择对比项来加快最慢的情况。
点赞 回复 分享
发布于 2022-03-31 00:07
真大佬,感觉大佬面试好轻松的样子,第一次看到面完加微信的
点赞 回复 分享
发布于 2022-03-24 08:49

相关推荐

评论
11
61
分享

创作者周榜

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