阿里蚂蚁金服春招实习面试凉经(八百年才记得发出来)

本来都忘了都东西,整理硬盘的时候发现了这份凉经,发出来回馈牛友(骗经验)

面试从4.29号开始,一直到五月底结束,持续了接近一个月,共经历了三轮七面,皆为电话面,其中最后一面因为忘整理了,就没了……

也怪我投实习太晚了,应该hc都没了,沦为了刷kpi的工具人……不过也是我第一次面试,就当是锻炼下好了

一轮三面挂,二轮一面挂,三轮三面挂

一面(20.04.29)

  1. 自我介绍

  2. 打开浏览器,做个题目:如何判断一棵树是二叉搜索树

    最终代码如下:

    public class Main {
    
      private static int last;
    
      public static boolean judge(Node root) {
        if(root == null) return true;
        if(!judge(root.left)) {
          return false;
        }
        if(root.x <= last) {
          return false;
        } else {
          last = root.x;
        }
        return judge(root.right);
      }
    
      static class Node {
        int x;
        Node left;
        Node right;
      }
    
    }

一面流程很短,短到我怀疑这到底算是面试还是补笔试。因为我笔试做的太差了,两个题目一题都没做出来……所以笔试之前一定要先刷刷题练练手,找找手感也好。

面试官人很好,很有耐心。第一次他打电话过来的时候我正在去实习公司的路上,不太好接电话,就把时间推到了当天晚上。结果到晚上的时候,我去走廊接电话时,他又问我手头有没有电脑……(只有台式机,但我又不能在办公室里面试),结果只好又推迟到了第二天上午。第二天我专门请了假在公寓里等面试(再错过我就没了)。即使这样,面试官也丝毫没有表现出不耐烦,还半开玩笑和我说还好遇到了他这么nice的人。

第一次面试有点紧张了,我这个人在数据结构和算法方面一直不太擅长(很不擅长),结果他在说什么树的时候我一下就懵了,缓了一会才缓过来。第一次写的时候也写的有问题,没有考虑类似左子树的最大值要小于根结点的值(忘了),直接一个递归怼上去,然后就ugauifhiohfiojfop……事实上应该用中根遍历,遍历结果应当是有序的……

结束后面试官向我介绍了他所在的部门,他所在的部门主要负责类似流式计算和海量数据处理的,可能和我简历上写的网站开发没啥关系……然后他又鼓励我说我的表现不错,毕竟在校生也一般接触不到真正的分布式和海量数据处理啥的……有种凉凉的节奏。

我这时候才发现,我投递简历的岗位上写的是“研发工程师JAVA”,后面还有一行小字“分布式存储,搜索引擎,其他,分布式计算,数据库,机器学习工程,网络,硬件,应用服务开发”。我为什么就直接当作“后端开发”投了……

总体来说,还算不错,虽然专业不太对口,可能没有下次了……

二面(20.04.30)

一面的第二天,本来已经不抱希望了,二面来的让我措手不及……急急忙忙地接,手都在抖。下面是大概的问题,因为忘录音了。

  1. 自我介绍
  2. 开发的主要语言(JAVA……)
  3. 简历上的项目探讨(JWT+SpringSecurity验证鉴权,Redis,Token自动刷新,Authentification域)
  4. 为什么用Redis实现,Redis的好处
  5. 用过Socket吗(网络编程,我说写过一个井字棋程序)
  6. 对于井字棋程序的探讨和扩展
    1. 介绍该程序(一个Server两个Client)
    2. 如果想要扩展成多个房间,该怎么抽象类(房间类,包含棋局状态和两个Socket)
    3. 如果有的人短线重连了,怎么保证下的还是一盘棋(类似登陆状态管理,保留房间号等信息)
    4. 例如一个服务器最多可以维持十个房间,怎么动态地加减房间以及分配房间(类似分布式中的服务发现和API网关,可以设立一个中心服务器用于服务器的注册,同时维护每个服务器的拥堵程度,由API网关统一对外提供服务,并引导新的连接到一个相对空闲的服务器。至于减房间,当时只想过可以借鉴线程池的思想,维持一个最小的服务或房间数量,多余的服务在空闲一段时间后自动关闭)
    5. 如果要实现聊天功能该怎么办(Websocket或者webflux,服务器推送SSE)
    6. 如何设计协议(协议头,长度,协议码,内容数据)
    7. 怎么用RPC实现(RPC不了解,远程过程调用)
  7. Java如何保证跨平台(JVM底层适配,向上提供一致的接口)
  8. 了解反射吗(不了解,字节码的运用,框架用的多)
  9. 说一说对多态性的理解(主要通过接口,运行时才确定使用哪个对象执行方法)
  10. 做过JVM调优吗(没有)
  11. JIT技术了解吗(即时编译,编译热点代码为机器码)
  12. 说一说对锁的了解(乐观、悲观,细分为偏向锁、轻量级锁、自旋锁和重量级锁,三种用法:锁对象、锁类、锁方法)
  13. 了解锁在操作系统层是怎么实现的吗(不了解,就说了在JVM的实现,且说了猜测可能和主内存与线程的缓存之间的关系,volatile关键字,又说了CAS,可能导致ABA问题)
  14. 如何使用Hash表(HashMap,不知道这题的意义)
  15. HashMap和HashTable的区别(线程不安全和线程安全,扩展说了HashTable锁整个表,效率低,应当用ConcurrentHashMap,JDK1.8之前分段锁,JDK1.8后锁表头,只会在Hash冲突的时候进行同步操作,效率高,又说了HashMap的实现,拉链法和红黑树。PS还好没问我红黑树)
  16. 说一下对分代垃圾回收的了解(不同代中对象的特点不同,于是采用不同的GC策略。新生代的两个S区采用复制策略,老年代采用标记-整理算法)
  17. Linux的文件系统了解吗,什么是文件描述符表
  18. 说一下进程的内存映象(顶部是操作系统内核的映射,然后是向下生长的栈,接着是向上生长的堆,底部是一些常量区等)
  19. 如果一个应用程序访问一个不允许访问的内存(如0x0),会发生什么(段内存机制,段描述符中存在访问特权级字段,获取段描述符时会首先与CPL对比,Linux下应用程序为3,操作系统内核部分为0,比较后会阻止访问)

