春招阿里提前批Java面经(阿里妈妈/蚂蚁/支付宝/淘系)

3-1阿里妈妈一面

1小时28分钟

项目

  • 介绍一下项目
  • 问项目,问博客,看GitHub
  • drools在业务中怎么用的
  • 并行计算怎么实现
  • 如果是有依赖关系的并行计算,该如何实现
  • 说说Redis热点数据原理
  • 讲讲Redis主从复制原理
  • 持久化怎么实现的
  • 本科学什么专业的
  • 平时学习怎么记录博客的

基础

  • 先说说hashMap实现原理
  • 讲讲红黑树的平衡条件
  • 讲讲AVL树
  • 还有没有其它的平衡二叉树
  • hashMap线程不安全体现在哪
  • 讲讲线程安全,怎么解决
  • 讲讲你遇到的死锁的场景,如何解决
  • 讲讲volatile特点
  • 讲讲指令重排序
  • 实现一个指令重排的场景,怎么实现
  • ThreadLocal怎么实现的,存在哪
  • 排序算法说印象最深的两个[说了快排、堆排]
  • 讲讲快排和堆排如何实现的

场景题

  • 场景题1:如何实现一个压缩算法?
  • 场景题2:如何实现微信摇一摇,前后接口、后端流程(在面试官耐心引导下,答了七七八八)

3-4蚂蚁网商银行一面

57min

  • 自我介绍一下
  • Java基本类型有哪些?
  • int类型在32位系统和64位系统中使用有区别吗?
  • Java怎么屏蔽这个差异?
  • Object对象里面有哪些方法?
  • notify和wait为什么放在Object对象中?
  • 重写equals方法时为什么要建议重写hashCode方法?
  • 锁是用来解决什么问题?
  • synchronized可以用在什么地方?
  • synchronized修饰static方法和修饰代码块有什么区别?
  • synchronized锁和Lock锁有什么差异,使用场景区别?
  • synchronized怎么释放锁?
  • Map、Set和List各自什么场景?
  • ArrayList和LinkedList底层实现区别?
  • new一个ArrayList,默认长度?
  • ArrayList扩容过程?
  • HashMap和TreeMap区别,使用场景区别?
  • 为什么TreeMap没有负载因子、容量这样的参数?
  • HashMap指定初始容量11和15有什么区别?
  • Redis的哈希表跟HashMap有什么区别?
  • 你觉得Redis的设计思想是什么?(我???)
  • Redis怎么优化内存?
  • 现在我要在Redis中存一个包含很多属性的学生对象,给你服务器所有权限,从节省内存角度怎么最优存储?
  • MySQL有哪些引擎?
  • innodb和myism有什么区别,使用场景区别?
  • 事务隔离级别有哪些,常用哪个?
  • 可重复读怎么实现的?
  • 两个事务同时开启,分别插入一个主键都为1的记录,不提交,会不会报错,报什么错?
  • 说几个能体现自己水平的linux命令
  • Linux命令,查一个包含了某个字符串的log文件
  • Linux命令,查找log的前5行,后5行
  • Linux命令,查看某log文件某个字符串的前后5行
  • 看了你的博客衍生出问题:为什么jdbc里用class.forname()不用classLoader.loadClass()?

反问:

  • 刚才看了我哪篇博客衍生出了这个问题,是不是SPI那篇?

不是,你自己去想,挨个看看。你如果真正理解了那篇博客,刚才的问题就很简单。

  • 对我有什么建议?

你太急于表现自己,简历写得很好,但是缺少实际能力的支撑,建议要脚踏实地。

3-4淘系拍卖技术部一面

1小时4分钟

项目和自我介绍

  • 自我介绍
  • 本科专业跟计算机有什么区别
  • 学过操作系统、编译原理这些课吗
  • 轮子项目难点和挑战点
  • 项目怎么调优的
  • io模块健壮性有考虑吗,被攻击了怎么办,插入攻击消息会导致接收异常
  • 你用什么工具查看项目性能瓶颈
  • 还能想到什么调优方向吗
  • Redis高性能核心是什么,偏IO型的系统理应多线程的性能会更好,为什么单线程会更快呢?
  • 项目里怎么用到docker?
  • 说说你对drools的理解

基础知识

  • Java的线程池什么情况会在内部新建线程来执行任务,达到最大线程数量会怎么样?
  • Java中有什么工具来做线程同步
  • Lock是用Java代码实现的,讲讲它的实现机制
  • 讲讲类加载机制
  • 垃圾回收中如何判断一个对象是否是垃圾,哪些对象可以作为GCRoot?
  • 对象在什么时候从年轻代迁移到老年代?
  • 你知道哪些设计模式
  • 简单说一说你对动态代理的理解

其它

  • 讲一下你学习的软件工程设计方法
  • 现在再让你重新来设计你的项目,你会如何去做,达到立项的目标

反问

  • 对我有什么建议?

很多问题要向上抽象一下,可以不只是局限于技术,多考虑考虑业务上的设计,根据自己掌握的方法,学习别人的方法,经过沉淀后形成自己的方法论

3-5支付宝商家平台一面

