java面试知识点总结
基本原则:
各种知识点,以及对应的会出现的问题和其局限性,及怎样解决。还有就是同一种组件的横向比较
例如CAS,以及使用CAS会出现的问题:ABA问题,自旋会消耗CPU问题,只能锁定一个变量的局限性问题。
Redis使用过程中会遇到的缓存穿透,缓存击穿,缓存雪崩,缓存满了以后的淘汰策略等。
数据库索引使用过程中会遇到的索引失效,怎样查看索引使用情况的explain等。
MQ的各种实现的横向比较,各种数据库的横向比较等。
记录一下可能被问到的知识点
1.spring源码,用到了哪些设计模式
2.JVM优化: 预优化、卡顿、出问题怎么办,还有就是做过什么优化,举例说明
JVM相关文章:【深入Java虚拟机】之一:Java内存区域与内存溢出_兰亭风雨的专栏-CSDN博客_java内存区域与内存溢出
3.写到简历里的东西,最好都做好相关知识点的准备,如果被问到,却答不上来,会很尴尬
4.React 函数式组件和类组件的区别
5.重要:在项目中遇到过什么难题?怎样解决的?多准备几个,自己上网搜,比如内存问题,线程问题等等吧
具体知识点:
Java官方文档:
Java Platform, Standard Edition Documentation - Releases (oracle.com)
Home: Java Platform, Standard Edition (Java SE) 8 Release 8 (oracle.com)
What's New in JDK 8 (oracle.com)
JDK 11 Release Notes, Important Changes, and Information (oracle.com)
1.Redis
Redis集群原理详解_张维鹏的博客-CSDN博客_redis集群读写分离原理
(1).Redis做分布式锁,用到哪些命令
使用nx, 只有在key不存在的时候,才能set成功
使用ex,为锁设置过期时间
set key value nx ex 10s
(2).Redis持久化
RDB全量,AOF增量
(3).Redis缓存过期,并发排他
如果一个key过期,但是有大量并发请求过来,怎么办? 加锁(多个client抢锁,所以加分布式锁),只让一个请求到达数据库,拿到数据后,添加到缓存,然后释放锁,其它线程直接从缓存拿数据,避免大量请求同时达到数据库,给数据库造成压力。
(4).Cache-aside模型相关
缓存穿透、缓存击穿、缓存雪崩的区别 - PC君 - 博客园 (cnblogs.com)
Redis cache-aside模型研究_知难行难1985的博客-CSDN博客
2.内存溢出的情况:
列出5种就可以了
重要:IT老齐讲述的排查OOM并最终解决的方案:
【IT老齐043】IT老齐线上Java OOM排查与解决过程分享(下)_哔哩哔哩_bilibili
以及下面这个Error:
1.安全方面:
SpringSecurity 怎样阻止跨域攻击CSRF。
这篇文章写得不错:
SpringSecurity (4) CSRF 与 CSRF-TOKEN 的处理_O_o-CSDN博客
相关的响应式编程(异步编程):
一文带你彻底了解Java异步编程 - 知乎 (zhihu.com)
1.SpringCloud版本, SpringBoot版本, RabbitMQ版本
Hoxton -> 2.2.x
Greenwich -> 2.1.x
Finchley -> 2.0.x
Edgware -> 1.5.x
Dalston -> 1.5.x
<spring.boot.version>2.4.8</spring.boot.version>
<nacos.version>2.0.2</nacos.version>
<spring.cloud.version>2020.0.4</spring.cloud.version>
<spring-cloud-alibaba-dependencies.version>2021.1</spring-cloud-alibaba-dependencies.version>
MongoDB 4.0 1个primary,2个secondary
Redis 4.0 内存8G, 单机
RabbitMQ 3.7.17 单机(如果要用集群的话,集群分为普通集群和镜像集群)
Kafka:2.13
mysql版本:MySQL 5.6.51 ,华为云数据库RDS
k8s集群版本 : v1.19
docker版本:18.09,客户端和服务端都是18.09
2.React 生命周期,高阶组件, js原型,继承
JS原型:https://segmentfault.com/a/1190000021232132
深入理解javascript原型和闭包(完结) - 王福朋 - 博客园https://www.liaoxuefeng.com/wiki/1022910821149312/1023022043494624深入理解javascript原型和闭包(完结) - 王福朋 - 博客园
继承的几种方式:
- Object.create(): var s = Object.create(Student);
- 构造函数
三个属性:__proto__、prototype、 constructor
- __proto__、 constructor属性是对象所独有的;
- prototype属性是函数独有的;
- js中函数也是对象的一种,那么函数同样也有属性__proto__、 constructor;
也就是说构造函数比普通对象多了一个属性prototype
3.微服务监控 SpringBoot Admin,还有呢?
除了springboot admin, 还有普罗米修斯等,它们都是基于actuator这个信息采集工具,actuator被集成在微服务中。
Spring Actuator 与 Spring boot Admin_Jack汪喆的技术分享栏-CSDN博客_actuator和admin
4.微服务链路监控是什么来 slueth?
现在使用skywalking
4.IO相关:
字节流和字符流的区别,字节流没有使用缓冲区,所以直接操作文件
https://blog.csdn.net/chenkaibsw/article/details/81606722
BIO,NIO, AIO,响应式编程等概念:
深度长文:从bio到nio到aio,再到响应式编程_小姐姐味道的博客-CSDN博客
一文带你彻底了解Java异步编程 - 知乎 (zhihu.com)
Netty默认线程数是2*N+1:
Netty肯定是IO密集型,CPU密集型的话,线程数是N+1
netty源码分析之nio线程个数以及线程命名规则_小潭渔的博客-CSDN博客_netty 线程数量
重要:里面有响应式编程内容:
一文带你彻底了解Java异步编程 - 知乎 (zhihu.com)
同步、异步:
阻塞、非阻塞是指线程是否挂起,同步异步是指线程是否亲自去读写数据(用户空间和内核空间之间),同步是需要线程亲自去读写数据,异步的话不需要,衣来伸手饭来张口。
下面这篇文章解释得非常好。
为什么nio是同步非阻塞的 - CSDN
备份:为什么NIO被称为同步非阻塞_知难行难1985的博客-CSDN博客
5.索引失效的8种情况:
重要----阿里慢sql挑战大赛案例讲解---IT老齐:
【IT老齐044】190毫秒干到2毫秒!?2017阿里云SQL优化挑战赛实战分享_哔哩哔哩_bilibili
6.布隆过滤器:
7.SpringMVC 拦截器 与filter的区别
8.服务熔断与降级:
https://blog.csdn.net/wdquan19851029/article/details/121075166
9.动态规划算法: 10级台阶
10.Dubbo netty模拟:
11.系统处理的最大并发量问题。
怎样回答这个问题?每个Tomcat最大并发量应该是1000ps,集群可以解决大并发问题。
12.Ribbon的负载均衡策略及原理
https://blog.csdn.net/u013099854/article/details/104005947
13.分布式事务:
https://blog.csdn.net/qq_35190492/article/details/108000380
面试官问我知道的分布式事务,我一口气说了六种_敖丙-CSDN博客
sharding-jdbc+seata实现分库分表,多数据源整合和seata分布式事务_HTslide的博客-CSDN博客
14.Tomcat的性能与最大并发量
15.谈谈服务雪崩、降级与熔断
https://blog.csdn.net/fujiandiyi008/article/details/88015295
16.WebSocket实现原理
17. mybatis 从头到尾
18. hibernate 从头到尾
19. sharding-jdbc 事务问题
sharding-jdbc+seata实现分库分表,多数据源整合和seata分布式事务_HTslide的博客-CSDN博客
面试官问我知道的分布式事务,我一口气说了六种_敖丙-CSDN博客
20. java 8 与 java 11的区别:
JAVA 8与JAVA 11到底该怎么选?_A16670113506的博客-CSDN博客_java11和java82
21.mybatis mapper是怎样实例化的?
还是要熟悉mybatis原理才行。
Mybatis四大对象,说一下对它们的理解
关于mybatis的一个疑惑(Mapper接口如何实例化的)_tanqidong1992的专栏-CSDN博客_ibatis mapper如何实例化
JDBC:深入理解PreparedStatement和Statement_Marvel__Dead 胡艺宝的博客-CSDN博客_jdbc preparedstatement Mybatis源码分析第一讲之Mybatis概述 - 田俊哲的博客 | Shmilyz Blog
Tags - 田俊哲的博客 | Shmilyz Blog
[转]Java 动态代理机制分析及扩展_dgt21030的博客-CSDN博客
22.SpringCloud微服务治理框架的各种组件,相同功能组件的比较与优缺点
微服务方面还是要仔细看的。
23.React Route中的switch 作用是什么?
(1).有<Switch>标签,则其中的<Route>在路径相同的情况下,只匹配第一个,这个可以避免重复匹配;
(2).无<Switch>标签,则其中的<Route>在路径相同的情况下全都会匹配。更严重的是,还会匹配上级路径的
结论:为了更好地匹配规则,轻易不要舍弃<Switch>。
react-router中,<switch>标签存在意义说明 - 简书
24.怎样设计一个高并发系统?
mysql每秒支持多少并发_如何设计一个高并发系统?_weixin_39996035的博客-CSDN博客
25.Springcloud gateway配置与使用
Spring cloud gateway 详解和配置使用(文章较长)_荡漾-CSDN博客
26. 微服务划分-DDD领域驱动---重要
微服务拆分_wdquan19851029的专栏-CSDN博客
27. CAS是什么? 它的缺点是什么?
CAS的缺点及解决 - 知乎
28. Spring声明式事务@Transaction
有没有回滚失败的情况?其实是有的,因为默认这是回滚RuntimeException及其子类,如果不是RuntimeException, 则不会回滚,例如ParseException,该怎么办呢? 可以设置参数rollback = Exception.class让其回滚所有异常。
29.持续集成,持续交付,持续部署这些概念很重要:
持续集成、持续交付、持续部署_purpose的博客-CSDN博客_持续集成和持续交付
持续集成、持续交付、持续部署(CI/CD)简介_yuanjunliang的博客-CSDN博客_持续交付
30.java 异常体系:
都是继承于throwable类,分为Error和Exception, 其中Error是不能捕获的,Exception是可以捕获的,但是Exception中的runtimeException及其子类是不需要捕获的(例如nullpointerException, 数组越界等), 其它种类的比如IOException是必须捕获的。
31.算法
1.八大排序算法,及其变种:
除了要掌握基本算法,还要掌握其变种,例如一万数据的数组,怎样最快获取它的最小的100个,采用哪种算法?冒泡或者快排,堆排序还是其它?
2.分布式系统中生成唯一自增ID的雪花算法
3.Redis缓存删除算法: 例如LRU, LFU算法
32.mysql, mongodb, redis等数据库的区别:
33.IAAS, PAAS, SAAS这些概念也要掌握
一张图看懂IaaS, PaaS和SaaS的区别_IT精选-CSDN博客_iaas paas saas
34.Spring容器初始化,以及在此过程中,怎样解决bean生产过程中的循环依赖
35. RabbitMQ, Kafka
RabbitMQ的队列怎样持久化等等,通过页面配置,在Springboot中怎样配置??
RabbitMQ介绍_游王子的博客-CSDN博客_rabbitmq介绍
这几篇文章不错 ,详细讲述了在springboot中的使用:
rabbitMQ 可靠性消息投递_angen2018的博客-CSDN博客_rabbitmq可靠性投递解决方案
备份:rabbitMQ 可靠性消息投递_知难行难1985的博客-CSDN博客
rabbitmq ACK消费者确认机制_angen2018的博客-CSDN博客_rabbitmq消费者确认机制
备份: rabbitmq ACK消费者确认机制_知难行难1985的博客-CSDN博客
RabbitMQ崩溃恢复后消息的恢复:
RabbitMQ 的消息持久化与 Spring AMQP 的实现详解 - java框架 - 谷谷点程序 (3qphp.com)
备份:RabbitMQ 的消息持久化与 Spring AMQP 的实现详解_知难行难1985的博客-CSDN博客
RabbitMQ私信队列研究:
RabbitMQ的死信队列详解_知难行难1985的博客-CSDN博客
RabbitMQ 消息有效期问题_天怎么不会塌的博客-CSDN博客_rabbitmq消息过期无效
36.Springboot 事务使用以及失效情况(重要):
SpringBoot事务隔离等级和传播行为 - zincredible - 博客园 (cnblogs.com)
SpringBoot使用@Transactional_flyaway86的博客-CSDN博客_springboot transactional
事务无法回滚的两种情况:
39.微服务扩展AKF理论:
与DDD领域驱动开发有什么区别?
分布式AKF拆分原则 - -零 - 博客园 (cnblogs.com)
40.关于hash哈希算法:
很多框架中,包括分布式和非分布式框架,都要用到哈希取模运算,例如nginx,kafka等,所以有必要好好研究一下hash算法。
41.函数式编程:
Lambda表达式与函数接口
Java函数式编程_打工人你好的博客-CSDN博客_java函数式编程
Java中的lambda每次执行都会创建一个新对象吗 - 云+社区 - 腾讯云 (tencent.com)
Java中的函数式编程_java_脚本之家 (jb51.net)
42.内存泄漏:
1.InputStream, OutputStream等各种输入输出流未关闭导致的内存泄漏
2.ThreadLocal set之后,线程执行完之前,必须要将set的值remove掉,不然也会内存泄漏,虽然ThreadLocal里面用的软引用。
43.线程:
线程池自定义线程名称:
(1条消息) java自定义线程池名称_zquwei的博客-CSDN博客_java 线程池命名
重要:
Java中各种死锁详细讲述及其解决方案(图文并茂,浅显易懂)_李子捌的博客-CSDN博客_java 死锁
Java 线程死锁及如何避免死锁介绍_阿布~的博客-CSDN博客_java线程死锁
Java多线程 开发中避免死锁的八种方法_java持续实践的博客-CSDN博客_实际开发中如何避免死锁
44. 动态代理实现方式
动态代理proxy与CGLib的区别_茅坤宝骏氹的博客-CSDN博客_proxy和cglib
45.多线程之间是如何通信的?
46.AQS
47.多线程之间是如何通信的?
48. CAP与BASE理论
cap理论与base理论_月上柳梢头。的博客-CSDN博客_cap理论
[分布式]:分布式系统的CAP理论_Franco蜡笔小强的博客-CSDN博客_分布式cap
49.响应式编程 到 WebFlux:
WebFlux 详解_程序猿秃头之路的博客-CSDN博客_webflux
50.K8s面试题:
K8S面试题总结_孤独天狼的博客-CSDN博客_k8s面试题
java面试知识点总结相关推荐
- Java 面试知识点解析(七)——Web篇
前言: 在遨游了一番 Java Web 的世界之后,发现了自己的一些缺失,所以就着一篇深度好文:知名互联网公司校招 Java 开发岗面试知识点解析 ,来好好的对 Java 知识点进行复习和学习一番,大 ...
- Java 面试知识点解析(六)——数据库篇
前言: 在遨游了一番 Java Web 的世界之后,发现了自己的一些缺失,所以就着一篇深度好文:知名互联网公司校招 Java 开发岗面试知识点解析 ,来好好的对 Java 知识点进行复习和学习一番,大 ...
- Java 面试知识点解析(五)——网络协议篇
前言: 在遨游了一番 Java Web 的世界之后,发现了自己的一些缺失,所以就着一篇深度好文:知名互联网公司校招 Java 开发岗面试知识点解析 ,来好好的对 Java 知识点进行复习和学习一番,大 ...
- Java 面试知识点解析(三)——JVM篇
前言: 在遨游了一番 Java Web 的世界之后,发现了自己的一些缺失,所以就着一篇深度好文:知名互联网公司校招 Java 开发岗面试知识点解析 ,来好好的对 Java 知识点进行复习和学习一番,大 ...
- Java 面试知识点解析(二)——高并发编程篇
前言: 在遨游了一番 Java Web 的世界之后,发现了自己的一些缺失,所以就着一篇深度好文:知名互联网公司校招 Java 开发岗面试知识点解析 ,来好好的对 Java 知识点进行复习和学习一番,大 ...
- Java面试知识点:网络编程
问题:Java面试知识点:网络编程 答案: 1.InetAddress 代码如下: package com.xy;import java.net.InetAddress; import java.ne ...
- Java面试知识点:多线程
问题:Java面试知识点:多线程 答案: 1.线程 代码如下: package com.xy;/*** @ProjectName: day01* @Package: com.xy* @ClassNam ...
- Java面试知识点:File、IO流
问题:Java面试知识点:File.IO流 答案: 1.File listFiles方法注意事项: • 当调用者不存在时,返回null • 当调用者是一个文件时,返回null • 当调用者是一个空文件 ...
- Java面试知识点:红黑树、Stream流
问题:Java面试知识点:红黑树.Stream流 答案: 1.红黑树 红黑树 • 平衡二叉B树 • 每一个节点可以是红或者黑 • 红黑树不是高度平衡的,它的平衡是通过"自己的红黑 ...
- Java面试知识点:集合、Set、泛型、HashSet、HashMap
Java面试知识点:集合.Set.泛型.HashSet.HashMap 答案: 1.集合 集合和数组的对比小结 1,数组的长度是不可变的,集合的长度是可变的. 2 ,数组可以存 ...
最新文章
- getFields()和getDeclaredFields的区别
- mysql表自关联_数据库之自关联
- 经验分享 | 通过adbd配置漏洞在安卓设备上提升权限
- bootstrap 隐藏元素_Bootstrap中折叠面板的样式内容
- .NET建议使用的大小写命名原则
- leetcode696. 计数二进制子串
- 为什么python打不开_python文件打不开如何解决
- php防伪溯源x系统_区块链溯源防伪追溯系统开发解决方案
- Wootrade宣布加入SushiSwa旗下Mirin协议和子池计划
- touch无法创建文件或者文档
- 转载:什么是良好的Verilog代码风格?(作者KellenWang)
- python_列表_常用操作
- html水平制表和垂直制表,将水平制表符转换为垂直制表符(仅限HTML和CSS,无js)
- cocos2d-x2.2.5走四棋儿源代码“开源”
- java 利用 ffmpeg 实现音频格式转码
- 计算机软件税负率,2015最新增值税税负对照表
- 读懂职场则规潜 潜伏者的上位秘诀
- 拥有超过1200个PNG格式图标的免费图标集 - Cosmo Mini
- 音频文件(.wav)解析读取
- 翻译:Pong Game Tutorial
热门文章
- 怎么制作升温曲线图_如何在EXcel做体温曲线图
- 为什么线程崩溃不会导致 JVM 崩溃
- Live Streaming
- 莫比乌斯反演 平衡规划 双端栈 双端队列 等价类等
- linux下raid0创建教程,在 Linux 下使用 RAID(二):使用 mdadm 工具创建软件 RAID 0 (条带化)...
- 设置JTree树形结构文字的颜色以及文字背景颜色的方法_-Chaz-_新浪博客
- python day2
- MySQL大略学习(二) 表格的操作 增删查改
- 如何搭建Flash P2P网络直播点播平台
- php圆形设计图,教程|PHP如何制作圆形用户头像?