蚂蚁oc,面经汇总

感谢牛客网,牛客的许愿!真的很灵!
整个阿里集团,算上提前批,本菜一共投递了四个部门,分别是阿里--钉钉--基础研发平台(提前)、蚂蚁--CTO(提前)、蚂蚁--商家开放技术平台(提前)、蚂蚁--数科(一志愿)。今年阿里的面试感觉,emmmm难度并不是特别离谱,一共九面,应该是都通过了,最终于4月14日晚拿到了数科的意向书。下面是部分面经(有一些时日久远,当时也没有记录,一些是因为不好说太多):

  • 钉钉基础研发平台

    1. 2.25 一面 75min

      这一面是我人生第一场面试,准备的不是太充分,比较紧张,很多八股语言也没有组织的特别理想,属于迷迷糊糊地通过了。

      1. 自我介绍;

      2. Java与C++及其他语言的一些区别;

        内存操作、参数传递、语言层面的区别,回答了解释运行与编译运行,聊了一丢丢JIT即时编译的优化;

      3. volatile和synchronized区别;

        原子性、可见性、有序性

      4. volatile能不能修饰复杂对象,为什么;

        不可以,实际上是可以的,只是不建议:volatile和final修饰引用类型时,针对的是reference值的本身,比如final修饰时,意味着reference无法二次赋值——即指向其他地址,同样的volatile修饰reference时,只有在reference本身发生二次赋值时,才会触发缓存一致性问题,针对reference值指向的地址中内容的修改无法触发。但是以上这种情况并不意味着volatile无法修饰大对象,可以了解一下CopyOnWrite集合,以对volatile进行赋值与重新赋值的方式,保证并发的可见性。

      5. int和Integer的区别(没答全,提到了Integer缓存);

        没答全,忽略了默认值等;提到了Integer的常量池缓存与int的存储位置差别。

      6. 协程与线程(没有了解过,但是扯到了线程映射);

        不知道,提到了内核线程、LWP(轻量级进程)、用户线程的概念,回答了三者的映射关系,没有深入协程的实现。

      7. 四次挥手流程;(Normal)

      8. Time_Wait为什么存在,去掉会出现什么问题;(Normal,参见小林图解)

      9. socket.close()调用会发生什么,在什么时候返回(数据发完,或超时);

        没答上来,close方***在数据发完之后,或3600s超时后返回。

      10. Spring与Springboot;(Normal)

      11. Springboot怎么实现自动装配的;(框架的八股懒得看,当时学的时候了解了一点,扯了上去)

      12. 除了自动装配还有哪些方式装配;(配置类,举了redisTemplate自定义序列化的例子)

      13. @Configuration注解怎么被扫描到的;(注解)

      14. 项目架构(没组织好语言);(项目没准备回答模板,答得不好)

      15. 项目并发量是多少;(聊胜于无)

      16. 项目最大难点;(重构屎山)

      17. 除了重构之外呢(导出的大数据量);

      18. 并发比较低,高并发测试过吗,会有什么缺陷;(优化思路)

      19. redis的作用,为什么选用redis做心跳机制;

      20. 部署在哪里,资源怎么分配的,为什么这样导出;

      21. 算法:LC151

      22. 最近在看什么书;

      23. 你说你在看JVM,多态的底层原理是什么;

        不该提在看JVM,参见周志明老师的《深入理解Java虚拟机》,主要涉及虚函数表、字节码、解析、分配、宗量。。。balabalabala。

      24. 方法调用传递参数的底层是怎么实现的(我是sb,不该提这一嘴);

        回答的不多,主要涉及到方法调用过程,invoke、局部变量表(不知道有没有涉及到操作数栈与局部变量表的融合)。

      当时的感觉应该是挂了,第一场直接冲的钉钉核心组,临场忘题,手撕写的不优雅。

    2. 3.1 二面 75min

      竟然收到了二面,实在是非常的amazing啊,二面应该是p8主管,一个温文尔雅的大叔。二面的时候我基本找到了面试的状态,倒是不怎么紧张,交流的也很不错,面试体验非常舒服。

      1. 百万数组,寻找target;(空间复杂度,双指针时间复杂度);

      2. 三数之和的几种解法(分正负零、递归两数之和,时间复杂度);

      3. RBAC权限模型介绍;(用户、角色、权限)

      4. 还知道哪些权限模型(MAC数据库权限控制模型,DAC模型);

      5. ABAC权限模型了解吗;

        看过,忘了,不了解,猜测是否是更自由的权限管理模型:ABAC权限模型是拥有更细粒度、更大自由度的权限管理模型,比如:小王中午十二点至下午六点批准后拥有操作A设备的权限。

      6. 项目:Redis用来做什么了,为什么使用Redis;(会redis)

      7. 除了Redis之外,了解过其他可以适用的解决方案吗(按照项目特点介绍了Memecache,为什么不用);

      8. Redis源码看过吗;

        介绍Redis基本数据类型的实现,SDS,zipList,rehash流程,跳表的实现,跳表的遍历流程,怎么实现O(log(N))复杂度的。

      9. 红黑树也能,为什么不用(跳表实现更简单);

      10. 那红黑树的优点呢;(与跳表相比的话,可能是稳定吧,跳表毕竟有随机)

      11. 这个项目还有什么是你做的(架构设计、时序图、部分功能);

      12. 功能的介绍(场景、为什么采用这种方式);

      13. 项目已经在生产环境了吗;

      14. 怎么部署的(单体应用2核,4G);

      15. 单体应用为什么不稳定,也可以很稳定;

        一个坑,部署多个节点,也可做到高可用,但是可能存在无状态的要求。

      16. 微服务相关 基础知识(优点,为什么采用微服务,只记得解耦、容灾、并发,微服务的缺点,风险);

      17. 服务与服务之间怎么调用的(幸亏学过OpenFeign);

      18. RPC怎么实现的(幸亏了解过dubbo和RPC);

      19. 让你去实现一个RPC,要做哪些工作;

        寄,这个真不知道,扯了一下,消息格式,序列化,负载均衡:主要涉及到注册中心、连接管理、消息序列化、负载均衡。

      20. 有没有使用什么设计模式(云上项目没有,但是可以进行改进,详细介绍了Spring下如何实现责任链模式,Order注解,BeanPostProcessor收集,AOP切面入参前解析);

      21. 介绍客户端项目的整个架构,策略模式与责任链模式的融合;

      22. 客户端项目的线程问题介绍(头节点采集全局数据,使用读写锁,包装ThreadLocal,链传递,保证一致性);

      23. 客户端项目向云端发送实时数据入库失败怎么办;

        仿照TCP以及RocketMQ的offset机制,Http协议返回云端最近一次入库成功的offset,本地维护最新的,如果有差值,说明存在入库失败,有限重传入库失败数据,多条时限制5条:主要是考虑到MTU的长度及数据本身的长度,一致更新至最新值。

      24. 解决问题的时候会看源码吗;

        Spring Security整个执行流程的源码介绍,主要的类:AuthenticationManager,Provider,authenticate。RocketMQ的延时队列源码介绍,简易的时间轮。

      25. 为什么RocketMQ限定了定时级别,过多的话会出现什么问题;

        RocketMQ设计书中提出过多造成性能下降,除此之外,可能造成定时不准,扯到了很多定时不准,比如Redis的定时不准,为什么不准

      26. 有没有遇到什么难题,怎么解决的;

        数据库调优,没有解决,提到了Linux的状态监控命令,innodb_buffer_pool_size,read_buffer_size,io_thread等内容。主要是解决思路。

      27. 实习时间;

      28. 反问(广度很好,但是需要找准方向深入);

      第二天知道过了,但是已经进入流程,现在看来,幸亏没投钉钉。

  • 蚂蚁CTO

    1. 2.28 一面 50min

      一场奇特的面试,非同寻常的面试,很意外的面试,怀疑是不是KPI的面试

      1. 上来没有自我介绍

      2. 专业问题、项目问题、方向问题(主要集中于为什么都跟设备相关、为什么机械的选择编程、项目大概做了什么东西)

      3. 成绩问题(保研经历,成绩排名);

      4. 比赛介绍(华为软挑);

      5. 部门相关情况简介,问我了解Hadoop、spark相关的东西吗,了解一点,没深问;

      6. 过简历:

        1. TCP/IP :有用这个实现过什么的东西吗(没有,学习的实现用socket实现过简单的通讯,看过自顶向下,Linux底层对于协议的一些配置了解一点)

        2. 操作系统进程线程关系(常规八股,内核线程、用户线程、LWP、Java线程映射);

        3. 了解过协程吗,协程的优点(协程的实现m:n映射)

        4. 让你实现协程的话,考虑怎么实现;

          没了解过,协程本质就是一个个任务运行在一个线程上,协程对象放在一个集合中,剩下的就是调度算法的事,完全可以把操作系统支持的调度算法在语言层面进行实现;重点是对于IO阻塞的问题的解决方案,一种是需要阻塞时,进行线程映射,需要调整集合所在的线程,本质还是多线程,一种是异步IO。

        5. 简历写了C#,问我了解C#的闭包吗(不了解,讲了js的闭包,为什么需要闭包,函数式的一丢丢);

        6. 简历写了C++,问我到什么程度(学到了虚函数,11特性不了解,STL没看,但是了解Java的集合,其他倒还好);

        7. 接着问我虚函数表的实现,为什么实现他;

          讲了比较熟悉的Java的,老一套:函数查找,多态的支持,静态解析,动态分配,静态类型,真实类型,invokevirtual关键字,宗量、编译时运行时区别,重写怎么查找的。

      7. 问我职业生涯规划(新技术、新挑战、新问题、新场景);

      8. 部门介绍,接下来流程;

      9. 加不加班、年龄结构,部门主要业务,留用率。

      很奇特的面试,感觉有点不拘一格,面试官很好,面试结束两分钟,HR反馈评价很好,在安排主管面;

    2. 3.1 二面 30min

      主管面,以为不问八股,结果问了几个

      1. 怎么用RBAC实现权限控制的;
      2. 介绍使用Spring Security的登陆校验及认证授权整个流程;(有所欠缺,认证流程,授权流程,授权实现)
      3. 责任链+策略模式+模板方法融合实现流程控制、策略切换、策略规范;
      4. ThreadLocal机制,有什么问题,为什么会用到他;
      5. ThreadLocal的内存泄漏(很尴尬,口胡了,想着WeakReference说成软引用,提示软弱引用区别还没反应过来,虽然这俩区别答对了,就很尴尬);
      6. C++了解多少;
      7. 操作系统有没有自己实现过一个;
      8. 未来做什么方向,有考虑过吗;
      9. 实习城市;
      10. 实习时间;

      我之所以认为这个部门的面试很奇特,是因为好像确实不太难的样子。。。但是最终没有选择这个部门进入流程,有个人的一些考虑吧,整个三月都在后悔,如果我投递了这个部门,会不会就没那么煎熬。

  • 商家开放技术平台

    这个没做记录,只有75分钟的一面,当时面试状态很好,一点都不紧张,面试官是个年轻的小哥,而且是简历面,全程很浅的八股,涉及到Java基础,hashmap、计网、操作系统、spring等等,所有的问题都答出来了,可以说是对答如流吧。(一个多小时的纯八股面真的很煎熬,嗓子都哑了)

  • 蚂蚁--数科

    单吊了整整一个半月的一志愿部门,流程贼慢,所幸结局目前还不错。关于这个部门,我本人没有做任何面试过程的复盘与存档,因为过程非常曲折,在这里做简要的记录。

    一面是2月28号,一面面试官非常好,非常温文尔雅的大哥,聊了十几分钟的项目,问了一个GC,我从分***始差不多讲了整个GC体系(就差背书了),加上其他的一些内容,半个小时左右吧,撕了一道题:最长连续子序列,做过,和面试官一起讨论了整个求解流程,还要我不要紧张,好好想想(确实不紧张。。。);

    二面是p9面。。。大老板面(3.13),与众不同,到现在回想起二面,还会很紧张。其他的没什么,主要是一个非常非常非常开放的问题,大概相当于,emmmm,怎么实现一个即时通讯系统吧,但是比这个更开放,更大,更天马行空(怕被定位而引起一些不必要的麻烦,想知道的可以私信我)。

    三面应该是交叉面,项目介绍、项目亮点、项目难点,还有哪些可优化的点,全程基本是单纯的我在讲,35分钟,amazing,我这项目竟然可以扯35分钟,然后常规八股,final、finally、finalize(),JMM。

    HR面(3.31),全程25min,是部门hrg,大姐姐很漂亮,面试过程,感觉是聊天吧,择业思考、学习历程、为什么转方向、还有哪些offer、入职时间等等。hr面完,当晚内推人通知过了,下一步提交审批。

    4.14号收到意向书。

    面试这个部门的过程中,非常感谢我的内推人与一面面试官,给予了我非常多帮助与鼓励,我愿单方面评价内推大哥为金牌内推人,一面面试官真的超级超级超级温柔,全程鼓励我并且指导我很多。

