大厂面经高频提问总结,助你高效拿下Offer,Java向【建议收藏】

目录

一、JAVA篇

1.1 基础知识相关

1.2其它相关

二、Java虚拟机

2.1 垃圾回收相关(GC)

8.3分代相关

8.4 OMM相关

8.5 其它相关

三、Java集合

2.1 List和集合相关

2.2 Map相关

四、Java并发

4.1 ThreadLocal相关

4.2 进程线程

4.3 synchronized相关

4.4 锁相关

4.5 volatile

4.6 线程池

五、SQL篇

2.1 B树相关

2.2事务相关

2.3 MVCC相关

2.4 索引相关

2.5 锁相关

2.6 基础相关

2.7 其它相关

六、计算机网络篇

3.1 http相关

3.2 握手挥手和TCP相关

3.3 分层及协议相关

3.4 网页解析相关

3.5其它

七、数据结构篇

4.1排序相关

4.2其它相关

八、MQ消息队列篇

九、redis篇

6.1 缓存击穿、穿透、雪崩相关

6.2 分布式锁相关

6.3持久化和一致性相关

6.4 zset相关

6.5 基础相关

6.6其它相关

十、Spring篇

7.1 Spring相关

7.2 Spring boot

7.3 Spring bean

7.4 Spring cloud和mvc

十一、操作系统篇

十二、Linux

十三、算法篇

11.1链表相关

11.2数组问题+字符串问题

11.3树相关

11.4动态规划

11.5图问题

11.6其它问题

11.8查找+排序问题

11.9递归问题

十四、MyBatis篇

十五、软件工程

13.1 设计模式

13.2 IOC和AOP

13.3 其它相关

十六、计算机组成原理

十七、其它技术篇

十八、其它篇


一、JAVA篇

1.1 基础知识相关

√ 多态的特点?Java是多继承吗?为啥不能多继承?

java和go有什么区别?

√ java基本类型的以及占空间大小( boolean类型占多大内存,int占多少,double)?

√ protected 关键字和 default 关键字的作用范围?讲讲java的权限空闲控制(protect继承关系,defualt是包访问权限)?

√ 介绍下 static 和 final 关键字?

√ 面向过程与面向对象?

√ 面向对象三大特性?面向对象的基本原则?

√ 重写和重载的区别?

√ java抽象类和接口的区别?抽象类的修饰符可以是private吗,用什么关键词?抽象类可以有普通方法吗?

√ 接口里可不可以有普通方法?

√ String的特性,不可变的好处,怎么实现不可变的?String的两种初始化的区别?

√ String,StringBuilder,StringBuffer的区别?性能比较?为什有了string还要stringbuffer?

√ 包装类和基本类型的区别,int 和 Integer 的默认值?

 java字符串有哪些基本操作,就substring这些?

√ 异常:讲一下Java异常的体系结构?try catch finally机制讲解一下?

√ 反射:java的反射机制?单例模式被反射机制破环?具体是反射的哪些Api进行破环的?反射的底层原理?Java 的反射机制有了解过吗?简单介绍下?反射的应用场景?

√ IO:Java 中的 I/O?I/O 还有分类吗?不同 I/O 模型的应用?IO 同步/异步 阻塞/非阻塞?说说IO多路复用?

√ 序列化与反序列化:项目中的序列化?java序列化和反序列化?

详细说下依赖倒转?

1.2其它相关

两种jdk动态代理区别

说一下CGlib动态代理?java的动态代理?动态代理是怎么实现的?

两个类互相调用,循环互斥

java中常用的类型

阻塞队列了解吗?常见的阻塞队列算法有哪些?

JDBC 建立连接的流程

创建对象的流程?

二、Java集合

2.1 List和集合相关

√ Java中常见的集合有哪些?List、Set、Map初始容量加载因子了解吗?

√ 在集合中哪些集合类是线程安全的?

√ Set和List区别?

√ ArrayList和LinkedList的区别?说说ArrayList和LinkedList查找元素的时间复杂度?

2.2 Map相关

√ 讲一下Hashmap的实现?Hashmap的原理?数据量大了会影响查询效率吗?为什么要用链表?后续为什么又变成红黑树?

√ HashMap在JDK1.7和1.8的区别?

Java中都有哪里用到了红黑树?红黑树相比avl树优点在哪里?

√ HashMap的put方法?HashMap插入过程?

√ HashMap的扩容机制?HashMap的扩容过程?

Map的底层结构?map扩容?

√ Hashmap线程安全吗?hashmap为什么是线程不安全的?可能导致什么后果?key和value可以是NULL吗,是线程安全的吗?

√ ConcurrentHashMap底层实现?

√ ConcurrentHashMap是如何保证线程安全的?

√ ConcurrentHashMap读的时候(get)不加锁可以正确读取吗?

√ ConcurrentHashMap的优化,1.7和1.8的区别?

HashMap和ConcurrentHashMap的区别?

2.3 其它

java.stream().distinct().collect()去重失败的原因?

TreeMap和LinkedHashMap的区别和底层?

三、Java虚拟机

谈谈JVM虚拟机?jvm的作用?JVM虚拟机是有哪些部分组成的?

3.1 JVM内存

