面试题
1、微服务化
微服务:微服务是一种软件架构,将大型系统或者复杂的应用分割成多个服务的架构,服务之间互相协调、互相配合,为用户提供最终价值。
微服务化:职责单一(高内聚,低耦合)、自治性(对外以接口的方式进行通信,通信方式是rest风格。)
https://zhuanlan.zhihu.com/p/615777632
https://baijiahao.baidu.com/s?id=1741000150364579636&wfr=spider&for=pc
2、跨域
跨域的问题:浏览器的一种安全的策略,浏览器对于同源策略的限制。
同源的目的是为了保证用户信息的安全,防止恶意的网站窃取数据。
以下情况都属于跨域:
协议不同、域名不同和端口不同。
跨域问题的解决方案:nginx反向代理。
cors:跨资源共享,请求头信息加一些字段
gateway网关实现一些配置。
4、慢sql如何发现
https://blog.csdn.net/Tian_Cai_Wu_Ge/article/details/132657834
3、负载均衡
https://mikechen.cc/30876.html
负载均衡:负载均衡器作为一个中间层,接收来自客户端的请求,并根据特定的算法和策略将请求分发给后端的多个资源。
负载均衡算法:
1、轮询:将请求按顺序轮流分配到后台服务器上,适用于应用服务器硬件都相同的情况。
2、加权轮询:根据权重不同,分配到后台服务器上,适用于配置高、负载低的机器。
3、随机:随机函数访问
4、最少连接:处理每个服务器正在处理的请求数,把新的请求分发到最少连接的机器上。
5、哈希:根据客户端的ip地址分发
负载均衡的分类:
二层(mac)、三层(ip)、四层(tcp)和七层(http,如nginx)
负载均衡的应用场景:
高业务量访问、同城容灾、横向扩张、消除单点故障
5、索引
https://zhuanlan.zhihu.com/p/631600606
mysql的B+树的叶子节点除了索引还存了什么?非叶子节点只存储索引信息,叶子节点除了存储索引信息还存储数据值。
6、慢sql
https://zhuanlan.zhihu.com/p/631600606
7、redis雪崩
https://blog.csdn.net/My_wife_QBL/article/details/132915005
8、乐观锁和悲观锁
https://baijiahao.baidu.com/s?id=1766105387080887713&wfr=spider&for=pc
9、java对象的生命周期
一个java类的完整的生命周期会经历加载、连接、初始化、使用、和卸载五个阶段
10、抽象类和接口的区别是什么?
接口和抽象类都是用来定义对象的公共行为的,但二者有以下 7 点不同:
- 定义的关键字不同。
- 子类继承或实现关键字不同。
- 类型扩展不同:抽象类是单继承,而接口是多继承。
- 方法访问控制符:抽象类无限制,只是抽象类中的抽象方法不能被 private 修饰;而接口有限制,接口默认的是 public 控制符。
- 属性方法控制符:抽象类无限制,而接口有限制,接口默认的是 public 控制符。
- 方法实现不同:抽象类中的普通方法必须有实现,抽象方法必须没有实现;而接口中普通方法不能有实现,但在 JDK 8 中的 static 和 defualt 方法必须有实现。
- 静态代码块的使用不同:抽象类可以有静态代码块,而接口不能有。
你还知道哪些接口和抽象类的不同?欢迎评论区留言补充。
好了,本期内容到这里就结束了,各位老铁一键三连哦,我们下期再见!
11、基本数据类型和引用数据类型用的是什么数据传递方式?
基本数据类型按值传递,传递的是值的副本,引用数据类型按引用传递,传递的是对象的引用
12、如何保障线上质量:
如何让这些角色保障质量?
1.首先要让每个角色有质量的意识,重视质量,并且参与到质量保障中,也就是测试左移。具体的方法就是,开发自测,产品自测,提测时不合格要被打回,并且发reject邮件,说明原因。三次reject,就需要review,看下问题在哪儿。项目结束后,统计千行bug率,超过2.5的要进行review。线上bugleakage review,故障review。
2.其次要有完善的流程来保证。流程的存在是为了让只要照着这个流程做的人,尽可能的避免一些问题的发生。比如流程有需求评审,code review,自测,code diff,bug记录与跟进,发布站会,发布验收。
3.再者,要提供各种工具,环境,方便人员来进行测试。比如自动化工具,下单工具,测试环境,灰度环境,仿线上环境,堡垒机等等。
4.提高测试人员的能力。包括业务能力,技术能力,沟通能力,管理能力。提高其在流程的各个环节中的能力,发现问题与解决问题的能力。方法有很多,比如业务分享,好的测试方法分享,代码串读分享,项目总结思考,承担项目技术负责人角色,值班等。
5.保证线上服务高可用。容灾,核心功能优先保证。容灾包括:应用容灾(多服务,多机房,异地多活),数据容灾(数据库集群,redis集群,redis双写集群)。核心功能优先保证包括:资源隔离(dubbo线程池独立,数据库连接池独立,mq优先级提高,uri独立,dubbo接口独立),快速恢复(应用保证快速恢复,数据保证快速恢复),降低依赖影响(减少不必要依赖,依赖出问题后熔断降级)。
5.线上问题及时发现与快速降级与处理。完善而合理的监控报警接入发布平台,监控和报警,崩溃监控,故障自动发现与定位,卡顿收集,值班人员,值班群,问题反馈群,运营问题反馈群,故障处理流程等。快速降级包括,限流,熔断等。