2021年Java进阶面试题总结

面试必问:串口通信(全网最全) 串口通信协议是指在串口通信中约定的数据传输规则和格式。常见的串口通信协议包括以下几种: RS-232、RS-485、UART、Modbus、I2C、SPI、CAN等。 阅读详情

1、Spring之IoC/(DI)和AOP

依赖注入(Dependecy Injection)和控制反转(Inversion of Control)是同一个概念

依赖注入有三种注入方式:属性注入,构造器注入,工厂注入(静态工厂和实体工厂)

依赖注入的底层实现机制:反射机制

面向切面编程(AOP):分为前置通知、切面、后置通知、异常通知

前置通知:在方法执行前执行

切面:相当于要实现的功能

后置通知:在方法执行后执行

异常通知:在方法抛出异常后执行

面向切面编程的底层实现机制:动态代理

2、Spring、SpringMVC、Springboot的区别

Spring就是一个大的bean工厂,存储Bean的容器

常见的bean对象如:dataSource、事务、以及我们用的@Component 组件(spring的bean对象)@Controller 控制器@Service 服务@Repository 仓库注解后经过自动臊面

都会形成bean对象

SpringMVC:这个容器就相当于 一个请求发送过来后,经过SpringMVC容器获取,分析后进行对应spring容器里相应bean对象的转发,返回的值在经过SpringMVC容器响应给前端页面

Springboot:相对于Spring和SpringMVC主要的区别在于简化配置、内嵌Web服务器(Tomcat、Jetty等)、提供POM,简化Maven配置

3、Mybaites中$和#的区别

$:不能防止SQL注入

#:可以防止SQL注入

原因说明:$替换什么是什么,#是已占位符(?)的形式进行替换会默认加单引号(‘’)

4、WebService有哪些优势

互操作性、跨平台性:应用程序可以使用Webservice以任何语言与另一个应用程序进行交互

更便宜的沟通成本:WebService确实使用SOAP over HTTP来允许任何人使用已经存在的用于WebService的Internet

5、ActiveMQ的作用总结(应用场景及优势)

业务场景说明:

队列的主要作用是消除高并发访问高峰,加快网站的响应速度。

在不使用消息队列的情况下,用户的请求数据直接写入数据库,在高并发的情况下,会对数据库造成巨大的压力,同时也使得系统响应延迟加剧。

在使用队列后,用户的请求发给队列后立即返回,

(例如: 当然不能直接给用户提示订单提交成功,京东上提示:“您提交了订单,请等待系统确认”),

再由消息队列的消费者进程从消息队列中获取数据,异步写入数据库。

由于消息队列的服务处理速度远快于数据库,因此用户的响应延迟可得到有效改善。

图解说明:

6、redis击穿、穿透、雪崩

缓存击穿:某一个数据缓存中没有但数据库中有的数据(一般是缓存时间到期),这时由于并发用户特别多,同时读缓存没读到数据,又同时去数据库去取数据,引起数据库压力瞬间增大,严重情况下会直接挂掉。

解决方法:1、添加互斥锁 2、设置热点数据永不过期(物理上的不过期、“逻辑上”的不过期(缓存到期动态构建缓存))

缓存穿透:当缓存与数据库中都不存在该数据时,由于当数据库查询不到数据就不会写入缓存,这个时候如果用户不断的恶意发起请求,就会导致这个不存在的数据每次请求都会查询DB,请求量大的情况下,就会导致DB压力过大,直接挂掉。

解决方法:1、当查询返回一个空数据时,直接将这个空数据存到缓存中,过期时间不宜设置过长,建议不超过5分钟 2、采用布隆过滤器

缓存雪崩:缓存中大批量的数据都到了过期时间,从而导致查询数据量巨大,引起数据库压力过大甚至down机。和缓存击穿不同,缓存击穿是指某一条数据到了过期时间,大量的并发请求都来查询这一条数据,缓存雪崩是不同数据都过期了,很多数据都查不到从而查数据库

解决方法:1、设置热点数据永不过期 2、缓存数据的过期时间设置随机,可以在原有的过期时间上加上一个随机值,比如1-3min,防止同一时间大量缓存数据集体失效,导致数据库压力过大。 3、如果是分布式部署缓存数据库,可将热点数据分别存放到不同的缓存数据库中,避免某一点由于压力过大而down掉

