Java开发面试题总结

文章目录

      • 前端知识
      • JAVA基础
        • 集合相关
        • 多线程相关
      • JVM相关
      • 框架
        • Spring
        • SpringMVC
        • MyBatis
        • SpringBoot
        • SpringCloud
        • Dubbo(会问源码)
      • 数据库
        • 索引
        • 事务
      • Git
      • Redis (考的特别多)
      • 消息中间件
      • Zookeeper
      • Docker
      • 搜索引擎相关
      • 业务场景相关
      • 算法相关
      • Linux

前端知识

1、session和Cookie的区别

JAVA基础

1、方法重写和重载
2、类的加载机制
3、自定义注解的实现,自定义注解中的注解有哪些?@Target
里面的参数分别是什么?在实际开发中有没有用过自定义注解,怎么用的?
4、String str = “abc” 和 String str = new String(“abc”)的区别?它们相等么?它们的内存分配
5、Bio和Nio的区别?
6、Nio的实现原理,从Nio的通道,缓冲区,selector选择器说起
7、IO多路复用的实现原理
8、实际开发中运行反射原理的地方有哪些?
9、说下volatile关键字的作用
10、什么是缓存穿透?
11、ConCurrentHashMa是如何做到高并发的?
12、动态代理的实现方式?CgLib和jdk的代理有什么区别?

集合相关

1、hashMap的底层实现原理,为什么扩容的时候是以2的冪次进行扩容,扩容之后如何将老的数组移到新的数组上的?
2、arrayList的底层实现原理,扩容机制
3、hashSet的底层实现原理,hashSet与arrayList的区别?
4、ConcurrentHashMap的实现原理,与hashMap的区别
5、HashTable与HashMap的区别?
6、TreeSet和HashSet的区别?
7、TreeMap的底层实现,二叉树,平衡树,B+树
8、什么是跳跃列表?简称跳表

多线程相关

1、线程和进程的区别
2、线程的状态有哪些
3、创建线程的方式有哪些
4、创建线程池的方式有哪些,核心参数是哪些?核心参数的意义
5、线程池的队列有哪些?
6、什么是可重入锁,可重入锁的实现原理?通过可重入锁,可以说到AQS
7、公平锁和共享锁的实现原理是什么?为什么默认是非公平锁?好处是什么?
8、使用 synchronized 关键字,如果在锁中出错了,怎么办,如何进行锁的释放?考的是lock,unlock,finally中进行锁的释放。
9、synchronized 关键字的底层实现?
10、什么是守护线程?
11、CountDownLatch是如何使用的?
12、ThreadPoolTaskExecutor线程池使用过么?如何使用的?底层原理是什么?
13、ArrayBlockingQueue 与 LinkedBlockingQueue的区别?
14、wait() 与 Thread.sleep() 的区别?哪些是会释放锁资源的?

JVM相关

1、jvm的内存模型,类加载时都存放在哪些区域
2、jvm的方法区中有哪些东西?
3、jvm的内存分配策略
4、jvm的垃圾回收算法
5、对eden区的监控指标是什么?老年代的呢?
6、Class文件中包含哪些东西?
7、说下对GC roots的理解
8、jvm oom内存溢出的处理流程?考察的是jstack的命令,如何定位问题
9、java中引用类型都有哪些?强引用,弱引用,软引用,虚引用等

框架

Spring

1、过滤器和拦截器的区别
2、Spring IOC,AOP的原理,实际开发中有没有针对AOP的实现
3、Aop的底层实现是什么样的?
3、@Resource注解和@AutoWire注解区别

SpringMVC

1、springmvc的运行流程
2、@RequestBody和@ResponseBody如何进行前后端参数绑定的,考的是有没有跟过源码

MyBatis

1、myBatis xml文件中 #{} 和 ${} 接收参数的区别,为什么 #{} 可以防sql注入?mysql是如何执行语句的?mysql预编译的过程
2、myBatis xml文件中的标签有哪些,动态sql的通过标签如何实现?
3、mybatis的常用注解,@Mapper @Param
4、xml文件是如何进行解析,加载的,考的有没有跟过mybatis的源码
5、mybatis的一二级缓存

SpringBoot

1、springBoot的运行流程,初始化配置的时候,初始化的是哪些东西(说具体点,精确到类)
2、springBoot的常用注解有哪些,怎么实现的?
3、@conditionOnClass相关注解,分别是什么意思?

SpringCloud

1、说下微服务的缺点?说出几点
2、SpringCloud的实现原理

Dubbo(会问源码)

1、Dubbo框架的应用,如何实现与第三方进行交互(zk,注册中心)
2、Dubbo的底层协议是什么(Netty),了解Netty么
3、dubbo是如何实现可插拔式的?dubbo+zk可以,dubbo+redis也可以
4、dubbo的 register provider consumer标签中分别有什么东西?
5、dubbo序列化的过程是怎样的?反序列化是不是会影响单例模式?readObject(),writeObject()实现

数据库

1、给定一个学生表,学生成绩表,要求学生的各科成绩的总和,以报表的形式呈现。行转列
2、如何优化线上的慢sql的?
3、如何通过sql语法实现 表锁或行锁?
4、一个联合索引,一个时间范围的索引,查询的时候2个都会走索引么?

索引

1、说下聚集索引
2、说下对B+树的理解,如何能从二叉树,平衡二叉树,说到B+树最好
3、mysql InnoDB引擎是 如何存储数据的
4、在插入数据的过程中,如果一页的数据已经满了,但是我还想要往这页里面插入数据,怎么办?考的 页分裂技术
5、mysql索引树是如何维护的,为什么使用索引查询数据比较快?
6、mysql为什么不用Hash索引?而用的是B+树索引

事务

1、事务的隔离级别
2、分布式事务是如何实现的?

Git

1、如何将另外一个分支的指定版本合并到自己的分支上?

Redis (考的特别多)

1、redis的五大数据类型,经常都怎么用,list的数据结构是什么样的? set和zset的区别?hash的数据结构,zset有序列表的底层实现是什么?
2、redis是单线程的,为什么我们还要去使用它呢?redis的使用场景
3、redis分布式锁的实现?如何防止死锁
4、redis的集群,存一条数据进redis,redis集群都会有这条数据么?是如何去分发的?
5、redis的主从模式
6、redis为什么是单线程的,而不采用多线程呢,多线程不更快么?
7、redis的常用命令
8、redis的LRU算法
9、第三方分布式锁 redission,有没有了解
10、了解CAP么?redis的CAP原理是怎样的?

消息中间件

1、RabbitMq的实现原理
2、说下对死信队列了解

Zookeeper

1、zookeeper是干嘛用的?
2、zookeeper的节点类型有哪几种?

Docker

1、对Docker了解么?

搜索引擎相关

1、ES搜索引擎了解么?

业务场景相关

1、30个学生的英语成绩都知道,放在缓存中,按照成绩排序,取出最大的前10位。命令是什么?
2、工作流,activity了解么,底层是如何实现的?业务中你们是怎么使用的?
3、C 同时调用A接口,B接口;调用A接口耗时为80ms,调用B接口是30ms,现在需要优化接口性能,将其优化到 55ms以内,怎么做?考的是 CountDownLatch 的使用

算法相关

1、从1 加到 1000000,要求时间复杂度是O(1),如何实现?
2、在1000000查找一个数字,要求最快的实现方式,考的是二分查找法

Linux

1、查询某个进程的 cpu 占用率

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