一、Java 根底
什么是 Java 程序的主类?应用程序和小程序的主类有何不同?
结构器 Constructor 是否可被 override?
String StringBuffer 和 StringBuilder 的区别是什么?String 为什么是不可变的?
对象的相等与指向他们的援用相等,两者有什么不同?
重载和重写的区别?
在一个静态方法内调用一个非动态成员为什么是非法的?
简述线程,程序、过程的基本概念。以及他们之间关系是什么
什么是办法的返回值? 返回值在类的办法里的作用是什么?
一个类的构造方法的作用是什么 若一个类没有申明构造方法, 该程序能正确执行吗 ? 为什么?
Java 面向对象编程三大个性: 封装 继承 多态
Java 序列化中如果有些字段不想进行序列化 怎么办?
在调用子类构造方法之前会先调用父类没有参数的构造方法,其目标是?
线程有哪些根本状态?
创立一个对象用什么运算符? 对象实体与对象援用有何不同?
成员变量与局部变量的区别有哪些?
二、Java 中级
Spring 的 AOP 和 IOC 是什么?应用场景有哪些?Spring 事务,事务的属性,数据库隔离级别
Spring 和 SpringMVC,MyBatis 以及 SpringBoot 的注解别离有哪些?
SpringCould 组件有哪些,它们的作用是什么?微服务的 CAP 是什么?BASE 是什么?
HashMap 底层实现原理,红黑树,B+ 树,B 树的构造原理,CAS(比拟与替换)实现原理
Redis 反对的数据类型以及应用场景,长久化,哨兵机制,缓存击穿,缓存穿透
线程是什么,有几种实现形式,它们之间的区别是什么,线程池实现原理,JUC 并发包
安全性问题(数据篡改(拿到他人的 URL, 篡改数据(金额)发送给零碎))
索引应用的限度条件,sql 优化有哪些,数据同步问题(缓存,数据库数据同步)
分布式事务
堆溢出,栈溢出的呈现场景以及解决方案
乐观锁,乐观锁,读写锁,行锁,表锁,自旋锁,死锁,分布式锁,线程同步锁,偏心锁,非偏心锁别离是什么?
初始化 Bean 对象有几个步骤,它的生命周期
JVM 内存模型,算法,垃圾回收器,调优,类加载机制(双亲委派), 创立一个对象,这个对象在内存中是怎么调配的?
Dubbo 的运行原理,与 SpringCould 相比它为什么效率要高一些,Zookeeper 底层原理
说出几种 MQ 之间的区别,以及为什么应用这种 MQ,音讯反复发送(幂等性),音讯发送失败,音讯掉包,长时间收不到音讯,发送的音讯太大造成接管不胜利
三、Java 高级
为什么应用音讯队列?音讯队列有什么长处和毛病?Kafka、ActiveMQ、RabbitMQ、RocketMQ 都有什么长处和毛病?
如何保障音讯不被反复生产?或者说,如何保障音讯生产的幂等性?
如何解决音讯队列的延时以及过期生效问题?音讯队列满了当前该怎么解决?有几百万音讯继续积压几小时,说说怎么解决?
redis 集群模式的工作原理能说一下么?在集群模式下,redis 的 key 是如何寻址的?分布式寻址都有哪些算法?理解一致性 hash 算法吗?
理解什么是 redis 的雪崩、穿透和击穿?redis 解体之后会怎么样?零碎该如何应答这种状况?如何解决 redis 的穿透?
为什么要分库分表(设计高并发零碎的时候,数据库层面该如何设计)?用过哪些分库分表中间件?不同的分库分表中间件都有什么长处和毛病?你们具体是如何对数据库如何进行垂直拆分或程度拆分的?
有没有做 MySQL 读写拆散?如何实现 MySQL 的读写拆散?MySQL 主从复制原理的是啥?如何解决 MySQL 主从同步的延时问题?
说一下的 dubbo 的工作原理?注册核心挂了能够持续通信吗?说说一次 rpc 申请的流程?
如何基于 dubbo 进行服务治理、服务降级、失败重试以及超时重试?
集群部署时的分布式 session 如何实现?
服务注册和发现是什么意思?Spring Cloud 如何实现?
个别实现分布式锁都有哪些形式?应用 redis 如何设计分
布式锁?应用 zk 来设计分布式锁能够吗?这两种分布式锁的实现形式哪种效率比拟高?
dubbo 的 spi 思维是什么?
如何设计能够动静扩容缩容的分库分表计划?
四、分布式
ActiveMQ 中的音讯重发工夫距离和重发次数吗?
Kafka 创立 Topic 时如何将分区搁置到不同的 Broker 中
Kafka 判断一个节点是否还活着有哪两个条件?
Kafka 音讯是采纳 Pull 模式,还是 Push 模式?
memcached 和服务器的 local cache(比方 PHP 的 APC、mmap 文件等)相比,有什么优缺点?
我须要把 memcached 中的 item 批量导出导入,怎么办?
memcached 的多线程是什么?如何应用它们?
MongoDB 在 A:{B,C}上建设索引,查问 A:{B,C}和 A:{C,B}都会应用索引吗?
MongoDB 反对存储过程吗?如果反对的话,怎么用?
如何了解 MongoDB 中的 GridFS 机制,MongoDB 为何应用 GridFS 来存储文件?
在 Nginx 中,如何应用未定义的服务器名称来阻止解决申请?
RabbitMQ 上的一个 queue 中寄存的 message 是否有数量限度?
若 cluster 中领有某个 queue 的 owner node 生效了,且该 queue 被申明具备 durable 属性,是否可能胜利从其余 node 上从新申明该 queue?
为什么说保障 message 被牢靠长久化的条件是 queue 和 exchange 具备 durable 属性,同时 message 具备 persistent 属性才行?
为什么用缓存,用过哪些缓存,redis 和 memcache 的区别?
五、Spring 架构
Spring Boot、Spring MVC 和 Spring 有什么区别?
BeanFactory 和 ApplicationContext 有什么区别?
什么是基于 Java 的 Spring 注解配置? 给一些注解的例子.
请解释 Spring Bean 的生命周期?
Spring 框架中的单例 Beans 是线程平安的么?
SpringMvc 的控制器是不是单例模式, 如果是, 有什么问题, 怎么解决?
SpringMVC 怎么样设定重定向和转发的?
当一个办法向 AJAX 返回非凡对象, 比方 Object,List 等, 须要做什么解决?
SpringMvc 用什么对象从后盾向前台传递数据的?
服务注册和发现是什么意思?Spring Cloud 如何实现?
应用 Spring Cloud 有什么劣势?
什么是 Hystrix 断路器?咱们须要它吗?
什么是 Spring Cloud Bus?咱们须要它吗?
如何实现 Spring Boot 应用程序的安全性?
Spring Boot 配置的默认 H2 数据库的名字是下面?为什么默认的数据库名字是 testdb?
六、线程问题
stop() 和 suspend() 办法为何不举荐应用?
同步和异步有何异同,在什么状况下别离应用它们?
线程间通信,wait 和 notify
什么是线程饿死,什么是活锁?
atomicinteger 和 volatile 等线程平安操作的关键字的了解和应用
volatile 变量是什么?volatile 变量和 atomic 变量有什么不同?
当一个线程进入一个对象的一个 synchronized 办法后,其它线程是否可进入此对象的其它办法?
简述 synchronized 和
java.util.concurrent.locks.Lock 的异同?
多线程之间通信的同步问题,synchronized 锁的是对象,衍伸出和 synchronized 相干很多的具体问题,例如同一个类不同办法都有 synchronized 锁,一个对象是否能够同时拜访。或者一个类的 static 构造方法加上 synchronized 之后的锁的影响。
volatile 类型变量提供什么保障?能使得一个非原子操作变成原子操作吗?
理解可重入锁的含意,以及 ReentrantLock 和 synchronized 的区别
Java 创立线程之后,间接调用 start()办法和 run()的区别
同步的数据结构,例如 concurrentHashMap 的源码了解以及外部实现原理,为什么它是同步的且效率高
罕用的线程池模式以及不同线程池的应用场景
newFixedThreadPool 此种线程池如果线程数达到最大值后会怎么办,底层原理。
七、网络方面
为什么要三次握手
二次握手有什么问题
三次握手有哪些缺点
TCP 是如何管制流量的
发送方发送频率过高造成丢包,TCP 是如何解决的
HTTPs 为什么要用对称加密 + 非对称加密,绝对于只应用非对称加密有什么益处
讲一下 OSI 网络架构
HTTP 在哪一层
HTTP 报文构造
HTTP 首部字段
HTTPs 加密在哪一层实现
http 是无状态通信,http 的申请形式有哪些,能够本人定义新的申请形式么。
socket 通信,以及长连贯,分包,连贯异样断开的解决。
socket 通信模型的应用,AIO 和 NIO。
socket 框架 netty 的应用,以及 NIO 的实现原理,为什么是异步非阻塞
八、MySQL 数据库
务四大个性(ACID)原子性、一致性、隔离性、持久性?
查问语句不同元素(where、jion、limit、group by、having 等等)执行先后顺序?
MySQL 常见的三种存储引擎(InnoDB、MyISAM、MEMORY)的区别?
MySQL 的 MyISAM 与 InnoDB 两种存储引擎在,事务、锁级别,各自的实用场景?
mysql 高并发环境解决方案?
事务的并发?事务隔离级别,每个级别会引发什么问题,MySQL 默认是哪个级别?
MySQL B+Tree 索引和 Hash 索引的区别?
有哪些锁(乐观锁乐观锁),select 时怎么加排它锁?
sql 查问语句确定创立哪种类型的索引?如何优化查问?
汇集索引和非汇集索引区别?
mysql 都有什么锁,死锁断定原理和具体场景,死锁怎么解决?
非关系型数据库和关系型数据库区别,劣势比拟?
MySQL 慢查问怎么解决?
数据库的读写拆散、主从复制,主从复制剖析的 7 个问题?
数据库解体时事务的复原机制(REDO 日志和 UNDO 日志)?
九、Redis 缓存
redis 事务相干命令有哪些?
为什么要用 redis / 为什么要用缓存(高性能、高并发)
为什么要用 redis 而不必 map/guava 做缓存?
redis 和 memcached 的区别
请介绍一下 Redis 的数据类型 SortedSet(zset)以及底层实现机制?
redis 常见数据结构以及应用场景剖析(String、Hash、List、Set、Sorted Set)
redis 设置过期工夫
redis 内存淘汰机制(MySQL 里有 2000w 数据,Redis 中只存 20w 的数据,如何保障 Redis 中的数据都是热点数据?)
redis 长久化机制(怎么保障 redis 挂掉之后再重启数据能够进行复原)
redis 事务
Redis 常见异样及解决方案(缓存穿透、缓存雪崩、缓存预热、缓存降级)
分布式环境下常见的利用场景(分布式锁、分布式自增 ID)
Redis 集群模式(主从模式、哨兵模式、Cluster 集群模式)
如何解决 Redis 的并发竞争 Key 问题
如何保障缓存与数据库双写时的数据一致性?
十、JVM 相干
如何判断一个对象是否存活?(或者 GC 对象的断定办法)
java 中垃圾收集的办法有哪些?
简述 java 垃圾回收机制?
GC 的两种断定办法?
Minor GC 与 Full GC 别离在什么时候产生?
JVM 内存分哪几个区,每个区的作用是什么?
GC 收集器有哪些?CMS 收集器与 G1 收集器的特点
GC 的三种收集办法:标记革除、标记整顿、复制算法的原理与特点,别离用在什么中央,如果让你优化收集办法,有什么思路?
类加载器双亲委派模型机制?
java 类加载过程?
简述 java 类加载机制?
什么是类加载器,类加载器有哪些?
简述 java 内存调配与回收策略以及 Minor GC 和 Major GC
HotSpot 虚拟机对象探秘
HotSpot 垃圾收集器
十一、调优方面
垃圾回收器的基本原理是什么?垃圾回收器能够马上回收内存吗?有什么方法被动告诉虚拟机进行垃圾回收?
Java 中会存在内存透露吗,请简略形容。
如果对象的援用被置为 null,垃圾收集器是否会立刻开释对象占用的内存?
finalize() 办法什么时候被调用?析构函数 (finalization) 的目标是什么?
串行(serial)收集器和吞吐量(throughput)收集器的区别是什么?
什么是分布式垃圾回收(DGC)?它是如何工作的?
你怎么给 tomcat 去调优?
Tomcat 的优化教训
在 Java 中,对象什么时候能够被垃圾回收?
System.gc() 和 Runtime.gc() 会做什么事件?
Java 中会存在内存透露吗,请简略形容
GC 是什么? 为什么要有 GC?
JVM 的永恒代中会产生垃圾回收么?
tomcat 有哪几种 Connector 运行模式(优化)?
内存调优
十二、设计模式
21 种设计模式常识要点
请列举出在 JDK 中几个罕用的设计模式?
什么是设计模式?你是否在你的代码外面应用过任何设计模式?
在 Java 中,什么叫观察者设计模式(observer design pattern)?
应用工厂模式最次要的益处是什么?在哪里应用?
在 Java 中,什么时候用重载,什么时候用重写?
在 Java 中,为什么不容许从静态方法中拜访非动态变量?
设计一个 ATM 机,请说出你的设计思路?
举一个用 Java 实现的装璜模式(decorator design pattern)?它是作用于对象档次还是类档次
举例说明什么状况下会更偏向于应用抽象类而不是接口?
十三、算法 & 数据结构
如何仅用递归函数和栈操作逆序一个栈?
将单向链表按某值划分成右边小、两头相等、左边大的模式
别离用递归和非递归形式实现二叉树先序、中序和后序遍历
斐波拉契系列问题的递归和动静布局
判断字符数组中是否有的字符都只呈现过一次
在有序但含有空的数组中查找字符串
只用 2GB 内存在 20 亿个整数中找到呈现次数最多的数
未排序数组中累加和小于或等于给定值的最长子数组长度
从 5 随机到 7 随机及其扩大
最大值减去最小值小于或等于 num 的子数组数量
环形单链表的约瑟夫问题
将单链表的每 K 个节点之间逆序
在二叉树中找到累加和为指定值的最长门路长度
判断一棵二叉树是否为搜寻二叉树和齐全二叉树
最长公共子序列问题
十四、并发
什么是可重入性,为什么说 Synchronized 是可重入锁?
为什么说 Synchronized 是一个乐观锁?乐观锁的实现原理又是什么?什么是 CAS,它有 什么个性?
乐观锁肯定就是好的吗?
JVM 对 Java 的原生锁做了哪些优化?
ReentrantLock 是如何实现可重入性的?
跟 Synchronized 相 比,可重入锁 ReentrantLock 其实现原理有什么不同?
如何让 Java 的线程彼此同步?你理解过哪些同步器?请别离介绍下。
CyclicBarrier 和 CountDownLatch 看起来很类似,请比照下呢?
线程池中的线程是怎么创立的?是一开始就随着线程池的启动创立好的吗?
既然提到能够通过配置不同参数创立出不同的线程池,那么 Java 中默认实现好的线程池又 有哪些呢?请比拟它们的异同
请谈谈 volatile 有什么特点,为什么它能保障变量对所有线程的可见性?
什么是 Java 的内存模型,Java 中各个线程是怎么彼此看到对方的变量的?
既然 volatile 可能保障线程间的变量可见性,是不是就意味着基于 volatile 变量的运算就是并 发平安的?
很多人都说要慎用 ThreadLocal,谈谈你的了解,应用 ThreadLocal 须要留神些什么?
请谈谈 AQS 框架是怎么回事儿?
十五、操作系统 /Linux
死锁产生的起因
过程、线程区别,什么时候用线程
如何实现一个线程池,Java 中线程池如何进行配置
linux 中有哪些常见的指令,进行介绍
select、poll、epoll 有没有理解过,解说一下
线程切换,引申到 Java 阻塞 运行
如何分层复制 /home 目录到另一个目录?
什么是装置 Linux 所需的最小分区数量,以及如何查看系统启动信息?
如何暂停一个正在运行的过程,把其放在后盾(不运行)?
什么是页面谬误,它是怎么产生的?
人生短暂,别稀里糊涂的活一辈子,不要将就。最近还有很多小伙伴想要学习 Java 进阶,
不晓得去哪支付,我这里有很多 PDF 材料,面试真题及答案包罗万象,
都是最近几年我在京东从事 5 年工作经验总结!面试常见的问题。程序员必备的技能外围知识点,
这些对你的帮忙都是很大的,通过我的学习笔记曾经有很多人进入了梦寐以求的互联网大厂。
成功率高达 85%!我就是有这个自信说出这话!有句话叫舍不得孩子套不住狼。
想要达到你的指标就要一直的去学习提高,总有一天必能成为一位有逼格的程序员!
最初扣【学习】撩我支付学习材料!