7、redis哨兵模式

哨兵的作用:

监控(Monitoring):哨兵会不断地检查主节点和从节点是否运作正常

自动故障转移(Automatic failover):当主节点不能正常工作时,哨兵会开始自动故障转移操作,它会将失效主节点的其中一个从节点升级为新的主节点,并让其他从节点改为复制新的主节点

配置提供者(Configurationprovider):客户端在初始化时,通过连接哨兵来获得当前 Redis 服务的主节点地址

通知(Notification):哨兵可以将故障转移的结果发送给客户端

它由两部分组成,哨兵节点和数据节点:

哨兵节点:哨兵系统由一个或多个哨兵节点组成,哨兵节点是特殊的 Redis 节点,不存储数据

数据节点:主节点和从节点都是数据节点

哨兵系统的部署方法

这一部分将部署一个简单的哨兵系统,包含 1 个主节点、2 个从节点和 3 个哨兵节点

**方便起见:**所有这些节点都部署在一台机器上(局域网 IP:xxx.xxx.xx.xxx),使用端口号区分;节点的配置尽可能简化

8、sql优化

1、对查询进行优化,要尽量避免全表扫描,首先应考虑在where及order by 涉及的列上建立索引

2、应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描

3、应尽量避免在 where 子句中使用 != 或 <> 操作符,否则将引擎放弃使用索引而进行全表扫描

4、应尽量避免在 where 子句中使用 or 来连接条件,如果一个字段有索引,一个字段没有索引,将导致引擎放弃使用索引而进行全表扫描

5、in 和 not in 也要慎用,否则会导致全表扫描,对于连续的数值,能用 between 就不要用 in 了,很多时候用 exists 代替 in

6、应尽量避免在where子句中对字段进行函数操作,这将导致引擎放弃使用索引而进行全表扫描

9、如何合理化新建索引

1、表的主键、外键必须有索引

2、数据量超过300的表应该有索引

3、经常与其他表进行连接的表,在连接字段上应该建立索引

4、经常出现在Where子句中的字段,特别是大表的字段,应该建立索引

5、索引应该建在选择性高的字段上

6、索引应该建在小字段上,对于大的文本字段甚至超长字段,不要建索引

10、FastDFS(分布式文件系统)

它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题

11、elasticsearch的用途

概念:Elasticsearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是一种流行的企业级搜索引擎

用途:Elasticsearch用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便

12、docker虚拟化容器技术

docker理顺了软件包的问题,有了docker运行一个镜像是非常容易的,不需要做各种环境的配置。

13、JenKins自动化部署工具

Jenkins是一个开源的、可扩展的持续集成、交付、部署(软件/代码的编译、打包、部署)的基于web界面的平台。允许持续集成和持续交付项目,无论用的是什么平台,可以处理任何类型的构建或持续集成。

14、Sonar代码质量监控工具

Sonar是一个用于代码质量管理的开源平台,用于管理源代码的质量,可以从七个维度检测代码质量

通过插件形式,可以支持包括java,C#,C/C++,PL/SQL,Cobol,JavaScrip,Groovy等等二十几种编程语言的代码质量管理与检测

15、Nginx正向代理和反向代理

正向代理是一个位于客户端和原始服务器之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。

反向代理实际运行方式是代理服务器接受网络上的连接请求。它将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给网络上请求连接的客户端,此时代理服务器对外就表现为一个服务器。

16、Modbus协议两种类型以及应用场景

两种类型:opc和tcp:OPC不需要转化 TCP协议是二进制需要自己转化

应用场景:软硬件设备

17、项目介绍两大块

业务介绍:系统中都做了哪些功能,这些功能一定是一个闭环操作,说清楚即可,强调一下一个功能是一个小闭环,多功能之间形成大闭环

技术实现:每个功能都是有哪些技术实现的?有点水平的就是高并发的解决,多系统之间通信等

18、设计模式有多少种?

创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式

结构型模式,共七种:适配器模式、装饰者模式、代理模式、外观模式、桥接模式、组合模式、享元模式。