1小时34分

  • String类型是不是可变的?
  • 为什么String被设计成不可变?
  • 什么方式可以构建不断变化的String?
  • StringBuilder是如何实现的?
  • 用过StringBuffer吗,是如何保证线程安全的,具体怎么加锁的?
  • HashMap和HashTable的区别?
  • 除了ConcurrentHashMap还有什么其它方法可以使用高效的线程安全的Map?
  • 说一下HashMap的原理,为什么线程不安全?
  • ConcurrentHashMap为什么是线程安全的?
  • 设计一个类作为哈希表中的key,要重写哪些方法?
  • 为什么要同时重写equals和hashCode?
  • Object类里的hashCode方法返回的是什么值?
  • Object类里的equals方法了解吗?
  • 介绍一下线程生命周期?
  • 如何合理地设置线程池参数?
  • CPU密集型和IO密集型分别怎么设置线程数量?
  • 操作系统如何进行线程上下文切换
  • Java的线程存储空间存在哪个位置
  • 介绍一下Java内存模型
  • Java运行时数据区里,哪些是线程私有的,哪些是线程公有的
  • 堆中的对象是如何分配和回收的?
  • 为什么要分代收集,分代收集能带来什么好处?
  • 能不能介绍一下年轻代和老年代各自的垃圾回收算法?
  • 方法区垃圾回收会回收什么东西?
  • 怎么定义无用的类,你会怎么设计回收算法去回收无用的类?
  • 如何用数组或者链表去实现一个队列?
  • 队列用数组实现和链表实现,各自优缺点是什么?
  • 说一下你知道的静态查找有哪些?
  • 介绍一下折半查找?
  • 折半查找的平均查找长度是多少?
  • 你说的是时间复杂度,那它的平均查找长度是多少?
  • 讲一下归并排序
  • 归并排序时间复杂度是多少?
  • 归并排序是稳定的吗?
  • 快排最好和最坏复杂度分别是多少?
  • 如何设计一个包含min函数的栈?
  • 有没有了解过一些XXXX深度学习技术?
  • 使用过哪些Linux常用命令
  • 磁盘不够了,如何快速找出磁盘占用最大的文件?
  • 目录下面文件按照文件大小排序
  • CPU过高如何排查?
  • 如何查看Java进程里哪一个线程在占用过高CPU
  • 讲一下TCP和UDP的区别?
  • TCP如何处理重复的数据
  • TCP建立连接的过程
  • 说一下乐观锁和悲观锁,你如何设计数据库里的悲观锁和乐观锁
  • 关系型和非关系型数据库区别,使用场景有什么区别?
  • 你了解过Hbase吗?(没有)
  • 讲一下RDB和AOF的区别,你的持久化如何实现的?
  • Redis是如何解决AOF文件体积膨胀的问题?
  • Redis如果耗尽了系统内存,有什么解决方法,针对什么样的键怎样清理?
  • 过期的键是如何处理的?
  • Redis的LRU算法和LFU算法跟传统的相比,做了什么优化?

反问

  • 有什么评价或建议吗?

你网络知识答得很好,算法和数据结构还算比较聪明稍加引导能有清晰的解决思路,Linux和数据库很薄弱需要多了解一下,还有一些基础知识比如String常量池这些需要多了解,还有Redis设计思路你也需要更深的理解,有时候不仅仅要关心这个东西是什么样,还需要考虑为什么这么设计。

3-6淘系拍卖技术二面

50min

  • 自我介绍,介绍项目,问项目
  • 了解哪些Java集合
  • 介绍一下hashMap实现原理
  • 自定义一个哈希表的key的类,需要实现什么方法?
  • equals和hashCode有什么联系?
  • Java里异常有哪几类?
  • 描述一下类加载过程?
  • 初始化阶段会具体初始化了哪些东西?(卒)
  • 分别讲一下Java里的垃圾收集算法和垃圾收集器
  • 讲一下CMS垃圾收集过程
  • 讲一下可达性分析,哪些对象可以作为GCRoot
  • 介绍一下红黑树
  • 讲一下堆排序的流程
  • 你有什么可以分享的学习方法吗?
  • 你有哪些学习渠道?
  • 你有看过哪些开源项目的源代码?
  • 看过Spring的源码吗?
  • 说一下Redis的内存分配管理机制?(卒)
  • 了解哪些RPC框架?(不了解)

反问

  • 对我有什么建议?

基础知识很扎实,但是需要扩展视野,多了解一下互联网公司用到的分布式框架、源码。讲项目要从业务背景出发。

3-6淘系商家平台一面

20min面试+15min唠嗑

  • 讲讲项目
  • Redis持久化机制有哪些
  • 讲讲RDB
  • RDB优点和缺点
  • RDB是怎样写二进制文件的,会不会阻塞Redis读写
  • 主进程fork子进程之后,两个进程的内存关系是什么?
  • 讲讲HashMap底层原理
  • 为什么用红黑树来解决哈希冲突
  • 红黑树查找性能开销多少,为什么?
  • 用什么方法创建线程池,有哪些核心参数?
  • 线程池达到线程最大数量,会发生什么?
  • volatile用来解决什么问题
  • 你说的volatile可见性和有序性这两个特性,他们核心底层原理是一样的,具体是什么?
  • 说说Java的四种引用
  • 软引用和弱引用的差异是什么
  • 面向对象的7大设计原则
  • 讲一下依赖倒置原则,为什么要依赖倒置
  • 如果违反了单一职责原则,会出现什么问题
  • 你会哪些设计模式
  • 讲一下代理模式

