偏测试技术面试,高频面试题分享

一.介绍下你们公司产品的后端模块?

以电商微服务架构示例:

  1. 用户服务 (User Service):
    • 负责用户注册、登录、个人信息管理等功能。
    • 存储用户数据,如用户名、密码、个人资料等。
  2. 商品服务 (Product Service):
    • 管理商品信息,包括商品的增删改查、库存管理等。
    • 负责处理商品分类、推荐、搜索等功能。
  3. 订单服务 (Order Service):
    • 处理订单的创建、支付、取消、物流跟踪等流程。
    • 管理订单状态、历史订单记录等。
  4. 支付服务 (Payment Service):
    • 处理支付过程,与第三方支付平台接口对接。
    • 管理支付状态、退款等相关逻辑。
  5. 购物车服务 (Cart Service):
    • 管理用户的购物车信息,加入商品、删除商品、结算等操作。
  6. 评论与评分服务 (Review and Rating Service):
    • 用户可以对商品进行评价及评分,提供评论功能。
  7. 推荐服务 (Recommendation Service):
    • 基于用户行为和偏好向用户推荐商品,增加个性化体验。
  8. 搜索服务 (Search Service):
    • 提供商品搜索功能,支持关键词搜索、筛选、排序等。
  9. 权限与安全服务 (Security Service):
    • 负责用户权限管理、安全认证、访问控制等。
  10. 日志与监控服务 (Logging and Monitoring Service):
    • 收集微服务的日志信息、监控服务运行状态,确保系统稳定性和性能。

微服务架构特点和优势:

  • 独立部署与扩展: 每个微服务可以独立部署和扩展,便于管理和维护。
  • 松耦合性: 不同微服务间通过API相互通信,降低了耦合度,提高了灵活性。
  • 技术栈多样性: 不同微服务可以使用不同的技术栈,根据需求选择最适合的技术。
  • 容错和隔离性: 单个微服务出现故障不会影响整个系统,具有更好的容错性和隔离性。

二.基于RPC有哪些常见框架

  1. gRPC:
    • gRPC 是由Google开发的高性能、跨语言的开源RPC框架,基于HTTP/2协议和Protocol Buffers。
    • 支持多种语言(如Java、C++、Python等),提供强大的编解码和接口定义功能。
  2. Apache Dubbo:
    • Dubbo是一款高性能的Java RPC框架,由阿里巴巴开源,支持丰富的特性如负载均衡、服务治理、动态扩展等。
    • 擅长处理大规模分布式系统中的服务调用和管理。
  3. Apache Thrift:
    • Thrift是由Facebook开发并开源的跨语言的RPC框架,支持多种语言。
    • 可以生成多种语言的客户端和服务端代码,并提供了序列化协议的支持。
  4. Spring Cloud:
    • Spring Cloud为构建分布式系统提供了多个项目,其中包括Spring Cloud Netflix、Spring Cloud Consul等,用于服务注册与发现、负载均衡、断路器等功能。
    • Spring Cloud可以与RESTful服务、Dubbo等整合,提供灵活的微服务架构支持。
  5. Thrift:
    • Apache Thrift是一个跨语言的RPC框架,支持多种常见语言。
    • 可生成不同语言对应的接口定义和客户端/服务端代码,使跨语言调用变得更加简便

三.Java垃圾回收过程

Java的垃圾回收过程一般包括以下步骤:

1. 标记阶段 (Marking Phase):

  • 垃圾回收器首先从根对象(如栈、静态变量等)出发,标记所有能够被访问到的对象为活动对象。
  • 所有未标记的对象将被标记为待回收对象。

2. 清除阶段 (Sweeping Phase):

  • 在清除阶段,不再使用的对象会被删除,释放内存空间。
  • 未被标记的对象将被清除,这些未被标记的对象被认定为垃圾。

3. 压缩阶段 (Compacting Phase - Optional):

  • 在一些垃圾回收算法中,压缩阶段将执行内存碎片整理,将存活的对象向内存的一侧移动,以便给新对象分配更连续的内存空间。

四.写个内存泄漏的demo

import java.util.ArrayList;

import java.util.List;

public class MemoryLeakDemo {

    private static List<Integer> list = new ArrayList<>();

    public void addToMemoryLeakList(int number) {

        list.add(number);

    }

    public static void main(String[] args) {

        MemoryLeakDemo demo = new MemoryLeakDemo();

        for (int i = 0; i < 1000000; i++) {

            demo.addToMemoryLeakList(i);

        }

        // 假设这里应该清空list,但是忘记清空导致内存泄漏

        // list.clear();

        System.out.println("Memory leak demo done.");

    }

}

