JAVA面试题整理2023-06-28不断更新

有一些是从别的地方看到的比较好的面试题和一些自己面试不是很清楚或者回答不好的问题

  1. 介绍服务降级和熔断

  2. 服务限流和降级有什么区别

  3. 服务降级原理

  4. 服务限流原理(算法)

  5. 怎么实现令牌桶

  6. 令牌桶中令牌用对象还是计数器,各有什么优缺点(生命周期)

  7. 令牌生产和消费策略

  8. 令牌生产和消费在一个桶和两个桶怎么控制

  9. 怎么保证不脏写

  10. 介绍垃圾回收算法

  11. 介绍复制回收算法

  12. 哪种垃圾回收算法效率最低

  13. 详细介绍标记算法,标记清除流程

 算法相关的

  • 请问,Object作为HashMap的key的话,对Object有什么要求吗?

  • 请问 hashset 存的数是有序的吗?

  • 输入一个二叉树和一个整数,打印出二叉树中节点值的和等于输入整数所有的路径

  • 二叉树的搜索区间

  • 现在有一个单向链表,谈一谈,如何判断链表中是否出现了环

  • 随机链表的复制

  • 找出数组中和为S的一对组合,找出一组就行

  • 求一个数组中连续子向量的最大和

  • 谈一谈,如何得到一个数据流中的中位数?

  • 你知道哪些排序算法,这些算法的时间复杂度分别是多少,解释一下快排?

  • 请你解释一下,内存中的栈(stack)、堆(heap) 和静态区(static area) 的用法。

  • 说一说,heap和stack有什么区别。

  • 请你设计一个算法,用来压缩一段URL?

  • 谈一谈,id全局唯一且自增,如何实现?

  • 一个长度为N的整形数组,数组中每个元素的取值范围是[0,n-1],判断该数组否有重复的数,请说一下你的思路并手写代码

  • 请问求第k大的数的方法以及各自的复杂度是怎样的,另外追问一下,当有相同元素时,还可以使用什么不同的方法求第k大的元素

  • 判断一个链表是否为回文链表,说出你的思路并手写代码

mysql聚簇索引和非聚簇索引的区别是什么?

mysql如何实现高效的读写分离和分库分表?

mysql的原子性和持久性是如何实现的?

当前读、快照读,到底读的是什么?

阿里一面 2月


自我介绍

估计是自己项目太拉垮,面试官直接开始问基础了

进程和线程?

怎么理解线程安全的?

那在Java中怎么保证线程安全呢?

synchronized的实现?为什么要这么做,和ReentrantLock的差别

你提到了线程间共享的变量每个线程是会创建一个副本吗,这个副本存储的位置在哪呢?(后面发现Java并发编程书上写的很清楚)

提到了volatile,可以说一下内存屏障吗?

线程池的线程数呢会怎么设置呢?如果CPU密集型和IO密集型操作都有呢,你怎么设置呢?

服务发现了解吗?(很可惜在2月份的时候自己真没怎么接触过分布式)

网络:

说说你理解的TCP?

在使用TCP传输数据的时候要注意些什么?(我说了应用层粘包的情况)

那怎么解决粘包呢?(在这里面试官其实引出了Netty,可是我不了解Netty,再此之后我就学习netty了)

SYN泛洪攻击具体说说?

半连接队列?了解Linux下TCP相关的配置吗?

最后就是聊天,面试官很耐心的帮我分析简历上的问题,很详细的指出了我面试过程中知识点的欠缺。可以感受的出,面试官是真的很热爱Java,跟我讲了很多学习的方式,带着好奇去探索Java。

富途一面 3月


自我介绍

介绍项目

锁:synchronized、ReentrantLock、CAS

悲观锁、乐观锁

MySQL的事务隔离级别?

间隙锁?

Redis的基本数据结构,你说说ZSET的实现吧?

你知道层数是怎么确定的吗?

聊聊TCP,三次握手?

如果建立连接之后不发送数据会怎么样?

四次挥手?

如果客户端直接Closed连接会发生什么?

WEB后端安全你说几点?

