Java面试知识点总结(二)

本文深入探讨Java集合框架中的List实现类与Map集合的实现类特性,对比HashMap与Hashtable的不同点,解析SpringMVC、SpringBoot、SpringCloud在微服务开发中的角色与区别,以及Zookeeper与Eureka在服务注册中心的角色与CAP理论下的表现。

一, list常用类有哪几个?
1, ArrayList:基于对象数组,非线程安全,在查询,遍历,修改使用时适合使用Arraylist
2,linkedlist:基于环形的双向链表,非线程安全,在增加,删除的使用情况下适合linkedlist
3,vector:线程安全

二, map集合的实现类?
1,HashMap:
2,Hashtable:
3,linkedHashMap;
4, sortedmap
5, EnumMap
6, properties
7, treemap

三,说说hashmap和hashtable的不同点?
1,继承方式不同
hashmap继承Abstractmap
hashtable继承dictionary

2,安全不同
hashmap是线程不安全的
hashtable是线程安全的,支持多线程

3,对null的值处理不同
hashmap的key,null都可以为null
hashtable的key,null都不可以为null

4,遍历的种类不同
hashmap只支持一种iterator迭代器遍历
hashtable支持iterator和枚举器两种方式

5,遍历顺序不同
hashmap是从前向后的遍历数组
hashtable是从后向前的遍历数组

6,添加key-value时的hash值算法不同
hashmap添加元素时,是使用自定义的哈希算法
hashtable没有自定义哈希算法,直接采用的是key的hashcode()

7,部分API不同
hashmap不支持Contains(Object value)方法,没有重写tostring()方法。
hashtable支持Contains(Object value)方法,而且重写了tostring()方法。

四,简单谈谈springmvc,springboot,springcloud的区别?

1,springmvc:是在spring基础上的一个mvc框架,主要处理web开发路径,映射和视图渲染,属于企业级web开发框架,涵盖包括前端视图开发,文件配置,后台接口逻辑相对比较复杂

2,springboot:使用默认大于配置的理念,继承了快速开发的spring插件,同时自动过滤多余不需要配置的插件,简化了项目开发的流程配置,一定程度上取消了xml配置。能快速开发单个微服务

3,springcloud:大部分插件是基于springboot去实现的,springcloud关注全局的微服务整合管理,将多个springBoot单体微服务进行整合以及管理,springcloud依赖于springBoot开发,springBoot可以独立开发。

五,说说zookeeper和eureka的区别是什么?

根据cap理论,c(一致性),a(可用性),p(分区可容错性)