五.什么情况下索引失效

  1. 未使用索引字段进行查询: 当查询条件不包括任何索引字段,数据库优化器可能会选择不使用索引而进行全表扫描,导致索引失效。
  2. 函数操作符导致索引失效: 在查询条件中使用函数、操作符或者类型转换可能导致索引无法被利用。比如在 WHERE 子句中使用 LIKE '%value%' 或者对字段进行 FUNCTION() 操作。
  3. 数据类型不匹配: 如果在条件中对字段进行了数据类型的转换,比如将数字字段转换为字符串进行比较,可能会导致索引失效。
  4. 不满足索引的最左前缀规则: 复合索引中,如果查询条件未按照索引的从左到右的顺序使用字段,索引可能不会被有效利用。
  5. 使用 OR 条件: 当 OR 条件连接的查询条件中只有部分条件使用了索引,可能导致索引失效。
  6. 查询条件使用 IS NULL 或 <> NULL: 在查询中使用 IS NULL 或 <> NULL 的条件可能导致索引失效。
  7. 表数据量较小: 当表中的数据量较小时,数据库优化器可能会选择全表扫描而不使用索引。
  8. 数据分布不均匀: 如果数据分布不均匀,一些值的重复率较高,可能导致数据库选择不使用索引。
  9. 频繁的数据更新: 对于频繁更新的字段,在更新时可能导致索引失效,需要谨慎设计索引策略。

六.什么是单例模式

单例模式是一种创建型设计模式,其目的是确保一个类只有一个实例,并提供一个全局访问点来访问这个实例。在单例模式中,类的实例化过程被限制在一个对象,并提供一个全局的访问点来获取该实例。这种模式通常用于控制对唯一实例的访问,如全局配置、日志记录器、数据库连接等场景。

七.Python中装饰器的作用

在Python中,装饰器是一种函数,它可以接受一个函数作为参数,并返回一个新的函数。装饰器用于给函数动态地添加额外的功能,而不修改函数本身的代码。装饰器在Python中用于很多场景,比如日志记录、性能分析、权限检查等。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/4877.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2023 网络工程师软考-真题解析(1)

在某台主机上无法访问域名为wwww.aaa.cn 的网站&#xff0c;而局域网中的其他主机可正常访问&#xff0c;在该主机上执行ping命令时有如下所示的信息: C:\>ping www.aaa.cn Pinging www.aaa.cn [202.114.10.56lwith 32 bytes of data. Reply from 202.114.10.56:Destinat…

react 学习笔记二:ref、状态、继承

基础知识 1、ref 创建变量时&#xff0c;需要运用到username React.createRef()&#xff0c;并将其绑定到对应的节点。在使用时需要获取当前的节点&#xff1b; 注意&#xff1a;vue直接使用里面的值&#xff0c;不需要再用this。 2、状态 组件描述某种显示情况的数据&#…

python绘制三维散点图

在Python中&#xff0c;我们通常使用matplotlib库的mplot3d工具包来绘制三维散点图。以下是一个简单的示例&#xff1a; import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D # 创建一些随机数据 np.random.seed(0) x np.…

VCSA6.7重置root密码

VCSA6.7重置root密码 1、登录VCSA所运行的ESXI主机 2、打开VCSA虚拟机Web控制台&#xff0c;先拍摄一个快照&#xff0c;然后重启虚拟机&#xff0c;在如下界面按"e" 3、找到linux开头的段落&#xff0c;在末尾追加rw init/bin/bash; 4、输入完成后&#xff0c;按&…

常用的网站和软件

编程社区 Stack Overflow - 全球最大的编程问题解答社区&#xff0c;涵盖各种编程语言和技术。网址&#xff1a;https://stackoverflow.comCSDN - 主要面向中国开发者的技术社区&#xff0c;提供技术文章、论坛帖子和博客。网址&#xff1a;https://www.csdn.net 开发软件 J…

多传感器标定、数据融合与状态估计导读

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 TODO:写完再整理 文章目录 系列文章目录前言1、机器人/无人驾驶常用传感器模型、选型与安装2、传感器数据获取、数据采集方案3、自动驾驶相关传感器原理及标定4、卡尔尔曼滤波(KF)、扩展卡尔曼…

LPDDR5和LPDDR5X区别

发布时间 LPDDR5和LPDDR5X的发布时间如下&#xff1a; LPDDR5的具体发布时间没有直接提及&#xff0c;但它在市场上的应用早于LPDDR5X。LPDDR5作为LPDDR4(X)的继任者&#xff0c;其规范发布和商用化大致发生在2019年至2020年间&#xff0c;具体技术细节和产品商用则依据各制造…

开发使用Git的实践操作

程序员在使用Git进行代码管理时&#xff0c;涉及到许多常用的Git命令和功能&#xff0c;以下是详细的解释和分析&#xff1a; 程序员常用的Git命令 git init - 初始化一个新的Git仓库。这是开始使用Git跟踪项目的第一步。git clone - 复制一个远程仓库到本地&#xff0c;这样…