本菜的整个暑期实习正式准备工作始于去年的11月,今年2月15号开始进行查漏补缺与心理建设,从2月23号进行简历投递,2月25号面试第一家公司——阿里钉钉(人生第一场面试),直至3月2日,面试了前三个部门(钉钉,计算智能、商家开放技术),分别通过了2、2、1面,1号进入正式流程投递了数科。整个三月到4月中旬,我一直单吊一个部门,中间发生了很多故事,整个投递暑期实习历程中,甚至焦虑到没有一天早于凌晨3点睡觉,整个人的生活作息完全颠倒。不过所幸,截止目前,结果还算不错,不确定后期会不会由于疫情原因导致无法去实习,但是我的暑期实习投递应该是要告一段落了,晒一下整个过程中一些收获吧:

MVIMG_20220415_224437

#蚂蚁金服##实习##面经##阿里巴巴##蚂蚁集团##招聘进度##Java#
全部评论
si神甚至为了我们整理了书架,我哭死😭
1 回复 分享
发布于 2022-04-15 23:11
太强了😮!
1 回复 分享
发布于 2022-04-24 00:35
Si神还是强啊
点赞 回复 分享
发布于 2022-04-15 23:27
si,我的神!
点赞 回复 分享
发布于 2022-04-15 23:38
你的书架现在是我的了
点赞 回复 分享
发布于 2022-04-16 19:04
si神强
点赞 回复 分享
发布于 2022-04-17 10:56

相关推荐

不愿透露姓名的神秘牛友
11-15 12:04
点赞 评论 收藏
分享
16 50 评论
分享
牛客网
牛客企业服务