DDOS的原因?

跨站域名伪造怎么预防?

SQL注入?预编译

你熟悉的设计模式,单例需要注意些什么?

反序列化会破坏单例,怎么处理呢?

反射破坏又怎么处理呢?

代理模式说说?能做什么呢?

算法题整一道:两数组之间的交集,mlogn和n + m这样的复杂度在什么情况下各自速度更快呢

01背包,没做出,面试官讲了讲思路

反问:算法得继续加强,部门是统一校招,具体分配到哪个组得看公司分配

富途二面 3月


全程算法题+智力题+概率题

莉莉丝游戏一面 3月


自我介绍

RPC是什么?

如果要你去实现负载均衡你会怎么做?

持久化连接、长连接你怎么做的?

JVM的垃圾回收机制你知道吗?

MySQL的事务

MySQL的日志

Redis的基本类型

Redis的缓存击穿、崩溃、穿透

如果要你去实现Redis的LRU淘汰策略你会怎么做?

莉莉丝游戏二面 3月


自我介绍

1亿个数取前100个最大的

https://blog.csdn.net/super828/article/details/108890489

HTTP状态码100、200、301、302

301和302的区别

HTTPS的TLS的握手过程

粘包问题的原因,怎么解决?

抓过包吗?wireshark

PING的底层实现?ICMP

同步阻塞、同步非阻塞、多路复用聊聊

select、poll、epoll

莉莉丝游戏的三面又教会了我很多,面试官是一个10年经验的技术专家,问的问题都很针对,是一个很专业的面试官。一开始让我选择一个聊的项目,面试整个过程其实都是在聊一个项目,从宏观实现到具体细节,到遇到的问题,会根据我的项目去询问相关的知识点,根据我遇到的问题让我分析为什么会遇到这样的,为什么我这么做就能够解决。最后莉莉丝游戏还是挂在了三面

莉莉丝游戏三面 3月


自我介绍

围绕着项目展开

项目介绍

网络模块怎么做的?

粘包问题怎么解决的?为什么会出现沾包问题?

BIO和NIO的区别?

性能上的区别呢,为什么选择NIO呢?

多路复用select/poll/epoll

你是使用Netty的啊,Netty的线程模型?

零拷贝说说?mmap()系统调用和sendfile()系统调用的区别?

操作系统的内核态缓冲区存储什么数据呢?

Java哪些操作涉及到了系统调用呢?

序列化模块说说?

序列化失败的坑,具体说说,为什么呢,怎么解决的呢?

JDK原生序列化和JSON序列化的区别,为什么原生序列化效率低?

Kryo序列化了解吗?区别?

服务注册说说?

Nacos存储的数据是怎么映射的?

负载均衡怎么实现呢?

不使用Redis怎么去实现轮询负载均衡算法呢?

负载均衡算法说说?

MySQL索引的类型具体说说,有哪些,分别有什么区别

联合索索引什么情况下会出现索引失效的问题

索引字段使用聚合函数是否会失效

算法题:大数相乘 https://leetcode-cn.com/problems/multiply-strings/

蘑菇街一面 3月


自我介绍

项目:

热点动态的分布式锁,怎么保证原子性呢?

名额扣减是怎么去做的?怎么保证扣减的原子性

RPC框架的网络方面是怎么做的

其他的RPC框架有了解的吗?hession,性能

NIO的selector的底层实现 -> epoll的水平触发和边缘触发

从类加载开始说你对JAVA的理解 ,从类加载说到了垃圾回收

线程安全具体说说?什么是线程安全

怎么保证线程安全

锁的实现具体说说

分段锁什么的

Object中的wait和notify

Redis的数据类型?从String到ZSet撸了一遍

蘑菇街二面 3月


自我介绍

项目:

难点:热点动态和名额扣减

原子性怎么保证的,分布式锁怎么做的

乐观锁和悲观锁的区别讲讲,在Java中的体现呢?在MySQL中的体现呢?

LUA脚本是否了解

RPC框架网络、序列化、注册中心

参考开源的框架吗?

算法题:循环队列

中间件了解多少?