zookeeper:保证的是cp,作为服务注册中心,可以容忍注册中心返回的是几分钟以前的注册信息,但是必须保证可用,
对于可用性来说,zookeeper采用的是leader选举方案,当master主节点宕机时,其他节点会自助选举leader,选出新的master节点,但是这个选举时间太长了,这个期间的zookeeper无法使用,所以不能保证可用性,补充一点,zookeeper的端口号分别是,2181(代码访问client的端口号),3888(选举leader),2888(leader监听),7070(其他服务与监控中心通信端口。

Eureka;保证的是ap,eureka没个节点都是平等的,几个节点宕机不会影响工作,剩下的正常节点仍然可以提供服务注册和查询,但是对于一致性不能保证,因为eureka有一个自我保护机制,在15分钟以内85%节点都没有心跳,
那么eureka就会认为客户端与注册中心出现了网络故障:
1,eureka不再从注册列表移除没有心跳的节点
2,eureka仍然能够接受新的服务注册和需求
3,当网络稳定后,新注册的节点会同步到其他节点
因为eureka能保持高可用性。

六,如何做sql优化?
1,尽量少使用inner join查询
2,少使用临时表
3,少用子查询
4,exists替代in
5,like %abc% 索引失效
6,where子句后面对字段进行null判断,会导致全表扫描
7,不要在where子句后面使用or来连接条件
8,where子句后面不要使用!= 或者<>来操纵
9,组合索引在顺序颠倒时会失效
10,能用between不要用in
11,select语句务必指明字段

七,为什么redis是单线程模型也能效率这么快?
1,纯内存操作
2,核心是基于非阻塞得IO多路复用机制
3,单线程反而避免了多线程的频繁上下文切换问题

八,为什么redis是单线程的但是还可以支撑高并发?

reids是基于reactor模式开发的网络事件处理器,
关于reactor这篇文章解释的比较清楚,可以了解一下https://blog.youkuaiyun.com/bingxuesiyang/article/details/89888664
所以这个处理器叫做文件事件处理器,它是单线程的,所以redis才叫做单线程的模型。采用的是IO多路复用机制监听多个socket。

文件事件处理器是单线程模式运行的,但是通过IO多路复用监听机制监听多个socket,可以实现高性能的网络通信模型,

文件时间处理器包含四个部分,分别是多个socket,IO多路复用程序,文件事件分配器,事件处理器(命令请求处理器,命令回复处理器,连接应答处理器)

多个socket可能并发的产生不同的操作,每个操作对应不同的文件事件,但是IO多路复用程序会监听多个socket,但是会将socket放入一个队列中排队,每次从队列中取出一个socket给事件分派器,事件分派器把socket给对应的事件处理器。

然后一个socket的事件处理完之后,IO多路复用程序才会将队列中的下一个socket给事件分派器。文件事件分派器会根据每个socket当前产生的事件,来选择对应的事件处理器来处理。

当socket变得可读时(比如客户端对redis执行write操作,或者close操作),或者有新的可以应答的sccket出现时(客户端对redis执行connect操作),socket就会产生一个AE_READABLE事件。

当socket变得可写的时候(客户端对redis执行read操作),socket会产生一个AE_WRITABLE事件。

IO多路复用程序可以同时监听AE_REABLE和AE_WRITABLE两种事件,要是一个socket同时产生了AE_READABLE和AE_WRITABLE两种事件,那么文件事件分派器优先处理AE_REABLE事件,然后才是AE_WRITABLE事件。

如果是客户端要连接redis,那么会为socket关联连接应答处理器
如果是客户端要写数据到redis,那么会为socket关联命令请求处理器
如果是客户端要从redis读数据,那么会为socket关联命令回复处理器

九,说一下nginx能做些什么?
1,反向代理
2,正向代理
3,http服务器
4,负载均衡

谈谈nginx的正向代理和反向代理?
正向代理就是一个人发送一个请求直接就到了目标的服务器。
反向代理是nginx做的最多的事,以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器得到的结果返回给internet上请求连接客户端,此时代理服务器对外就表现为一个反向代理服务器。

【直流微电网】径向直流微电网的状态空间建模与线性化:一种耦合DC-DC变换器状态空间平均模型的方法 (Matlab代码实现)内容概要:本文介绍了径向直流微电网的状态空间建模与线性化方法,重点提出了一种基于耦合DC-DC变换器状态空间平均模型的建模策略。该方法通过对系统中多个相互耦合的DC-DC变换器进行统一建模,构建出整个微电网的集中状态空间模型,并在此基础上实施线性化处理,便于后续的小信号分析与稳定性研究。文中详细阐述了建模过程中的关键步骤,包括电路拓扑分析、状态变量选取、平均化处理以及雅可比矩阵的推导,最终通过Matlab代码实现模型仿真验证,展示了该方法在动态响应分析和控制器设计中的有效性。; 适合人群:具备电力电子、自动控制理论基础,熟悉Matlab/Simulink仿真工具,从事微电网、新能源系统建模与控制研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①掌握直流微电网中多变换器系统的统一建模方法;②理解状态空间平均法在非线性电力电子系统中的应用;③实现系统线性化并用于稳定性分析与控制器设计;④通过Matlab代码复现和扩展模型,服务于科研仿真与教学实践。; 阅读建议:建议读者结合Matlab代码逐步理解建模流程,重点关注状态变量的选择与平均化处理的数学推导,同时可尝试修改系统参数或拓扑结构以加深对模型通用性和适应性的理解。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值