年前成功拿下 35K+16 薪美团 Java 架构师 Offer!考点、面试题分享送给明年金三银四的你
面试流程
先说下面试流程,一般大公司都有 3-4 轮技术面,1 轮的 HR 面。就一线互联网公司而言,共经历了 4 轮技术面,前两轮主要是问基础和项目实现,第 3 轮是交叉面,两个面试官,主要是问项目实现和拓展。第 4 轮是部门老大面,主要就问一些架构、技术和业务的理解、个人发展比较抽象的东西了。
HR 面主要就是跟你聊聊天,看看你的个人稳定性、价值观、主动性之类的, 一般 HR 是不会挂人的,但很多人在 HR 面后挂了,原因其实不是你在 HR 面的表现不好(少数情况除外),而是你之前几面的表现一般,比 60 分要高一点(所以没在前面的面试直接挂了你),但是又 没达到 80 分,这个时候公司基于 hc、人才配比、与其他候选人的对比等多个维度考虑,最终决定是否给你 offer。
接下来说技术相关的考察。
总的来说,技术相关的考察主要分为两大块,一是基础,二是经验。
基础包括 java 基础、数据库、中间件等,来自于日常的积累和面试前的准备。
经验包括以往做过的项目、解决的问题、以及一些场景题(比如你的项目如果流量大了十倍如何保证可用)。
以下都是面试中经常会被考察到的知识点的整理,不够完整,但大部分都是常见面试题。只有问题没有参考答案,但是,请允许我说但是,对于下面这些问题,我这里还是有一份参考学习笔记文档和面经试题解析的在文末分享,需要各位小伙伴下来逐一学习!
java 基础
集合
集合分为两大块:
ListArrayList 与 LinkedList 的实现和区别 Map
1.HashMap:
2.LinkedHashMap:
3.TreeMap:
SetSet 基本上都是由对应的 map 实现,简单看看就好
常见问题
hashmap 如何解决 hash 冲突,为什么 hashmap 中的链表需要转成红黑树?
hashmap 什么时候会触发扩容?
jdk1.8 之前并发操作 hashmap 时为什么会有死循环的问题?
hashmap 扩容时每个 entry 需要再计算一次 hash 吗?
hashmap 的数组长度为什么要保证是 2 的幂?
如何用 LinkedHashMap 实现 LRU?
如何用 TreeMap 实现一致性 hash?
线程安全的集合
Collections.synchronized 了解其实现原理 CopyOnWriteArrayList 了解写时复制机制、了解其适用场景、思考为什么没有 ConcurrentArrayListConcurrentHashMap 了解实现原理、扩容时做的优化、与 HashTable 对比。BlockingQueue 了解 LinkedBlockingQueue、ArrayBlockingQueue、DelayQueue、SynchronousQueue
常见问题
ConcurrentHashMap 是如何在保证并发安全的同时提高性能?
ConcurrentHashMap 是如何让多线程同时参与扩容?
LinkedBlockingQueue、DelayQueue 是如何实现的?
CopyOnWriteArrayList 是如何保证线程安全的?
Java 并发
synchronized 了解偏向锁、轻量级锁、重量级锁的概念以及升级机制、以及和 ReentrantLock 的区别 CAS 了解 AtomicInteger 实现原理、CAS 适用场景、如何实现乐观锁 AQS 了解 AQS 内部实现、及依靠 AQS 的同步类比如 ReentrantLock、Semaphore、CountDownLatch、CyclicBarrier 等的实现 ThreadLocal 了解 ThreadLocal 使用场景和内部实现 ThreadPoolExecutor 了解线程池的工作原理以及几个重要参数的设置
常见问题
synchronized 与 ReentrantLock 的区别?
乐观锁和悲观锁的区别?
如何实现一个乐观锁?
AQS 是如何唤醒下一个线程的?
ReentrantLock 如何实现公平和非公平锁是如何实现?
CountDownLatch 和 CyclicBarrier 的区别?各自适用于什么场景?
适用 ThreadLocal 时要注意什么?比如说内存泄漏?
说一说往线程池里提交一个任务会发生什么?
线程池的几个参数如何设置?
线程池的非核心线程什么时候会被释放?
如何排查死锁?
类加载
了解双亲委派机制
常见问题
双亲委派机制的作用?
Tomcat 的 classloader 结构
如何自己实现一个 classloader 打破双亲委派
IO
了解 BIO 和 NIO 的区别、了解多路复用机制
常见问题
同步阻塞、同步非阻塞、异步的区别?
select、poll、eopll 的区别?
java NIO 与 BIO 的区别?
reactor 线程模型是什么?
JVM
GC:
内存区域:能说清 jvm 的内存划分
常见问题
CMS GC 回收分为哪几个阶段?分别做了什么事情?
CMS 有哪些重要参数?
Concurrent Model Failure 和 ParNew promotion failed 什么情况下会发生?
CMS 的优缺点?
有做过哪些 GC 调优?
为什么要划分成年轻代和老年代?
年轻代为什么被划分成 eden、survivor 区域?
年轻代为什么采用的是复制算法?
老年代为什么采用的是标记清除、标记整理算法
什么情况下使用堆外内存?要注意些什么?
堆外内存如何被回收?
jvm 内存区域划分是怎样的?
中间件、存储、以及其他框架
Spring:bean 的生命周期、循环依赖问题、spring cloud(如项目中有用过)、AOP 的实现、spring 事务传播
常见问题
java 动态代理和 cglib 动态代理的区别(经常结合 spring 一起问所以就放这里了)
spring 中 bean 的生命周期是怎样的?
属性注入和构造器注入哪种会有循环依赖的问题?
Dubbo(或其他 Rpc 框架)
了解一个常用 RPC 框架如 Dubbo 的实现:服务发现、路由、异步调用、限流降级、失败重试
常见问题
Dubbo 如何做负载均衡?
Dubbo 如何做限流降级?
Dubbo 如何优雅的下线服务?
Dubbo 如何实现异步调用的?
RocketMq(或其他消息中间件)
了解一个常用消息中间件如 RocketMq 的实现:如何保证高可用和高吞吐、消息顺序、重复消费、事务消息、延迟消息、死信队列
常见问题
RocketMq 如何保证高可用的?
RocketMq 如何保证高吞吐的?
RocketMq 的消息是有序的吗?
RocketMq 的消息局部顺序是如何保证的?
RocketMq 事务消息的实现机制?
RocketMq 会有重复消费的问题吗?如何解决?
RocketMq 支持什么级别的延迟消息?如何实现的?
RocketMq 是推模型还是拉模型?
Consumer 的负载均衡是怎么样的?
Redis(或其他缓存系统)
redis 工作模型、redis 持久化、redis 过期淘汰机制、redis 分布式集群的常见形式、分布式锁、缓存击穿、缓存雪崩、缓存一致性问题
常见问题
redis 性能为什么高?
单线程的 redis 如何利用多核 cpu 机器?
redis 的缓存淘汰策略?
redis 如何持久化数据?
redis 有哪几种数据结构?
redis 集群有哪几种形式?
有海量 key 和 value 都比较小的数据,在 redis 中如何存储才更省内存?
如何保证 redis 和 DB 中的数据一致性?
如何解决缓存穿透和缓存雪崩?
如何用 redis 实现分布式锁?
Mysql
事务隔离级别、锁、索引的数据结构、聚簇索引和非聚簇索引、最左匹配原则、查询优化(explain 等命令)
常见问题
Mysql(innondb 下同) 有哪几种事务隔离级别?
不同事务隔离级别分别会加哪些锁?
mysql 的行锁、表锁、间隙锁、意向锁分别是做什么的?
说说什么是最左匹配?
如何优化慢查询?
mysql 索引为什么用的是 b+ tree 而不是 b tree、红黑树
分库分表如何选择分表键
分库分表的情况下,查询时一般是如何做排序的?
zk
zk 大致原理(可以了解下原理相近的 Raft 算法)、zk 实现分布式锁、zk 做集群 master 选举
其实一步一步走过来,不单单只靠面试之前刷题那么简单,更多的还是平时的积累。小编整理出一篇 Java 进阶架构师之路的核心知识,同时也是面试时面试官必问的知识点,篇章也是包括了很多知识点,其中包括了有、Java 集合、JVM、多线程并发、spring 原理、微服务、Netty 与 RPC 、Kafka、日记、设计模式、Java 算法、数据库、分布式等等知识!
以及一套涵盖了:阿里、百度、腾讯、京东、顺丰、美团等等大厂的面试真题的总结!
需要领取全部学习资料的朋友麻烦动动小手帮忙转发一下文章+关注我一下,免费获取方式在文末!
Java 进阶架构师之路的核心知识
一线大厂面试真题
需要领取全部学习资源的朋友麻烦帮忙点赞、转发一下文章+关注我,然后加小助理 VX:wjj2632646 免费领取!
版权声明: 本文为 InfoQ 作者【Java架构追梦】的原创文章。
原文链接:【http://xie.infoq.cn/article/92effe922e5954642a0e7eae0】。未经作者许可,禁止转载。
评论