SQL题

Keep 一面  4月


自我介绍

项目:

名额扣减,分布式锁

RPC项目的坑点

线程安全的集合介绍一下?ConcurrentHashMap、Vector、CopyOnWriteArrayList

锁聊聊(syn、ren)

聊聊JVM:

JVM运行时内存结构

垃圾回收算法具体说说

为什么要使用分代收集呢

G1垃圾收集器说说

CMS和G1的选择

Spring的动态代理

CGLIB字节码技术除了动态代理还用在了哪里

SpringBoot的自动装配

微服务了解吗?

云原生了解吗?

容器化了解吗?

怎么去学习的?

算法题:求二叉树的最大距离

Keep二面 4月


项目介绍:

Minds项目具体询问,用了Redis的哪些命令

为什么用Redis去实现分布式锁

Redis的多路复用具体讲讲

epoll的就绪链表详细讲讲

用户态和内核态

文件描述符是什么?

RPC调用的流程

HTTP效率为什么没有TCP高?

网络模块怎么去实现的

为什么要自己去处理粘包问题?

RPC项目遇到的坑

算法题:分割链表

哔哩哔哩 一面 5月


自我介绍

项目介绍:

分布式锁介绍一下

分布式锁怎么实现的,原子性怎么保证的啊

LUA脚本为什么能保证原子性

Redis的主从复制

Redis的缓存击穿、穿透、雪崩

如何在代码层面解决雪崩问题

MySQL是如何存储数据的,从索引的角度说说

HTTP1.1和HTTP2的区别

说到了HTTP3,说说QUIC

觉得B站哪里使用了QUIC

算法题:乘积最大子数组

哔哩哔哩 二面 5月


自我介绍

项目介绍:

缓存击穿

分布式锁你怎么做的,时间是设置多久?

即时聊天怎么实现的?

线程池?怎么做的,核心参数

concurrentHashMap说说

JVM的哪个区域不会出现OOM

JAVA中的Future

Spring IOC相关

网络:

路由协议

HTTP吧,HTTP请求头说说

TCP的TIME_WAIT状态

Ping的底层协议是什么

操作系统:

IO多路复用

零拷贝mmap和sendFile

内核态和用户态

数据库:

MYSQL的事务隔离级别

脏读的场景

数据结构:

稳定的排序算法

快排写一个

秋招:

7月的时候,字节的HR突然联系我询问是否想投递提前批,我自然是直接约了面试,因为已经有了实习的经验,面试的题目不再像暑期实习那样的卷了,更多的是询问我实习期间做了什么,怎么做的。然后就计算机网络和操作系统数据库这些老八股了。有份实习秋招真的变得友好多了。

字节跳动 一面 7月


自我介绍

自己做的项目

动态代理

序列化

MySQL:

索引结构,B+树

可以换成红黑树吗?AVL、红黑树、B+树、B树

事务隔离级别:

对于可重复读进行了详细的阐述,MVCC、间隙锁、Next-locks

存储引擎有哪些

INNODB和MYSIAM的区别

聚簇索引和非聚簇索引

表锁、行锁

Redis:

基本数据结构(string(SDS)、list(QUICKLIST)、set、hash(REHASH)、zset(跳跃表))

RDB持久化会拷贝两份内存数据吗,具体是怎么做的?

Redis集群了解多少?

Expire的缓存过期策略,我误以为让我达淘汰策略,面完才发现是要我回答Redis针对设置过期时间的key怎么进行过期淘汰的

场景题:

给你100台服务器如何存储KV数据(一致性Hash)

操作系统:

进程线程的区别

进程通信的方式线程间通信方式

零拷贝机制mmap、sendFile

多路复用select、poll、epoll

做题:

SQL题

二叉树左视图

字节跳动二面 8月


自我介绍

实习项目、实习业务

主播推流的流程、转码的流程

Redis怎么设计的

MySQL在执行插入操作的流程

Buffer Pool

唯一索引和普通二级索引

乐观锁

描述一下CAS使用的场景

为什么MySQL要用B+树去划分页面呢