内存区域分别是干嘛的?

说一下Java虚拟机中堆和栈的不同之处?堆和栈分别存放哪些类型的数据?

JVM中的堆是用什么数据结构来实现的?

虚拟机栈的结构?

JVM 堆内存的区域划分和分配策略?堆中有哪些区域?new 一个对象存放在哪里?

方法区存放哪些信息?常量存放在哪个区域?JVM的运行时数据区,方法区里有啥?

栈帧中有哪些东西?

jvm内存分区?JVM 内存占用大怎么排查?JVM虚拟机的内存结构?JMM内存模型?三大特性?虚拟机内存分为哪些部分?

线程私有和公有的部分?

JMM?Java 内存模型?

java实现的共享内存?jdk1.8之后Java内存模型分别哪几个部分?每个部分用一句话概括一下?

3.2 OMM(Out Of Memory 内存溢出)相关

常见的OOM有哪些?

JVM中每个内存区域会怎样才会触发OOM?JVM中哪里会发生OOM?哪些部分会造成OOM问题?什么情况会导致栈的OOM ?

Stack Overflow和OOM的区别?

内存泄漏如何定位?详细步骤?

写个方法让方法区或元空间OOM?用内存泄漏的方式造一个OOM?

会不会内存泄漏(答弱引用)?

3.3 垃圾回收宏观(GC)

√ 垃圾收集算法有哪些?

垃圾回收主要回收哪些区域?

√ 不同垃圾收集器的区别?了解什么垃圾回收器?

JVM GC垃圾回收机制有了解过吗?

GC时候跨代引用是怎么处理的?

垃圾回收为什么分代?JVM 为什么要分代?分代介绍一下?

永久代是什么?为什么被元空间替换了?

什么情况会进入老年代?JVM什么时候会将对象从新生代移动到老年代?

垃圾回收不及时和垃圾回收过快分别出现的问题?

垃圾回收根据什么因素配置?

√ GC Root有哪些?可达性分析?

√ JVM怎么判断哪些是垃圾?怎么判断一个对象是否可以回收?怎么判断一个对象应该被垃圾回收?回收的只是对象吗?怎么识别哪些是垃圾?

3.4 CMS垃圾回收器

√ CMS 收集器回收阶段? 

√ CMS 收集器回收过程哪些需要暂停线程?

√ CMS的过程,有什么缺点?

3.5 G1垃圾回收器

√ G1的原理及流程?

√ 讲一下G1回收器的流程?

Minor GC和Full GC有什么区别?

√ 什么是Young GC和Full GC?什么时候会出现Full GC?

简要说说GC(Minor GC/Young GC、Major GC/Old GC、Mixed GC、Full GC )?

CMS和G1区别?G1一定比CMS快吗?

G1回收器之后的回收器有了解吗?

3.6 其它知识点

双亲委派机制:

√ 双亲委派机制说一下?

√ 有哪些违反双亲委派机制的情况?

框架里打破双亲委派机制的SPI大概怎么实现的?

类加载:

√ 类加载的机制?jvm类加载过程?

绑定:

有了解过动态绑定和静态绑定吗?

引用:

√ 说说一共有哪些引用(强软弱虚)?什么是虚引用(可有可无的)?

JVM指令:

√ 用过什么 JVM 指令?JVM 指令了解过吗?

jvm调优

3.7 其它

执行方法的流程?Java虚拟机原理?JVM由哪些模块组成?如何理解Java的一次编译到处运行呢?

jvm实现读取windows文件流的整个过程是什么样?

进程和线程,启动jvm是一个什么?进程or线程?

jvm虚拟机最多能存放多长的字符串?String s=new String()在jvm虚拟机中如何存储?

四、Java并发

i++如何保证线程安全?

同步、异步 一句话介绍一下?

两个重要原语(cas和volatile)?

JAVA 并发有哪些?

分布式下,如何获取全局的唯一ID,有哪些方式?设计分布式下的唯一ID,你会考虑哪些因素?如何保证各个节点返回唯一值?

如何保证并发,考虑哪些并发控制策略,加锁性能降低怎么办?

4.1 进程线程

√ 进程和线程的区别?Java里面多线程的概念和os里的线程进程的区别是什么?有进程了为什么还要有线程?

进程切换和线程切换的区别?

Java里的线程和进程是如何调度?

√ 分配给进程的资源有哪些?

√ 创建线程的方法?Thread调用什么方法开启一个线程呢?创建多线程的几种方式?

√ 一个线程有哪些状态?

√ sleep、yield 和 wait 的区别?

√ run和start的区别?

√ 守护线程?

线程调用start()之后再次调用start()会抛异常还是没反应吗?

线程同步有哪几种方式?Java 实现同步机制的有哪些方法?

为什么并发执行线程要加锁?多线程的同步互斥的方法?

哪几个部分是线程私有的?哪几个是线程共有的?

进程间通信?

Java中线程通信的方式有哪些,大概的原理?

如果生产者端的数据格式中新增了一个字段,怎么保证消费的正确性?

4.5 volatile

√ volatile关键字作用?

√ volatile的用处除了保证可见性还能够干什么?

介绍下原子性、可见性和有序性,以及如何实现?

