Java常见面试题

以下题目是本人(工作一年跳槽)面试的真实经历,记录了以下面试官常问的问题。这儿就不给具体答案了,有些东西我自己也不知道,大家可以自行百度。

Java基础

  1. JVM内存分配原理,垃圾回收原理,垃圾回收算法
  2. 常见集合List、Map、Set的几种实现类的区别、底层实现原理以及使用场景
  3. LinkedHashMap如何保证有序的以及扩容机制
  4. 多线程创建的几种方式,现场池的原理和你常使用的线程池的类,自定义线程池
  5. 现场安全问题,synchronized、volatile 以及Lock的实现、区别、使用场景
  6. ThreadLocal的作用及使用场景
  7. Stream流操作过程中的几个常见方法及其作用
  8. hashCode()和equals()什么时候需要重写,为什么两个方法必须一起重写?

Spring

  1. Spring IOC和AOP 的实现原理,底层实现技术(反射 + 设计模式)
  2. Spring的启动过程(经常问)
  3. Spring的Bean的生命周期(经常问)
  4. SpringMVC原理
  5. SpringBoot的启动流程,自动装配的实现
  6. SpringBoot和SpringCloud的区别

Redis(PS:Redis是单线程的)

  1. Redis 数据类型(String、List、Map、Set、ZSet)
  2. Set和ZSet的区别,ZSet什么场景使用,以及如何使用(热度排行榜)
  3. Redis有哪些作用?(缓存、消息队列、分布式锁
  4. Redis的主从、哨兵、集群模式的区别
    主从:一主多从,主从服务存存储一样的数据,主用于写,从用于读,提高了一定的效率;
    哨兵:解决了主服务器宕机后的服务失效问题,自动切换从服务器为主服务器;
    集群:在哨兵模式基础上真正意义上解决了分布式存储问题,有多个主服务器,每个主服务器可以有多个从服务器;同主从模式一样,主用于写,从用于读;但不同的是主服务器之间使用卡槽原理,将整个Redis集群分成了16384个卡槽,这些主服务器平分这些卡槽,采用crc16算法计算每个数据要存储的具体卡槽。每个主服务器存储的数据不一样
  5. Redis分布式锁如何实现?
    setnx()命令可以实现,但是在高并发场景下可能出现问题,推荐使用Redisson中间件实现
  6. Redis持久化机制(RDB和AOF)
  7. Redis集群如何扩容
  8. MySQL和Redis双写不一致问题如何解决?
    延迟双删:不推荐,只是减少了这种概率,不能从根本上解决问题,并且会影响系统的性能;
    Redisson的读锁和写锁:对读操作加读锁,其他线程可以继续读;对写操作加写锁。
  9. Redis为什么快?(基于内存 + 多路复用技术)

MySQL

  1. MySQL存储引擎(MyISAM和InnoDB)的区别,PS:存储引擎是针对表的,不是数据库
  2. MySQL索引类型、索引优化、索引底层结构及原理
  3. MySQL优化(几乎所有面试都会问)
    分库分表、索引、SQL语句等
  4. MySQL执行计划怎么查看?(explain关键字),如何理解其中各个字段的含义
  5. in关键字和exists关键字的区别及使用场景
  6. 乐观锁及悲观锁如何实现,使用场景
    乐观锁:加version字段,每次跟新比较是否相同
    悲观锁:
    • for update(排他锁):MySQL为每个INSERT、UPDATE、DELETE语句自动加for update,此锁属于行级锁,SELECT语句不加任何锁
    • lock in share mode(共享锁)
  7. MySQL去重关键字(distinct)

设计模式(经常问)

自己在项目中用到哪些设计模式,什么场景下使用的?(经常问)
Spring中用到了哪些设计模式,用在哪里?
JDK用到哪些设计模式,体现在哪里?

分布式

由于我本人之前的工作没有接触过分布式,所以面试官问的相对少

  1. SpringCloud的插件及作用
  2. SpringCloud解决了CAP中的什么问题
  3. Dubbo服务调用过程
  4. Dubbo核心组件、序列化机制、注册中心
  5. Dubbo和SpringCloud的区别(Dubbo是底层是RPC,SpringCloud是RESTful)
  6. Zookeeper的ZAB协议
  7. Zookeeper解决了CAP中的什么问题
  8. Zookeeper如何实现分布式锁的
  9. 分布式锁和分布式事务如何处理

消息队列等中间件

  1. RabbitMQ用来干啥?如何保证可靠性投递
  2. RabbitMQ底层主要组件等等

项目问题

这个结合自己的项目回答就好了,但一般主要还是根据你项目中所用到的技术来问

  1. 你的项目主要功能?解决了什么问题?
  2. 你在项目中使用了哪些设计模式,什么场景使用的?如何实现的?(经常问)
  3. 项目中用的技术都用在哪些地方实现了什么功能?(比如:Redis:实现了缓存和分布式锁,如何实现的?缓存是读缓存还是写缓存?为什么这样做?)
  4. 你工作过程中有没有SQL优化经历,怎么优化的?(经常问)
  5. Linux下的问题排查经验有没有?怎么排查的?日志如何查看的?
  6. 你工作中遇到的最棘手的问题是什么?如何解决的?
  7. 现在让你实现一个分布式框架,你觉得应该考虑哪些问题?
  8. 为什么跳槽?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值