一、简历
简约清晰、突出重点。
可量化:
(1)访问量大:可以写项目的QPS、PV、UV
(2)访问量小流程复杂度:模块化开发、流程灵活性配置、效率提升
(3)JVM 内存调优你可以写新生代/老年代内存回收时间提升了 ** ms
(4)写到并发,你可以写程序调优压测可支持TPS 从1000涨到5000等等
(5)产品经理提了什么奇葩的需求,你怎么解决了,你能巧妙的形容出来都是亮点。
可以辅助一些图或表在简历中,直观来说一图二表三文字,当然前提是你图表确实有亮点。
二、准备面试
一般而言你简历上写的都必须会,而且必须有一些是你的亮点,你得有一些深入的了解,回答让面试官觉得你这个小伙子不简单,有点东西。
(1)Java基础
Java集合:HashMap和ConcurrentHashMap
JUC包:aba,cas,aqs,unsafe,volatile,sync,常见的各种lock,死锁,线程池参数;自旋,阻塞,死锁和它如何去定位;oom如何定位问题,cpu过高如何定位;
生产调试经验:top,jps,jstack,jmap这些可能会问的东西。以及可能衍生的jmm模型和mesi协议
JVM:垃圾回收算法,垃圾收集器,jvm内存模型,每个区域用途,各种oom的种类,jvm调优经验;类加载过程,双亲委派,什么时候young gc,full gc,各种情况进入老年代的方式,你知道的越多越好,因为吹起来就越自信,举个例子,逃逸分析是什么?markword里面有什么?
Spring:bean的生命周期,如何解决循环依赖,父子容器,还有boot的启动流程,事务实现原理,动态代理原理;
(2)SOA
Dubbo:设计框架,负载均衡,spi机制,一般顺势会提到zk,选举算法,分布式锁
SpringCloud:eureka,hystrix,ribbon,feign,zuul
MQ:重复消费,顺序消息,事务消息,高可用,消息丢失,挤压场景,整个消息发送消费的流程,读过源码更佳,更好吹
Netty:零拷贝,bio,nio,aio,架构设计怎么样子的?用过看过更好
分布式事务:
(3)存储
Redis:单线程模型,aof,rdb,rewrite,主从,cluster,哪些类型;击穿、穿透、雪崩、数据一致性;一致性hash,布隆过滤器的原理;geohash的原理以及google s2的原理,底层数据结构sds和跳表等;你多学点,准没错。
MySQL:事务,锁,索引,b+树,主从
(4)算法
简单:快排,堆排,二叉树相关的,链表反转,成环,环节点,跳楼梯
中等:双指针,dp,递归,大数据内存有限的场景的统计,有时间一些middle可以去试试,手写红黑树你要是可以,那我估计算法你稳了。
(5)计算机基础
网络:http,tcp,https,udp,7层网络协议等,最好结合自己理解,背,你都要背下来。
三、复习方法
1. 找到第一性原理(一句话点醒)
2. 疯狂输入 -> 疯狂背诵 -> 疯狂练习 -> 疯狂反馈
3. 做项目输出、写博客输出
四、面试原则
总结回顾 -> 自我反省 -> 自我迭代
五、面试实战
1. 阿里巴巴面试经验
一面40min:
sync的底层实现,锁优化,和lock的对比等
jvm参数调优详细过程,到为什么这么设置,好处,一些gc场景,如何去分析gc日志
redis数据结构,使用场景,微博场景使用redis如何去设计用户关系
线程池参数设定,为什么这么设定,作用?7大参数
spring的循环依赖如何解决?为什么要三级缓存?
优先级队列的底层原理?
基本都是扣着你的项目去问,一面主要以基础为主。
二面1h:
基本就是设计问题了
结合你项目问你如何设计,提出漏洞,你怎么解决?如何改进,万一挂了?加一台机器有没有问题?如果我非要不出问题怎么办?
高并发下单扣库存场景如何设计
rocketmq架构设计原理(大方向)
dubbo框架实现原理(大方向)
最近读了什么书?平时怎么学习
三面1.5-2h:
两个大佬一个问一个找漏洞,逮到没说清的就继续问,压力面
也是结合项目问,为什么这么设计?让你去优化,你怎么优化,引导你用一个合理的更好的方式去优化,数据库的设计等
在公司做了什么事情,各个系统业务线都是做什么的,你的绩效,手写算法链表反转,还算简单了
看起来问的很少,但是是不断的否认你做的项目,在他的引导下去设计一个更好的系统,的确,他们说的是对的,挺厉害的,即便没成功,也能学到一点东西的。因为问的太久了,我细节记不清楚了
四面20min:
可能看我说了jvm,boss直接开始怼我jvm,还好我有准备,基本都接下来了,比如一些cms的过程,full gc做什么了之类的常规问题,很奇怪这时候问我基础,哈哈
后来有个问题就很玄幻了,把你知道所有的中间件全说出来,估计看我广度吧,我是一口气说了几十种吧。
hrg面:
嗅味道了,阿里味必须足,为什么来,以前为什么不来?
从毕业到现在有什么改变?
一句话总结下自己,反正你需有有强烈来的欲望就对了,此时此刻,非我莫属,哈哈!
强调一点,简历写了啥,你必须复习到位!多准备准备,失败不怕,总结经验,努力学习!
你要悄悄的拔尖,然后惊艳所有人!
2. 阿里巴巴Java中间件面试题经验
2.1 Java中间件一面
1.技术一面考察范围:
- 重点问了Java线程锁:synchronized 和ReentrantLock相关的底层实现
- 线程池的底层实现以及常见的参数
- 数据结构基本都问了一遍:链表、队列等
- Java内存模型:常问的JVM分代模型,以及JDK1.8后的区别,最后还问了JVM相关的调优参数
- 分布式锁的实现比较
2.技术一面:
1.自我介绍
2.擅长哪方面的技术?
3. Java有哪些锁种类? (乐观锁&悲观锁、可重入锁&Synchronize等)
4.比较重要的数据结构,如链表,队列,栈的基本理解及大致实现
5. J.U.C下的常见类的使用。ThreadPool的深入考察; BlockingQueue的使用
6. Java内存分代模型,GC算法, JVM常见的启动参数; CMS算法的过程。
7. volatile关键字有什么用(包括底层原理)
8.线程池的调优策略
9. spring cloud的服务注册与发现是怎么设计的?
10.分布式系统的全局id如何实现
11.分布式锁的方案,redis和zookeeper哪个个好,如果是集群部署,高并发情况下哪个性能更好。
2.2 Java中间件二面
1.技术二面考察范围:
- 问了项目相关的技术实现细节
- 数据库相关:索引、索引底层实现、mysql相关的行锁、表锁等
- redis相关:架构设计、数据一致性问题
- 容器:容器的设计原理等
2.技术二面:
1.参与的项目,选一个,技术难度在哪里?
2. Collections.sort底层排序方式
3.负载均衡的原理
4.设计模式与重构,谈谈你对重构的理解
5.谈谈Redis相关的集群有哪些成熟方案?
6.再谈谈-致hash算法(redis)?
7.数据库索引,B +树的特性和建树过程。
8. mysql相关的行锁,表锁;乐观锁,悲观锁
9.谈谈多线程和并发工具的使用
10.讲讲Redis的架构和组件
11. Redis的数据一致性问题(分布式多节点环境&单机环境)
12. docker容器
2.3 Java中间件三面
1.技术三面考察范围
- 主要谈到了高并发的实现方案
- 以及中间件:redis、rocketmq、kafka等的架构设计思路
- 最后问了平时怎么提升技术的
2.技术三面题目
1.高并发情况下,系统是如何支撑大量的请求的?
2.接着上面的问题,延伸到了中间件,kafka、 redis、 rocketmq、 mycat等 设计思路和适用场景等
3.最近上过.上哪些技术站点; 最近在看哪些书。
4.工作和生活中遇见最大的挑战,怎么去克服?
5.未来有怎样的打算
2.4 Java中间件四面
最后,你懂的,主要就是HR走流程了,主要问了未来的职业规划。
3. 一份阿里P7的面试题
BAT的牛人多,普通人也多,虽然他们不是每一个人都能达到令人仰望的技术水平,但毕竟平台高,所以眼光也会变得宽阔,代码要求更为严格,所以普通的程序员也会被逼的变得更优秀;身边的牛人多,普通的程序员也会受到影响,提升的更快。
下面是阿里P7的面试题,
3.1 Java多线程
线程池的原理,为什么要创建线程池?
线程的生命周期,什么时候会出现僵死进程;
什么实现线程安全,如何实现线程安全;
创建线程池有哪几个核心参数?如何合理配置线程池的大小?
synchronized、volatile区别、synchronized锁粒度、模拟死锁场景、原子性与可见性;
3.2 JVM相关
JVM内存模型,GC机制和原理;GC分哪两种;什么时候会触发Full GC?
JVM里的有几种classloader,为什么会有多种?
什么是双亲委派机制?介绍一些运作过程,双亲委派模型的好处;(这个我真的不会...)
什么情况下我们需要破坏双亲委派模型;
常见的JVM调优方法有哪些?可以具体到调整哪个参数,调成什么值?
JVM虚拟机内存划分、类加载器、垃圾收集算法、垃圾收集器、class文件结构是如何解析的
3.3 Java扩展
红黑树的实现原理和应用场景;
NIO是什么?适用于何种场景?
Java9比Java8改进了什么;
HashMap内部的数据结构是什么?底层是怎么实现的?
说说反射的用途及实现,反射是不是很慢,我们在项目中是否要避免使用反射;
说说自定义注解的场景及实现;
List和Map区别,Arraylist与LinkedList区别,ArrayList与Vector 区别;
3.4 Spring
Spring AOP的实现原理和场景;(应用场景很重要)
Spring bean的作用域和生命周期;
Spring Boot比Spring做了哪些改进?Spring 5比Spring4做了哪些改进;(惭愧呀,我们还在用Spring4,高版本的没关心过)
Spring IOC是什么?优点是什么?
SpringMVC、动态代理、反射、AOP原理、事务隔离级别;
3.5 中间件
Dubbo完整的一次调用链路介绍;
Dubbo支持几种负载均衡策略?
Dubbo Provider服务提供者要控制执行并发请求上限,具体怎么做?
Dubbo启动的时候支持几种配置方式?
了解几种消息中间件产品?各产品的优缺点介绍;
消息中间件如何保证消息的一致性和如何进行消息的重试机制?
Spring Cloud熔断机制介绍;
Spring Cloud对比下Dubbo,什么场景下该使用Spring Cloud?
3.6 数据库篇
锁机制介绍:行锁、表锁、排他锁、共享锁;
乐观锁的业务场景及实现方式
事务介绍,分布式事物的理解,常见的解决方案有哪些,什么事两阶段提交、三阶段提交;
MySQL记录binlog的方式主要包括三种模式?每种模式的优缺点是什么?
MySQL锁,悲观锁、乐观锁、排它锁、共享锁、表级锁、行级锁;
分布式事务的原理2阶段提交,同步异步阻塞非阻塞;
数据库事务隔离级别,MySQL默认的隔离级别、Spring如何实现事务、
JDBC如何实现事务、嵌套事务实现、分布式事务实现;
SQL的整个解析、执行过程原理、SQL行转列;
3.7 Redis
Redis为什么这么快?redis采用多线程会有哪些问题?
Redis支持哪几种数据结构;
Redis跳跃表的问题;
Redis单进程单线程的Redis如何能够高并发?
Redis如何使用Redis实现分布式锁?
Redis分布式锁操作的原子性,Redis内部是如何实现的?
3.8 HRPB面试经验
1.你目前最有成就的事情是什么
2.你有承担过项目经理这个角色吗
3.你解决过最有难度的问题是什么
4.你们的项目架构是怎样的
5.讲清楚点
6.你们是怎么做到高可用的
7.你们这样可以高可用吗
8.你们是怎么做集群的
9.你的中台服务是怎么做成一片集群的
10.说说你最了解的一块业务
11.你平时除了和开发还有和什么人接触吗
12.你认为你的优点是什么
13.你认为你们中台哪一块的表结构是设计的最好的
14.你最难沟通的一次事情是什么
15.你认位你最有价值的一次事情是什么
16.你们项目有遇到什么过困难吗,怎么解决的
4. 蚂蚁金服面试题
一、流程、题目、细节
1. 流程
1)录入招聘系统
2)HR筛选简历
3)技术面试官简历评估
4)电话面试
(1)不方便或没准备好,可以约个时间点;
(2)候选人基础知识面的积累;
(3)技术深度;
5)现场面试
(1)1-2个人,两个人可能一起,也可能分开聊
以之前的项目为主导,考察技术基础能力,技术原理性问题,列举你之前的项目进行探讨,时间约1小时,列举常见问题:
会聊一些技术深度的东西,从候选人会的技术进行深挖,一直问到你回答不出来。
(2)简历上的项目经理,面试前要好好梳理下自己之前做过的项目,面试官会围绕项目涉及到的技术要点深挖。
考察候选人技术深度,看候选人遇到问题总结学习及解决能力。
自己用过的技术,一定要深入。如果连自己做的东西涉及的技术点都一知半解的话,或者被问住,一般不会通过。
要对技术有热情,喜欢总结,复盘,经常泡技术论坛或者自己写技术blog,喜欢看技术方面的书籍。
(3)主语言本身以及它的高级特性;
(4)讲述自己的项目,并在中间穿插着问题(学会引导性的回答问题,抓住自己项目的亮点,引导面试官和自己聊比较擅长的技术,不擅长的技术可委婉表示不太熟悉,以免面试官问太多自己却答不上来反而不好);
(5)额外加分项:著名的开源项目源码,自己独有的很棒的开源项目,个人博客等;
(6)与你职位相关的内容,在面试前准备的时候,尽量朝着职位的需求方向靠拢,成功可能性更大;
6)HRG
(1)是否有对技术的热情
(2)爱学习
(3)关注所面试部门业务的发展及动态
二、蚂蚁金服财富线介绍及亮点:
关于人才最重要的特质:技术扎实,聪明,持续的学习力,技术热情,抗压性
三、阿里价值观和用人风格:
软性方面: 阿里喜欢聪明,思维活跃,学习能力强,善于总结,自我反思,能够遇到问题举一反三,
在和面试官的沟通过程中,注意项目经历的互动,表现出来对技术的热情和滔滔不绝的善于表达、讨论,
主动的去表达自己的观点,有问题一定当场去提问。
场景举例:
1、每个候选人都会说自己喜欢看书,那么看书的过程有什么收获,看书有没有持续性,看书后是否结合自己的工作去应用,去反思和总结是他们关注的点,不喜欢三分钟热度的候选人。
比如看三体,三体里有一个方式叫做维度,维度在做数据库设计的时候,是最直观的体现。
2、项目中遇到的问题,你当时是如何解决的?如果当时没有解决,事后你是否自己去思考过这个问题(这个点是阿里看重的)他们关注的是你主动寻求解决方法的这个点,是你要有这种想法。
阿里很注重的是候选人的落地,不要太空的东西,也可以主动的去和他们探讨他们的产品在应用的过程中,有没有觉得出现的问题有什么好的建议等。
5. 阿里云新金融事业部面试题
1、阿里云新金融事业部面试题003
9. 其他反馈
昨天两个有点价值的
1.怎么丝滑(不停机)地上云或者切机房
2.netty怎么解决空轮训