volatile原理?具体怎么做到可见性(底层如何实现)?volatile 关键字如何实现的?volatile如何感知到变量变化的?

4.4 锁相关

√ 什么是CAS?CAS在计算机底层是哪条汇编指令?什么是乐观锁(用CAS)?

√ CAS原理(java中如何使用,java中哪个包哪个类)?

√ CAS优缺点,缺点的解决?

CAS中有一个ABA问题,你能介绍一下吗,怎么解决,有无现成包可解决?

Java多线程当中的锁?分布式锁的实现方式?什么是分布式锁?

什么是AQS?AQS怎么理解的?

AQS原理,可以举一个具体的实现来说?

AQS实现?

说一下aqs加锁成功和加锁失败的流程?

什么是悲观锁?Java里面有哪些悲观锁?

锁的实现方式?加锁方式有哪些?

公平非公平锁优缺点?怎么实现公平锁?公平锁加锁过程?

4.3 锁 synchronized相关

√ Synchronized与Lock的区别?

√ synchronized 关键字和 ReentrantLock 区别?synchronized 关键字和 ReentrantLock 实现线程安全的底层?

线程不安全的底层原因是什么?

实现线程安全的方式有哪些?

√ Synchronize的作用域?

√ synchronized 关键字修饰方法和修饰代码块有什么区别?

√ synchronized关键字作用在方法上,class文件上会有什么标识?

√ synchrnized原理?

√ synchronized 锁的升级?Java锁升级的过程?

锁升级?java里锁的实现原理(锁升级 monitor aqs cas unsafe 说了很多)?​

√ synchronized关键字是公平锁吗,怎么实现的非公平锁?

2个线程,依次执行了A、B操作,A为普通方法,B为static方法,A和B使用synchronized修饰,第二个线程会被阻塞吗?分析执行情况?一个类A中的 方法f上有个synchronized关键字 ,那么A的两个对象 a1和a2能同时访问方法f吗?

4.1 ThreadLocal相关

√ ThreadLocal用过吗?ThreadLocal了解吗?hreadLocal用来解决什么样的问题?

ThreadLocal在JVM哪个区?和JVM内存有什么区别?

√ Thread Local的原理?

√ 为什么Thread Local会有内存泄露问题,如何解决的?什么时候回收?

ThreadLocal 类的作用?

用户登录使用threadLocal实现线程隔离?为什么ThreadLocal能让用户拿到自己的信息?

ThreadLocalMap是怎么解决hash冲突的?

4.6 线程池

√ 线程池有哪些比较关键的参数。线程池的核心线程数一般怎么设置?线程池的七大参数(corePoolSize, maximumPoolSize, BlockingQueue, keepAliveTime, TimeUnit, ThreadFactory, RejectedExecutionHandler)?

√ 执行流程,线程池为什么要用阻塞队列?线程池的运行过程?

√ 线程池有哪些类型,说下使用的原因?

线程池如何创建和管理?一般用什么方法来创建一个线程池?

线程池的淘汰策略?拒绝策略?

线程池的线程工厂?

线程池的扩容机制?

线程池什么时候开启core以外的线程?线程池除了OOM还需要注意哪些问题?

五、SQL篇

5.1 索引相关

√ MySQL的索引分类?有哪些索引?

√ MySQL的索引原理了解吗?

√ mysql索引数据结构? MySQL的索引结构?数据库底层的索引结构是什么?

哈希索引?

√ 介绍下什么是聚簇索引?

√ 聚簇索引和非聚簇索引的区别?

聚簇索引相比非聚簇索引的优点?

什么是MySQL的回表?如何避免回表查找?

覆盖索引?

√ 唯一索引和主键索引的区别(热)?

√ 聚集索引和主键索引区别?

如果我没有指定主键的话,它还会有聚簇索引吗?

主键索引、唯一性索引、外键索引的定义?唯一索引可以有多个吗?

判断联合索引是否失效?

√ 为什么递增字段的作为主键会更好?

√ 建立索引的原则?数据库中的索引应该如何设计?

√ 有哪些索引失效的情况?哪些SQL的关键字会让索引失效?

MySQL的索引为什么可以支持范围查询?

Mysql构建索引时如何优化?

二级索引是什么?二级索引检索方式是什么样的?

5.2 B树相关

B树、B+树、红黑树是什么?有什么结构?查询复杂度?是平衡二叉树吗?

√ B树是什么样的树结构?

√ B+树是什么样的树结构?为什么用B+树?B+树一般几层?

b+树索引和各个操作的时间复杂度?

√ 为什么MySQL选择B+树作为索引的数据结构?二叉树、红黑树、B树这些为什么不行?

红黑树是啥样的?

HashMap和红黑树的区别?

5.3 基础相关

√ 第三范式的定义是什么?

√ MySQL有哪些存储引擎?(热)

√ 这些存储引擎有什么区别?

√ 常用的引擎底层结构?

InnoDB的行级锁分为几种?

InnoDB为什么要用自增键ID作为主键?

√ Innodb的索引结构?

√ MyISAM和InnoDB的区别?

MyISAM有什么优势?

√ TRUNCATE和DELETE的区别?TRUNCATE会删除索引结构吗?

 DDL和DML介绍一下?

 有哪些聚合函数呢?常用的聚合函数?