行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。

19、设计模式遵循的6大原则

1、单一职责原则 -----每个类应该实现单一的职责
2、里氏替换原则------继承复用,增加新的行为
3、依赖倒转原则------依赖抽象而不依赖具体
4、接口隔离原则------使用多个隔离的接口
5、迪米特法则--------只与直接的朋友通信,减少依赖
6、合成复用原则------使用合成/聚合的方式,而不是使用继承

20、冒泡排序和选择排序手写代码

冒泡排序

public class MyClass {
public static void main(String[] args) {
int arr[] = new int[]{1, 3, 5, 7, 9, 2, 4, 6, 8, 0};
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j + 1 < arr.length - i; j++) {
if (arr[j] < arr[j + 1]) {
int t = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = t;
}
}
}
for (int i = 0; i < arr.length; i++)
System.out.print(arr[i] + " ");
System.out.println();
}
}

选择排序

int[] arr = {5, 1, 18, 2, 45, 31, -8};

int k = 0;

for (int i = 0; i < arr.length; i++) {

k = i;

for (int j = i+1; j < arr.length; j++) {

if(arr[j] < arr[k]){

k = j;

}

}

int temp = arr[i];

arr[i] = arr[k];

arr[k] = temp;

}

21、单例模式两种手写代码

饿汉式单例

public class Singleton {

private Singleton(){}

private static Singleton instance = new Singleton();

public static Singleton getInstance(){

return instance;

}

}

懒汉式单例

public class Singleton {

private static Singleton instance = null;

private Singleton() {}

public static synchronized Singleton getInstance(){

if (instance == null) instance=new Singleton();

return instance;

}

}

先自我介绍一下,小编13年上师交大毕业,曾经在小公司待过,去过华为OPPO等大厂,18年进入阿里,直到现在。深知大多数初中级java工程师,想要升技能,往往是需要自己摸索成长或是报班学习,但对于培训机构动则近万元的学费,着实压力不小。自己不成体系的自学效率很低又漫长,而且容易碰到天花板技术停止不前。因此我收集了一份《java开发全套学习资料》送给大家,初衷也很简单,就是希望帮助到想自学又不知道该从何学起的朋友,同时减轻大家的负担。添加下方名片,即可获取全套学习资料哦

Java面试题及答案(2021Java面试题大全带答案) 01、Java有没有goto?02、JVM怎么判断一个对象是不是要回收?03、创建了几个字符串对象?04、什么是过滤器?怎么创建一个过滤器05、介绍一下JVM中垃圾收集器有哪些?他们特点分别是什么?06、线程池的执行原理?07、假设数组内有5个元素,如果对数组进行反序,该如何做?08、java中IO流分为几种?09、你都有哪些手段用来排查内存溢出?10、GC是什么?为什么要有GC?此处,仅展示前10道,查看更多40道…01、CMS分为哪几个阶段?02、03、04、05、06、07、08、... 阅读详情

相关推荐

2021 中国系统java面试笔试题(含面试题解析)

本人2开发经验、20底开始跑路找工作,在互联网寒冬下成功拿到阿里巴巴、今日头条、中国系统等公司offer,岗位是Java后端开发,因为发展原因最终选择去了中国系统,入职一时间了,也成为了面试官,之前面试了很多家公司,感觉大部分公司考察的点都差不多,趁空闲时间,将自己的心得记下来,希望能给正在找或者准备找工作的朋友提供一点帮助。...

m0_54866636的博客 585

Modbus通信协议详解

Modbus通信协议详解 MODBUS是OSI模型第7层上的应用层报文传输协议,它在连接至不同类型总线或网络的设备 之间提供客户机/服务器通信。 自从1979出现工业串行链路的事实标准以来,MODBUS使成千上万的自动化设备能够通信。 目前,继续增加对简单而雅观的MODBUS结构支持。互联网组织能够使TCP/IP栈上的保留系统端 口502 访问MODBUSMODBUS 是一个请求/应答协议,并且提供功能码规定的服务。MODBUS 功能码是MODBUS 请求/应答PDU 的元素。本文件的作用是描述MODBUS 事务处理框架内使用的功能码。

