他终于如愿的拿到阿里offer了,整整用了两个月的时间啊
他的个人情况
他是一个普通的双非本科生,开发4年多(Java后端),平时学习也比较勤学好问,对待工作也极度认真负责,对自己进入大厂工作还是很有信心的,他的方向是Java,也知道现在Java的竞争比较激烈,大厂比较难进,为此他也是在很早之前就开始筹备了,时至今日,在内推下他也如愿以偿的成功拿到阿里的offer!
他的面试心得:
虽然天猫,蚂蚁金,菜鸟都归属阿里旗下,但每个面试官问的问题都不一样,相同点主要在流程方面。面试开始会让自我介绍,主要业务架构和技术架构两部分。
比如:技术架构部分,会根据自我介绍中提到的技术点问,是为什么使用这些技术,解决了哪些问题,碰到哪些困难,是如何思考和解决的。
最后再顺带一些技术本身底层的设计方面的问题,例如:有redis,会问哪些场景用,解决了什么问题,数据量有多少,用的过程出现过哪些问题,怎么去定位解决的,还有它的hash原理等,诸如此类的问题。
温馨提示:面试官最喜欢问的方面有mq,jvm,多线程,锁机制等。
不管哪个技术点,能答到面试官无法在这个问题上问下去了,或者能答到计算机硬件上就过了,面试情况如下:
01、技术一面
考察范围:重点问了Java线程锁:synchronized 和ReentrantLock相关的底层实现,线程池的底层实现以及常见的参数,数据结构基本都问了一遍:链表、队列等,Java内存模型:常问的JVM分代模型,以及JDK1.8后的区别
最后还问了JVM相关的调优参数,分布式锁的实现比较
- 自我介绍
- 擅长哪方面的技术?
- Java有哪些锁种类? (乐观锁&悲观锁、可重入锁&Synchronize等)
- 比较重要的数据结构,如链表,队列,栈的基本理解及大致实现
- J.U.C下的常见类的使用。ThreadPool的深入考察; BlockingQueue的使用
- Java内存分代模型,GC算法, JVM常见的启动参数; CMS算法的过程。
- volatile关键字有什么用(包括底层原理)
- 线程池的调优策略
- spring cloud的服务注册与发现是怎么设计的?
- 分布式系统的全局id如何实现
- 分布式锁的方案,redis和zookeeper哪个个好,如果是集群部署,高并发情况下哪个性能更好。
02、技术二面
考察范围:问了项目相关的技术实现细节,数据库相关:索引、索引底层实现、mysql相关的行锁、表锁等,redis相关:架构设计、数据一致性问题,容器:容器的设计原理等
- 参与的项目,选一个,技术难度在哪里?
- Collections.sort底层排序方式
- 负载均衡的原理
- 设计模式与重构,谈谈你对重构的理解
- 谈谈Redis相关的集群有哪些成熟方案?
- 再谈谈-致hash算法(redis)?
- 数据库索引,B +树的特性和建树过程。
- mysql相关的行锁,表锁;乐观锁,悲观锁
- 谈谈多线程和并发工具的使用
- 讲讲Redis的架构和组件
- Redis的数据一致性问题(分布式多节点环境&单机环境)
- docker容器
03、技术三面
考察范围:主要谈到了高并发的实现方案以及中间件:redis、rocketmq、kafka等的架构设计思路,最后问了平时怎么提升技术的?
- 高并发情况下,系统是如何支撑大量的请求的?
- 接着上面的问题,延伸到了中间件,kafka、 redis、 rocketmq、 mycat等 设计思路和适用场景等
- 最近上过.上哪些技术站点; 最近在看哪些书。
- 工作和生活中遇见最大的挑战,怎么去克服?
- 未来有怎样的打算
04、四面
考察范围:你懂的,主要就是HR走流程了,主要问了未来的职业规划。
结尾:这半年筹备中,我自己也在不断找资料学习,也通过很多渠道和朋友要到一份Java岗最新的学习资料大全
重点给大家推荐,这份资料中的Java岗面试题库,里面都有Java后端以及一些大厂的面试场景和面试题,我也是不断刷题提高自己的眼界
Java岗技术面试题库(5000+面试题)
这套题库里面中包含了以下很多个模块:Java 基础、容器、多线程、反射、对象拷贝、Java Web 模块、异常、网络、设计模式、Spring/Spring MVC、Spring Boot/Spring Cloud、Hibernate、Mybatis、RabbitMQ、Kafka、Zookeeper、MySql、Redis、JVM......