mysql中 group by 和 order by的区别?

having的作用?

MySQL LIKE模糊查询索引什么时候没用?

最左匹配?

Mysql底层是怎么实现的?从内存布局,磁盘布局说起?

联表查询/子查询?

MySQL和MongDB的区别?

5.4 事务相关

√ 什么是事务?

√ 事务的特征?事务的ACID?

隔离性是如何做到的?

√ MySQL事务的隔离级别?mysql的四种隔离级别?解决哪些问题?MySQL默认事务隔离级别是什么?

序列化(串行化)了解吗?为什么要使用序列化?

√ 什么是脏读、不可重复读、幻读?

√ 脏读怎么解决?解决的原理?

√ 脏读和幻影读的区别是什么?

√ 不可重复读是什么?

刷脏页的流程?

√ MySQL事务是怎么实现的?

√ MySQL事务日志的原理?

√ redo log、undo log是什么?

√ binlog是什么?

√ binlog 、redo log、und olog三种日志是什么作用?

√ binlog和redo log的区别?

日志的cache和buffer?

√ 什么是MySQL的MVCC(多版本并发控制)?

√ MVCC的实现原理?MVCC原理?

MySQL为什么能实现可重复读(详细讲了MVCC)?

介绍MVCC和锁两种实现方式。

事务的存在是实现什么性质?

分布式事务的实现方式?

5.5 锁相关

行级锁?

表级锁?页级锁?

哪种行为会触发共享锁?

哪种行为会触发排他锁?哪些场景需要获取排他锁?

悲观锁和乐观锁分别是什么?

什么时候用乐观什么时候用悲观?

mysql死锁及应用场景?数据库的死锁及其解决?

间隙锁?

5.6 分库分表 读写分离 主从同步

分库分表的原则?说说场景(水平 | 垂直、热数据 | 冷数据 blabla)?

数据库优化方案(索引 / 分库分表)?

假如是分库分表,如何高效去做查询信息?

MySQL主从同步延迟太大如何处理?

5.7 MySQL优化

Explain执行计划?Explain参数?

如何定位慢查询?如何排查数据库查询速度比较慢的问题?

MySQL如果遇到性能不好的问题,比如说慢查询,怎么做?

做分页查询的一些优化?

数据库优化策略?SQL 优化?

5.8 其它

返回部分字段和返回全部字段有什么区别?

结合缓存和DB的时候会出现哪些问题?要怎么解决?

MySQL调试过哪些参数

平时数据库编码?从需求文档到数据库设计需要完成什么?

六、redis篇

6.5 基础相关

为什么使用redis?具体做什么?Redis的优点?

Redis为什么快?

redis为什么高并发?

如何保证本地缓存与数据库的数据一致性?如果有多个服务实例,如何保证每个服务示例上的本地缓存数据一致呢?

使用本地缓存可能会存在什么风险?

Redis的基本数据结构?Redis的数据类型?(热)

Redis 的 Zset 底层数据结构?

zset底层是怎么实现的?

说一下跳表?跳表插入数据的过程能描述一下吗?

节点的高度是多少?怎么决定节点的高度?

ZSet的范围查询的时间复杂度是多少?

6.3持久化和过期、淘汰

Redis的持久化机制有哪些?了解哪些Redis持久化方式?

Redis持久化原理是怎么样的?

RDB和AOF方式有什么区别?为什么提供第三种混合方式?AOF、AOF重写、RDB、混合?

你觉得哪种持久化方式恢复数据时完整度是最高的?

redis数据过期的策略?底层是怎么样的?Redis 如何清除过期数据?

讲讲Redis的内存淘汰机制?

Redis的内存淘汰策略?拒绝策略有几种?LRU算法?

6.1 缓存异常(击穿、穿透、雪崩)

Redis 缓存异常的三个问题以及如何解决?

redis缓存一致性如何保证?redis和mysql如何发现数据不一致?Redis缓存和MySQL数据一致性如何保证?你还有了解什么解决数据一致性的方案嘛?

Redis和MySQL如何保证数据一致性?

缓存击穿是什么?

redis缓存击穿使用互斥锁解决方案的利弊?

缓存穿透是什么?

redis缓存空对象用于解决缓存穿透,是否有做过压测?为什么选择缓存空对象,而不使用布隆过滤器?

布隆过滤器?布隆过滤器有哪一些缺点?布隆过滤器存在什么问题?

缓存雪崩是什么?

缓存风暴(缓存雪崩)的解决方案?设置随机时间和永不过期选哪个好?

你是用过缓存机制,那二级缓存可以替换三级缓存吗?你使用缓存,在高并发的情况下,如果多个缓存同时过期了怎么办?

6.6 主从、哨兵、集群

redis主从同步的步骤

哨兵如何实现通信,结点宕机如何处理?

说说Redis高可用的集群技术?

Redis 集群环境下怎么实现高可用?

redis集群(数据分片 一致性算法 等)?客户端如何定位redis集群的某个数据节点?

6.2 分布式锁相关

什么是分布式锁 ?

使用Redis如何实现分布式锁?

Redis分布式锁原理?

分布式锁为什么了使用了Redission?