嵌入式Modbus协议面试题及参考答案

Modbus 协议采用主从模式进行通信,这种模式定义明确,便于在工业环境中实现设备之间的有序数据交互。在主从模式中,存在一个主站(Master)和多个从站(Slave)。主站通常是工业控制系统中的上位机,如 PLC、工控机等,它负责发起通信请求,控制整个通信过程。从站则是各种现场设备,如传感器、执行器等,它们接收主站的请求,并根据请求进行相应的操作,然后将结果返回给主站。主站的主要功能包括:发起数据读取或写入请求、控制通信的时序和流程、处理从站返回的数据。

大模型大数据攻城狮的专栏 1964

16个“经典”面试问题回答思路

16个“经典”面试问题回答思路txt文件

Modbus协议详细解析与案例分享

Modbus是一种串行通信协议,用于实现工业自动化设备之间的通信。它简单、易于实现和使用,在工业领域广泛应用。Modbus协议包括多种变体,最常见的是Modbus RTU和Modbus TCP。本文介绍了Modbus协议的基本概念、帧结构以及Java中的实现示例。通过学习和掌握Modbus协议,可以更好地应用于工业控制和自动化领域。欢迎关注我的博客,获取更多有关工业自动化和通信协议的知识!

私聊前往站内信:https://i.csdn.net/#/msg/chat/weixin_44976692 2万+

20206月面试题记忆录

rtos:实时操作系统 种类有很多种,但是中国主流的有: 1、uc/os,读法叫做“谬miu·克死”或“u·克死” 2、freertos 3、RT-thread Linux有哪些版本? 1、本人使用的是ubantu系统,也是唯一一个有用户桌面的Linux系统。 2、Debian 3、red hat 4、CentOS 。。。 modbus 1、modbus是个单主站的主从通信协议,在这条线中,只有唯一一个主站。从站有多个,可选1-247. 2、一个Modbus通讯的传输字符应包括一个起始位,8个数据位,1个.

wesigj的博客 1840

一些modbus协议面试题

简述Modbus Plus(Modbus+ 或 MB+)与Modbus的区别。请简述Modbus TCP与Modbus RTU/ASCII的主要区别。在使用Modbus协议进行通信时,如何确保数据的完整性和正确性?在实现Modbus协议时,可能会遇到哪些问题?Modbus协议支持哪些传输模式?请简述Modbus协议是什么,以及它主要应用在哪些领域?Modbus协议中,如何处理通信超时和数据不完整的情况?请列举几个常用的Modbus功能码,并解释它们的作用。Modbus协议中的主从设备是如何工作的?

ThinkPet 2700

2021最新Java并发进阶常见面试题总结【附解答资料下载】

前言 大家好~我是桃子,Java并发编程是Java后端、大数据开发面试必问项目之一,求职者务必掌握!为了让大家能够更好的应对面试官,我爆肝一周,给大家码了将近50道Java并发进阶常见面试题,希望能够帮助正在准备面试的你,码字不易,希望能得到你的点赞、评论、转发、收藏! 1.synchronized 关键字 1.1 说一说自己对于 synchronized 关键字的了解 1.2 说说自己是怎么使用 synchronized 关键字 1.3 构造方法可以使用 synchronized 关键字修饰么? 1.

weixin_57907028的博客 210

最新Java开发进阶2021Java社招面试题

蚂蚁金服(五面) 蚂蚁金服:一面 一面就做了一道算法题,要求两小时内完成,给了长度为N的有重复元素的数组,要求输出第10大的数。典型的TopK问题,快排算法搞定。 算法题要注意的是合法性校验、边界条件以及异常的处理。另外,如果要写测试用例,一定要保证测试覆盖场景尽可能全。加上平时刷刷算法题,这种考核应该没问题的。 蚂蚁金服:二面 自我介绍下呗 开源项目贡献过代码么? 目前该部门做什么,业务简单介绍下,内部有哪些系统,作用和交互过程说下 Dubbo踩过哪些坑,分别是怎么解决的? 开始进入正题,说下你对线程

目标检测专栏持续更新中,改进YOLO系列通用,适用v5、v7、v8、所有博客均是团队原创博客,所有文章禁止转载,违者必究。 305

