苦战金三银四:580道最全面的BATJ大厂Java面试真题分享

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024b (备注Java)
img

正文

  1. 说一说四种会话跟踪技术

  2. 讲讲Request对象的主要方法

  3. 过滤器有哪些作用和用法?

  4. 请谈谈你对Javaweb开发中的监听器的理解?

  5. 说说web.xml文件中可以配置哪些内容?

  6. get和post的区别

  7. token , cookie和session的区别 , 与localstorage的区别

  8. session怎么保证多次访问是同一个ID

  9. 谈谈Session的save()、update()、merge()、lock()、saveOrUpdate()和persist()方法分别是做什么的?有什么区别?

  10. 如何设置请求的编码以及响应内容的类型?

  11. Servlet相关接口 , Servlet里面有哪些方法 ? Servlet执行时一般实现哪几个方法?

  12. Servlet 3中的异步处理指的是什么?

  13. servlet生命周期?servlet是单例模式么?为什么是单例?Servlet和cgi有什么区别?

  14. 服务器收到用户提交的表单数据,到底是调用Servlet的doGet()还是doPost()方法?

  15. servlet写过么,底层是怎么处理前台传来的请求的

  16. Servlet中如何获取用户提交的查询参数或表单数据?

  17. Servlet中如何获取用户配置的初始化参数以及服务器上下文参数?

  18. 登录功能如何保证安全性。(MD5+盐)为什么用MD5,讲一下机制。还有什么保证安全的加密方式?

  19. 设计一个怎么使得验证码有效期,过了一段时间就过期了。

  20. 如何实现单点登录

2、web编程进阶

====================================================================

  1. forward与redirect区别,说一下你知道的状态码,redirect的状态码是多少?

  2. 常见的加解密算法方式了解吗?对称加密和非对称加密的算法有哪些?3DES为什么叫3DES?

  3. 是否单例,为什么是单例。

  4. 如何在基于Java的Web项目中实现文件上传和下载?

  5. 缓存的优点?

  6. 说说MVC的各个部分都有那些技术来实现?如何实现?

  7. 什么是DAO模式?

  8. 请问Java Web开发的Model 1和Model 2分别指的是什么?

  9. 如何保存会话状态,有哪些方式、区别如何

  10. 分布式session如何管理,你有哪些方案

  11. 布隆过滤器及其实现

  12. 项目中数据如何加密传输?

  13. 在用户成功登录之后怎么保证数据安全传输?如何保证请求合法?

  14. 你了解的web安全问题都有什么,什么是xss攻击? CSRF攻击 ? JSONP问题? 追问crfs攻击,怎样伪造受信用的的客户端,具体怎么伪造的。

  15. 系统化怎么进行分页的呢?我答了sql语句limit、数组分页还有拦截器分页。

  16. tomcat的类加载机制。

  17. 登录逻辑?如何保证登录安全?用户携带的这个token和谁进行比较?怎么获取token?

  18. 什么是中间人攻击

  19. 安全相关,token的设计应该考虑哪些因素?

  20. tomcat有哪些配置?有没有修改过tomcat的参数?如果有修改过什么?tomcat底层怎么实现的?Tomcat是类加载实现结构,它有哪些实现类加载器

  21. dos攻击怎么回事,怎么解决

  22. 服务端是怎么验证用户的?生成的token有可能重复吗?

  23. 我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出一个某种编码的字符串?

  24. 登录怎样校验密码,海量用户同时登录怎么优化

3、web编程原理

========================================================================

  1. 请谈谈转发和重定向的区别?

  2. forward 和redirect的区别

  3. BS与CS的联系与区别。

  4. 什么是Web Service(Web服务)?

  5. 大型网站在架构上应当考虑哪些问题?

  6. jwt是怎么实现的

  7. Tomcat启动主要负责什么工作?

  8. tomcat为什么会出现假死,既然死锁是某几个线程之间出现循环等待,为什么整个tomcat会假死。

  9. 禁用cookie怎么办

  10. 单拎出来的跨域问题,了解下浏览器同源(协议,域名,端口)政策,对后端的限制(AJAX等,前端问题暂不考虑),解决方法(JSONP,WebSocket,CORS),CORS(Cross-Origin Resource Sharing)相关内容,头字段 Origin,Access-Control-Allow-Origin 等;

  11. SOCKS

三、Java常用框架及组件

1、Spring

===================================================================

  1. 介绍一下spring? spring框架的优点? Spring框架为企业级开发带来的好处有哪?缺陷有哪些?怎么避免这个缺陷

  2. 介绍一下bean的生命周期

  3. Spring里面注解用过没有?autowired 和resource区别?

  4. Spring中BeanFactory和ApplicationContext的区别?

  5. 请问Spring中Bean的作用域有哪些?

  6. Spring加载Bean的过程? Spring框架xml文件中配置bean的实例化过程?了解Spring是怎么递归地加载Bean的吗?BeanFactory和FactoryBean有什么区别?

  7. Spring getBean的整个流程

  8. 谈谈Spring中自动装配的方式有哪些?

  9. 说一下IOC和AOP? DI的方式有几种?哪几种?

  10. spring怎么解决循环引用的问题,比如,A对象构造时需要B对象;B对象构造时需要A对象

  11. springIOC原理?说说Ioc容器的加载过程Spring IOC底层存储结构 ? 自己实现IOC要怎么做,哪些步骤?

  12. aop的应用场景?

  13. AOP的原理是什么? 除了动态代理还有什么?

  14. 拦截器和AOP的关系 Spring拦截器的底层是怎么实现的

  15. 你如何理解AOP中的连接点(Joinpoint)、切点(Pointcut)、增强(Advice)、引介(Introduction)、织入(Weaving)、切面(Aspect)这些概念?

  16. #号和$号的区别

  17. Spring支持的事务管理类型有哪些?你在项目中使用哪种方式?

  18. 什么是Spring的声明式事务管理。

  19. AOP 的 @transaction 是怎么做的?为什么不加这个注解就不是事务?

  20. spring事务传播机制

  21. spring中用到了哪些设计模式

  22. Spring Security 的核心原理

  23. 如果spring的事务中抛出了IOException,会回滚吗?

  24. 在spring中双重检查锁有效吗