操作系统的缺页异常,以及缺页调度算法

内核态和用户态、内核态中有什么东西

Reactor模型

算法:字典序的第k大

字节跳动三面 8月


算法:

最小路径和

连续数组的最大和

实习项目

Redis集群,主从复制

几种集群模型

offeset?环形结构具体说说

HTTP和RPC

RPC的几大属性

负载均衡的种类及算法

多级负载均衡

B树和B+树

查看进程信息的linux命令

netstat -an | grep "" 中的 | 是什么意思

进程内存区域 栈、堆、高地址区、低地址区

如何解决高并发场景下,缓存重建时的分布式并发重建的冲突问题?

如何解决热点缓存导致单机器负载瞬间超高?

如何针对复杂的分布式系统将其中的服务设计为高可用架构?

如何解决恐怖的缓存雪崩问题?避免给公司带来巨大的经济损失?

如何解决高并发场景下的缓存失效问题?避免给redis集群带来过大的压力?

高并发场景下,如何解决数据库与缓存双写的时候数据不一致的情况?

亿级流量下,三高系统架构是如何设计的?

如何解决秒杀的高并发和超卖的问题?

如何保证消息队列的高可用?

高性能计算和高性能传输有哪些技术实现?

可达性分析算法中根节点有哪些?

cms 和 G1 区别有哪些?

怎样 GC 调优?

怎样排查 CPU 彪高、内存彪高?

逃逸分析

Redis 的数据类型?

redis qps能上多少,怎么知道的?

redis 单线程为什么快?

本地缓存需要高时效性怎么办?

spring 循环依赖怎么解决?

spring aop原理(动态代理)?