2021Java进阶者的新篇章,Java面试题及解析

Kafka宕机引发的高可用问题 问题要从一次Kafka的宕机开始说起。 笔者所在的是一家金融科技公司,但公司内部并没有采用在金融支付领域更为流行的RabbitMQ,而是采用了设计之初就为日志处理而生的Kafka,所以我一直很好奇Kafka的高可用实现和保障。从Kafka部署后,系统内部使用的Kafka一直运行稳定,没有出现不可用的情况。 但最近系统测试人员常反馈偶有Kafka消费者收不到消息的情况,登陆管理界面发现三个节点中有一个节点宕机挂掉了。但是按照高可用的理念,三个节点还有两个节点可用怎么就引起了整个

m0_57624876的博客 68

2021Java开发进阶课程!大厂Java核心面试题出炉

认识HTTP 什么是超文本 什么是传输 什么是协议 HTTP相关组件 网络模型 OSI 模型 浏览器 Web服务器 CDN WAF WebService HTML Web页面构成 与 HTTP 有关的协议 TCP/IP DNS URI / URL HTTPS 详解 HTTP 报文 HTTP请求方法 HTTP请求URL HTTP版本 HTTP 请求响应过程 HTTP 请求特征 HTTP 标头 通用标头 请求标头 响应标头 实体标头 HTTP 内容协商 什么是内容协商 内容协商的

碧海朝天素 80

MODBUS 通信协议

14页介绍涵盖历史和收发示例,适合快速入门了解 MODBUS rtu, ascii, tcp格式协议

详解Java架构进阶面试题2021Java面经分享,详解系列文章

前言 苦苦寻觅找工作之间,殊不知今日之时乃我心之痛,难道是我不配拥有工作嘛。自面试后他所谓的等待都过去一段时日,可惜在下京东上的小金库都要见低啦。每每想到不由心中一紧。正处为难之间,手机忽然来了个短信预约后续面试。 我即刻三下五除二拎包踢门而出。飞奔而去。 此刻面试门外首先映入眼帘的是一个白色似皮球的东西,似圆非圆。好奇冬瓜落地一般。上半段还有一段湿湿的部分,显得尤为入目。这是什么情况? 紧接着现身一名中男子。他身着纯白色T桖衫的,一灰色宽松的休闲西裤,腰围至少得三十好几。外加一双夏日必备皮质凉鞋。只见

115

Java注释】Java注释没那么单调,注释也有花样玩哦,玩透Java注释收藏这一篇就够了

针对最近很多人都在面试,我这边也整理了相当多的面试专题资料,也有其他大厂的面经。希望可以帮助到大家。上述的面试题答案都整理成文档笔记。也还整理了一些面试资料&最新2021收集的一些大厂的面试真题(都整理成文档,小部分截图)以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录需要这份系统化的资料的朋友,可以点击这里获取。

mxzsybkj的博客 424

2024面试官问:Java 中如何处理含有泛型的 JSON 反序列化问题?,Java面试总结

针对最近很多人都在面试,我这边也整理了相当多的面试专题资料,也有其他大厂的面经。希望可以帮助到大家。最新整理面试题上述的面试题答案都整理成文档笔记。也还整理了一些面试资料&最新2021收集的一些大厂的面试真题最新整理电子书最新整理大厂面试文档以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录需要这份系统化的资料的朋友,可以点击这里获取。

2401_84584609的博客 498

Git神作!2024Java全栈面试突击,金三银四面试稳了(1)

大型分布式系统犹如一个生命,系统中各个服务犹如骨骼,其中的数据犹如血液,而Kafka犹如经络,串联整个系统。这份Kafka源码笔记通过大量的设计图展示、代码分析、示例分享,把Kafka的实现脉络展示在读者面前,帮助读者更好地研读Kafka代码。麻烦帮忙转发一下这篇文章+关注我网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注Java

2401_84007049的博客 373
上一篇: 2021年Javascript最常见的面试题以及答案
下一篇: 2021年Java面试题抢先看,够全!(持续更新中)
m0_55070913
博客等级 码龄6年 6万+粉丝 · 475原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值