不想搞 Java 了,4 年经验去面试 10 分钟结束,现在 Java 面试为何这么难
作为一名优秀的程序员,技术面试都是不可避免的一个环节,一般技术面试官都会通过自己的方式去考察程序员的技术功底与基础理论知识。
如果你参加过一些大厂面试,肯定会遇到一些这样的问题:
1、看你项目都用的框架,熟悉 Spring、mybatis 等框架实现原理吗?
2、 看你上面有接触过消息中间件,负载均衡、RPC 框架等技术吗,MySQL 分库分表有做过吗?
3、 分布式架构设计,Redis 分布式锁呢?
是不是看上去很难,是不是和自己准备的“题库”中的问题不一样?不知道从何处下手?如果你有这种感觉,那么说明你的技术还需要继续修炼。
面对如此多的技术面试,怎么样才能说自己的技术已经过关了呢?
只有问题没有参考答案,但是,请允许我说但是,对于下面这些问题,我这里还是有一份参考学习笔记文档和面经试题解析的在文末分享,需要各位小伙伴下来逐一学习!
一、开场白
自我介绍,项目经验(介绍下自己最满意的,有技术亮点的项目或平台,重点介绍下自己负责那部分的技术细节;这一块主要考察应聘者对自己做过的事情是否有清晰的描述,判断做的事情的复杂度)
2、JVM
垃圾回收算法有几种类型? 他们对应的优缺点又是什么?
类的加载过程是什么?简单描述一下每个步骤
JVM 预定义的类加载器有哪几种?分别什么作用?
什么是双亲委派模式?有什么作用?
什么是内存溢出, 内存泄露? 他们的区别是什么?
引起类加载操作的行为有哪些?
介绍一下 JVM 提供的常用工具
Full GC 、 Major GC 、Minor GC 之间区别?
什么时候触发 Full GC ?
...
3、Java 并发
什么是可重入锁、乐观锁、悲观锁、公平锁、非公平锁、独占锁、共享锁?
讲讲 ThreadLocal 的实现原理?
ThreadLocal 作为变量的线程隔离方式,其内部是如何做的?
说说 InheritableThreadLocal 的实现原理?
并发包中锁的实现底层(对 AQS 的理解)?
讲讲独占锁 ReentrantLock 原理?
4、Java 集合
HashSet 和 TreeSet 有什么区别?
HashSet 的底层实现是什么?
LinkedHashMap 的实现原理?
为什么集合类没有实现 Cloneable 和 Serializable 接口?
什么是迭代器 (Iterator)?
Iterator 和 ListIterator 的区别是什么?
5、Spring 全家桶
Spring bean 的生命周期能不能结合源码回答一下这个问题、或者结合一下 bean 的生命的意义来回答,就是 Spring 为什么需要找个生命周期
Spring 容器当中包含了哪些常用组件(至少说 5 个),作用是什么,场景是什么;比如 BeanDefinition;再比如 BeanDefinitionMap
Spring 自动注入的原理是什么?能不能从源码来说明一下这个问题;我们常常说的自动注入,到底怎么注入的?有什么坑?怎么让你一个属性不自动注入
Spring 源码当中如何来搞定循环依赖的?Spring 支持循环依赖?生命情况不支持?支持的原理是什么?能不能从源码来说明一下?
如何来二次扩展 Spring,比如自定义一个实现自动注入的注解;不使用 @Autowried,自己如何开发一个 @XXX 来完成自动注入?
mybatis 源码当中利用了 Spirng 的那些扩展?mybatis 扩展 Spring 之后有哪些问题是无法解决的?比如二级缓存怎么解决
eureka 源码当中如何扩展的 Spring?比如怎么动态插拔 eureka 的功能,利用了 Spring 的那个技术点,或者从源码说一下
6、Redis
Redis 持久化机制有哪些? 区别是什么?优缺点是什么?
Redis 支持的数据类型
为什么 Redis 需要把所有数据放到内存中?
Redis 是单线程的吗?
Redis 的缓存失效策略有哪几种?
什么是缓存命中率?提高缓存命中率的方法有哪些?
Redis 全局命令及数据库管理
Redis 设计订单应用场景
Redis 缓存雪崩讲讲看?
什么是缓存穿透?
Redis 重启时加载 AOF 与 RDB 的顺序
7.中间件
Dubbo 完整的一次调用链路介绍;
Dubbo 支持几种负载均衡策略?
Dubbo Provider 服务提供者要控制执行并发请求上限,具体怎么做?
Dubbo 启动的时候支持几种配置方式?
了解几种消息中间件产品?各产品的优缺点介绍;
消息中间件如何保证消息的一致性和如何进行消息的重试机制?
Spring Cloud 熔断机制介绍;
Spring Cloud 对比下 Dubbo,什么场景下该使用 Spring Cloud?
8、分布式
消息中间件如何解决消息丢失问题
Dubbo 的服务请求失败怎么处理
重连机制会不会造成错误
对分布式事务的理解
如何实现负载均衡,有哪些算法可以实现?
Zookeeper 的用途,选举的原理是什么?
数据的垂直拆分水平拆分。
zookeeper 原理和适用场景
zookeeper watch 机制
redis/zk 节点宕机如何处理
分布式集群下如何做到唯一序列号
如何做一个分布式锁
用过哪些 MQ,怎么用的,和其他 mq 比较有什么优缺点,MQ 的连接是线程安全的吗
MQ 系统的数据如何保证不丢失
列举出你能想到的数据库分库分表策略;分库分表后,如何解决全表查询的问题。
9、数据库
MySQL InnoDB 存储的文件结构
索引树是如何维护的?
数据库自增主键可能的问题
MySQL 的几种优化
mysql 索引为什么使用 B+树
数据库锁表的相关处理
索引失效场景
高并发下如何做到安全的修改同一行数据,乐观锁和悲观锁是什么,INNODB 的行级锁有哪 2 种,解释其含义
数据库会死锁吗,举一个死锁的例子,mysql 怎么解决死锁
最后
其实一步一步走过来,不单单只靠面试之前刷题那么简单,更多的还是平时的积累。小编整理出一篇 Java 进阶架构师之路的核心知识,同时也是面试时面试官必问的知识点,篇章也是包括了很多知识点,其中包括了有基础知识、Java 集合、JVM、多线程并发、spring 原理、微服务、Netty 与 RPC 、Kafka、日记、设计模式、Java 算法、数据库、Zookeeper、分布式缓存、数据结构等等
如果需要获取到这个【Java 面试知识点整理】文档的话,可以直接添加 小助手的 VX : MXC1146 即可免费获取!!
如果需要获取到这个【Java 面试知识点整理】文档的话,可以点击这里即可获取到文章中的文档,资料!
版权声明: 本文为 InfoQ 作者【Java技术架构】的原创文章。
原文链接:【http://xie.infoq.cn/article/ac3db4bf74b32dc66245f4236】。未经作者许可,禁止转载。
评论