JAVA面向对象都有哪些特征?
继承:复用的概念
多态:多态是父亲生产儿子,但是是儿子在使用
封装:也是增加了复用性
ArrayList 和 LinkedList的区别
ArrayList 是基于数组来底层实现的。可以O(1)的时间随机访问
LinkedList插入,添加,删除操作速度更快,不需要像数组那样重新计算大小或者更新索引。
高并发中的集合有哪些问题?
第一代:高并发
Vector hashtable 一开始为了保证线程安全:使用synchronized修饰方法
缺点:效率低下
第二代:线程非安全集合类
ArrayList 、HashMap
线程不安全,但是性能好,用来代替vector和hashtable
需要线程安全的时候:Collections.synchronizedList(list) 、Collections.synchronizedMap(m);
底层使用synchronized代码块锁
第三代:线程安全集合类
在大量并发情况下如何提高集合效率和安全呢?
java.util.concurrent.*
JDK1.8的新特性有哪些?
1、接口的默认方法 也是为了适配lambda表达式
Java 8 允许我们给接口添加一个非抽象的方法实现,只需要default关键字就可以,这种特性又叫做扩展方法。
2、lambda 表达式,简化了函数式编程
例如Collections.sort(names,(a,b)->b.compareTo(a));
3、stream接口
java.util.Stream 表示能应用在一组元素上一次执行的操作序列。Stream操作分为中间操作或者最终操作两种,最终操作返回一特定类型的计算结果。而中间操作返回stream本身,这样你就可以将多个操作依次串起来。
Stream的创建需要指定一个数据源,比如java.util.Collection类
4、Annotation注解
java8支持多重注解,首先定义一个包装类Hints注解用来放置一组具体的Hint注解:
代码如下:
@interface Hints{Hint[] value();}
@Repeatable(Hints.class) @interface Hint{String value();}
Java 8 允许我们把同一个类型的注解使用多次,只需要给该注解标注一下@Repeatable即可
老方法
@Hints({ @Hint(“hint1”), @ Hint(“hint2”)}) class Person{}
使用多重注解
@Hint(hint1) @Hint(hint2) class PersonI{}
抽象类和接口有什么区别
能够想象到的抽象概念使用抽象类:食物,动物,植物,人类
接口描述的是特征:flyable 可以飞,可以游泳,可以跑,可以跳
spring cloud 核心组件有哪些?分别有哪些作用
服务注册与发现–Netflix Eureka、Nacos、Zookeeper
客户端负载均衡–Netfilx Ribbon、SpringCloud LoadBalancer
服务熔断器–Netfilx Hystrix、Alibaba Sentinel 、Resilence4J
服务网关–Netfilx zuul、SpringCloud Gateway
服务接口调用–Netflix Feign、Resttemplate、Openfeign
链路追踪–Netflix Sleuth、Skywalking。 Pinpoint
聚合Hystrix监控数据–Netflix Turbine
监控中心—SpringBoot Admin
配置中心—Spring Cloud Config、Apollo、nacos
微服务架构原理是什么?
主要是面向SOA理念,更小粒度服务的拆分,将功能分解到各个服务当中,从而降低系统的耦合性,并提供更加灵活的服务支持。