Redis实现的分布式锁和Redisson的区别?

Redis轻量级锁和Redisson分布式锁的使用场景?

redis使用setnx实现分布式锁,如何控制锁的有效期?

Redis分布式锁和Zookeeper分布式锁区别?

UUID生成算法?UUID能保证唯一吗?UUID生成的一个验证码?

6.6 其它

redis单线程,如何实现高性能

redis单线程在多核机器里使用会不会浪费机器资源

旁路缓存(数据库与redis缓存不一样怎么办呢)?旁路缓存机制具体解决的什么场景?

使用 Redis 存储手机验证码以及检查是否过期的功能?

不查数据库,用缓存实现权限控制

redis惊群效应

Redis热key,大key,Redis缓存过小?Redis大key如何解决?什么是热key?如何解决热key问题?

Type字段有哪一些

Redis存String转map和直接存map的区别

redis缓存空对象会导致频繁查询null值,解决方案?

如果使用Redis来实现消息队列消费的幂等性保证,你会怎么设计?

返回值Redis是怎么处理的?

redis如何实现排行榜?怎么解决排行榜中缓存中的问题?项目里的set实现点赞,zset实现关注,为什么?

七、Spring篇

7.1 Spring相关

说一下你对spring的理解?介绍一下Spring?使用Spring和直接使用Java语言面向对象开发,有哪些好处?

SpringbootApplication是如何实现依赖注入的?

BeanFactory和FactoryBean有啥区别? 什么是JavaBean?

SpringBoot自动配置原理?

Bean默认是单例还是多例,怎么设置多例?

介绍一下IOC?

Spring IOC容器创建Bean的流程?

IOC容器建的Bean是单例还是多例的?

什么是依赖注入?依赖注入的几种方式?

Spring中创建bean的方式?

bean,configuration,component的区别与问题?

知道注解吗,知道自定义注解的原理吗?Spring @Autowired 和 @Resource 注解有什么区别?

在 BeanDefinition 创建的过程前后做了什么事?

生命周期bean(创建、初始化、使用、销毁)?​Bean生命周期中涉及的接口和方法域?

Spring Boot的自动装配流程?

Spring如何解决循环依赖问题?

Spring Bean的安全问题?

介绍一下AOP?

AOP有哪些应用场景呢?你在项目中用到AOP了吗?Spring AOP 实现日志记录功能,为什么用 AOP?

spring中的设计模式有哪些?(热)分别在哪用到?Spring源码用了哪些设计模式?

Spring事务是如何实现的?spring事务失效?

springMVC底层怎么实现,机制原理讲一下?

SpringMVC执行流程?处理请求的流程?

springboot优点,技术选型原因,为什么不用其他框架?为什么要使用SpringBoot做开发?与传统的开发有什么不一样的?

SpringBoot的启动类上要加什么注解?

spring cloud与spring boot的区别?

5. 启动流程:Spring 容器的启动流程?

7. 其它:spring和mybatis有什么区别?spring源码看过吗?

7.2 Spring boot

 在Spring boot的一个请求中,如何实现并发?这个注解的原理?SpringBoot的启动原理?Springboot如何开发一个http接口?springboot框架url映射过程,return model过程?spring boot中的控制反转?

7.4 Spring cloud和mvc

Spring cloud的五大组件?了解springcloud吗?谈谈SpringCloud维护服务高可用的一些机制?SpringCloud config是怎么在Bean创建后更新Bean的值的?

spring springmvc springboot区别?

八、MyBatis篇

mybatis基本使用都可以吧?Mybatis学到什么情况?

mybatis如何避免sql注入?${} 的应用场景是什么?#{}和${}的区别 ?

MyBatis的sql执行原理(核心是代理)?

Mybatis动态sql ?

mybatis有哪些标签?讲一讲foreach?

mybatis一级缓存二级缓存?

5. MyBatis Plus有哪些增强?

7. MyBatis的分页是内存分页还是物理分页?分页插件的实现原理?

九、MQ消息队列篇

为什么要使用消息队列?介绍一些MQ的场景?除了并发量过大适合用消息队列,还有哪些场景适合用消息队列?

消息队列的优缺点?

RabbitMq和kafka的区别

消息队列为什么用RabbitMQ?

MQ 相关原理了解过吗?

消息队列如何保证可靠性(热)?

RabbitMQ消息持久化时怎么做的?

消息队列发生阻塞怎么处理?消息队列积压了怎么办?请求很多,消息堆积处理不过来了如何应对?

如果消息队列过长时,怎么保证消息不会丢失?

如果消息队列重试的话,怎么保证不被重复消费?怎么保证消费的幂等性?消息队列如何保证消息幂等性?

挑种消息队列说说,它是怎么保证消息准确的?

介绍一下topic工作模式?

Return消息机制?生产者确认机制?消费者手动消息确认?如果消费端发生异常导致消息消费失败的话,有什么补偿策略?

缓存与数据库数据一致性

唯一ID

讲讲退出登录的时候对token的操作是什么?

用户在消息堆积时以为卡了多次请求怎么处理?

newfixthreadpool工作队列为integer.maxvalue为什么还要有最大线程数?

十、计算机网络篇

10.1 分层及协议相关

