怀揣着对大厂的梦想,程序员小王本想在工作两至三年的时间内能进入大厂,奈何竞争是如此激烈。而且进入大厂并不容易,曾经一度被腾讯、京东、美团等大厂刷下来,甚至有些公司连面试机会都没给。今年恰好趁着疫情那段时间的空档期,程序员小王下定决心,向阿里发起“总攻”。

在这次面试阿里之前,程序员小王在去年年中到年底这段时间不断的查缺补漏,把大部分时间都花在了学习技术上面,去看阿里招聘网站上的岗位需求是什么,Mysql不好就狂刷Mysql,Redis不够深就扎进去学......

后面终于在三次阿里内部开发岗位面试之后,敲定了“菜鸟网络”的岗位,定级P6

以下展示的阿里面试题(含答案)、学习资料、实战文档等


天猫团队面试题(3轮技术面+HR面)

阿里面试技术题:

  • 自我介绍呗
  • 项目介绍呗(先自己介绍项目,然后再聊天)
  • junit用法,before,beforeClass,after,afterClass的执行顺序
  • 分布式锁
  • nginx的请求转发算法,如何配置根据权重转发
  • 用hashmap实现redis有什么问题(死锁,死循环,可用ConcurrentHashmap)
  • 线程的状态
  • 线程的阻塞的方式
  • sleep和wait的区别
  • hashmap的底层实现
  • 一万个人抢100个红包,如何实现(不用队列),如何保证2个人不能抢到同一个红包,可用分布式锁
  • Java内存模型,垃圾回收机制,不可达算法
  • 两个Integer的引用对象传给一个swap方法在方法内部交换引用,返回后,两个引用的值是否会发现变化
  • AOP的底层实现,动态代理是如何动态,假如有100个对象,如何动态的为这100个对象代理?
  • 是否用过maven install、 maven test、git(make install是安装本地jar包)
  • Tomcat的各种配置,如何配置docBase
  • Spring的bean配置的几种方式
  • Web.xml的配置
  • Spring的监听器
  • Zookeeper的实现机制,有缓存,如何存储注册服务的
  • IO会阻塞吗?readLine是不是阻塞的
  • 用过 Spring的线程池还是java的线程池?
  • 字符串的格式化方法(20,21这两个问题问的太低级了)
  • 时间的格式化方法
  • 定时器用什么做的
  • 线程如何退出结束
  • java有哪些锁?乐观锁,悲观锁,synchronized,可重入锁,读写锁,用过reentrantlock吗?reentrantlock与synmchronized的区别
  • ThreadLocal的使用场景
  • Java的内存模型,垃圾回收机制
  • 为什么线程执行要调用start而不是直接run(直接run,跟普通方法没什么区别,先调start,run才会作为一个线程方法运行)
  • qmq消息的实现机制(qmq是去哪儿网自己封装的消息队列)
  • 遍历hashmap的三种方式
  • JVM的一些命令
  • memcache和redis的区别
  • Mysql的行级锁加在哪个位置
  • ConcurrentHashmap的锁是如何加的?是不是分段越多越好
  • myisam和innodb的区别(innodb是行级锁,myisam是表级锁)
  • MySQL其他的性能优化方式
  • Linux系统日志在哪里看
  • 如何查看网络进程?
  • 统计一个整数的二进制表示中bit为1的个数
  • JVM内存模型,java内存模型

阿里面试题(共5面)

阿里一面:

  • 自我介绍、自己做的项目和技术领域
  • 说一下sync的底层实现,锁优化,和lock的对比
  • 讲一下JVM参数调优详细过程
  • 为什么这么设置?好处是什么?描述gc场景,如何去分析gc日志?
  • redis数据结构,使用场景,微博场景使用redis如何去设计用户关系?
  • 线程池参数设定,为什么这么设定,作用?7大参数
  • spring的循环依赖如何解决?为什么要三级缓存?
  • 优先级队列的底层原理?

阿里二面:

  • 自我介绍一下吧
  • 聊项目
  • 结合你项目问你如何设计,提出漏洞,你怎么解决?如何改进,万一挂了?加一台机器有没有问题?如果我非要不出问题怎么办?
  • 高并发下单扣库存场景如何设计
  • rocketMQ架构设计原理
  • Dubbo框架实现原理
  • 最近读了什么书?平时怎么学习?
  • 常用的负载均衡,该怎么用,你能说下吗?

阿里三面:

  • 这一面主要问项目,给你的压力感比较强
  • 结合项目问,为什么这么设计?让你去优化,你怎么优化,引导你用一个合理的更好的方式去优化,数据库的设计等
  • 在公司做了什么事情,各个系统业务线都是做什么的,你的绩效,手写算法链表反转?

阿里四面:

  • JVM的主要组成部分及其作用?
  • JVM运行时数据区包含哪些?
  • JVM垃圾回收机制,何时触发MinorGC等操作
  • JVM的垃圾回收算法:
  • JVM 调优的工具?
  • 常用的JVM调优参数?
  • 堆栈的区别?
  • 详细介绍一下 CMS 垃圾回收器?
  • 怎么判断对象是否可以被回收?
  • 新生代垃圾回收器和老生代垃圾回收器都有哪些?有什么区别?
  • java类加载过程?
  • 把你知道的中间件都说一下吧(瞬间懵了一下)

HR面:

  • 为什么来阿里?
  • 之前没考虑过阿里吗?
  • 毕业这么久了,你觉得自己最大的改变是什么?
  • 用一句话总结一下自己

注:由于文章篇幅有限,面试题的答案的详细版整理在文档里


菜鸟网络五面

一面 电话面试

  • 介绍自己比较熟悉的项目和项目中遇到的难点
  • springbean生命周期
  • 谈谈依赖注入和面向切面
  • hashmap原理和扩容机制
  • 常用并发包下的类
  • redis持久化方式,为什么这么快?
  • 自己平时如何提升的,看书或者网站

二面

  • jvm类加载机制,分别每一步做了什么工作?
  • jvm内存模型,垃圾回收机制,如何确定被清除的对象?
  • 了解哪些垃圾回收器和区别?
  • 多线程相关,线程池的参数列表和拒绝策略
  • Jvm如何分析出哪个对象上锁?
  • Mysql索引类型和区别,事务的隔离级别和事务原理
  • Spring scope 和设计模式
  • Sql优化

三面

  • fullgc的时候会导致接口的响应速度特别慢,该如何排查和解决?
  • 项目内存或者cpu占用率过高如何排查?
  • concurrentHashmap原理
  • 数据库分库分表
  • Mq相关为什么kafka这么快,什么是0拷贝?
  • 小算法题
  • http和https协议区别,具体原理是什么?

四面

  • 手画自己项目的架构图,并且针对架构和中间件提问。

五面 hr面

HR面基本就是问一些个人的问题,确定价值观啥的没问题就行了

后面就是确定薪资,福利待遇。什么时候可以到岗。

一点简历方面的小建议(点击此处获取文档完整版

简历尽量写好一些,项目经验突出:

  • 自己的知识广度和深度
  • 自身的优势
  • 项目的复杂性和难度以及指标
  • 自己对于项目做的贡献或者优化