大概就是这样,总觉得有点少了,可能是我的废话太多了,才讲了50分钟。之后面试官又给我介绍了他所在的部门,关于机器学习和系统架构的……我觉得我可能再也无法从事后端了(笑),而且我的简历貌似被踢皮球了?

三面(20.05.04)

话说阿里不放五一假期的嘛……五月二号的时候无聊翻邮件,忽然发现了五一时面试官给我发的预约时间的邮件,最后时间约在4号上午十点。

因为有了邮箱,提前手贱查了一下面试官的信息,结果……清华本硕毕业,毕业时入职Google,现任阿里P9……忽然就很慌。

4号上午面试如约而至,面试官听起来貌似比较忙?也没有让我自我介绍,而且果然等级越高问的越基础。

  1. 专业课有哪些
  2. 知道哪些排序算法,说一下原理与时间复杂度
  3. 知道哪些树
  4. 说一下红黑树的特性
  5. 如果给你一棵树,怎么一层一层地输出
  6. 层序遍历可以用深度优先吗(我说可以是可以,但是可能很麻烦,要记录层数,频繁回溯)
  7. 毕业之后的打算

整个面试就11分钟,之后面试官让我把层序遍历的代码写完给他发过去,我写完之后放在Ubuntu Pastebin里了:https://paste.ubuntu.com/p/PJzF4Zmhzf/

总体感觉,问的很基础,但是我答的不太好,很多东西都忘得差不多了,像排序和树之类的,看来还是得注重基础唉。

二次一面(20.05.06)

很凉了可以说是,第一次被拒掉之后紧接着就是第二次的一面,先扯了一堆没啥用的项目经验之后,给我出了一道题:

评测题目: 无
题目:给n个有序字符串(仅小写字母,ASCII序递增),求所能拼接的最长有序子串的长度。
例如["aaa","bcd","zzz","bcdef","def"]
所能拼接出的最长有序子串为aaa,bcd,def,zzz拼接出的aaabcddefzzz长度为12

咋想也没想出来,面试官提示用动态规划,但是我还是想了半个小时啥都没想出来,凉凉~

我起了,一招秒了,没啥好说的。

三次一面(20.05.08)

本来以为已经凉掉了,结果因为选择了调剂,就被又安排了新的一轮的面试……可以说很烦,兄弟

约的是8号晚上九点,是第一个提前和我约时间的面试官呢,好感度up。

首先上来就是自我介绍,没啥好说。很糟糕的是让我说现在实习的工作……就很丢人,随便说了个因为刚刚上任所以啥也没干就搪塞过去了。

  1. 介绍下项目(Spring Cloud项目)
  2. 分布式开发的好处和弊端(扩展性强,耦合度低,模块化;缺点:模块通信)
  3. RPC调用框架(Feign,读过源码吗?没有)
  4. RPC调用出现延时的环节(序列化反序列化,网络传输)
  5. 了解序列化吗,有哪些序列化反序列化方法(不太了解,只知道字节流如ObjectOutputStream,和JSON方式)
  6. 为什么使用Redis(内存数据库,且可以自动过期删除)
  7. 对比过Redis和其他的缓存吗(memcached,memcached可以存储图片和视频,Redis支持定期持久化)