描述一下七层网络及其协议?

TCP/IP协议栈共有几层描述一下?

SSL属于哪一层协议?Ping这个命令是哪一层?RPC协议工作在七层模型中的哪一层?HTTP,IP,TCP/UDP,ARP分别在OSI哪一层?MQTT协议、TCP协议分别属于TCP/IP四层协议的哪一层?

网络为什么要分层设计?网络层的作用?传输层的作用?

10.2 握手挥手和TCP相关

详细介绍一下TCP的三次握手和四次挥手(详细过程+状态变化)?

挥手多出来的一次是在做什么事情呢?Tcp的四次挥手当中第三次挥手是谁向谁进行挥手?

第四次挥手后客户端是立刻就关闭了吗,是什么状态?

Time_Wait发生在哪两个报文头之间

TCP为什么要三次握手?

服务端可以主动发起断开连接的请求吗,为什么?

TCP协议如何保证可靠性?

10.3 Http相关

HTTP状态码(如100、200、502、504)?HTTP报文参数有哪些?了解哪些HTTP协议的错误码?

HTTP协议的关键字段,比如request和response头部信息有哪些关键字段,有什么含义?

TCP如何长链接?HTTP 1.1 如何每次请求都建立一个连接?

HTTP 1.1 相比 HTTP 1.0 有哪些重要改进?

HTTP1.1和2.0的区别?

HTTP和HTTPS的区别?

1、讲讲网络当中HTTP?HTTP是为了解决什么问题?

5、HTTP经历了哪些发展?

6、HTTPS的连接过程?HTTP长连接如何实现?

7、HTTP如何跨域?HTTP如何操作浏览器缓存?HTTP用的是对称加密还是非对称加密?

8、解释GET/POST及其区别?GET请求参数过长如何解决?GET有body吗?除了GET/POST还有哪些?restful中GET和POST如何设计?HTTP有哪些方法,GET那些?HTTP接口的提交方式?

9、中间人攻击知道吗?怎么做HTTPS的抓包?HTPPS怎么篡改?

10.4 网页解析相关

www.google.com会发生什么?其中的DNS的机制是怎样的?

域名解析过程?每次解析都一定要访问顶级域服务器吗?

URL解析过程?Url解析到显示?浏览器对url有什么限制?

10. 5 Cookie和Session

Cookie和Session的区别?

Cookie和session的使用场景,他们之间的关系?

登录状态是怎么保存的?

session是怎么获取的?

sessionid是怎么识别的?整个流程是什么样的?

如何考虑分布式session?

10.6 协议相关

​TCP报文头部格式

TCP和UDP区别

TCP的拥塞控制

数据链路层协议?

 ARP协议是什么?

你了解的RPC框架有哪些?RPC的核心组件?

MQTT为什么在嵌入式设备上主流?

10.7 其它

jwt组成 header payload 签名加密算法那些?rsa如何运用到jwt中?

Socket同组转发的机制,信息是怎么转的

令牌桶限流

你知道半开,全开这些网络模式吗

网络代理,网络代理正向和反向区别

TLS的具体原理知道吗

自定义协议怎么解决粘包问题

什么是上下文切换?

十一、操作系统篇

进程和线程的区别?

进程之间相互独立如何理解?

进程切换和线程切换都会干什么?线程上下文切换?

并发和并行的区别?

进程通信方式?你最常用的进程的通信方式有哪些?

进程同步方式(互斥量 信号量 条件变量)?

信号量怎么实现读写锁?

介绍一下用户态和核心态?

用户态和核心态之间怎么传递数据?

多路复用中 select,poll,epoll介绍一下。

1. 线程:操作系统中是如何实现线程的?线程间通信?线程在操作系统中是如何运转的?线程有哪些状态(用白板画一下,包括一个状态转移到另一个状态可以使用哪些方法)?操作系统最多能创建多少线程?JUC,线程之间如何实现同步?操作系统怎么实现线程阻塞唤醒?

5. 内存管理机制?操作系统对内存管理的两种方式是什么?非连续内存管理你了解几种方式?磁盘结构?

7. PCB了解吗?可以从操作系统层面聊一下B+ tree比B tree好在哪里嘛?为什么讲核心线程数设置为CPU核数*2 ?什么情况下任务会进入到等待队列当中?代码运行出现问题了,负载很高如何排查,用什么命令排查到具体是什么原因?

十二、Linux

linux查看硬盘信息( df -h) ?Linux命令:磁盘满了怎么排查?linux哪些指令定位哪些文件占用了比较大的磁盘空间?

Linux的命令用过哪些?说说常用常用命令是什么?linux常见指令?linux read指令等?linux 命令:找一个文件中指定字符的命令,其他的命令 tar?管道运算符?

linux查看网络状态(netstat) ? linux查看网口 (tcpdump)?查看TCP 入方向的端口号是什么命令?traceroute命令了解吗?Linux命令netstat用过吗?

linux中使用ps查询wechat进程怎么查询?ps命令了解吗?Linux进程间通信机制(管道 消息队列 共享内存 信号量 信号 socket)?Linux如何查看哪些进程占用的内存最多?如何查看所有运行的进程?

查看内存的命令?

如何查看Linux机器上磁盘的IO?

