怀揣着对大厂的梦想,程序员小王本想在工作两至三年的时间内能进入大厂,奈何竞争是如此激烈。而且进入大厂并不容易,曾经一度被腾讯、京东、美团等大厂刷下来,甚至有些公司连面试机会都没给。今年恰好趁着疫情那段时间的空档期,程序员小王下定决心,向阿里发起“总攻”。
在这次面试阿里之前,程序员小王在去年年中到年底这段时间不断的查缺补漏,把大部分时间都花在了学习技术上面,去看阿里招聘网站上的岗位需求是什么,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面基本就是问一些个人的问题,确定价值观啥的没问题就行了
后面就是确定薪资,福利待遇。什么时候可以到岗。
一点简历方面的小建议(点击此处获取文档完整版)
简历尽量写好一些,项目经验突出:
- 自己的知识广度和深度
- 自身的优势
- 项目的复杂性和难度以及指标
- 自己对于项目做的贡献或者优化