以下问Java基础:

  1. final关键字的用法(变量、方法和类,声明变量十不允许改变初始化后的值,声明引用则不允许改变引用,声明方法时则继承时无法重写,声明类时无法继承)
  2. final域的重排序规则(不了解)
  3. final修饰形参时会怎么样(同final修饰变量)
  4. Object类中的方法(toString、hashCode、equals、wait、notify、notifyAll、getClass、clone和finalize)
  5. 对HashMap的理解(k/v存储,安排位置的方法(%与&),扩张时需要重新计算所有的hash,解决冲突的方式(拉链法、红黑树))
  6. HashMap的Hash时进行移位操作的作用(不知道,后来查到是扰动函数,减小碰撞的几率,增大随机性)
  7. HashMap的扩容(阈值0.75,对所有的key重新计算hash,所以要首先指定初始值,且会导致并发情况下成环问题)
  8. 高并发下使用ConcurrentHashMap,看过resize()方法的源码吗(没有),了解它的数据结构吗(类似HashMap的结果,1.8之前使用分段锁,1.8后使用节点锁)
  9. 对数据库的脏读和幻读了解吗(从隔离级别开始,四个隔离级别,默认隔离级别Repeatable Read,脏读、不可重复读、幻读的概念)
  10. 知道乐观锁和悲观锁吗(宏观概述,具体四种,基于的思想和假设(读多写少,读少写多),乐观锁CAS,悲观锁完全上锁)
  11. 线程池初始化方式和参数(Executors方式和ThreadPoolExecutor方式,第一种的三种都会出现OOM,第二种有几个核心参数,包括corePoolSize、workQueue、maximumPoolSize、keepAliveTime、unit和handler,handler没让我说)
  12. 快速向未到达corePoolSize的线程池添加两个线程,会向queue中添加然后转发运行还是直接向corePoolSize中增加并运行(不知道,不会,没看过源码)

接着开始闲扯开源,然后闲扯一些学习新技术的方式,和团队合作。对算法的看法(估计是我前几次评价都是算法不太好),最后问了我一个算法题,叙述思路就可以。后来看到是Leetcode 1162:地图分析的题目,可以用bfs来解,将所有的陆地同时进行一次bfs,最后一次才被遍历到的海洋就是结果,类似填海造陆吧,具体可以看leetcode。

最后有一个开放性的问题,分享一件自己不擅长,但是后来发现自己还不错,超出了期望的事情。我说就是面试hhh。

最后面试官夸了我动手能力很强😄,接着给我介绍了一下他的部门,大数据部。接着他说下一轮面试最迟应当就会在下一周。

难得算是比较愉快的一次面试了唉。本来就抱着破罐破摔的心态的,结果貌似还行?

三次二面(20.05.10)

二面很快就到了,约了10号晚上九点,话说面试的进度为什么这么快唉……真的很赶。

开始时例行的自我介绍,接着面试官,从项目入手,问了一些问题:

  1. JWT的原理,为什么可以被用于验证,和session方式的区别
  2. 描述一下session的产生,和与前台的交互方式,sessionid。从整体的角度描述一下session或者jwt方式的登陆
  3. 分布式session,各种解决方案的优点和缺点
  4. 如果使用JWT的方式,如何存储大量的数据(如购物车)
  5. JWT的结构,JWT存储信息的长度收什么限制(HTTP头的长度)
  6. HTTP与HTTPS的协议的关系和区别,HTTPS的交互方式
  7. Spring Boot常用的框架(starter)
  8. Spring MVC接收到请求时的处理流程
  9. Spring的IOC与AOP(代理)
  10. 描述一下HashMap的实现,扩容的原理
  11. 堆内存不够用时可能的操作(垃圾回收,扩容堆)
  12. 描述JVM垃圾回收的机制
  13. 堆的扩展(启动参数中的最大堆内存),如何进行扩容
  14. redis的存储原理
  15. 描述一下Spring Security及使用

问题不多,但是问的很深,往源码里问的那种,有点子狠,没真正扒过源码的话很容易现原形……话说为啥每次面试完后感觉还行,但是之后再听电话录音的时候就觉得自己怎么回答得这么惨,像个智障一样……不过也算比较难得的,虽然这个面试官还是大数据部的,但是总算遇到一个做过web的了……但是还不如没做过!web我回答得挺惨的。

害,随缘吧,都是拼的运气唉

这就是关于阿里春招实习面经的事情了,大家有什么想法呢,欢迎在评论区告诉小编一起讨论哦!(老营销号了)

#阿里巴巴##蚂蚁集团##春招##实习##面经#
全部评论
好。好强,大佬不是本科吧,这些知识点好多好深啊😥😥😥
2 回复
分享
发布于 2020-07-18 23:26
那个算法题先排序然后用最长递增子序列的思想做吧
2 回复
分享
发布于 2020-09-01 14:02
联想
校招火热招聘中
官网直投
老哥怎么样,进了吗
1 回复
分享
发布于 2020-08-29 21:02

相关推荐

11 111 评论
分享
牛客网
牛客企业服务