查看CPU占用的命令(TOP)? 如何查看机器的负载情况linux,除了top还有别的指令吗

nohup的作用是什么?

 git的常用命令?Git熟悉吗?说说常用命令?

Linux机器路径下的文件打开计算机干了什么,操作系统干了什么?

Linux上如何开启MySQL,如何更改启动的端口号?在Linux上有调试Java项目的经验吗?

介绍一下Linux的硬链接和软链接?

Linux文件权限,假如现在有个文件的权限符如下:-rw-r--r-- 。这个文件的权限怎么理解?
这个文件的权限用数值表示是多少?

linux如何查看僵尸进程?如何杀死一个僵尸进程

有kill -9杀不掉的进程的情况吗?kill 和 kill -9?

linux统计一个log文件中,exception出现的次数

十三、数据结构篇

4.1排序相关

有哪些排序算法?排序算法有哪些?介绍下快排/堆排/归并排序?快排了解吗?介绍一下快排?时间复杂度是多少?为什么会退化成O(n^2)?单链表可以做快排吗?快排最核心的逻辑是什么?写一下单链表快排?归并排序的思想,时空复杂度,稳定性,为什么是稳定的?选择排序的思想,时空复杂度,稳定性,为什么是不稳定的?排序过程中的归并排序,请描述一下其过程?时间复杂度?

4.2其它相关

哈希表的原理,怎么减小哈希表的冲突,怎么保证哈希表的并行读写

数据结构能说多少说多少

栈和队列,应用场景?有界队列和无界队列的使用场景,会导致什么问题?阻塞队列底层?

什么是度(图的出度入度)?什么是结点的度(就是一个结点连接的数量)?什么是完全二叉树?给你一个完全二叉树的节点数量, 计算他的叶子节点数量

十四、算法篇

11.1链表相关

链表奇偶有序输出。删除排序链表中的重复元素Ⅱ。链表查找倒数第k个节点。反转链表。一道链表倒数第k个元素。链表一段区间反转。链表每k个元素反转。反转链表,不允许递归。单链表循环右移k。反转双向链表。环形链表II。

11.2数组问题+字符串问题

最大子序列。乘积最大子数组。乘积最大子数组。螺旋矩阵。合并有序数组。四数之和。平方根。判断S1中是不是有S2的排列

字符串相加。最长回文子串。最长上升子序列。无重复字符的最长字串。

给定01子串,删除连续的01对后,还剩下字符串的长度是多少?

11.3树相关

树转换为链表。给一个数组,建一颗最小高度的二叉树(递归和非递归)。反转二叉树。平衡树。 二叉树层序遍历。正反序层序遍历二叉树。根据输入链表节点对象的 `parentId` ,输出森林。后序遍历(递归和非递归)。求根节点到叶节点数字之和。任意两个结点的最近公共祖先。二叉树的公共祖先。

对于一棵满二叉搜索树深度为K,节点数为2^k - 1,节点值为[1, 2^k - 1]。给出k和任意三个节点的值,输出包含该三个节点的最小子树的根节点值?

11.4动态规划

买股票无限次。买股票只买一次。买股票有手续费。买股票最多买两次。最大正方形。

11.5图问题

岛屿最大面积问题。简单题岛屿数量。

11.6其它问题

手撕LRU缓存。多线程打印1-100。两个栈实现一个队列。三个线程交替打印ABC。将整型数字前三位与后三位交换。带过期时间的LRU缓存。多线程并发。

11.8查找+排序问题

二分查找。如何找到前100个最大的数。

11.9递归问题

括号生成。

十五、软件工程

13.1 设计模式

你了解哪些设计模式?设计模式有了解过吗?你熟悉哪些设计模式,这些设计模式有什么区别?

单例模式的实现方式有哪些?写一个单例模式(双重校验锁)?单例模式的实现方式,两种方式各有什么优缺点?单例简单介绍、怎么实现的?在哪加锁?为什么这样加?手写尽可能多的单例模式,线程安全不安全都可以?懒汉volitile模式的单例模式一般在什么场景下使用?简单介绍单例模式的实现方式都有哪些?双重检测锁的模式可以解决懒汉式单例的存在的多线程问题,请问枚举可以解决单例模式存在的问题吗?手写单例模式:饿汉、懒汉、DCL( Double-checked locking)

编写工厂模式的示例代码?工厂模式有哪几种?什么情况下使用工厂方法呢

介绍代理模式。

介绍下策略模式和观察者模式?

13.2 IOC和AOP

IOC(控制反转)和AOP(切面编程)的理解?具体应用?AOP的实现原理(动态代理)?

13.3 其它相关

Dependency management(依赖管理)和dependency(依赖)的区别

微服务怎么划分的,你是怎么做通信的,是什么?微服务组件方面?了解微服务吗?service/ controller /dao三层架构有什么局限性?微服务是如何实现服务的注册与发现的?

十六、计算机组成原理

虚拟内存

页表作用

cpu三级缓存

系统调用,中断,异常

虚拟地址到物理地址的映射过程

十七、其它技术篇

为什么tomcat要打破双亲委派机制?tomcat并发量限制的底层原理