3-7淘系商家平台二面

1小时14分钟

  • 问了一通想法,面了哪些部门,打算如何选择
  • 问毕业论文
  • 介绍项目
  • 介绍一下Reactor模式是什么,好在哪里
  • 粘包、半包如何解决的
  • 如何进行做性能调优的?
  • 8个小铁球,已知一个小球比其它七个球重,有一个天平,最多称几次能把重的球找出来?
  • 如何找出文本文件中频次最高的10个单词。变种:按频次排序,前十的所有单词取出来?
  • 如何为你的Redis实现一个限流的功能?
  • 爬虫系统,希望你实现这样的功能:爬取时过滤掉24小时内的已爬取的url
  • 你站在用户视角来看,12306这个app有什么核心技术或业务问题,如何解决?
  • 火车票分段购票问题,如何来实现并解决?

面试官建议

你在面试的过程中不要去猜面试官想要什么答案,可以果断点想到什么就说,自信一点,面试官一般会引导你

3-8淘系全域营销一面

42min

项目相关

  • 自我介绍
  • 介绍项目
  • 线程池使用,参数的含义,如何设置这些参数
  • 线程池饱和策略有哪些
  • 各个饱和策略分别适合什么场景
  • 你的项目里用了什么饱和策略
  • 为什么想到用drools规则引擎
  • 有没有横向对比过drools和其它规则引擎吗
  • 轮子项目花了多久时间
  • 做项目碰到过什么困难的问题
  • 死锁问题的解决,是自己一点点摸索的,还是结合网上的经验
  • 我看你项目用过动态代理,那介绍一下动态代理和静态代理区别
  • 知不知道jdk代理和CGLib代理有什么区别,为什么会出现这两种

基础

  • 说说HashMap
  • 为什么Redis的负载因子设置比jdk的HashMap的负载因子大
  • 多线程对HashMap进行增删改查,分别会出现什么线程不安全场景,列一下
  • concurrentHashMap和HashMap有什么区别
  • 平时会用哪些linux命令
  • 如何用find命令去找一个大小大于100MB的文件

3-9淘系全域营销二面

32min

  • 自我介绍,问了问本科经历
  • 你六级过了吗,多少分(我???)
  • 你Redis源码看了哪些部分
  • 介绍一下Reactor模型
  • 除了NIO之外,还有哪些其它网络模型,它们之间有什么区别
  • NIO是同步还是异步,阻塞还是非阻塞的,NIO的N是什么意思
  • 多路复用的系统调用有哪些
  • select和epoll有什么区别
  • Redis是单线程还是多线程
  • 为什么Redis不用多线程,最新版本Redis也是单线程的吗
  • Redis有几种淘汰策略
  • Redis支持持久化吗
  • 你有没有系统地学过Spring
  • 计算机知识,你有什么学习方法吗
  • 最近在看哪本书
  • 最近在看什么项目的源码
  • Java学了多久
  • 看过什么其它项目源码
  • 并发和并行有什么区别
  • Java线程有哪些状态
  • 线程超时等待结束之后会切换到什么状态
  • Java的锁有几种
  • 什么叫自旋锁
  • 了解过分布式相关的内容吗
  • 说一说CAP
  • CAP三个点一般都能做到吗,能做到几点
  • 一致性算法有哪些
  • Java中包装类型是指什么
  • 什么叫装箱和拆箱

    总结

    以上便是我三月上旬阿里春招实习提前批面试记录,全都过了(可能是提前批不怎么刷人吧)。能系统开放前 面上一两轮挺好的,这样选择主动权更多一些,不至于太迷茫。此外,春招初期拿阿里练一练手,也蛮有帮助。蚂蚁的那两次面试很惨,问得确实很全面,不过也得益于此,能够及时发现自己的缺陷,在后续的面试中规避。面试的问题很大程度上围绕简历和项目,简历就像是期末考试的考纲一样,网上的面经参考价值远不如自己的(除了一些基础知识类问题)。所以春招还是要多面试,千人千面,实践出真知。
#面经##校招##阿里巴巴##Java工程师#
全部评论
大佬太强了
点赞 回复 分享
发布于 2021-03-18 20:56
大佬最后选了哪个啊?
点赞 回复 分享
发布于 2021-03-19 09:44
最后打算去哪啦
点赞 回复 分享
发布于 2021-03-19 13:09
请问技术面一共2轮吗
点赞 回复 分享
发布于 2021-03-20 01:49

相关推荐

11-05 07:29
贵州大学 Java
点赞 评论 收藏
分享
香梨想要offer:人手一个muduo
点赞 评论 收藏
分享
16 160 评论
分享
牛客网
牛客企业服务