Java面试题

1.设计数据库的流程

1)需求分析(在设计数据库是必须分析客户的需求)

2)概念结构设计(把客户需求分析好以后,通过归纳抽象,形成一个独立的具体的DOMS模型)

3)逻辑结构设计(是将概念结构转换为某个DOMS所支持的数据模型,并将进行优化)

4)物理结构设计(为逻辑结构设计选取一个最合适的应用环境)

5)数据库实施(所有的设计好以后就可以进行实施和运行)

6)数据库的运行和维护()

2.mybatis和hibernate的区别

1.hibernate是一个全自动ORM框架,使用简单,功能强大,但性能不好控制

2.mybatis是一个半自动ORM框架,性能可控(需要自己写SQL语句)

3.redis的常用数据类型

1.字符串(String)( 统计网站访问数量,当前在线人数 )

2.列表(list)(生产者,消费者,相当于队列)

3.集合(set)( 1.利用交集求共同好友。2.利用唯一性,可以统计访问网站的所有独立IP。3.好友推荐的时候根据tag求交集,大于某个threshold(临界值的)就可以推荐 )

4.有序集合(sorted set)(排行榜)

5.散列(hash)( 例如存储、读取、修改用户属性(name,age,pwd等) )

4.说一下缓存血崩

加入有一个系统高峰期是5000次每秒的请求量,有4000次走的是缓存,1000次走的是数据库,数据库的并发是两千这是没问题的,如果缓存岩机了或缓存设置了相同的过期时间,导致缓存在同一时间过期,5000次请求全部请求数据库,数库会死掉,这就是缓存雪崩;

解决方案

1.可以把缓存过期时间设计为随机数,避免同时失效

5.缓存穿透:

有一万次请求,其中五千次都是别人恶意攻击在数据库也差不出来数据,假如数据库id为整数,黑客构造的id为负数,这样缓存就不会起作用,数据库也很快会被打死

解决方案:

1.对请求参数进行合法验证

2.把数据库没差到的数据有存入缓存value为null

3.使用 布隆过滤器 ,快速判断key是否在数据库中存在,如果没存在直接返回

6.缓存击穿:

设置了缓存时间的热点数据在,缓存时间过期到从新,从数据裤 中加载数据存入缓存中的这段时间,有大量的请求同时过来。

解决方发:

​ 1.热点数据设置为永不过去

​ 2.加锁

7.说一下缓存击穿和缓存雪崩的区别

​ 缓存雪崩是指大量缓存失效,缓存击穿是指热点数据的缓存失效

8.arraylist和linkedlist区别

1,arrayLis实现了基于动态数组的数据结构,LinkedList基于链表的数据结构

2,arrayListd对于随机查询要优于LinkedList

3.LindekList对于曾删改要优于ArrayList

9.maven常用命令

clean :对项目进行清理,删除target目录下编译的内容

compile :编译项目源代码

test :对项目进行运行测试

packet:打包文件把打包好的文件放到target目录下,打包好的文件通常都是编译好的class文件

install :在本地的仓库生成仓库的安装包可供其他项目使用

10.说说ioc和AOP

1.ioc控制反转,把源代码需要实现的对象创建,依赖反转给容器来帮忙实现,

2.AOP面向切面编程,完善Spring的依赖注入(DI),AOP是OOP的的补充,面向对象编程是将程序分解成各个层次的对象。面向切面编程是将程序运行过程分解成各个切面。

AOP和OOP的区别

aop从程序运行的角度来程序的结构,提取程序业务的切面,OOP是静态的抽象,Aop是动态的抽象

11.什么设微服务

微服务是一种架构风格,一个大型的复杂软件应用,由多个微服务组成,系统中的各个服务可以被独立部署,各个服务之间是松耦合的,每个服务仅仅关注一任务,而且很好的完成该任务。简单来说就是将一个复杂的应用进行各个不同领域的拆分,但拆分只有这个复杂的应用变得更加的简单高效。

12,微服务的优点和缺点

优点:

1.测试容易

2.可伸缩性强

3.可靠性强

4.团队协作容易

缺点:

1.运维成本高,部署数量较多

2.接口兼容多版本

3.分布式系统的复杂性

4.分布式事务

13.微服务的特点

1.系统是多个服务构成

2.每个服务可以独立部署

14.SpringCloud五大组件

1.服务发现

2.客户端负载均衡

3.断路器

4.服务网关

5.分布式配置

四川瞭望环保科技有限公司

SpringBot有什么用?

1.SpringBot设计模式有哪些,用用在什么场景

单列模式:

适配器模式:

代理模式:

观察者模式

2.JWT怎样产生token的:

当第一次登录后,服务器会产生一个Token,并将Token返回给可会端,以后客户端至需要带上这个Token来请求数据即可,无须再次带上用户名和密码。

3.有哪些线程安全的集合: Hashtable 、 Vecto

4.==和equals的区别:

==:比较引用数据类型比的是引用是否相同,比较基本数据类型比较的值是否相同

equals:只能比较引用数据类型

5.nginx出了作负载均衡,还可一用来作什么

反向代理

6.了解过SQL优化没有

分表分库,全文搜索

7.了解过网络通信没有

1.锁冲突怎样解决:

控制并发数量

修改SQL语句,将一行改为逻辑上的多行

2.描述行锁与表锁

3。bean的生命周期

1.启动Spring查找并加载被Spring管理的bean,进行bean的实列化

2.实列化过后,把bean引入的值,注入到bean的属性当中

3.如果bean实现了BeanNameAware接口,Spring将Bean的id传递给setBeanName()方法

4.分布式事务的描述

5.redis的作用

7.最近项目和所作模块的描述

8.MQ的作用

9.对SVN的理解

10.bean的相互依赖的描述

11.缓存的 数据一致性

12.索引的创建

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值