JAVA中级常见面试题总结

JAVA四年面试到的题目总结,还有在各种博客文章里面看到的觉得有意义的题目(大神勿怪)。
欢迎补充~
目前还没有标注答案,之后会慢慢补充~

一、基础知识

1.arraylist 和linkedlist原理及区别
2.Hashmap、CurrentHashMap和hashtable原理及区别
3.Java虚拟机 内存泄露和内存溢出 堆栈
4.数据库-1联合索引单独使用2索引都会被使用吗3存储过程和写sql在代码里的区别
5.Servlet和jsp的区别
6.连接池机制
7.Struts的运行机制 线程安全多实例的,是否是线程安全的 是否是单例的
8.Springmvc 是否线程安全的 是单例的
9.springMvc的运行流程
10.Spring的特点 ioc 注入方式 aop运用场景
11.单例模式实现方法 但是多线程同时使用
12.Redis持久化
13.Redis和ehcache 是存在内存还是硬盘中的
14.Redis和memcached的区别
15.Redis集群
16.Activemq中间服务
17.Linux 常用命令
18.一个同步方法一个非同步方法 需要等待吗
19.两个同步方法需要等待吗
20.Restful
21.Soa
22.Hibernate 和 mybatis
23.Spring mvc
24.线程池
25.实现线程的两种方式及区别
26.设计模式 观察者 适配器 代理 单例(懒汉 饿汉) 工厂
27.Oracle和mysql
28.Dubbo redis springboot springcloud
29.acitvitMq的特点
30.Hashmap的底层实现原理
31.为什么要重写hashcode和equals
32.代理模式和装饰模式运用场景区别
33.Aop和代理 静态代理动态代理
34.Spring的优点
35.Ioc的好处
36.工作流的机制
37.Shiro
38.分布式的理解
39.List排序
40.Lucene
41.http传输协议 tcp
42.Mysql
43.Java基本类型哪些,所占字节和范围
44.Set、List、Map的区别和联系
45.什么时候使用Hashmap
46.什么时候使用Linkedhashmap、Concurrenthashmap、Weakhashmap
47.哪些集合类是线程安全的
48.为什么Set、List、map不实现Cloneable和Serializable接口
49.Concurrenthashmap的实现,1.7和1.8的实现
50.Arrays.sort的实现
51.什么时候使用CopyOnArrayList
52.volatile的使用
53.synchronied的使用
54.reentrantlock的实现和Synchronied的区别
55.CAS的实现原理以及问题
56.AQS的实现原理
57.接口和抽象类的区别,什么时候使用
58.面向对象和面向过程区别
59.类加载机制的步骤,每一步做了什么,static和final修改的成员变量的加载时机
60.双亲委派模型
61.反射机制:反射动态擦除泛型、反射动态调用方法等
62.动态绑定:父类引用指向子类对象
63.JVM内存管理机制:有哪些区域,每个区域做了什么
64.JVM垃圾回收机制:垃圾回收算法 垃圾回收器 垃圾回收策略
65.jvm参数的设置和jvm调优
66.什么情况产生年轻代内存溢出、什么情况产生年老代内存溢出
67.内部类:静态内部类和匿名内部类的使用和区别
68.Redis和memcached:什么时候选择redis,什么时候选择memcached,内存模型和存储策略是什么样的
69.MySQL的基本操作 主从数据库一致性维护
70.mysql的优化策略有哪些
71.mysql索引的实现 B+树的实现原理
72.什么情况索引不会命中,会造成全表扫描
73.java中bio nio aio的区别和联系
74.为什么bio是阻塞的 nio是非阻塞的 nio是模型是什么样的
75.Java io的整体架构和使用的设计模式
76.Reactor模型和Proactor模型
77.http请求报文结构和内容
78.http三次握手和四次挥手
79.rpc相关:如何设计一个rpc框架,从io模型 传输协议 序列化方式综合考虑
80.Linux命令 统计,排序,前几问题等
81.StringBuff 和StringBuilder的实现,底层实现是通过byte数据,外加数组的拷贝来实现的
82.cas操作的使用
83.内存缓存和数据库的一致性同步实现
84.微服务的优缺点
85.线程池的参数问题
86.ip问题 如何判断ip是否在多个ip段中
87.判断数组两个中任意两个数之和是否为给定的值
88.乐观锁和悲观锁的实现
89.synchronized实现原理
90.你在项目中遇到的困难和怎么解决的
91.你在项目中完成的比较出色的亮点
92.消息队列广播模式和发布/订阅模式的区别
93.生产者消费者代码实现
94.死锁代码实现
95.线程池:参数,每个参数的作用,几种不同线程池的比较,阻塞队列的使用,拒绝策略
96.Future和ListenableFuture 异步回调相关
97.算法相关:判断能否从数组中找出两个数字和为给定值,随机生成1~10000不重复并放入数组,求数组的子数组的最大和,二分查找算法的实现及其时间复杂计算
98.字符流 字节流区别
99.mybatis是如何管理session和cache的
100.spring里面有哪些你熟悉的设计模式

二、常用设计模式

1.单例模式:懒汉式、饿汉式、双重校验锁、静态加载,内部类加载、枚举类加载。保证一个类仅有一个实例,并提供一个访问它的全局访问点。
2.代理模式:动态代理和静态代理,什么时候使用动态代理。
3.适配器模式:将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。装饰者模式:动态给类加功能。
4.观察者模式:有时被称作发布/订阅模式,观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己。
5.策略模式:定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。
6.外观模式:为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
7.命令模式:将一个请求封装成一个对象,从而使您可以用不同的请求对客户进行参数化。
8.创建者模式:将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。
9.抽象工厂模式:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。

三、其它

1.算法:常用排序算法,二分查找,链表相关,数组相关,字符串相关,树相关等
2.常见序列化协议及其优缺点
3.memcached内存原理,为什么是基于块的存储
4.搭建一个rpc需要准备什么
5.如果线上服务器频繁地出现full gc ,如何去排查
6.如果某一时刻线上机器突然量变得很大,服务扛不住了,怎么解决
7.LUR算法的实现
8.LinkedHashMap实现LRU
9.定义栈的数据结构,请在该类型中实现一个能够找到栈最小元素的min函数
10.海量数据处理的解决思路
11.reactor模型的演变
12.阻塞、非阻塞、同步、异步区别
13.Collection的子接口
14.jvm调优相关
15.zookeeper相关,节点类型,如何实现服务发现和服务注册
16.nginx负载均衡相关,让你去实现负载均衡,该怎么实现
17.linux命令,awk、cat、sort、cut、grep、uniq、wc、top等
18.压力测试相关,怎么分析,单接口压测和多情况下的压测
19.你觉得你的有点是什么,你的缺点是什么
20.spring mvc的实现原理
21.netty底层实现,IO模型,ChannelPipeline的实现和原理
22.缓存的设计和优化
23.缓存和数据库一致性同步解决方案
24.你所在项目的系统架构,谈谈整体实现
25.消息队列的使用场景
26.ActiveMQ、RabbitMQ、Kafka的区别

你可能感兴趣的:(面试)