2、Mybatis

====================================================================

  1. 持久层设计要考虑的问题有哪些?你用过的持久层框架有哪些?

  2. 解释一下MyBatis中命名空间(namespace)的作用。

  3. Mybatis原理

  4. MyBatis中的动态SQL是什么意思?

  5. MyBatis 如何获取自增主键的值?底层怎么实现?

  6. mybatis 如何防止SQL注入

  7. mybatis如何配置测试和开发环境下不同的链接

  8. mybatis和jdbc区别,什么是一级二级缓存,为什么一般不开启二级缓存有什么问题?#KaTeX parse error: Expected ‘EOF’, got ‘#’ at position 24: …别对应什么?mybatis中 #̲ 和 ¥ 的区别,sql注入问…{}的区别是什么?预编译的作用

  9. 写一下mybatis的批量插入

  10. mybatis中xml是怎么解析的?

  11. 讲讲mybatis和jpa的区别

  12. mybatis哪里用到过反射

  13. mybatis的数据库表与配置文件是如何实现映射关系的

3、MVC

================================================================

  1. Spring MVC注解的优点

  2. @Controller和@RestController的区别?

  3. 那一个controller分别调用两个Service再调用两个Dao时,注解加在什么层,如何实现事务?那两个Service强相关呢?(还是事务传播,加入到一个事务中。)再问:怎么加入呢?(答:事务管理器),那是事务管理器里的哪个对象呢?(答:记 记不清了

  4. springmvc和spring-boot区别?

  5. SpringMVC的运行机制,运行机制的每一部分的相关知识?

  6. 拦截器和过滤器区别? springmvc拦截器和servlet过滤器先用哪个

  7. springMVC中对整个请求的处理流程是怎样的?返回json的话是用哪个view?

  8. spring框架从URL请求如何找到controller

  9. RestFul 规范是怎么样的?

  10. 如何使用SpringMVC对用户写入的参数进行修改?

  11. 如果一个Dao有两个实现,一个连接mysql,一个oracle,service要自动注入这个类,如果直接注入的话会有冲突,怎么解决冲突?

4、SpringBoot

=======================================================================

  1. Spring Boot的启动函数是怎样的? 怎么找到启动类

  2. springboot如何实现自动装配

  3. springboot扫描配置的过程

5、dubbo

==================================================================

  1. Dubbo原理

  2. 讲 Dubbo SPI 的源码?

  3. 讲 Dubbo 服务暴露源码 + Dubbo 服务注册

  4. 讲一下 Dubbo 服务引用底层?

  5. 讲一下 Dubbo RPC 协议调用过程,使用哪些协议?

  6. Dubbo 的连接

  7. Dubbo 的负载均衡

  8. dubbo为什么比springcloud快 , 从网络角度分析dubbo为什么比springcloud快 dubbo服务注册怎么做,过程。如果几万个服务怎么配的。怎么设计服务中心效率更高。

6、Kafka

==================================================================

  1. kafka 消费者组和分区的关系? kafka有5个消费者,4个分区,是如何消费?kafka的分区有哪些方式,分区算法?

  2. kafka 应答机制,选举算法

  3. kafka 消息丢失的原因? 消息丢失场景和怎么保证数据不丢失 ? 如何防止重复消费

  4. kafka如何实现消息是有序的?

  5. kafka如何实现多线程的消费?

  6. 接口防刷限流是怎么实现的,较短时间出现大量请求该如何解决

  7. kafka的重复消费?

  8. kafka异步刷盘,数据会不会丢

7、各框架对比与项目优化

=======================================================================

  1. Mybatis和Hibernate区别?

  2. 介绍一下你了解的Java领域的Web Service框架。

8、es

===============================================================

  1. ES怎么用的?倒排索引讲一下?

9、rabbitMq

=====================================================================

  1. rabbitmq从发送到接受之间的具体过程

  2. rabbitMQ事务的底层实现原理

  3. 为什么使用rabbit mq?

  4. rabbitmq能够多个线程进行消费吗?

  5. 那如果有的事件消息的数量很多,有的很少怎么办?做了负载均衡么?

10、Zookeeper

=======================================================================

  1. zookeeper的服务注册

  2. zookeeper的节点类型

  3. 说下CAP理论,Zookeeper 舍弃了哪个 , Zookeeper和Eureka分别是满足CAP中的哪些 redis属于哪种 分区容错性的意义?

四、数据库

1、SQL语句的使用

=====================================================================

  1. 写SQL:找出每个城市的最新一条记录。

  2. 一个学生表,一个课程成绩表,怎么找出学生课程的最高分数

  3. 插入一条数据时如何直接取到当前数据的id

  4. 有一组合索引(A,B,C),会出现哪几种查询方式?tag:sql语句

  5. 写一下创建存储过程的语句

  6. 建立组合唯一索引的语句

  7. delete truncate 区别

  8. SQL 中select…limit and offset 会有什么问题,怎么解决

  9. 一个考试成绩明细表,字段有id,class_name,user_name,score,找出考试分数大于90分的人数最多的班级

  10. 我现在要查询某一个商家某段时间内的订单金额,sql语句怎么写?

2、mysql基础

====================================================================

  1. mysql和Oracle的区别?

  2. 数据类型(datetime timestamp)的大小

  3. 怎么防止sql注入?

  4. 一条SQL语句在MySQL中会经过怎样的过程

  5. 数据库两种引擎 InnoDB和MyISAM的区别?介绍一下什么时候用Innodb什么时候用MyISAM。

  6. 讲一下事务ACID的特性?怎么保证事务的原子性?

  7. mysql数据库的事务,隔离级别 , 可重复读如何实现的?给定一个场景,银行账户相互转账, 你觉得设定什么隔离级别比较合适?

  8. 数据库索引介绍一下。 数据库索引适合用在什么场景下?不适合用在什么场景下?什么情况下索引会失效?

  9. 索引了解嘛,底层怎么实现的,什么时候会失效

  10. 聚族索引和非聚簇索引

  11. 如何让模糊查询使用索引

  12. 数据库乐观锁和悲观锁 ? 如何实现 ? 各有什么优缺点 ? 缺点如何解决 ?

  13. mysql主从复制? 延迟了怎么办?

  14. left join和right join的区别?给两张表 100行和50行,left join后有多少行?如果有一行重复呢? 知道数据库的join操作吗?谈谈这个操作怎么做

  15. 谈一下你对继承映射的理解。

  16. 说出数据库连接池的工作机制是什么?

  17. JDBC中如何进行事务处理?

  18. 行锁和表锁的区别 ? 数据库行锁如何触发?行锁实现原理?

  19. sql中limit会不会越来越慢,为什么

  20. 建立abc三列的索引,问ac bc ba 会不会用到索引 , 两个字段的联合索引, 是一棵树 还是两个树? 联合索引为什么要遵循最左前缀原则?

  21. 数据库主从同步是怎么做的

  22. 间隙锁的锁定范围是多少?Select * from t where id<4,这条sql中,间隙锁锁的范围是什么?是(1,4)还是(-无穷,4)?

  23. MySQL宕机怎么解决?

  24. 一条Update语句,一定会更新索引吗

  25. 增删操作相比查找操作的弊端

  26. like关键字进行查找会用到索引吗? like“aa%”索引是否可以 ?为什么like后跟%不走索引? mysql如何知道sql语句用没用上索引?

  27. 查询表中最后一个记录,哪个索引更快,为什么

  28. mysql视图

  29. MySQL数据库的select…for update是只锁一行数据么??分析一下

  30. uuid做主键可以吗?为什么?

  31. 间隙锁锁的是数据还是索引? 间隙锁解决的是啥问题

  32. 单表更新是否需要事务?

  33. mysql主键索引和unique索引区别 ? 主键索引可以用来建立复合索引吗

  34. 在一个事务A方法里调另一个事务B方法,映射到mysqlA和B两个事务,这两个事务可以并存吗?

  35. Mysql索引 hash和btree什么情况使用

  36. 覆盖索引

  37. mysql列扩容的时候,是否可以进行select, update

  38. select … for update加锁时,宕机时锁会释放吗?会的话,原理是什么?

  39. MySQL 的 binlog、bitmap , redo log 和 undo log

  40. 幂等的实现,fail over怎么处理

  41. update … where a = 1;这句语句innoDB会加几行锁?

  42. 什么时候会造成数据库死锁?什么时候会造成数据库索引失效?

3、mysql优化

====================================================================

  1. 数据库优化方法

  2. 数据库自己做了哪些优化,

  3. vachar 字段非常大,数据库怎么进行优化存储

  4. MySQL做高可用了么?怎么做的?过程简单讲一下?

  5. 怎么定位数据库慢语句?怎么分析 SQL 语句的性能?如何对查询语句优化?分析SQL的字段?explain,会关注哪些字段?

  6. 有一个查询语句,速度特别的慢,服务器都快不行啦,你咋排查呢?

  7. 那怎么进行读写优化?

  8. MySQL索引优化,索引设计原则。 对索引的内容有什么要求,比如年龄字段适不适合建立索引?做过索引优化不?explain语句出来的结果中的type如果为index是啥意思

  9. 平时有查看过sql的执行计划吗

  10. 怎么去监控MySQL的性能问题?怎么查看一个sql语句的执行效率?

  11. 数据量大时如何分库分表,原则是什么,如何管理id

  12. 数据库如何水平切分,垂直切分 ?

  13. 设计一个实时监测 MySQL 的工具,可以监测每条 SQL 语句运行时间、事务的运行和数据库的连接信息等

  14. mysql进程利用率很高如何排查问题

  15. MySQL 大表翻页优化怎么做,具体情境100w页之后

4、mysql原理

====================================================================

  1. 数据库的架构

  2. mysql的通信协议

  3. mysql 索引 b 和B+ 的区别是什么? B+树索引的核心在于什么? 我们知道树有很多种,为什么要选择b+树,而不选择其他?为什么要用 B+ 树而不用红黑树? 为什么B+树磁盘读写代价更低

  4. 为什么myisam不支持行锁

  5. mycat分库分表了解吗?

  6. 数据库删除操作底层实现

  7. Innodb如何避免幻读的?innodb怎么实现可重复读?

  8. java访问的数据库的时候速度瓶颈问题是什么造成的,为什么会有瓶颈?

  9. InnoDB是如何实现聚集索引的?

  10. mvcc是什么怎么解决未提交读的。mvcc 适用的隔离级别,为什么

5、mysql表的设计

======================================================================

  1. 数据库的三范式? 设计表的时候一定要遵从范式吗?

  2. 如何设计表,从安全、性能、高并发等方面分析

6、mysql集群

====================================================================

  1. 如何解决跨节点的join关联查询

  2. 两个MySQL数据库怎么来做数据同步?

  3. 怎么处理跨库跨表查询,怎么做数据迁移,

  4. 说一下分布式事务以及多数据库高并发的处理 ? 什么是两段式,三段式,它的实现原理是什么?补偿事务?Sagas事务模型?

7、JDBC基础

===================================================================

  1. JDBC的反射,反射都是什么?

  2. Jdo是什么?

  3. Statement和PreparedStatement有什么区别?哪个性能更好?

  4. 使用JDBC操作数据库时,如何提升读取数据的性能?如何提升更新数据的性能?

  5. 反射能获取到父类的私有方法吗?怎么防止反射破坏单例模式?

8、Redis基础

====================================================================

  1. Redis哨兵模式和集群的区别?

  2. Redis为什么用跳表不用其他的?介绍一下Redis的zset中的跳表zskiplist

  3. 讲一下RDB、AOF,优缺点,怎么选择?讲一下缓存雪崩、缓存击穿、缓存穿透、怎么避免?

  4. redis为什么快?除了内存角度呢?

  5. redis有哪几种数据结构?给你一个key怎么知道是用的哪种结构?Redis数据类型??

  6. redis宕机后恢复数据的方式

  7. 怎么保证 redis 和 数据库的一致性? 如果数据库更新成功,缓存更新失败呢?

  8. redis 集群的实现?

  9. redis的过期规则?如何设置过期时间? 过期后是怎么处理的?

  10. redis的内存置换方法

  11. Redis内存泄漏,

  12. Redis 主从节点是怎样通信的,传输数据是全量复制还是半增量复制

  13. 讲一下redis的主从复制怎么做的?

  14. Redis为什么单线程但是性能高

  15. aof,rdb,优点,区别?

  16. redis的List能用做什么场景?

  17. 在一个多核cpu环境下,既然redis是单线程的,怎么提高服务器的利用率

  18. redis用到哪些设计模式

  19. Redis怎么解决双写一致性问题

  20. 影响Redis最大并发性能的主要因素

  21. Redis除了有做缓存还有什么用

  22. redis中热点key导致单点挂掉怎么解决

  23. redis如何实现对热点数据的存储

  24. redis是否支持事务

  25. redis如何存一个键值对 , 如何存String

  26. 若存在一些排序操作,例如order by score这样的操作,在缓存中怎么进行处理

  27. 假设Redis中存储着一个List类型的数据,这些数据会不定期的变化,例如,论坛的帖子,按照发布时间进行排序显示。怎么确保每一次读这样的List数据,能够确保不读到空的数据?(最佳方式,利用脚本实现)

  28. Redis集群负载均衡怎么搭建?

  29. 有序集合的底层 -字典与跳跃表 为什么用这两个结构

  30. SDS优点,链表、跳表的实现与复杂度

  31. 那两个数据库双写不一致问题怎么解决呢?(那就先把缓存删了,再从MySQL中重新加载缓存。常见方法导致继续加问。。。)还有别的方法么?(那做序列化,将数据按照顺序一条条写入。)那如果有一条数据写入失败怎么办,MySQL成功,Redis失败?(答:再从MySQL读这条数据。总不能回滚吧?)

  32. 业务中redis如何保证可用性? 一些节点崩了怎么办,全都崩了咋办。。

  33. 如果你要对班里的学生根据分数进行排名,你觉得用redis里的哪个数据结构比较好。zset的底层是用什么数据结构实现的。

  34. redis,十几万条已排好的数据在redis里,这时新来了一条数据,怎么快速更新排行榜,这个问题说了好久没说到面试官想要的答案

  35. redis除了使用lua脚本还能如何实现原子性

  36. redis为什么使用跳跃表,不使用红黑树

  37. Redis出现多个Client同时修改redis服务器中同一个key怎么办?(redis并发竞争问题?)

  38. redis的事务跟数据库的事务一样吗?

五、计算机网络

1、网络概述

=================================================================

  1. OSI、TCP/IP、五层体系结构联系与区别?

  2. TCP和UDP的区别? UDP相比TCP来说最大的优点是什么?视频使用tcp还是udp,为什么?

  3. 为什么要有MAC地址,用IP地址不行吗

  4. TCP和HTTP的keepalive分别是什么

  5. 给定域名有哪些方法可以获取到对应的IP,你自己获取,不是DNS。

  6. 怎么判断网络上发生了拥塞,重传?失序?

  7. 如何实现IPv6以及IPv4的检测

  8. 点到点和端到端的区别

  9. 桥接和NAT

  10. osi主要协议,telnet哪一层

  11. 江苏放个服务器,北京访问,大概需要多少时间,按什么方法计算,能最快达到什么级别的速度

  12. 如何确定网络的稳定性?

  13. 翻墙中的墙的实现原理

  14. 假设你在宿舍玩游戏,突然发现特别卡,原来你舍友在用迅雷下载东西,为什么迅雷会占用网络带宽导致你玩游戏特别卡,而游戏竞争不过迅雷。

  15. 假如你要传一个很大的文件,怎么传?

  16. 从输入url到页面渲染中间过程,如果网络距离太长,怎么解决

  17. ping的原理?

  18. 详细说一下arp

2、运输层

================================================================

  1. 讲一下TCP的连接和释放连接。

  2. TCP有哪些应用场景?

  3. tcp如何实现可靠传输

  4. tcp为什么要建立连接

  5. 阐述TCP的4次挥手

  6. 讲一下浏览器从接收到一个URL到最后展示出页面,经历了哪些过程。tag

  7. http和https的区别 ? https为什么安全? https 单向认证和双向认证的流程?

  8. http的请求有哪些,应答码502和504有什么区别

  9. 为什么TIME_WAIT状态需要经过两个最大报文段生存时间才能到close状态?

  10. 说说ssl四次握手的过程

  11. 304状态码有什么含义?

  12. 如何减少TCP的时延问题

  13. TIME-Wait和Close-Wait出现在什么时候,为什么需要它们?什么原因会导致服务端一直CLOSE-WAIT

  14. TCP客户端发出第一个报文后状态是什么,服务端收到这个报文的状态?

  15. 大量TIME_WAIT?大量主机在CLOSE-WAIT状态是什么原因

  16. TCP如何避免拥塞,怎么判断拥塞了。拥塞控制算法最坏的场景

  17. 滑动窗口是什么,滑动窗口大小怎么确定?什么场景下滑动窗口效率低

  18. 如何使UDP变得可靠

  19. 数据中心网络下TCP的缺陷不足

  20. 三次握手第二次失败了,客户端和服务器分别做什么

  21. TCP未按序到达的包怎么处理

  22. tcp传输中数据被篡改了怎么处理

  23. tcp_reuse ,timestamp参数

  24. 为什么time_wait是2MSL,2MSL时长是多少,为什么需要将time_wait设置减小,调整时间有什么意义。(需要再深入再详细一些)如何让time_wait快速回收。

  25. TCP中RTT,RTO相关计算公式,给解释一下。给了提示,tcp传输一组数据要用多长时间。

  26. 如何快速复用处于TIME_WAIT的连接?

  27. tcp dump命令的使用?如何dump数据包然后优化网络?

  28. QQ的属于tcp还是udp协议,直播是怎么实现的

  29. syn攻击

  30. 有哪些因素会影响 tcp 的传输速率?

  31. TCP的RST了解吗?

  32. 第二到第三次挥手之间服务器在做什么?最后一次挥手,客户端与服务端的状态?

3、网络层

================================================================

  1. arp协议,arp攻击

  2. icmp协议

  3. 讲一下路由器和交换机的区别?

  4. 路由器给局域网动态分配IP的原理吗

  5. 广播和单播?局域网和广域网?同一局域网下网段要相同吗?如果不是路由器,是交换机网段要相同吗?

  6. 路由表的结构是什么样的

  7. 报文乱序;有一个报文一直未收到,什么原因,怎么解决

  8. BGP路由协议

  9. 路由的两种方式(rip, ospf),怎么实现

4、应用层

================================================================

  1. DNS寻址过程

  2. 负载均衡反向代理模式优点及缺点

  3. HTTP状态码 ? 304具体是什么错误?

  4. 如何提高HTTPS的效率

  5. 端口号 443 和80 分别是用于哪个协议

  6. HTTP 1.1版本增加了哪些内容?有哪几种请求方式?

  7. HTTP是怎么传图片的?

  8. 如果现在让你写一个程序能出现500的错误,你怎么写?

  9. 发布一个http接口需要考虑哪些方面:协议(get post),安全(白名单,token,sql注入,xss攻击等),考虑前后端分离(所以用json格式当参数和返回值,另外可以传设备类型到后台,aop统计不同设备调用次数)

  10. http如何保持连接

  11. 如果不用http,如何保持连接

  12. 了解身份鉴别协议,有哪些?http证书怎么来?

  13. 如果让你实现一个文件上传协议,你会怎么设计??断点续传??如果这个接收端是分布式的呢???怎么控制传输速率???文件怎么存储??分布式存储怎么办???

  14. http中向服务器请求一个网页,用的是以下哪个函数,get/read/post/head

  15. Http 报文里有什么?

  16. http1.0,1.1和2.0的区别

  17. http是三次握手吗

  18. 短连接和长连接?

短连接:连接、传输数据、关闭连接

短连接指SOCKET连接后发送接收完数据马上断开连接。

长连接:连接、传输数据、保持连接、传输数据、、、、、关闭连接

长连接指建立SOCKET连接后不管是否使用都保持连接,但安全性较差。

19、半包:接收方没有接收到一个安装的包,只接受了部分,这种情况主要是由于TCP为提高传输效率,将一个包分配的足够大,导致接收方不能一次接收完(在长连接和短连接中都会出现)粘包:指发送方发送的若干数据到接收方接收时粘成一包,从接收缓存区看,后一包数据的头紧接着前一包数据的尾。分包:出现粘包时接收方要进行分包处理(在长链接中出现)。

20、在并发量比较大的情况下,就会出现一次接受并不能完整获取所有数据?

解决方法:1、通过包头、包长、包体的协议形式,当服务器端获取到指定包长时才说明获取完整。2、获取到指定包结束标识时,说明包获取完整。

什么时候需要考虑粘包的情况?

1、 当短连接时,不需要考虑粘包情况。

2、 如果发送数据无结构,如文件传输,这样发送方只管发送,接收方只管接受存储就好,不用考虑粘包。

3、 如果双方建立连接,需要在连接受一段时间内发送不同数据结构时,接收方创建一处理线程,对接收到的数据包进行预处理,将粘包分开。

注:粘包情况分两种:一种是粘在一起的包是完整的数据包,另一种情况是粘在一起的包有不完整的包

一个包没有固定长度,以太网限制在46-1500字节,1500就是以太网的MTU,超过这个量,TCP会为IP数据报设置偏移量进行分片传输,现在一般可允许应用层设置8k(NTFS系)的缓冲区,8k的数据由底层分片,而应用看来只是一次发送。windows的缓冲区经验值是4k,Socket本身分为两种,流(TCP)和数据报(UDP),你的问题针对这两种不同使用而结论不一样。甚至还和你是用阻塞、还是非阻塞Socket来编程有关。

1、通信长度,这个是你自己决定的,没有系统强迫你要发多大的包,实际应该根据需求和网络状况来决定。对于TCP,这个长度可以大点,但要知道,Socket内部默认的收发缓冲区大小大概是8K,你可以用SetSockOpt来改变。但对于UDP,就不要太大,一般在1024至10K。注意一点,你无论发多大的包,IP层和链路层都会把你的包进行分片发送,一般局域网就是1500左右,广域网就只有几十字节。分片后的包将经过不同的路由到达接收方,对于UDP而言,要是其中一个分片丢失,那么接收方的IP层将把整个发送包丢弃,这就形成丢包。显然,要是一个UDP发包佷大,它被分片后,链路层丢失分片的几率就佷大,你这个UDP包,就佷容易丢失,但是太小又影响效率。最好可以配置这个值,以根据不同的环境来调整到最佳状态。

send()函数返回了实际发送的长度,在网络不断的情况下,它绝不会返回(发送失败的)错误,最多就是返回0。对于TCP你可以字节写一个循环发送。当send函数返回SOCKET_ERROR时,才标志着有错误。但对于UDP,你不要写循环发送,否则将给你的接收带来极大的麻烦。所以UDP需要用SetSockOpt来改变Socket内部Buffer的大小,以能容纳你的发包。明确一点,TCP作为流,发包是不会整包到达的,而是源源不断的到,那接收方就必须组包。而UDP作为消息或数据报,它一定是整包到达接收方。

5、关于接收,一般的发包都有包边界,首要的就是你这个包的长度要让接收方知道,于是就有个包头信息,对于TCP,接收方先收这个包头信息,然后再收包数据。一次收齐整个包也可以,可要对结果是否收齐进行验证。这也就完成了组包过程。UDP,那你只能整包接收了。要是你提供的接收Buffer过小,TCP将返回实际接收的长度,余下的还可以收,而UDP不同的是,余下的数据被丢弃并返回WSAEMSGSIZE错误。注意TCP,要是你提供的Buffer佷大,那么可能收到的就是多个发包,你必须分离它们,还有就是当Buffer太小,而一次收不完Socket内部的数据,那么Socket接收事件(OnReceive),可能不会再触发,使用事件方式进行接收时,密切注意这点。这些特性就是体现了流和数据包的区别。

六、操作系统

1、操作系统概论

===================================================================

  1. 计算机底层是用补码来计算的,为什么用补码?

  2. 用户态和内核态的区别? 为什么需要内核态?什么时候进入内核态?用户态切换到内核态的过程?如何实现切换?进程快照需要保存哪些必要数据?中断处理函数让你自己写如何实现?在时间片乱转的情况下,计算机有什么方法可以实现中断?(定时器)

  3. 什么是分时操作系统和实时操作系统 Linux是实时还是分时 ?

  4. 什么是大小端

  5. 操作系统层面 怎么解决多个cpu同时访问同一个区域

  6. 操作系统有几大模块? 说一下你设计操作系统要几个模块。

2、Linux操作系统

======================================================================

  1. CentOS 和 Linux的关系?

  2. 64位和32位的区别?

  3. 用过哪些Linux命令

  4. linux查看cpu和文件目录

  5. top里面,内存那有buffer/cache,知道这是什么吗?

  6. 如何定位IO使用高的程序

  7. chmod 777代表什么意思?

  8. 如果要查看服务器中各个进程CPU的状态用什么命令

  9. linux查看内存指令,修改权限指令,如果权限相关的数字是777,代表什么含义,

  10. 关键字查询怎么查

  11. Awk命令

  12. inux查看一个文件末尾几行的命令(tail)

  13. 怎么查看含有某个关键字的几行(grep),具体怎么写命令

  14. 讲讲如何查看你项目占用的进程,讲讲如何将项目传到服务器上,讲讲如何杀死一个进程。

  15. 给你一个日志文件,里面包含ip、date等字段,如何求出每日的去重后的ip数量

  16. Linux的软连接和硬连接

  17. 虚拟地址和物理地址时怎么转化的?其中用到哪些硬件? 为什么用虚拟地址

  18. swap分区

  19. 硬盘结构,如何工作,最小单位?

  20. 多进程多线程浏览器(比如 Chrome),主控进程,插件进程,GPU进程,每个 tab 一个进程,tab 进程内有网络请求线程等;

  21. ls、ps的内部原理,如何操作的,死锁设计的时候如何预防

  22. 线程调度算法,linux采用哪

3、进程与线程

==================================================================

  1. 怎么杀死进程?

  2. 线程,进程区别 ? 多线程与多进程区别,使用场景,浏览器使用哪个,为什么。

  3. 系统线程数量上限是多少?

  4. 进程和线程的区别是什么? 线程切换的时候保存哪些状态

  5. 解释一下LINUX下线程,GDI类。

  6. Linux线程模型是什么样的,或者说Linux线程和进程的关联

  7. 怎么查看某个进程中的线程?

  8. 协程? 协程有哪些优势?把所有多线程都替换成协程实现可以嘛?

  9. 进程间通信方式?

  10. 信号量通信中,进程是如何获取到信号量的

  11. 进程分配了哪些资源

  12. 进程调度策略

  13. 守护进程、僵尸进程、孤儿进程,如何创建守护进程;

  14. 讲讲信号和信号量,它们有什么区别

4、输入输出系统

===================================================================

  1. socket编程,BIO,NIO,epoll?

5、存储器管理

==================================================================

  1. 什么是页式存储?

  2. 操作系统里的内存碎片你怎么理解,有什么解决办法?

  3. 知道哪些页面置换算法?

  4. 磁盘调度算法?

  5. 虚拟内存的实现原理 ? 虚拟内存怎么管理 ?

  6. 除了top怎么看内存使用量?

  7. 文件读写授权

6、处理机调度与死锁

=====================================================================

  1. 什么情况下会发生死锁,解决策略有哪些?

  2. 系统CPU比较高是什么原因?

  3. 系统如何提高并发性?

  4. 操作系统层面,CPU调用线程完成任务的过程,

  5. Linux下的中断

  6. 死锁和死循环都会导致程序hung住,怎么判断是死锁还是死循环:

  7. Linux CPU的轮询方式

7、文件相关操作

===================================================================

  1. linux熟悉吗?怎么查看文件的前10行,怎么查看文件的后10行?

  2. 怎么对文件内容排序

  3. linux查看文件和目录的磁盘占有率、查看端口被哪个进程占用

  4. 一个文件如何组织存放到硬盘上

  5. 怎么看这个文件夹下所有文件的大小

  6. Linux 中能否删除一个正在运行的文件

  7. 给你一个文件里面有好几列,怎么用命令统计某一列的和

  8. 如果rm了正在读写的文件,会发生什么?

  9. mv一个文件到另一个地方,是真实的把整个文件移动过去吗?

  10. 怎么看打开这个文件的是哪个进程?

七、算法与数据结构

1、哈希

===============================================================

  1. hashset存的数是有序的吗?

  2. Object作为HashMap的key的话,对Object有什么要求吗? hashCode 怎么对应桶的位置?

  3. 一致性哈希算法

  4. HashMap碰撞的概率? 1000W个数put碰撞的概率??

  5. Java中的HashMap的工作原理是什么?

  6. hashCode()和equals()方法的重要性体现在什么地方?

  7. 解决hash冲突有哪些办法

  8. 讲下你了解的Hash函数有哪些?

2、树

==============================================================

  1. 说一下B+树和B-树?

  2. 怎么求一个二叉树的深度?手撕代码?

  3. 算法题:二叉树层序遍历,进一步提问:要求每层打印出一个换行符

  4. 二叉树任意两个节点之间路径的最大长度

  5. 如何实现二叉树的深度?

  6. 如何打印二叉树每层的节点?

  7. TreeMap和TreeSet在排序时如何比较元素?Collections工具类中的sort()方法如何比较元素?

  8. 红黑树平衡怎么调整

  9. B树什么时候的高度会变高;

3、遍历

===============================================================

  1. 编程题:写一个函数,找到一个文件夹下所有文件,包括子文件夹

  2. 二叉树 Z 字型遍历

4、链表

===============================================================

  1. 反转单链表

  2. 随机链表的复制

  3. 链表-奇数位升序偶数位降序-让链表变成升序

  4. bucket如果用链表存储,它的缺点是什么?

  5. 如何判断链表检测环

5、数组

===============================================================

  1. 寻找一数组中前K个最大的数

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

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

  4. 一个数组,除一个元素外其它都是两两相等,求那个元素?

  5. 算法题:将一个二维数组顺时针旋转90度,说一下思路。

  6. 二分查询的时间复杂度是多少,为什么是logn

6、排序

===============================================================

  1. 排序算法知道哪些,时间复杂度是多少,哪些是稳定的 , 不稳定会有什么问题?解释一下快排?

  2. 如何得到一个数据流中的中位数?

  3. 堆排序的原理是什么? 大顶堆转换小顶堆

  4. 归并排序的原理是什么?

  5. 排序都有哪几种方法?请列举出来。

  6. 如何用java写一个冒泡排序?

  7. 口述topK

  8. 100个数字,100万个数字,100亿个数字,分别给出排序的方法。

  9. 讲一下最大堆和最小堆

7、堆与栈

================================================================

  1. 堆与栈的不同是什么?

  2. heap和stack有什么区别。

  3. 解释内存中的栈(stack)、堆(heap)和静态区(static area)的用法。

8、队列

===============================================================

  1. 什么是Java优先级队列(Priority Queue)?

9、字符串

================================================================

  1. KMP算法

10、图

===============================================================

  1. Dijkstra 算法

  2. 说一下数据结构中的图如何存储

11、高级算法

==================================================================

1、题目:

Design and implement a data structure for Least Frequently Used (LFU) cache. It should support the following operations: get and put.

get(key) - Get the value (will always be positive) of the key if the key exists in the cache, otherwise return -1.

put(key, value) - Set or insert the value if the key is not already present. When the cache reaches its capacity, it should invalidate the least frequently used item before inserting a new item. For the purpose of this problem, when there is a tie (i.e., two or more keys that have the same frequency), the least recently used key would be evicted.

Could you do both operations in O(1) time complexity?

2、id全局唯一且自增,如何实现?

3、如何设计算法压缩一段URL?

4、为什么要设计后缀表达式,有什么好处?

5、LRU算法的实现原理?

如何实现? 有两种方案(LinkedList和Redis) https://zhuanlan.zhihu.com/p/34133067

6、负载均衡算法 负载均衡器Ribbon的实现原理

7、A*算法

8、设计一个不使用链表的缓存淘汰算法

9、负载均衡算法有哪些

10、大O复杂度具体指的是什么?

11、动态规划了解吗,主要是用来解决什么问题?适用于什么场景?动态规划相比递归来说有什么优点。

八、分布式相关

1、分布式原理

==================================================================

  1. 缓存的实现原理,设计缓存要注意

  2. 微服务和单体架构优缺点在哪里?怎么评估一个系统是不是需要做微服务化?

  3. 了解的中间件;

  4. 微服务架构中,多级链路调用过程,如果部分调用失败,如何让状态回滚

  5. 服务熔断和服务降级有什么区别

  6. 分布式系统需要考虑哪些方面要素

  7. Hystrix 熔断原理

  8. RPC通信框架的概念。RPC通信的流程。rpc架构了解吗怎么实现?RPC框架的核心?

  9. 如果你自己设计一个rpc框架,怎么设计?

  10. 怎么热拷贝,给一个思路,比如一个ES集群在建立索引,我们怎么样在它还在持续建立索引的情况下,将当时的状态给dump下来

  11. 如果缓存雪崩,大量请求直接打到数据库怎么办?

  12. 服务限流,服务隔离。

  13. 当库存预加载以后,库存再次发生变化该如何解决?

  14. 实现限流怎么实现?若让你设计一个限流器,你会怎么设计(令牌桶算法的思路)

  15. 2PC 和 3PC

  16. raft协议介绍,raft的日志需要有什么特点 , 网络分区怎么解决,raft一致性如何实现

  17. etcd分布式锁如何实现

  18. 分布式kv元数据管理用什么结构

  19. Paxos和ZAB协议

  20. 分布式集群中如何保证线程安全?

  21. Twitter雪花算法了解一下

2、系统设计

=================================================================

  1. 如何画项目的架构、模块、技术图

  2. 如何设计存储海量数据的存储系统

  3. 设计一个系统,每天有100亿条数据,需要在后台做实时展示和查找。

  4. 我当时回答的大体思路是nginx负载均衡,消息队列存储,多线程读取,批量插入,数据库分库分表。面试官根据我的回答又衍生出了很多问题,如消息队列存满了怎么办?(也就是消费跟不上生产)批量插入时某一条失败了有什么影响?怎么解决?分库分表应该怎么分?怎么解决数据迁移的问题?

  5. 讲一下秒杀系统的整个架构? 秒杀系统如何解决超卖问题 ?

最后

面试题文档来啦,内容很多,485页!

由于笔记的内容太多,没办法全部展示出来,下面只截取部分内容展示。

1111道Java工程师必问面试题

MyBatis 27题 + ZooKeeper 25题 + Dubbo 30题:

Elasticsearch 24 题 +Memcached + Redis 40题:

Spring 26 题+ 微服务 27题+ Linux 45题:

Java面试题合集:

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注Java)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
. 如果你自己设计一个rpc框架,怎么设计?

  1. 怎么热拷贝,给一个思路,比如一个ES集群在建立索引,我们怎么样在它还在持续建立索引的情况下,将当时的状态给dump下来

  2. 如果缓存雪崩,大量请求直接打到数据库怎么办?

  3. 服务限流,服务隔离。

  4. 当库存预加载以后,库存再次发生变化该如何解决?

  5. 实现限流怎么实现?若让你设计一个限流器,你会怎么设计(令牌桶算法的思路)

  6. 2PC 和 3PC

  7. raft协议介绍,raft的日志需要有什么特点 , 网络分区怎么解决,raft一致性如何实现

  8. etcd分布式锁如何实现

  9. 分布式kv元数据管理用什么结构

  10. Paxos和ZAB协议

  11. 分布式集群中如何保证线程安全?

  12. Twitter雪花算法了解一下

