天猫 Java 研发岗面经 (技术三面): 基础 + 算法 +MySQL+Redis+ 秒杀架构
面试过程:
一面总体上还是围绕 Java 基础、JVM、并发编程、数据结构等展开。一面结束后很快安排了二面,相对一面,二面和三面从项目入手多数问的是数据库,缓存,分布式架构等问题且更深入,问题比较刨根问底,更加注重对一些技术细节的理解和把握。比如数据库操作,面试官会详细的问你数据库插入和删除一条数据的过程在底层是如何执行的,项目里配置了读写分离,也会比较深入的就实现方法和底层逻辑展开讨论。HR 面很愉快,问了一些薪资和职业规划上的问题!
面试问题如下(文末整理了架构面试资料):
技术一面(注重问了基础):
自我介绍!
常见集合类的区别和适用场景?
并发容器了解哪些?
如何判断链表是否有环?
平时会用到哪些数据结构?
解决 hash 冲突的方法有哪些?
讲讲自己对 HashMap 的理解,以及和 Weakhashmap 的区别?
concurrentHashMap 如何实现?
集群服务器 如何 application 共享?
BIO、NIO、AIO 的区别和联系?
jvm 内存模型 jmm 知道的全讲讲
JAVA 的垃圾回收,标记算法和复制算法的区别,用在什么场合?
http 和 https 的区别,http1.x 和 http2.0 的区别,SSL 和 TSL 之间的区别?
GC、G1 和 ZGC 的区别?
B+树和 B 树的区别,和红黑树的区别?
内存泄漏与内存溢出的区别?
session 的生命周期是多久?
关于 Mina 框架了解多少?(因为我在项目里用到了 Mina,所以提到了这个部分)
技术二面(大多是数据库缓存等):
自我介绍,讲了下项目!
java cas 原理
JAVA 线程池有哪些参数,如果自己设计一个线程池要考虑哪些问题?
Java 的 lock 的底层实现?
mysql 数据库默认存储引擎,有什么优点
MySQL 的事务隔离级别,分别解决什么问题。
四个表 记录成绩,每个大约十万条记录,如何找到成绩最好的同学
常见的负载均衡算法有哪些
如果 Redis 有 1 亿个 key,使用 keys 命令是否会影响线上服务
Redis 的持久化方式,aod 和 rdb,具体怎么实现,追加日志和备份文件,底层实现原理知道吗
技术三面(主要是分布式架构):
自我介绍,讲下项目!
请画一个完整大型网站的分布式服务器集群部署图
多个 RPC 请求进来,服务器怎么处理并发呢
讲一下 Redis 的哨兵机制
数据库分库分表一般数据量多大才需要?
如何保证数据库与 redis 缓存一致的
项目中消息队列怎么用的?使用哪些具体业务场景?
JVM 相关的分析工具有使用过哪些?具体的性能调优步骤吗?
MySQL 的慢 sql 优化一般如何来做?除此外还有什么方法优化?
线上的服务器监控指标,你认为哪些指标是最需要关注的?为什么?
如何做压测,抗压手段
秒杀模块怎么设计的
HR 面:
自我介绍
你怎么评价你之前的 3 轮面试
你怎么看待你自己,你最大的核心竞争力是什么
未来自己的职业规划
对阿里技术氛围有什么样的理解,用过哪些阿里的开源库
期望的薪资是多少
最后,你有什么想了解的
总结
技术方面,结合自己的体会,总结下面几点:
基础知识必须要扎实,包括语言基础,计算机基础,算法和基本的 Linux 运维等
设计模式,造轮子的能力,各种缓存和数据库应用,缓存,中间件技术,高并发和高可用的分布式系统设计
软性指标,包括快速学习,良好的沟通能力,以及对相关行业的了解
面对这么多得技术点同时给大家整理了一这个学习大纲,希望我们一起进步早日成为架构师迎娶白富美;
以上就是这位朋友的天猫 Java 研发岗三面题目,以下最新总结的阿里 P6 资深 Java 必考题范围和答案,包含最全 MySQL、Redis、Java 并发编程等等面试题和答案,用于参考~
更多笔记分享
最后这里就不多展示了,需要领取这份笔记的同学们,点击这里 即可获取
评论