为什么使用lua脚本?听过pipeline吗?项目中用到了lua脚本,Lua脚本的作用?

Redisson的使用

maven的依赖冲突怎么办?maven 打包方式区别 pom jar war(不会)?知道pom.xml文件里都有哪些标签吗,都可以说说?maven依赖包父子继承时版本不一样以谁为准?maven定位包的方法

javascript四种引用类型,以及各自的应用场景

HBase的rowKey知道吗

讲一下shell的一些命令?

git的的版本冲突怎么办?

netty中的对象重用?IM项目怎么用Netty的,为什么要用Netty,长连接交互是怎样的?为什么使用netty做网络IO?netty零拷贝实现?

介绍一下Kubernetes的整体架构?以及各个组件之间的关系?介绍一下Kubernetes的架构?介绍一下kuberlet的功能与作用?介绍一下pod的生命周期?

Kafka用过吗?说说Kafka的原理?怎么保证Kafka的高可用?Kafka怎么保证消息有序?讲一下kafka的实现,如何实现高吞吐的?Kafka用过吗?用来做啥,原理,为啥顺序写?

es的搜索原理?项目里怎么用ES的,ES怎么支持搜索的?es倒排索引原理?

Nginx有哪些负载均衡策略?介绍一下什么是反向代理?后端数据更新的时候如何回传给nginx缓存?

如何使用zookeeper实现一个分布式锁?zookeeper那些能参与投票,leader能投票吗?

项目中用到了 JWT 实现授权认证,介绍一下?JWT 好处在哪里?

Hadoop、Hive、HBase有了解吗?可以聊一下对数仓的理解以及数仓的分层吗?

解释一下mapreduce

docker的原理,一个服务器最多能运行多少docker容器?说说Dockerfile构建镜像的整个过程?如果需要指定在容器启动时运行哪些命令,需要写到Dockerfile中的哪一项?你还了解Dockerfile中还有哪些核心的模块?

dubbo的负载均衡策略

十八、其它篇

假如现在有一个LinkedList,节点中存的是一个对象,如何根据这个对象的属性对这个List进行排序?

ClassLoader 了解吗?ClassLoader 具体是怎么解析的?

污点容忍

什么是指令重排序,举个例子

离线下载怎么去实现

做过导出excel是吗?

DispatcherServlet的处理流程

xxl-job了解怎么设计的吗?分布式场景?

整个链路中有哪些设计模式?

手撕SQL:有一张学生表`students` ,里面有4个字段:id, name, age, class 。查询平均年龄在10岁以上的班级?select name from table where age=“xxx” and sex=“xxx” 如何建立索引才能效率最高

分布式一致性算法

字符串编码问题,英文字母和中文字符各占多少字节,不同的编码方式下占用多少字节

硬链接和软链接,删除文件和删除硬链接再访问的时候会发生什么

有一个大的日志文件写不下了,如何删除,删除会发生什么问题

常见的网络攻击有哪些?在表单提交的时候,容易发起什么样的攻击?知道哪些数据安全相关的技术,全链路都可以?

如何保证用户请求的等幂性?

项目中服务器带宽低,服务器崩了如何处理

两个大文件,分别每行都存一个url,查找两个文件中重复的url?一个大文件中,每一行有一个整数,怎么找第100大的数?一个大文件中,每一行有一个整数,怎么找中位数?一百万数据想找出排序在前一百的数据?如果有一个很大的文件,TB级别,文件里是乱序的数字,如何排序?mapreduce如何实现?

介绍一下动态规划

出现大量的close_wait可能是什么原因,解决方案,通过什么工具看出来网络有问题等等

  • 4
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Java 大厂高频面试题主要包括以下几个方面的内容: 1. 基础知识:对Java的面向对象、多线程、集合框架等基础知识的掌握程度。如常见的多线程问题,如何避免多线程并发问题等。 2. 数据库和SQL:掌握关系型数据库的基本操作、事务处理以及SQL语句的编写等。如常见的数据库连接问题,如何优化SQL查询语句等。 3. 框架和技术:对于常用的Java框架和技术的了解和应用。如SpringSpring MVC、MyBatis等框架的原理和使用。 4. 设计模式:对常见的设计模式的理解和应用。如单例模式、工厂模式等。 5. 算法和数据结构:对于常见的算法和数据结构的了解和应用。如排序算法、查找算法等。 6. 开发工具和环境:对于常用的开发工具和环境的熟练程度。如Eclipse、IntelliJ IDEA等开发工具的使用。 7. 项目经验:对于自己参与过的项目进行详细的介绍和说明,包括项目的背景、架构设计、关键技术等。 在准备Java大厂高频面试题时,有以下几点建议: 1. 针对每个知识点进行系统的学习和复习,掌握基本原理和常见问题的解决方法。 2. 多做一些实践性的项目或练习题,巩固知识和提升实践能力。 3. 多参加一些面试模拟和笔试练习,熟悉面试过程和题型,增加答题的信心和准确度。 4. 关注行业动态和技术热点,了解最新的发展和趋势。 总之,准备Java大厂高频面试题需要全面掌握Java的基础知识、技术和工具,并在实践中不断积累经验,提升自己的综合能力。同时,要保持良好的心态和自信,面对面试挑战。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值