2020-11-29

|# 面试题

2.线程的实现方式(4种)

1.继承Thread类,重写run方法

  • 实现Runnable接口、重写run方法,实现Runnable接口的实现类的实例对象作为Thread构造函数的target(目标)
  • 通过Callable和FutuerTask创建线程
  • 通过线程池创建线程

3.有没有尝试进行多机redis的部署?如何保证数据一致的?

  • 主从复制,读写分离
  • 一类是主数据库(master),一类是从数据库(SLAVE),主数据库进行读写操作,当发生写操作的时候自动将数据同步同步
  • 到从数据库中,而从数据库一般只是用作读取数据,并接收主数据库同步过来的数据,一个数据库可以有多个从库,而一个从数据库只能有一个主数据库。

**- ## 4.线程池

  • ###1.什么是线程池?
  • 1.线程池是一种多线程处理形式,处理过程中将任务提交到线程池,任务的执行由线程池来管理。
  • 2.如果每个请求都去创建一个线程去处理,那么服务器的资源很快都就会被耗尽,使用线程池可以减少创建和销毁线程的
  • 次数,每个工作线程都可以被重复利用,可以执行多个任务
  • ###2.为什么要使用线程池?
  • 创建线程和销毁的花销是比较大的,这些时间可能要比处理业务的时间还要长,这样频繁的创建和销毁线程,再加上处理业务工作线程消耗系统的时间,可能导致系统资源不足。(所以利用线程池可以把创建和销毁线程的过程去掉,为系统节省资源提高系统的工作效率
  • ###3线程池的作用
    - 线程池的作用就是限制系统中执行线程的数量。
    -1 .提高效率 创建好一定数量的线程再线程池中,等需要的时候就从池中那一个,这比需要的时候创建的时候创建一个线程对象
  • 2.方便管理 可以编写线程池管理代码对池中线程进行管理,比如说启动该程序的时候创建100个线程,每当有请求的时候,就分配一个线程去工作,如果有101个请求的时候,那多出的请求可以在线程池中排队等候,避免无休止的创建和销毁线程导致系统奔溃。
  • ####4.几种常见的线程池及使用场景
  • 1.newSingleThreadExecutr
  • 创建一个单线程化的线程池,它只会用唯一的工作线程来执行任务,保证所有任务按照指定顺序(FIFO LIFO, 优先级)执行
  • 2 newFixedThreadPool
  • 创建一个定长线程,可以控制线程最大并发数,超出的线程会在队列中等待
  • 3.newCachedThreadPiil
  • 创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活收回收回空闲线程,若无可收回,则新建线程
  • 4.newScheduledThreadPool
  • 创建一个定长线程池,支持定时周期性任务执行
  • ##redis缓存机制
  • redis是单例还是多例
  •      .单例模式
    
  • 什么是单例模式(3个特点)
  • 1.他必须有一个构造函数,而且构造函数必须为私有
  • 2.必须有一个保存实例的静态成员变量
  • 3.拥有一个访问这个实例的公共静态方法

- 设计模式

###7.高并发怎末解决?(如何解决高并发问题)
1.HTML静态化:效率高,消耗最小
2.图片服务器分离:独立的图片服务器,甚至启用多台图片服务器
3.数据库集群和库表散列
4redis缓存机制
5.镜像
6.负载均衡:负载均衡是将大型网站解决高负荷访问和大量并发请求采用的终极方法。

###8.多态使用的好处
1.提高代码的可维护性(继承的保证)
2.提高了代码的可拓展性

MYSQL有几中事务特性?分别描述下?

  • 1.原子性: 事务中所有的操作是不可分割的原子单位,事物中的所有操作要么全部都执行成功,要么全执行失败,
  • 2.一致性:事务执行后数据库的状态与其他业务规则保持一致。如转账业务,无论事务执行是否成功、参与转账的两个账户之和在事务前后应该是保持不变的
  • 3.隔离性:隔离性是指在并发操作中,不同事务应隔离开来,使每个并发中的事务不会互相干扰
  • 4.持久性:一但事务提交成功,事务的中所有的数据操作都必须被持久到数据库中,即使提交事务后,数据马上奔溃,在数据重启时,也必须能保证通过某种机制恢复数据。
    -😂

进程和线程的关系及区别

定义:1.进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统分配资源和调度的一个基本单位
2. 线程是进程的一个实体,是cpu调度分派的基本单位,它是比进程更小的能够独立运行的基本单位,线程自己基本不拥有系统资源,只拥有 一点在运行中必不可少的资源(如程序计数器,一组寄存器,和栈),但它可以和同属一个进程的线程共享进程所拥有的 全部资源。

###关系:
一个线程可以可以创建和撤销另一个线程:在一个进程中多个线程可以并发执行。
相对进程而言,线程是一个更接近于执行体的概念,它可以与 同进程中的其他线程共享数据,但拥有自己的栈空间,拥有独立的执行序列。

spring AOP代理是什么?

1.代理是一种使用非常广泛的的设计模式。简单来说,代理是一个看起来像另一个对象的对象,但它添加了一些特殊功能
2.spring AOP是基于代理实现的。AOP代理是由一个Aop框架创建的用于在运行时实现切面协议的对象。
3.Spring AOP默认为Aop代理使用标准的JDK动态代理。这使的任何接口(或者接口集合)可以被代理。
4.Spring Aop也可以使用cGlib代理这是代理类不必必须是接口

eureka 和zookeeper都可以提供服务注册与发现的功能,请说说两个的区别(各自的优点)

1.zookeeper:当主节点故障时,zk会在剩余节点重新选择主节点,耗时过长虽然最终能够恢复,但在选取主节点期间 会导致服务不可用,这是不能容忍的。
2.eureka:各个节点是平等的,一个节点挂掉其他节点仍会保证正常服务。
3.著名的CAP理论指出,一个分布式系统不可能同时满足从c(一致性),A(可用性)和p(分区容错性 ),由于分区容错性p是在 分布式系统中必须保证的,因此我们只能在A和C之间权衡,因此Zookeeper保证的是

已标记关键词 清除标记
表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符 “速评一下”
©️2020 CSDN 皮肤主题: 深蓝海洋 设计师:CSDN官方博客 返回首页