2、系统设计

=================================================================

  1. 如何画项目的架构、模块、技术图

  2. 如何设计存储海量数据的存储系统

  3. 设计一个系统,每天有100亿条数据,需要在后台做实时展示和查找。

  4. 我当时回答的大体思路是nginx负载均衡,消息队列存储,多线程读取,批量插入,数据库分库分表。面试官根据我的回答又衍生出了很多问题,如消息队列存满了怎么办?(也就是消费跟不上生产)批量插入时某一条失败了有什么影响?怎么解决?分库分表应该怎么分?怎么解决数据迁移的问题?

  5. 讲一下秒杀系统的整个架构? 秒杀系统如何解决超卖问题 ?

最后

面试题文档来啦,内容很多,485页!

由于笔记的内容太多,没办法全部展示出来,下面只截取部分内容展示。

1111道Java工程师必问面试题

[外链图片转存中…(img-79qJORUT-1713156013276)]

MyBatis 27题 + ZooKeeper 25题 + Dubbo 30题:

[外链图片转存中…(img-CpA0OPQl-1713156013276)]

Elasticsearch 24 题 +Memcached + Redis 40题:

[外链图片转存中…(img-jLq1nQxR-1713156013276)]

Spring 26 题+ 微服务 27题+ Linux 45题:

[外链图片转存中…(img-qW8P339k-1713156013277)]

Java面试题合集:

[外链图片转存中…(img-AMkb7taF-1713156013277)]

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注Java)
[外链图片转存中…(img-cnJDKlxl-1713156013278)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 14
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值