《我要进大厂》复习计划

一、简历

简约清晰、突出重点。

可量化:

(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

请举例说明,你是如何把 DDD 应用到实际项目中来的。例子中需要包含具体的领域
模型设计,这么做的理由,以及因为这个设计而引进的坑。
讲人话:MVC就是DDD最佳实践
2、如何设计一个百万级TPS分布式系统架构?
考察点:能够熟练应用缓存,消息中间件,数据库分库分表,读写分离等技术。
官方回答:
讲人话:分层、分离、缓存、异步
思维方式:解决机构账户单行热点问题,单行变多行+余额中间表

9. 其他反馈

昨天两个有点价值的
1.怎么丝滑(不停机)地上云或者切机房
2.netty怎么解决空轮训

原文地址:https://www.cnblogs.com/yeahwell/p/13902883.html