spring bean生命周期(源码细节,以及各个位置的设计思路,有什么可扩展的)?

  • 看你做过微服务拆分,你们的微服务拆分是按什么原则拆分的?要是两个领域之间互相依赖怎么办?

  • 你负责的服务,流量最大的服务QPS大概有多少?做过限流吗?限流原理了解吗(令牌桶)

  • 那使用令牌桶做限流的话,遇到流量突刺,例如你设置的QPS最高为1000,但是这1000个请求在第一个毫秒瞬间到达了怎么办?

  • Redis使用场景(缓存、锁) 自己写的锁是怎么写的 setNx 写入一个过期时间。然后问那事务还没执行完锁过期了怎么办?使用Redission,会有个看门狗自动续期。

  • 请求的鉴权怎么做,了解哪些鉴权协议(回答了JWT 和 OAuth2协议,乱七八糟地说了一下)

  • 算法题:每K个元素,链表翻转一次 (1, 2, 3, 4, 5, 6 k=2) -> 2 1 4 3 6 5

  • 说说 Redis 为什么快

  • Redis 有几种数据结构,底层分别是怎么存储的

  • Redis 挂了怎么办?Redis 有几种持久化方式

  • 多线程情况下,如何保证线程安全?

  • 用过 volatile 吗?底层原理是?

  • MySQL 的索引结构,聚簇索引和非聚簇索引的区别

  • MySQL 有几种高可用方案,你们用的是哪一种

  • 说说你做过最有挑战性的项目

  • 秒杀采用什么方案

  • 聊聊分库分表,需要停服嘛

  • 你怎么防止优惠券有人重复刷?

  • 抖音评论系统怎么设计

  • 怎么设计一个短链地址

  • 有一个数组,里面元素非重复,先升序再降序,找出里面最大的值

  • 线程安全本质是什么,Java 如何保证线程安全,callable,runnable 有什么区别,线程不正常终止会发生什么,线程占用的空间具体是哪,是寄存器还是内存还是什么

  • Java 的线程和 Linux 的线程有什么区别,为什么需要 Java 的线程

  • volatile 具体实现原理,内存重排序都会发生在哪,为什么要内存重排序

  • 使用过哪些 Java 并发包

  • 简述 BIO,NIO 的具体使用及原理

  • concurrentHashMap1.8 和之前版本有什么区别,HashMap 的具体实现,红黑树和平衡二叉树的区别,为什么不用 B+ 树

  • Java 的 GC 整体过程,垃圾收集算法,流程,垃圾收集器,强引用,弱引用,虚引用等概念等,如果我要设置一个内存缓冲区,让垃圾收集器不对其进行操作怎么办

  • JVM 内存分区,。假设 Java 的 GC 时间过长,简述应该如何做来排查解决这个问题,jamp 的 dump 命令比较重,有什么代替的方法。

  • 代码实现每五分钟一次 Minor GC,如果要 FullGC 呢

  • ThreadLocal 的具体是怎样的,为什么会有内存泄漏问题,怎样避免

  • Java 的异常种类有哪些,平时自己是怎么处理异常的

  • Spring 的 IOC 和 AOP 及 MVC 机制,Sping 中的单例 bean 是否可以依赖多例 bean

  • Springboot 起步依赖有什么好处,为什么使用 MyBatis 不适用数据库连接池

  • tomcat 如果有两个项目,两个项目里面如果有相同的 class,那么 tomcat 是如何对其进行区别

  • 简述 MySQL 的 ACID 性质及实现,ACID 有哪些一致性种类,乐观锁怎么实现的,简述 MySQL 的隔离机制及实现,简述 MySQL 索引结构及实现

  • 如果 MySQL 要插入十万条数据,有什么较好的方法

  • Redis 支持集群的几种方式,redis 的跳表要实现快速查找第 k 小的元素怎么做

  • Netty 拆包粘包的实质,Netty 线程池中的线程建立连接之后,这条连接是不是始终属于这个请求,对于 Netty 来说是不是只占用服务端的一个套接字,了解 zero copy 嘛

  • 简述 TCP 三次握手四次挥手的状态转移,ip 层的 mtu 是什么,如何探测机器之间的 mtu

  • 进程和线程的区别,进程的通信方式,线程空间中的内容,进程中打开文件其他线程可以直接读写那个文件嘛。用户态和内核态对于读写文件的操作有什么区别

  • 内存为什么分页,虚拟内存有什么用,内存中的脏页是由硬件完成还是软件完成

  • 怎样用单线程实现 2k QPS 对于服务器压测,1 s 均匀发 2 k 条消息,可以异步返回

  • Nginx 和 Redis 能同时处理很多条请求,万级别,是不是都是通过 Linux 中的 IO 模型的的类似信号的机制.想这样的 C10 K问题,也就是单机 10000 条并发连接应该如何去处理

  • 设计高并发秒杀系统,里面的阻塞队列是如何实现的

  • 在王者荣耀里面,当渲染地图时,考虑网络波动的情况应该怎样渲染地图才能显得不卡,这回导致什么问题

  • 如何实现 cookie 和 session 机制

  • token 在分布式服务器上的应用,用什么框架来验证 token;除了 redis 还可以怎么做异步框架

阿里一面

1、介绍一下简历上的那个项目,有什么实际应用场景?

2、讲一下电商秒杀那个项目,怎么解决超卖?

3、已经用了 MQ 了为什么还会出现 mysql 连接数过高,怎么优化 mysql 的性能瓶颈,怎么分库分表?

4、讲讲缓存击穿、缓存雪崩、缓存一致性,分别用什么方法解决?

5、雪花算法、分布式锁 。

6、乐观锁与悲观锁。

7、创建对象的几种方式(只答了 new 和反射,没答全)

8、这三行代码 jvm 做了什么事情

String a = "123";

String b = new("456");

String c = a + b;

9、怎么释放一个用完的大对象的内存空间?

10、讲讲 SpringIOC 的控制反转。

11、MySql 怎么删除数据。

12、delete 和 truncate 的区别(不会)

13、写查询语句的时候应该从哪些方面考虑来注意性能。

14、什么是联合索引,为什么要建联合索引?

15、讲讲 ARP,ICMP

16、什么时候不用查 ARP 表

17、ICMP 是哪个路由器回的,什么地方用了 icmp,traceroute 怎么做的。

阿里一面笔试

100g 的文件,每行一个 url,机器 4g 的内存,统计出 top100 的 url 并输出为一个新的文件。

