入门到入坟,十年架构师经验汇总:Java架构修行宝典
走过路过不要错过
写在前面
古人云:凡事预则立,不预则废。机会都是垂青有准备的人的。为了得到一份满意的工作,大家一定要对整个求职过程有清醒的了解。把能够预见的、必须做的事情早一些做完,这样在大规模招聘开始的时候就可以专心地为面试做准备。求职过程中会发生很多预料不到的事情,当你的计划被这些事情打乱之后,要做的事会越堆越多,一步落后,步步落后。如果能够尽早把能做的事做完,即便有计划外事件发生,也不会产生太严重的影响。努力地使事态的发展处在自己能控制的范围之内,这样无论发生任何事都能有应对之策。
如今,一线互联网行业对IT人才的需求也越来越大,甚至对于人才的培养给予了一定的支持。据内部消息称,BAT大厂也非常鼓励培养人才,对此还发布了相关的一些相关的培训和指导,今天我们要聊到的,是一份内部发布的Java架构师面试宝典与Java架构师修行宝典,看完之后或许可以不用再怀疑人生了,学习Java也能如此简单,完美!
Java架构师面试宝典与修行宝典
内容包含:JVM(柒拾柒题)、MySQL(捌拾叁题)、Redis(伍拾题)、Memcached(贰拾肆题)、String(壹佰叁拾壹题)、Spring Boot(玖拾贰题)、Spring Cloud(叁拾伍题)、JavaOOP(壹佰零捌题)、Java集合/泛型(贰拾肆题)、Java异常(捌题)、JavaIO与NIO(拾伍题)、Java反射(拾壹题)、Java序列化(拾题)、Java注解(贰题)、多线程&并发(壹佰零捌题)、MongoDB(玖拾伍题)、RabbitMQ(叁拾贰题)、Dubbo(肆拾题)、MyBatis(贰拾捌题)、ZooKeeper(肆拾玖题)、数据结构(玖题),算法(贰拾壹题)、Elasticsearch(贰拾肆题)、Kafka(贰拾伍题)、微服务(伍拾题)、Linux(肆拾捌题)合计:壹仟壹佰玖拾玖题
JVM(柒拾柒题)
知识点整理
基本概念:JVM是可运行Java代码的假想计算机,包括一套字节码指令集、一组寄存器、个栈、一个垃圾回收,堆和一个存储方法域。JVM是运行在操作系统之上的,它与硬件没有直接的交互。
1.java中会存在内存泄漏吗,请简单描述
会。自己实现堆载的数据结构时有可能会出现内存泄露
2.64位JVM中,int的长度是多数?
Java中。int类型变量的长度是一个固定值,与平台无关,都是32位。意思就是说,在32位和64位的Java虚拟机中,int类型的长度是相同的。
3.Serial与Parallel GC之间的不同之处?
Serial与Parallel在GC执行的时候都会引起stop-the-world,它们之间主要不同serial收集器是默认的复制收集器,执行GC的时候只有一个线程,而parallel 收集器使用多个GC线程来执行。
4.32位和64位的JVM, int 类型变量的长度是多数?
32位和64位的JVM中,int类型变量的长度是相同的,都是32位或者4个字节。
5.Java中WeakReference与SoftReference 的区别?
虽然WeakReference与SoftReference都有利于提高GC和内存的效率,但是WeakReference, 一旦失去最后一个强引用,就会被GC回收,而软引用虽然不能阻止被回收,但是可以延迟到JVM内存不足的时候。
6.JVM选项-XX:+UseCompressedOops有什么作用?为什么要使用!
当你将你的应用从32位的JVM迁移到64位的JVM时,由于对象的指针从32位增加到了64位,因此堆内存会突然增加,差不多要翻倍。这也会对CPU缓存(容量比内存小很多)的数据产生不利的影响。因为,迁移到64位的JVM主要动机在于可以指定最大堆大小,通过压缩OOP可以节省一定的内存。通过-XX:+UseCompressedOops 选项。JVM会使用32位的OOP,而不是64位的OOP.
7.怎样通过Java程序来判断JVM是32位还是64位?
你可以检查某些系统属性如sun,arch.data.model或os .arch来获取该信息。
8.32位JVM和64位JVM的最大堆内存分别是多数?
理论.上说上32位的JVM堆内存可以到达2^32,即4GB,但实际上会比这个小很多。不同操作系统之间不同,如Windows系统大约1.5GB,Solaris大约3GB.64 位JVM允许指定最大的堆内存,理论上可以达到2^64,这是一个非常大的数字,实际上你可以指定堆内存大小到100GB,甚至有的JVM,如Azul,堆内存到1000G都是可能的。
9.JRE. JDK. JVM及JIT之间有什么不同?
JRE代表Java运行时( Java run-time) , 是运行Java引用所必须的。JDK代表Java开发工具( Java development kit), 是Java程序的开发工具,如Java编译器,它也包含JRE. JVM代表Java虚拟机( Java virtual machine),它的责任是运行Java应用。JT代表即时编译( Just In Time compilation), 当代码执行的次数超过一定的闽值时,会将Java字节码转换为本地代码,如,主要的热点代码会被准换为本地代码,这样有利大幅度提高Java应用的性能。
10.解释Java堆空间及GC?
当通过Java命令启动Java进程的时候,会为它分配内存。内存的一部分用于创建堆空间,当程序中创建对象的时候,就从对空间中分配内存。GC是JVM内部的一个进程 ,回收无效对象的内存用于将来的分配。
11.JVM内存区域
12.程序计数器(线程私有)
13.虚拟机栈(线程私有)
14.本地方法区(线程私有)
15.你能保证GC执行吗?
16.怎么获取Java程序使用的内存?堆使用的百分比?
17.Java中堆和栈有什么区别?
18.描述一下JM加载class文件的原理机制
19.GC是什么?为什么要有GC?
20.堆(Heap-线程共享运行时数据区
21.方法区/永久代(线程共享)
22.JVM运行时内存
23.新生代
24.老年代
25.永久代
26.JAVA8与元数据
27.引用计数法
28.可达性分析
29.标记清除算法( Mark-Sweep)
30.复制算法(copying)
31.标记整理算法(Mark-Compact)
32.分代收集算法
33.新生代与复制算法
34.老年代与标记复制算法
35.JAVA强引用
36.JAVA软引用
37.JAVA弱引用
38.JAVA虚引用
39.分代收集算法
40.在新生代-复制算法
41.在老年代-标记整理算法
42.分区收集算法
43.GC垃圾收集器
44.Serial垃圾收集器(单线程、复制算法)
45.ParNew垃圾收集器(Serial+ 多线程)
46.Parallel Scavenge收集器(多线程复制算法、高效)
47.Serial Old收集器(单线程标记整理算法)
48.Parallel Old收集器(多线程标记整理算法)
49.CMS收集器(多线程标记清除算法)
50.G1收集器
51.JVM类加载机制
52.类加载器
53.双亲委派
54.OSGI (动态模型系统)
55.动态改变构造
56.模块化编程与热插拔
57.JVM内存模型
58.栈
59.本地方法栈
60.程序计数器
61.堆
62.方法区
63.分代回收
64.堆和栈的区别
65.什么时候会触发FullIGC
66.什么是Java虚拟机?为什么Java被称作是”平台无关的编程语言"?
67.对象分配规则
68.描述一下JVM加载class文件的原理机制?
69.Java对象创建过程
70.简述Java的对象结构
71.如何判断对象可以被回收
72.JVM的永久代中会发生垃圾回收么
73.垃圾收集算法
74.调优命令有哪些?
75.调优工具
76.Minor GC与Full GC分别在什么时候发生?
77.你知道哪些JVM性能调优
《Java架构师面试宝典》高清笔记电子书已经打包好了,可以通过下述步骤来获取。
MySQL(捌拾叁题)
知识点整理
索引(Index) 是帮助MySQL高效获取数据的数据结构。常见的查询算法,顺序查找二分查找二叉排序树查找哈希散列法,分块查找平衡多路搜索树B树(B-tree)
面试题
数据库存储引擎
InnoDB (B+树)
TokuDB ( Fractal Tree-节点带数据)
MylASM
Memory
数据库引擎有哪些
InnoDB与MyISAM的区别
索引
常见索引原则有
数据库的三范式是什么
第一范式(1stNF -列都是不可再分)
第二范式(2nd NF -每个表只描述- -件事情)
第三范式(3rd NF -不存在对非主键列的传递依赖)
数据库是事务
SQL优化
简单说一说drop. delete 与truncate的区别
什么是视图
什么是内联接、左外联接、右外联接?
并发事务带来哪些问题?
务隔离级别有哪些?MySQL的默认隔离级别是?
大表如何优化?
水平分区
分库分表之后,,d主键如何处理
存储过程(特定功能的SQL语句集)
存储过程优化思路
触发器(一段能自动执行的程序)
数据库并发策略
MySQL中有哪几种锁?
MySQL中有哪些不同的表格?
简述在MySQL数据库中MyISAM和InnoDB的区别
MySQL中InnoDB支持的四种事务隔离级别名称,以及逐级之间的区别?
CHAR和VARCHAR的区别?
主键和候选键有什么区别?
myisamchk是用来做什么的?
MyISAM Static 和MyISAM Dynamic有什么区别?
如果一个表有一列定义为TIMESTAMP,将发生什么?
你怎么看到为表格定义的所有索引?
LIKE声明中的%和是什么意思?
列对比运算符是什么?
BLOB和TEXT有什么区别? .
MySQL fetch. array 和MySQL fetch. object 的区别是什么?
MyISAM表格将在哪里存储,并且还提供其存储格式?
MySQL如何优化DISTINCT?
如何显示前50行?
可以使用多少列创建索引?
NOW ()和CURRENT DATE () 有什么区别? .
什么是非标准字符串类型?
什么是通用SQL函数?
MySQL支持事务吗?
MySQL里记录货币用什么字段类型好
MySQL有关权限的表都有哪几个?
列的字符串类型可以是什么? .
MySQL数据库作发布系统的存储,一天五万条以上的增量,预计运维三年怎么优化?
锁的优化策略
索引的底层实现原理和优化
什么情况下设置了索引但无法使用
实践中如何优化MySQL
优化数据库的方法
解释MySQL外连接、内连接与自连接的区别
Myql中的事务回滚机制概述
SQL语言包括哪几部分?每部分都有哪些操作关键
完整性约束包括哪些?
什么是锁?
什么叫视图?游标是什么?
什么是存储过程?用什么来调用?
如何通俗地理解3三个范式?
什么是基本表?什么是视图?
试述视图的优点?
NULL是什么意思
主键、外键和索引的区别?
你可以用什么来确保表格里的字段只接受特定范围里的值?
说说对SQL语句优化有哪些方法? (选择几条)
什么是乐观锁
什么是悲观锁
什么是时间戳
什么是行级锁
什么是表级锁
什么是页级锁
面试题解析
Redis(伍拾题)
知识点整理
基于Redis分布式锁:
获取锁的时候,使用setnx (SETNX key val:当且仅当key不存在时,set 一个key为val的字符串,返回1;若key存在,则什么都不做,返回0)加锁,锁的value值为一个随机生成的UUID, 在释放锁的时候进行判断。并使用expire 命令为锁添加一个超时时间,超过该时间则自动释放锁。
获取锁的时候调用setnx,如果返回0,则该锁正在被别人使用,返回1则成功获取锁。还设置一个获取的超时时间, 若超过这个时间则放弃获取锁。
释放锁的时候,通过UUID判断是不是该锁,若是该锁,则执行delete进行锁释放。
面试题
什么是Redis?
Redis与其他key-value存储有什么不同?
Redis的数据类型?
使用Redis有哪些好处?
Redis相比Memcached有哪些优势?
Memcache与Redis的区别都有哪些?
Redis是单进程单线程的? .
一个字符串类型的值能存储最大容量是多少?
Redis持久化机制
缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级等问题
热点数据和冷数据是什么
单线程的redis为什么这么快
redis的数据类型,以及每种数据类型的使用场景
redis的过期策略以及内存淘汰机制
Redis常见性能问题和解决方案?
为什么Redis的操作是原子性的,怎么保证原子性的?
Redis事务
Redis的持久化机制是什么?各自的优缺点?
Redis常见性能问题和解决方案:
redis过期键的删除策略?
Redis的回收策略(淘汰策略) ?
为什么edis需要把所有数据放到内存中?
Redis的同步机制了解么?
Pipeline有什么好处,为什么要用pipeline?
是否使用过Redis集群,集群的原理是什么?
Redis集群方案什么情况下会导致整个集群不可用?
Redis支持的Java客户端都有哪些?官方推荐用哪个?
Jedis与Redisson对比有什么优缺点?
Redis如何设置密码及验证密码?
说说Redis哈希槽的概念?
Redis集群的主从复制模型是怎样的?
Redis集群会有写操作丢失吗?为什么?
Redis集群之间是如何复制的?
Redis集群最大节点个数是多少?
面试题解析
Memcached(贰拾肆题)
Memcached是什么,有什么作用?
memcached服务在企业集群架构中有哪些应用场景?
Memcached服务分布式集群如何实现?
Memcached服务特点及工作原理是什么?
简述Memcached内存管理机制原理?
memcached是怎么工作的?
memcached最大的优势是什么?
memcached和MySQL的query
什么是二进制协议,我该关注吗?
memcached的内存分配器是如何工作的?为什么不适用malloc/free! ?为何要使用slabs?
memcached是原子的吗?
如何实现集群中的session共享存储?
memcached与redis的区别?
面试题解析
String(壹佰叁拾壹题)
知识点整理
Spring特点:
轻量级
控制反转
面向切面
容器
框架集合
Spring核心组件
面试题
什么是依赖注入?
可以通过多少种方式完成依赖注入? .
区分构造函数注入和stter入
spring中有多少种I0C容器?
区分BeanFactory和AlicionConoet
列举loC的一些好处。
Spring loC的实现机制。
什么是spring bean?
spring提供了哪些配方式?
spring支持集中bean scope?
spring bean容器的生命周期是什么样的?
什么是spring的内部bean?
什么是spring装配
自动装配有哪些方式?
自动装配有什么局限?
什么是基于注解的容器配置
如何在spring中启动注解装配?
@Component Contrlle @Repostoy
@Required注解有什么用?
@Autowired注解有什么用?
@Qualifer注解有什么用?
@RequestMapping注解有什么用?
spring DAO有什么用?
列举Spring DAO抛出的异常。
Spring配置文件
什么是Spring I0C容器?
IOC的优点是什么?
ApplicationContext通常的实现是什么?
Bean和Application contexts有什么区别?
一个Spring的应用看起来象什么?
什么是Spring的依赖注入?
有哪些不同类型的IOC (依赖注入)方式?
哪种依赖注入方式你建议使用,构造器注入,还是Setter方法注入?
什么是Spring beans?
一个Spring Bean定义包含什么?
如何给Spring容器提供配置元数据?
你怎样定义类的作用域?
解释Spring支持的几种bean的作用域。
Spring框架中的单例bean是线程安全的吗?
解释Spring框架中bean的生命周期。
哪些是重要的bean生命周期方法?你能重载它们吗?
什么是Spring的内部bean?
在Spring中如何注入一个java集合?
什么是bean装配?
什么是bean的自动装配?
解释不同方式的自动装配。
自动装配有哪些局限性
你可以在Spring中注入-个null和一个空字符串吗?
什么是基于Java的Spring注解配置?给一些注解的例子.
面试题解析
《Java架构师面试宝典》高清笔记电子书已经打包好了,可以通过下述步骤来获取。
Spring Boot(玖拾贰题)
知识点整理
Spring Boot原理:Spring Boot是由Pivotal 团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot 致力于在蓬勃发展的快速应用开发领域(rapid applicationdevelopment)成为领导者。其特点如下:
创建独立的Spring应用程序
嵌入的Tomcat,无需部署WAR文件
简化Maven配置
自动配置Spring
提供生产就绪型功能,如指标,健康检查和外部配置
绝对没有代码生成和对XML没有要求配置[1]
面试题
什么是Spring Boot?
为什么要用SpringBoot
Spring Boot有哪些优点?
Spring Boot的核心注解是哪个?它主要由哪几个注解组成的?
运行Spring Boot有哪几种方式
如何理解Spring Boot中的Starters?
如何在Spring Boot启动的时候运行一些特定的代码?
Spring Boot需要独立的容器运行吗?
Spring Boot中的监视器是什么?
如何重新加载Spring Boot上的更改,而无需重新启动服务器?
springboot集成mybatis的过程
Spring Boot. Spring MVC和Spring有什么区别?
什么是Spring Boot Stater ?
Spring Boot还提供了其它的哪些Starter Project Options?
Spring是如何快速创建产品就绪应用程序的?
创建一个Spring Boot Project的最简单的方法是什么?
Spring Initializr是创建Spring Boot Projects的唯一方法吗?
如何使用SpringBoot自动重装我的应用程序?
什么是嵌入式服务器?我们为什么要使用嵌入式服务器呢?
如何在Spring Boot中添加通用的JS代码?
什么是Spring Date?
什么是Spring Data REST? .
path="users", collectionResourceRel="users"如何与Spring Data Rest -起使用?
当Spring Boot应用程序作为Java应用程序运行时,后台会发生什么?
我们能否在spring-boot- starter-web中用jetty代替tomcat?
如何使用Spring Boot生成-个WAR文件?
如何使用Spring Boot部署到不同的服务器?
RequestMapping和GetMapping的不同之处在哪里?
为什么我们不建议在实际的应用程序中使用Spring Data Rest?
在Spring Initializer中,如何改变-个项目的包名字?
可以配置application.propertierde的完整的属性列表在哪里可以找到?
JPA和Hibernate有哪些区别?
使用Spring Boot启动连接到内存数据库H2的JPA应用程序需要哪些依赖项?
如何不通过任何配置来选择Hibernate作为JPA的默认实现?
指定的数据库连接信息在哪里?它是如何知道自动连接至H2的?
我们如何连接一个像 MSSQL或者orcale 一样的外部数据库?
面试题解析
Spring Cloud(叁拾伍题)
面试题
什么是Spring Cloud?
使用Spring Cloud有什么优势?
服务注册和发现是什么意思? Spring Cloud如何实现?
负载平衡的意义什么?
什么是Hystrix?它如何实现容错?
什么是Hystrix断路器?我们需要它吗?
什么是Ntlix Feign?它的优点是什么?
什么是Spring Cloud Bus?我们需要它吗?
什么是微服务
你所知道的微服务技术栈?
微服务之间是如何独立通讯的?
springcloud如何实现服务的注册?
Eureka和Zookeeper区别
eureka自我保护机制是什么?
什么是Ribbon?
什么是feigin?它的优点是什么?
Ribbon和Feign的区别?
什么是Spring Cloud Bus?
springcloud断路器作用?
Spring Cloud Gateway?
作为服务注册中心,Eurekal比kZookeeper好在哪里?
什么是Ribbon负裁均衡?
Ribbon负载均衡能干什么?
什么是zuu|路由网关
分布式配置中心能干嘛?
Hytrix相关注解
Eureka和zookeeper都可以提供服务注册与发现的功能,请说说两个的区别?
面试题解析
微服务(伍拾题)
知识点整理
服务注册发现
服务端发现
配置中心
面试题
微服务架构有哪些优势?
微服务有哪些特点?
设计微服务的最佳实践是什么?
微服务架构如何运作?
微服务架构的优缺点是什么? .
单片,SOA和微服务架构有什么区别? .
在使用微服务架构时,您面临哪些挑战?
SOA和微服务架构之间的主要区别是什么?
微服务有什么特点?
什么是领域驱动设计?
为什么需要域驱动设计(DDD) ?
什么是无所不在的语言?
什么是凝聚力?
什么是耦合?
什么是REST / RESTful以及它的用途是什么?
你对Spring Boot有什么了解?
什么是Spring引导的执行器?
什么是Spring Cloud?
Spring Cloud解决了哪些问题?
在Spring MVC应用程序中使用WebMvcTest注释有什么用处?
你能否给出关于休息和微服务的要点?
什么是不同类型的微服务测试?
您对Distributed Transaction有何了解?
什么是ldempotence以及它在哪里使用?
什么是有界上下文?
什么是双因素身份验证?
双因素身份验证的凭据类型有哪些?
什么是客户证书?
什么是微服务架构中的DRY?
什么是消费者驱动的合同(CDC) ?
Web,RESTful API在微服务中的作用是什么?
您对微服务架构中的语义监控有何了解?
我们如何进行跨功能测试?
我们如何在测试中消除非决定论?
Mock或Stub有什么区别?
您对Mike Cohn的测试金字塔了解多少?
Docker的目的是什么?
什么是金丝雀释放?
什么是持续集成(CI) ?
什么是持续监测?
架构师在微服务架构中的角色是什么?
我们可以用微服务创建状态机吗?
什么是微服务中的反应性扩展?
面试题解析
JavaOOP(壹佰零捌题)
什么是B/S架构?什么是C/S架构
Java都有那些开发平台?
什么是JDK?什么是JRE?
Java语言有哪些特点
面向对象和面向过程的区别
什么是数据结构?
Java的数据结构有那些?
什么是OOP?
类与对象的关系?
Java中有几种数据类型
标识符的命名规则。
instanceof关键字的作用
什么是隐式转换,什么是显式转换
Char类型能不能转成int类型?能不能转化成string类型,能不能转成double类型
什么是拆装箱?
Java中的包装类都是那些?
一个java类中包含那些内容?
那针对浮点型数据运算出现的误差的问题,你怎么解决?
面向对象的特征有哪些方面?
访问修饰符public,private,protected,以及不写 (默认)时的区别?
String是最基本的数据类型吗?
float f=3.4;是否正确?
shorts1 = 1;s1 = s1 + 1;有错吗?shorts1 = 1;s1 += 1;有错吗?
重载和重写的区别
在使用jdbc的时候,如何防止出现sq|注入的问题。
怎么在JDBC内调用一个存储过程
是否了解连接池,使用连接池有什么好处?
你所了解的数据源技术有那些?使用数据源有什么好处?
&和&&的区别
静态内部类如何定义
什么是成员内部类
Static Nested Class和Inner Class的不同
什么时候用assert
Java有没有goto
数组有没有length0这个方法? String有没有length0这个方法
用最有效率的方法算出2乘以8等於几
float型float f=3.4是否正确?
排序都有哪几种方法?请列举
静态变量和实例变量的区别?
说出一些常用的类,包,接口,请各举5个
a.hashCode0有什么用?与a.equals(b)有什么关系?
Java中的编译期常量是什么?使用它又什么风险?
在Java中,如何跳出当前的多重嵌套循环?
构造器(constructor) 是否可被重写(override) ?
两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对?
String和StringBuilder. StringBuffer 的区别?
重载(Overload) 和重写(Override) 的区别。重载的方法能否根据返回类型进行区分?
char型变量中能不能存贮一个中文汉字, 为什么?
抽象类(abstract class)和接口(interface) 有什么异同?
静态嵌套类(Static Nested Class)和内部类(Inner Class)的不同?
一个"java"源文件中是否可以包含多个类(不是内部类) ?有什么限制?
Anonymous Inner Class(匿名内部类)是否可以继承其它类?是否可以实现接口?
内部类可以引用它的包含类(外部类)的成员吗?有没有什么限制?
Java中的final关键字有哪些用法?
面试题解析
Java集合/泛型(贰拾肆题)
知识点整理
面试题
ArrayListIlinkedList的区别
HashMap和HashTable的区别
Collection包结构,与Collections的区别
泛型常用特点(待补充)
说说List,Set,Map三者的区别
Array与ArrayList有什么不一样?
Map有什么特点
集合类存放于Java.util 包中,主要有几种接口
什么是list接口
说说ArrayList (数组)
Vector ( 数组实现、线程同步)
说说LinkList (链表)
什么Set集合
HashSet ( Hash表)
什么是TreeSet (二叉树)
说说LinkHashSet ( HashSet+ LinkedHashMap)
HashMap (数组+链表+红黑树)
说说ConcurrentHashMap
HashTable (线程安全)
TreeMap (可排序)
LinkHashMap (记录插入顺序)
泛型类
类型通配符?
类型擦除
面试题解析
《Java架构师面试宝典》高清笔记电子书已经打包好了,可以通过下述步骤来获取。
Java异常(捌题)
知识点整理
概念:如果某个方法不能按照正常的途径完成任务,就可以通过另一种路径退出方法。在这种情况下会抛出一个封装了错误信息的对象。此时,这个方法会立刻退出同时不返回任何值。另外,调用这个方法的其他代码也无法继续执行,异常处理机制会将代码执行交给异常处理器。
面试题
Java中异常分为哪两种?
异常的处理机制有几种?
如何自定义一个异常
try catch finally, try里有return, finally还执行么?
Excption与Error包结构
Thow与thorws区别
Error与Exception区别?
error和exception有什么区别
面试题解析
JavaIO与NIO(拾伍题)
知识点整理
JAVA IO包
JAVA NIO:NIO主要有三大核心部分: Channel(通道), Buffer(缓冲区), Selector。传统IO基于字节流和字符流进行操作,而NIO基于Channel和Buffer(缓冲区)进行操作,数据总是从通道读取到缓冲区中,或者从缓冲区写入到通道中。Selector(选择区)用于 监听多个通道的事件(比如:连接打开,数据到达)。因此,单个线程可以监听多个数据通道。
Java nio包
面试题
Java中IO流?
Java IO与NIO的区别
常用IO类有哪些
字节流与字符流的区别
阻塞IO模型
非阻塞IO模型
多路复用IO模型
信号驱动IO模型
异步IO模型
面试题解析
Java反射(壹拾壹题)
知识点整理
动态语言:
动态语言,是指程序在运行时可以改变其结构:新的函数可以引进,已有的函数可以被删除等结构上的变化。比如常见的JavaScript就是动态语言,除此之外Ruby,Python等也属于动态语言,而C、C++则不属于动态语言。从反射角度说JAVA属于半动态语言。
反射机制概念(运行状态中知道类所有的属性和方法)
面试题
除了使用new创建对象之外,还可以用什么方法创建对象?
Java反射创建对象效率高还是通过new创建对象的效率高?
java反射的作用
哪里会用到反射机制?
反射的实现方式:
实现Java反射的类: .
反射机制的优缺点:
Java反射API
反射使用步骤(获取Class对象、调用对象方法)
获取Class对象有几种方法
利用反射动态创建对象实例
面试题解析
Java序列化(拾题)
知识点整理
JAVA序列化(创建可复用的Java对象)
面试题
什么是java序列化,如何实现java序列化?
保存(持久化)对象及其状态到内存或者碰盘
序列化对象以字节数组保持静态成员不保存
序例化用户远程对象传输
Serializable实现序列化
writeObject和readObject自定义序列化策略
序列化ID
序例化并不保存静态变量
Transient关键字阻止该变量被序列化到文件中
序列化(深clone—中实现)
面试题解析
Java注解(贰题)
知识点整理
概念:Annotation (注解)是Java提供的一种对元程序中元素关联信息和元数据(metadata) 的途径和方法。Annatation(注解)是一 个接口,程序可以通过反射来获取指定程序中元素的Annotation对象,然后通过该Annotation对象来获取注解中的元数据信息。
面试题
4种标准元注解是哪四种?
注解是什么?
面试题解析
多线程与并发(壹佰零捌题)
知识点整理
JAVA并发知识库
4种线程池:Java里面线程池的顶级接]是Executor,但是严格意义上讲Executor并不是一个线程池, 而只是一个执行线程的工具。真正的线程池接口是ExecutorService.
JAVA阻塞队列原理
阻塞队列的主要方法
面试题
Java中实现多线程有几种方法
继承Thread类
实现Runnable接口。
ExecutorService. Callable、 Future 有返回值线程
基于线程池的方式
4种线程池
如何停止一个正在运行的线程
notify()和notifyAll()有什么区别?
sleep()和wait()有什么区别?
volatile是什么?可以保证有序性吗?
Thread类中的start0和run0方法有什么区别?
为什么wait, notify 和htfifyAlI这些方法不在thread类里面?
为什么wait和notify方法要在同步块中调用?
Java中interrupted和isInterruptedd方法的区别?
Java中synchronized和Reentrantl ock有什么不同?
有三个线程T1,T2,T3,如何保证顺序执行?
SynchronizedMap和ConcurrentHashMap有什么区别?
什么是线程安全
Thread类中的yield方法有什么作用?
Java线程池中submit()和execute()方法有什么区别?
什么是线程安全? Vector是一个线程安全类吗?
volatile关键字的作用?
简述一下你对线程池的理解
线程生命周期(状态)
新建状态(NEW)
就绪状态(RUNNABLE)
运行状态(RUNNING)
阻塞状态(BLOCKED)
线程死亡(DEAD)
终止线程4种方式
start与run区别
什么是乐观锁
什么是悲观锁
什么是自旋锁
Synchronized同步锁
ReentrantL ock
Condition类和Object类锁方法区别区别
tryLock和lock和lockInterruptibly的区别
Semaphore信号量
Semaphore与ReentrantLock区别
可重入锁(递归锁)
公平锁与非公平锁
ReadWriteLock读写锁
共享锁和独占锁
重量级锁(Mutex Lock)
轻量级锁
偏向锁
分段锁
锁优化
线程基本方法
线程等待(wait)
线程睡眠(sleep)
线程让步(yield)
线程中断(interrupt)
Join等待其他线程终止
为什么要用join0方法?
线程唤醒(notify)
线程其他方法
进程
上下文
线程与进程的区别?
什么是多线程中的上下文切换?
死锁与活锁的区别,死锁与饥饿的区别?
Java中用到的线程调度算法是什么?
什么是线程组,为什么在Java中不推荐使用?
为什么使用Executor框架?
在Java中Executor和Executors的区别?
如何在Windows和Linux.上查找哪个线程使用的CPU时间最长?
什么是原子操作?在Java Concurrency API中有哪些原子类(atomic classes)?
Java Concurrency API中的Lock接口(Lock interface)是什么?对比同步它有什么优势?
什么是Executors框架?
什么是阻塞队列?阻塞队列的实现原理是什么?如何使用阻塞队列来实现生产者消费者模型?
什么是Callable和Future?
什么是FutureTask?使用ExecutorService启动任务。
什么是并发容器的实现?
多线程同步和互斥有几种实现方法,都是什么?
什么是竞争条件?你怎样发现和解决竞争?
为什么我们调用start0方法时会执行run()方法,为什么我们不能直接调用run()方法?
Java中你怎样唤醒一 个阻塞的线程?
在Java中CycliBarriar和CountdownLatch有什么区别?
什么是不可变对象,它对写并发应用有什么帮助
Java中用到的线程调度算法是什么?
什么是线程组,为什么在Java中不推荐使用?
面试题解析
《Java架构师面试宝典》高清笔记电子书已经打包好了,可以通过下述步骤来获取。
MongoDB(玖拾伍题)
知识点整理
概念
面试题
mongodb是什么?
mongodb有哪些特点?
你说的NoSQL数据库是什么意思?NoSQL与RDBMS直接有什么区别?为什么要使用和不使用NoSQL数据库?说一说NoSQL数据库的几个优点?
NoSQL数据库有哪些类型?
MySQL与MongoDB之间最基本的差别是什么?
你怎么比较MongoDB. CouchDB及CouchBase?
MongoDB成为最好NoSQL数据库的原因是什么?
journal回放在条目(entry)不完整时比如恰巧有一个中途故障了)会遇到问题吗?
分析器在MongoDB中的作用是什么?
名字空间(namespace)是什么?
如果用户移除对象的属性,该属性是否从存储层中删除?
能否使用日志特征进行安全备份?
允许空值nul吗?
更新操作立刻fsync到磁盘?
如何执行事务/加锁?
为什么我的数据文件如此庞大?
启用备份故障恢复需要多久?
什么是master或primary?
什么是secondary或slave?
我必须调用getLastError来确保写操作生效了么?
我应该启动一个集群分片(sharded)还是一个非集群分片的 MongoDB环境?
分片(sharding)和复制(replication)是怎样工作的?
数据在什么时候才会打展到多个分片(shard)里?
当我试图更新一个正在被迁移的块(chunk). 上的文档时会发生什么?
如果在一个分片(shard)停止或者很慢的时候,我发起一个查询会怎样?
我可以把moveChunk目录里的旧文件删除吗?
我怎么查看Mongo正在使用的链接?
如果块移动操作(moveChunk)失败了,我需要手动清除部分转移的文档吗?
getLastError的作用
分片(sharding) 和复制(replication) 是怎样工作的?
数据在什么时候才会扩展到多个分片(shard) 里?
当我试图更新一个正在被迁移的块(chunk).上的文档时会发生什么?
我怎么查看Mongo正在使用的链接?
mongodb的结构介绍
数据库的整体结构
MongoDB是由哪种语写的
MongoDB的优势有哪些
什么是集合
什么是文档
什么是"mongod"
"mongod"参数有什么
什么是"mongo"
MongoDB哪个命令可以切换数据库
什么是非关系型数据库
非关系型数据库有哪些类型
为什么用MOngoDB?
在哪些场景使用MongoDB
MongoDB中的命名空间是什么意思?
哪些语言支持MongoDB?
在MongoDB中如何创建一个新的数据库
在MongoDB中如何查看数据库列表
MongoDB中的分片是什么意思
在MongoDB中如何创建一个集合。
在MongoDB中如何查看一个已经创建的集合
在MongoDB中如何删除一个集合
为什么要在MongoDB中使用分析器
MongoDB支持主键外键关系吗
MongoDB支持哪些数掘类型
为什么要在MongoDB中用"Code数据类型
为什么要在MongoDB中用Regular Expession数据类型
为什么在MongoDB中使用"Object ID"数据类型
面试题解析
RabbitMQ(叁拾贰题)
知识点整理
概念
Exchange类型
面试题
什么是rabbitmq
为什么要使用rabbitmq
使用rabbitmq的场景
如何确保消息正确地发送至RabbitMQ?如何确保消息接收方消费了消息?
如何避免消息重复投递或重复消费?
消息基于什么传输?
消息如何分发?
消息怎么路由?
如何确保消息不丢失?
使用RabbitMQ有什么好处?
RabbitMQ的集群
mq的缺点
Kafka. ActiveMQ、 RabbitMQ. RocketMQ 都有什么区别?
如何保证高可用的?
如何保证消息的可靠传输?如果消息丢了怎么办
如何保证消息的顺序性
设计MQ的思路
什么是Message?
什么是Publisher ?
什么是Exchange (将消息路由给队列)
什么是Binding (消息队列和交换器之间的关联)
什么是Queue?
什么是Connection ?
什么是Channel?
什么是Consumer ?
什么是Virtual Host ?
什么是Broker?
Exchange型?
Direct键(routing key)分布?
Fanout (广播分发) ?
topic交换器(模式匹配) ?
面试题解析
Dubbo(肆拾题)
面试题
为什么要用Dubbo?
Dubbo的整体架构设计有哪些分层?
默认使用的是什么通信框架,还有别的选择吗?
服务调用是阻塞的吗?
一般使用什么注册中心? 还有别的选择吗?
默认使用什么序列化框架,你知道的还有哪些?
服务提供者能实现失效踢出是什么原理?
服务上线怎么不影响旧版本?
如何解决服务调用链过长的问题?
同一个服务多个注册的情况下可以直连某-个服务吗?
画一画服务注册与发现的流程图?
Dubbo集群容错有几种方案?
Dubbo服务降级,失败重试怎么做?
Dubbo使用过程中都遇到了些什么问题?
Dubbo Monitor实现原理?
Dubbo用到哪些设计模式?
Dubbo配置文件是如何加载到Spring中的?
Dubbo SPI和Java SPI区别?
Dubbo支持分布式事务吗?
Dubbo可以对结果进行缓存吗?
服务上线怎么兼容旧版本?
Dubbo必须依赖的包有哪些?
Dubbo telnet命令能做什么?
Dubbo支持服务降级吗?
Dubbo如何优雅停机?
Dubbo和Dubbox之间的区别?
Dubbo和Spring Cloud的区别?
你还了解别的分布式框架吗?
Dubbo是什么?
Dubbo默认使用什么注册中心,还有别的选择吗?
Dubbo有哪几种配置方式?
Dubbo支持分布式事务吗?
Dubbo支持服务降级吗?
Dubbo如何优雅停机?
服务提供者能实现失效踢出是什么原理?
如何解决服务调用链过长的问题?
服务读写推荐的容错策略是怎样的?
Dubbo必须依赖的包有哪些?
Dubbo的管理控制台能做什么?
说说Dubbo服务暴露的过程。
Dubbo停止维护了吗?
Dubbo和Dubbox有什么区别?
你还了解别的分布式框架吗?
Dubbo能集成Spring Boot吗?
在使用过程中都遇到了些什么问题?
你读过Dubbo的源码吗?
你觉得用Dubbo好还是Spring Cloud好?
面试题解析
MyBatis(贰拾捌题)
知识点整理
Mybatis缓存Mybatis中有一级缓存和二级缓存,默认情况下一级缓存是开启的,而且是不能关闭的。一级缓存是指SqISession级别的缓存,当在同一个SqlSession中进行相同的SQL语句查询时,第二次以后的查询不会从数据库查询,而是直接从缓存中获取,一级缓存最多缓存 1024条SQL。二级缓存是指可以跨SqlSession的缓存。是mapper级别的缓存,对于mapper级别的缓存不同的sqlsession是可以共享的。
面试题
什么是Mybatis?
Mybaits的优点
MyBatis框架的缺点
MyBatis框架适用场台
MyBatis与Hibernate有哪些不同?
如何获取自动生成的(主)键值?
在mapper中如何传递多个参数?
Mybatis动态sql有什么用?执行原理?有哪些动态sq|?
Xml映射文件中,除了常见的selectlinsertlupdaeldelete标签之外, 还有哪些标签?
Mybatis的Xml映射文件中,不同的Xml映射文件,id是否可以重复?
为什么说Mybatis是半自动ORM映射工具?它与全自动的区别在哪里?
一对一、一对多的关联查询?
MyBatis实现一对一有几种方式?具体怎么操作的?
MyBatis实现一对多有几种方式怎么操作的?
Mybatis是否支持延迟加载?如果支持,它的实现原理是什么?
Mybatis的一级、二级缓存
什么是MyBatis的接绑定?有哪些实现方式?
使用MyBatis的mapper接口调用时有哪些要求?
Mapper编写有哪几种方式?
简述Mybatis的插件运行原理,以及如何编写-个插件。
MyBatis实现一对一 有几种方式?具体怎么操作的?
面试题解析
ZooKeeper(肆拾玖题)
知识点整理
Zookeeper概念
面试题
Zookeeper如何保证了分布式一致性特性?
ZooKeeper提供了什么?
Zookeeper文件系统
ZAB协议?
四种类型的数据节点Znode
Zookeeper Watcher机制-数据变更通知
客户端注册Watcher实现
服务端处理Watcher实现
ACL权限控制机制
Chroot特性
会话管理
服务器角色
Zookeeper下Server工作状态
数据同步
zookeeper是如何保证事务的顺序一致性的?
zk节点宕机如何处理?
zookeeper负戴均衡和nginx负戴均衢区别
分布式集群中为什么会有Master?
Zookeeper有哪几种几种部署模式?
集群最少要几台机器,集群规则是怎样的?
集群支持动态添加机器吗?
Zookeeper集群管理(文件系统、通知机制) **
Zookeeper分布式锁(文件系统、通知机制*)
Zookeeper队列管理(文件系统、通知机制)
Zookeeper角色
务编号Zxid (事务请求计数器+ epoch)
epoch
Zab协议有两种模式恢复模式(选主) .广擢模式(同步)
Leader election (选举阶段选出准Leader)
Discovery (发现阶段接受提议、生成epoch.接受epoch)
Synchronization (同步阶段-同步follower副本)
Broadcast (广播阶段-leader消息广播)
ZAB协议JAVA实现(FLE-发现阶段和同步台并为Recovery Phase (恢复阶段) )
投票机制
Zookeeper工作原理(原子广播)
Znode有四种形式的目录节点.
面试题解析
数据结构(玖题)
面试题
栈(stack) ;
队列(queue)
链表(Link)
散列表(Hash Table)
排序二叉树
前缀树
红黑树
B-TREE
位图
面试题解析
算法(贰拾壹题)
知识点整理
二分查找
剪枝算法
面试题
数据里有{1,2,3,4,5,6,7,8,9},请随机打乱顺序,生成一个新的数组(请以代码实现)
写出代码判断一个整数是不是2的阶次方(请代码实现,谢绝调用API方法)
假设今日是2015年3月1日,星期日,请算出13个月零6天后是星期几,距离现在多少天(请用代码实现,谢绝调用API方法)
有两个篮子,分别为A和B ,篮子A里装有鸡蛋,篮子B里装有苹果,请用面向对象的思想实现两个篮子里的物品交换(请用代码实现)
二分查找
冒泡排序算法
插入排序算法
快速排序算法
希尔排序算法
归并排序算法
桶排序算法
基数排序算法
剪枝算法
回溯算法
最短路径算法
最小生成树算法
AES
RSA
CRC
MD5
面试题解析
《Java架构师面试宝典》高清笔记电子书已经打包好了,可以通过下述步骤来获取。
Elasticsearch(贰拾肆题)
面试题
elasticsearch了解多少。说说你们公司es的集群架构,索引数据大小,分片有多少,以及一些调优手段。
elasticsearch的倒排索引是什么
elasticsearch索引数据多了怎么办,如何调优,部署
elasticsearch是如何实现master选举的
详细描述一下Elasticsearch索弓|文档的过程
详细描述一下 Elasticsearch搜索的过程?
Elasticsearch在部署时,对Linux的设置有哪些优化方法
lucence内部结构是什么?
Elasticsearch是如何实现Master选举的?
详细描述一下Elasticsearch 索引文档的过程。
详细描述一下 Elasticsearch更新和删除文档的过程。
详细描述一下Elasticsearch搜索的过程
在Elasticsearch中,是怎么根据-个词找到对应的倒排索引的?
Elasticsearch在部署时,对Linux的设置有哪些优化方法?
对于GC方面,在使用Elasticsearch时要注意什么?
Elasticsearch对于大数据量( 上亿量级)的聚合如何实现?
在并发情况下,Elasticsearch 如果保证读写-致?
如何监控Elasticsearch集群状态?
介绍下你们电商搜索的整体技术架构
介绍一下你们的个性化搜索方案?
是否了解字典树?
拼写纠错是如何实现的?
面试题解析
Kafka(贰拾伍题)
知识点整理
Kafka概念:Kafka是一种高吞吐量、分布式、基于发布/订阅的消息系统,最初由LinkedIn 公司开发,使用Scala语言编写,目前是Apache的开源项目。
面试题
Kafka是什么
partition的数据文件(offset, MessageSize, data)
数据文件分段segment (顺序读写.分段命令、二分查找)
负载均衡(partition 会均衡分布到不同broker.上)
批量发送
压缩(GZIP 或Snappy)
消费者设计
Consumer Group
如何获取topic主题的列表
生产者和消费者的命令行是什么?
consumer是推还是拉?
讲讲kafka维护消费状态跟踪的方法
讲一下主从同步
为什么需要消息系统,mysql 不能满足需求吗?
Zookeeper对于Kafka的作用是什么?
Kafka判断一个节 点是否还活着有那两个条件?
Kafka与传统MQ消息系统之间有三个关键区别
讲一讲kafka的ack的三种机制
消费者如何不自动提交偏移量,由应用提交?
消费者故障,出现活锁问题如何解决?
如何控制消费的位置
kafka分布式(不是单机)的情况下,如何保证消息的顺序消费?
kafka的高可用机制是什么?
kafka如何减少数据丢失
kafka如何不消费重复数据?比如扣款,我们不能重复的扣。
面试题解析
Linux(肆拾捌题)
面试题
绝对路径用什么符号表示?当前目录、上层目录用什么表示?主目录用什么表示?切换目录用什么命令?
怎么查看当前进程?怎么执行退出?怎么查看当前路径?
怎么清屏?怎么退出当前命令?怎么执行睡眠?怎么查看当
Ls命令执行什么功能?可以带哪些参数,有什么区别?
查看文件有哪些命令
列举几个常用的Linux命令
你平时是怎么查看日志的?
建立软链接(快捷方式),以及硬链接的命令
目录创建用什么命令?创建文件用什么命令?复制文件用什么命令?
查看文件内容有哪些命令可以使用?
随意写文件命令?怎么向屏幕输出带空格的字符串,比如"hello world"?
终端是哪个文件夹下的哪个文件?黑洞文件是哪个文件夹下的哪个命令?
移动文件用哪个命令?改名用哪个命令?
复制文件用哪个命令?如果需要连同文件夹-块复制呢? 如果需要有提示功能呢?
删除文件用哪个命令?如果需要连目录及目录下文件一块删除呢? 删除空文件夹用什么命令?
Linux下命令有哪几种可使用的通配符?分别代表什么含义?
用什么命令对一个文件的内容进行统计? (行号.单词数、字节数)
Grep命令有什么用?如何忽略大小写?如何查找不含该串的行?
Linux中进程有哪几种状态?在ps显示出来的信息中分别用什么符号表示的?
怎么使一个命令在后台运行?
利用ps怎么显示所有的进程?怎么利用ps查看指定进程的信息?
哪个命令专用来查看后台任务?
把后台任务调到前台执行使用什么命令?把停下的后台任务在后台执行起来用什么命令?
终止进程用什么命令?带什么参数?
怎么查看系统支持的所有信号?
搜索文件用什么命令?格式是怎么样的?
查看当前谁在使用该主机用什么命令?查找自己所在的终端信息用什么命令?
使用什么命令查看用过的命令列表?
使用什么命令查看磁盘使用空间?空闲空间呢?
怎么对命令进行取别名?
du和df的定义,以及区别?
awk详解。
当你需要给命令绑定一个宏或者按键的时候, 应该怎么做呢?
如果一个linux新手想要知道当前系统支持的所有命令的列表,他需要怎么做?
如果你的助手想要打印出当前的目录栈,你会建议他怎么做?
面试题解析
最后总结
在找工作的时候,除了做些相关面试和准备熟悉以前做的项目之外,还应该学习新的知识。毕竟,每多学一点,成功找到工作的机会就大一点。而且,IT这行,技术发展过于快速,如果没有学习新知识的动力,终究会被淘汰。
因为学习实在是很枯燥无味。学习是一个长期投资,短期很难道看到收益,而娱乐是一项短期投资,短时间便可以看到收益。所以学习这块最好可以给自己定一个目标,每天学习一点,慢慢的会达到的。如果没有动力的话,可以给自己设置奖励。这是可以激发学习的兴趣的。
还有一点,今天能做完的事情,绝对不要留给明天。毕竟,人都是有惰性的。你要相信你自己,今天的你能做的没有做,明天的你也不会做的。
《Java架构师面试宝典》高清笔记电子书已经打包好了,可以通过下述步骤来获取。
另外分享一份1000+道的《最新大厂面试题指南PDF》,可以下载学习
PPT领取方式:
看完本文记得给作者点赞+在看哦~~~大家的支持,是作者源源不断出文的动力。