Docker之安装部署

本次部署使用openEuler操作系统&#xff1a; 方式一&#xff1a;使用yum安装(openEuler源中有自带的docker18.09.0版本) [rootnode1 ~]# yum install docker -y [rootnode1 ~]# docker version Client: Version: 18.09.0 EulerVersion: 18.09.0.332 API ver…

k8s的PV/PVC详解以及使用范例

PV和PVC是什么 在 Kubernetes (k8s) 中&#xff0c;Persistent Volume (PV) 和 Persistent Volume Claim (PVC) 是管理存储资源的两个重要概念。它们抽象了存储细节&#xff0c;允许用户在不了解底层存储细节的情况下使用存储资源。 Persistent Volume (PV)&#xff1a; PV …

【ruoyi-vue】关于密码重置

文章目录 前言解决问题 前言 在qq群里经常看到问ruoyi的账号密码是多少&#xff1f;有源代码忘记了登录密码怎么办&#xff1f; 解决问题 在 ruoyi-admin 模块内 SysUserController找到新增用户或修改用户密码的相关接口在里面就可以找相关创建密码的方法ruoyi里的创建密码的…

MySQL从入门到高级 --- 3.DML基本操作

文章目录 第三章&#xff1a;3.基本操作 - DML3.1 数据插入3.2 数据修改3.3 数据删除3.4 练习 第三章&#xff1a; 3.基本操作 - DML DML&#xff1a;数据操作语言&#xff0c;用来对数据中表的数据记录进行更新 关键字&#xff1a; insert 插入 delete 删除 update 更新 …

OceanBase V4.3 发布—— 迈向实时分析 AP 的重要里程

OceanBase在2023年初&#xff0c;发布了4.x架构的第一个重要版本&#xff0c;V4.1。该版本采用了单机分布式一体化架构&#xff0c;并在该架构的基础上&#xff0c;将代表数据库可靠性的RTO降低至 8 秒以内&#xff0c;从而确保在意外故障发生后&#xff0c;系统能够在极短时间…

碳化硅片有哪些比较重要的参数?

知识星球&#xff08;星球名&#xff1a;芯片制造与封测社区&#xff09;里的学员问&#xff1a;请问碳化硅衬底片到客户端验证主要测试什么项目&#xff0c;比较重要的参数有哪些&#xff1f; Lattice Parameters&#xff1a;晶格参数。确保衬底的晶格常数与将要生长的外延层…

面对网络安全,做好风险评估对企业会带来哪些帮助

随着信息技术的飞速发展&#xff0c;网络安全问题日益凸显&#xff0c;成为企业不容忽视的重要议题。企业作为社会经济活动的主要参与者&#xff0c;其网络安全不仅关系到自身的生存与发展&#xff0c;更与国家的经济安全、社会稳定息息相关。因此&#xff0c;企业必须高度重视…

深入探索jQuery:强大的JavaScript库

深入探索jQuery&#xff1a;强大的JavaScript库 文章目录 深入探索jQuery&#xff1a;强大的JavaScript库引言一、jQuery概述二、jQuery的核心功能选择器DOM操作修改元素属性&#xff1a;事件处理动画效果Ajax 三、jQuery的应用场景与示例1,表单验证2.轮播图HTML:CSS:jQuery: 3…

ubuntu docker 安装 git服务器 gitea

文章目录 安装 docker-compose安装 Giteadocker-compose.yml 内容访问 Gitea初始配置参考资料官方资料安装docker-compose 安装 docker-compose sudo apt install docker-compose -y docker-compose --version安装 Gitea docker --version docker-compose --version mkdir -p…

Qt——自定义富文本RichText

作者&#xff1a;小 琛 欢迎转载&#xff0c;请标明出处 文章目录 产品中的富文本富文本控件会面临的问题QTextBrowser例子&#xff1a;自定义富文本 产品中的富文本 用户界面中支持显示富文本格式&#xff08;如加粗、斜体、不同颜色、超链接等&#xff09;的文本内容。这种富…

盲人手机导航:科技之光引领无障碍出行新纪元

在这个日新月异的数字时代&#xff0c;科技不仅改变了我们获取信息的方式&#xff0c;更在无声中拓宽了视障人士的生活半径。盲人手机导航这一创新技术&#xff0c;正逐步成为他们探索世界、实现独立出行的重要伙伴。 对于大多数人而言&#xff0c;日常出行或许只是一次…

数据赋能(70)——概念:数据赋能业务过程的绩效评价

数据赋能业务过程的绩效评价涉及多个方面&#xff0c;这些方面共同构成了对业务过程中数据利用效果的综合评估。 以下是主要的绩效评价方面&#xff1a; 数据质量与准确性&#xff1a;评价数据收集、清洗和预处理过程的效率和准确性&#xff0c;确保所使用的数据是高质量、可靠…