阿里二面

1、介绍一下 JVM 的内存区域?

2、对象的生命周期(new 一个对象的过程)?

3、介绍一下 volatile?

4、怎么获取子线程的返回值?

5、子线程抛异常,主线程 try-catch 是否可以获取到异常 。

6、讲讲 jdk 动态代理。

7、有一个程序占用大量 cpu,并且一直运行,怎么排查?

8、Spring 容器的启动过程

9、@Autowired 和@Resouce 的区别?

10、a,b,c,d,四个字段,查询语句的 where 条件 a=b,orderby c。(mysql 翻页越翻越慢怎么优化,满足 a=b 的字段很多,怎么高效的排序,分页查询)

11、sql 题:一个学生成绩表,里面有学号,科目,成绩,统计出总成绩前十个的学号。

12、SQL explain 会输出哪些信息?

13、redis 批处理?

14、介绍一下电商项目?

阿里三面

1、什么是 gc,gc 怎么排查,怎么手动让 JAVA 虚拟机 OOM

2、sql 怎么手动加锁

3、hashmap,为什么要转成红黑树,不是一开始就用(红黑树的缺点)

4、什么时候会有内存泄漏,怎么排查

之后就是各种电商项目细节

蚂蚁一面

1、为什么学后端开发?

2、第一个社项目为什么做了一年多,是兴趣还是老师的任务?

3、是基于场景去学习的技术还是只是单纯的想去学习一些技术?

4、那些项目是和别人合作的?

5、看你电商只做了四个月,现在还在做吗?

6、性能压测怎么做的,性能如何?

7、电商项目是怎么做需求分解设计实现的?

8、缓存怎么设计的?

9、电商的核心对象模型设计?

10、JVM 的内存模型?运行时是怎么运作的?

11、JDK8 的新特性?

12、Hashmap 源码看过吗?讲讲 hashmap 怎么实现的?

13、线程池使用的注意事项?是不是线程越多越好?

14、分布式系统的一致性怎么保证的?(不会)

15、介绍一些 mysql 底层结构?

16、mysql 设计索引的注意事项?

17、双向链表的缺点?

18、设计模式了解哪些?

19、linux 系统使用过吗?用过哪些命令?

20、平时自己写博客吗?为什么不写?

21、合作做项目的时候和别人产生冲突,或者想法和别人不一样的时候怎么做?

蚂蚁二面

时间很短,5 分钟就没记录了

蚂蚁三面

1、具体介绍一下简历中的比赛(比赛类型,组队情况,分工情况)

2、比赛中为什么成绩没有特别好,是哪里做的不好,赛后有没有继续去思考更好的方法?

3、毕设开题了吗,最后要发论文还是写个专利?

4、具体介绍一下毕设项目(项目的难点,分工,创新性)

5、毕设的方法和其他方法比有哪些优化

6、项目是用什么语言写的?代码的设计?分为了哪些模块?

7、大文件怎么处理的?使用文件流,有没有考虑断点续传?

8、功能性测试是怎么做的?(比如效率,结果)

9、代码的异常测试做了吗?做了大量的测试来测试异常吗?

10、如果毕业了以后项目没做完?程序的可扩展性如何?

11、数据怎么获取的?

12、为什么没有继续做老师的项目,反而来找互联网的工作?

13、是不是保研的?考研为什么不考计算机?

14、怎么学习计算机课程知识的?

15、做比赛时合作的集成阶段和单人开发有什么区别?

16、集成测试怎么做的?

17、比赛的时候是怎么和队友沟通的?

18、为什么选择后端?哪方面吸引你了?

19、实验室的项目和比赛的项目对你自己的能力有什么提升?

20、上个面试官问你分布式你说的不会,后来学习了吗?你怎么理解分布式事务和事务的区别?

21、分布式电商系统会遇到哪些分布式事务的问题?

22、怎么保证集群的一致性?

23、了解过蚂蚁的 oceanbase 吗?

24、你之前 mysql 怎么加锁的?

25、有投其他公司吗?阿里云投的哪个部门?

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