[JAVA]面试题..持续更新

日期格式化输出

y:year-of-era;正正经经的年,即元旦过后;
Y:week-based-year;只要本周跨年,那么这周就算入下一年;
就比如说今年(2019-2020) 12.31 这一周是跨年的一周,而 12.31 是周二,那使用 YYYY 的话会显示 2020,使用 yyyy 则会从 1.1 才开始算是 2020。
2019-12-31 to yyyy-MM-dd: 2019-12-31
2019-12-31 to YYYY-MM-dd: 2020-12-31

序列化和反序列化

它是解决网络传输过程中对象传输的问题。序列化就是内存中的对象转化成字节流以便用来存储和传输。反序列化就是根据从文件或者网络上获取到的对象的一个字节流,根据字节流里面保存的对象描述信息和状态重新构建一个新的对象。其次序列化的前提是为了去保证通信双方对于对象的一个可识别性,所以很多时候我们会把对象先转化为通用的解析格式,像json,xml然后再把他们转化为数据流进行网络传输从而实现跨平台或跨语言的这样一个可是别性。序列化选择要根据:序列化之后的数据大小;序列化性能;是否支持跨平台和跨语;言技术成熟度等因素。

Spring

为什么使用Spring

spring 是一个轻量级的应用框架,它提供了IOC和AOP两大核心功能。
它的核心目的是为了简化企业级应用程序的开发,使得开发者只需要关心业务需求,不需要关心Bean的管理,以及通过切面增强功能减少代码的侵入性。
从Spring本身的特性来看,我认为有几个关键点是我们选择Spring框架的原因
1 轻量, Spring 是轻量的,基本的版本大约2MB
2 IOC/DI: Spring通过IOC容器实现了Bean的生命周期的管理,以及通过DI实现依赖注入,从而实现了对象依赖的松耦合管理
3 AOP:Spring支持面向切面的编程,从而把应用业务逻辑系统服务分开。
4 MVC框架:Spring MVC提供了功能更加强大且更加灵活的Web框架支持
5 事务管理:Spring通过AOP实现了事务的统一管理,对应用开发中的事务处理提供了非常灵活的支持.
最后,Spring从第一个版本发布到现在,它的生态已经非常庞大了。在业务开发领域,Spring生态几乎提供了

Spring MVC

Spring MVC 是Spring Framework生态里的一个模块。它是在Servlet基础上构建并且使用MVC模式设计的一个Web框架。
它的主要目的是为了去简化传统Servlet+JSP 模式下的Web开发方式,其次spring MVC的整个架构设计是对Java Web里面的MVC框架模式做了一些扩展和增强。
主要体现在:
1 把传统的 MVC 框架里面的Controller控制器拆分成前端控制器DispatcherServlet和后端控制器Controller
2 把Model模型拆分成业务层Service和数据访问层Respository
3 在视图层面可以支持不同的视图,Freemark, velocity,JSP等等。
在这里插入图片描述

Spring中有哪些方式可以把Bean注入到IOC容器

1 使用xml的方式来声明Bean的定义,Spring容器在启动的时候会加载并解析这个xml,把bean装载到IOC容器中。
2 使用@CompontScan注解来扫描声明了@Controller、@Service、@Repository、@Component注解的类。
3 使用@Configuration注解声明配置类,并使用@Bean注解实现Bean的定义,这种方式其实是xml配置方式的一种演变,是Spring迈入到无配置化时代的里程碑。
4 使用@Import注解,导入配置类或者普通的Bean
5 使用FactoryBean工厂bean,动态构建一个Bean实例,Spring Cloud OpenFeign里面的动态代理实例就是使用FactoryBean来实现的。
6 实现ImportBeanDefinitionRegistrar接口,可以动态注入Bean实例。这个在Spring Boot里面的启动注解有用到。
7 实现ImportSelector接口,动态批量注入配置类或者Bean对象,这个在Spring Boot里面的自动装配机制里面有用到。

http1.x 和 http2.0 对比

最早http建立的连接无法复用,就是一次数据传输之后立即断开;
后来使用keep-alive保活,但是请求只有在服务应答之后才能发送后续请求,在客户端形成阻塞;
后来使用管道化http pipeling技术,使得客户端可以一次发送多个请求,但是对于服务端的第一个资源无法返回的时候,也会形成服务端阻塞。
http1.x的问题在于:
1、Head-of-Line阻塞问题:server回传顺序必须与client请求顺序一致,后续响应必须等待第一个响应完成;
2、冗余头部字段:http1.x的头部都采用文本格式且未压缩,并且每次都会发送重复的字段;
3、只有客户端发送请求,服务方才会应答.

http2.x改进:
1、采用二进制协议编码,传输的是二进制格式传输数据。响应分为header和data两个帧。
2、头部字段会保存在客户端和服务端,动态添加,避免重复发送。
3、多路复用:支持多个请求在一个连接中完成,也不会因为某个包的延迟而导致整体链路的阻塞。
4、服务端会主动根据请求分析,客户端是否需要其他资源,主动发送。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值