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