长鑫存储面试(部分)

news2024/11/17 11:31:41
  • 你平时写代码时,如何保证代码可靠、可复用、可扩展、可维护?有总结经验吗,请举例说明。参考答案 by newBing:
    编写文档:编写文档是保证代码可维护性的重要手段。文档应该包括代码的设计思路、实现细节、使用方法等。
    遵循编码规范:编码规范是保证代码质量的重要手段。遵循编码规范可以使代码更加易读、易懂、易维护。
    使用设计模式:设计模式是一种被广泛应用于软件开发中的解决方案。使用设计模式可以使代码更加易扩展、易维护。
    进行代码重构:代码重构是指在不改变代码外部行为的前提下,对代码内部结构进行调整,以提高代码质量。通过代码重构可以使代码更加易读、易懂、易维护。
    进行单元测试:单元测试是指对软件中的最小可测试单元进行测试。通过单元测试可以发现代码中的错误,提高代码质量。
    使用版本控制工具:版本控制工具可以帮助我们管理代码的版本,方便团队协作和代码维护。

  • 如果你来制订公司的代码规范,你认为应该有哪些内容?参考答案:阿里巴巴Java开发手册

  • 有一段代码,是4层循环,最内层查询数据库,你认为应该如何优化?

  • 如何进行微服务的拆分,应该从哪几个方面考虑?参考答案:

  1. 业务因素:从业务角度出发,确定拆分的方案,边界要充分考虑业务的独立性和专业性,按服务的业务功能合理的划出拆分边界。
  2. 性能与系统扩展:提高系统的扩展性是拆分的一个理由之一,把具有不同扩展性需求的服务拆分出来分别部署、可以降低成本,提高效率。
  3. 技术因素:技术因素包括架构设计和解耦拆分,要考虑技术的可行性和可扩展性。
  4. 数据因素:数据因素包括数据的一致性、数据的隔离、数据的复制等,要考虑数据的安全性和可靠性。
  5. 运维因素:运维因素包括服务的部署、监控、日志等,要考虑运维的便捷性和可靠性。
  • 说下分布式事务的方案,如Seata XA、TCC、Saga、基于MQ,你的理解和在实现项目中的运用。
    • Seata相关知识:
      • 业务无侵入的:ATXA

XA是一个基于数据库实现的分布式事务协议,本质上和两阶段提交一样,需要数据库支持,Mysql5.6以上版本支持XA协议,其他数据库如Oracle,DB2也实现了XA接口1

经典的2PC(XA)往往对资源的锁定需要持续到第二阶段实际的提交或者回滚操作,AT模式,可以在第一阶段释放对资源的锁定,降低了锁范围。谁的功劳:回滚日志1

Seata 的 JDBC 数据源代理通过对业务 SQL 的解析,把业务数据在更新前后的数据镜像组织成回滚日志 。。。 任何提交的业务数据的更新一定有相应的回滚日志存在1

传统意义的脏读是读到了未提交的数据,Seata脏读是读到了全局事务下未提交的数据,全局事务可能包含多个本地事务,某个本地事务提交了不代表全局事务提交了。2

本地锁由本地事务管理,在分支事务Phase1结束时就直接释放。而全局锁由TC管理,在Phase2 全局提交时,全局锁马上可以释放。1

3一阶段本地事务提交前,需要确保先拿到 全局锁 。拿不到 全局锁 ,不能提交本地事务。

      • 业务侵入的:TCCSaga

4,5TCC 是一种侵入式的分布式事务解决方案,Try、Confirm、Cancel三个操作都需要业务系统自行实现,对业务系统有着非常大的入侵性,设计相对复杂,但优点是 TCC 完全不依赖数据库,能够实现跨数据库、跨应用资源管理
在这里插入图片描述

6Saga模式是SEATA提供的长事务解决方案,在Saga模式中,业务流程中每个参与者都提交本地事务,当出现某一个参与者失败则补偿前面已经成功的参与者

    • 基于消息的分布式事务方案可参考本人博客另一篇之《4.6.8 分布式事务之消息机制》
    • Q:基于消息的方案,能实现强一致性吗?为什么
  • sql语句是怎样变成执行计划的?参考答案:
    下图出自《高性能mysql第三版》:
    在这里插入图片描述
    知乎—生成、查看、理解Oracle的执行计划 :
    当DB接收到一条SQL查询语句(INSERT, UPDATE, SELECT, DELETE)时,DB语法解析器(Parser)会先将其解析成一棵抽象语法树(Abstract Syntax Tree, AST),解析器在不影响执行结果的前提下可能会重写这个SQL来优化执行。
    接下来这棵生成的语法树会被送到DB的基于开销的优化器(Cost-Based Optimizer, CBO),优化器会创建执行计划(Execution Plan),并通过选择join类型(Nested Loops, Merge Join, Hash Join等)、join顺序、是否使用索引、使用什么索引等方式找到使用开销(CPU, IO, 内存)最小的计划作为最佳的执行计划。

  • 数据库的索引可能带来什么问题

  • 逻辑删除的好处?我回答方便恢复数据,面试官还不满意,我猜历史数据有挖掘价值?

  • 水平分库分表时,一个小表和一个大表join查询,小表未分库分表,大表分在四个结点上,如何提升性能?参考答案:我查了下好像不管是否分库分表,都有这些个优化办法(from newBing 以及7,8):

小表驱动大表:在join查询中,MySQL会选择数据量比较小的表作为驱动表,大表作为被驱动表。因此,我们可以将小表放在前面,让小表成为驱动表。

驱动表筛选出尽量少的行数:在where条件中加入筛选条件,让驱动表筛选出尽量少的行数。

非驱动表连接join字段最好是索引。


  1. seata AT模式实战 ↩︎ ↩︎ ↩︎ ↩︎

  2. 详解Seata AT 模式事务隔离级别与全局锁设计 ↩︎

  3. 官网:Seata AT 模式 ↩︎

  4. https://seata.io/zh-cn/blog/seata-tcc.html ↩︎

  5. 知乎:分布式事务Seata-TCC事务模式 ↩︎

  6. 官网:SEATA Saga 模式 ↩︎

  7. Mysql之小表驱动大表 ↩︎

  8. mysql驱动表与被驱动表及join优化 ↩︎

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

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

相关文章

NeRF系列(2):NeRF in the wild : Neural Radiance Fields for Unconstrained Photo Collections论文解读与公式推导

NeRF in the Wild: Neural Radiance Fields for Unconstrained Photo Collections 论文:https://openaccess.thecvf.com/content/CVPR2021/papers/Martin-Brualla_NeRF_in_the_Wild_Neural_Radiance_Fields_for_Unconstrained_Photo_CVPR_2021_paper.pdfhttps://op…

pyspark安装教程

pyspark安装教程 一、Windows下配置pyspark环境1.1 JDK下载安装1.2 Scala下载安装1.3 spark下载安装1.4 Hadoop下载安装1.5 pyspark下载安装 二、pyspark原理简介 一、Windows下配置pyspark环境 在python中使用pyspark并不是单纯的导入pyspark包就可以实现的,而是需…

从0到字节跳动30W年薪,我在测试行业“混”的第5个年头····

一些碎碎念 什么都做了,和什么都没做其实是一样的,走出“瞎忙活”的安乐窝,才是避开弯路的最佳路径。希望我的经历能帮助到有需要的朋友。 在测试行业已经混了5个年头了,以前经常听到开发对我说,天天的点点点有意思没…

使用Jmeter读取和使用Redis数据

目录 前言 缓存 Redis服务和客户端安装 Jmeter使用Redis 总结: 前言 消息队列和缓存是目前主流的中间件,我们在日常测试过程中,无论是接口还是压力测试,都会遇到需要处理这些中间件数据的情况。本文以Redis对缓存做一个简单…

精选博客系列|vSphere 8 Update 1 介绍

去年,我们推出了 vSphere 8,这是传统和下一代应用程序的企业工作负载平台,该产品于 2022 年 11 月正式推出。今天,我们很高兴地宣布 vSphere 8 Update 1 版本。通过这个版本,客户可以获得增强的管理员操作效率&#xf…

【QT】QGridLayout的基础使用(添加控件、布局、间距)

目录 0.环境介绍 1.QGridLayout简介: 2.QGridLayout参数介绍 1)添加控件方式 2)添加布局方式 3.例子及代码 1)三行三列 2)有占多行多列的控件 0.环境介绍 windows vscode qt 我使用网格布局的情景是&#x…

深入理解侵入式容器与非侵入式容器(intrusive containers)

再传统的数据结构的实现中,分为侵入式容器和非侵入式容器两种 侵入式容器 这也是教材喜欢使用的数据结构的实现方式 ,将数据结构放入类中,所以先讲这个 非侵入式容器: struct ListNode {ListNode *prev, *next;int value; }; …

五分钟搞懂分布式流控算法

流控是任何一个复杂系统都必须考虑的问题,本文介绍并比较了不同的流控算法,从而帮助我们可以基于系统需求和架构选择合适的方案。原文:Distributed Rate-Limiting Algorithms[1] 当我们设计分布式流控系统(distributed rate-limit…

华硕TUF GAMING B460M i5-10500 电脑 Hackintosh 黑苹果efi引导文件

原文来源于黑果魏叔官网,转载需注明出处。(下载请直接百度黑果魏叔) 硬件配置 硬件型号驱动情况 主板华硕TUF GAMING B460M-PLUS (LPC Controller B460芯片组 处理器特尔 Core i5-10500 3.10GHz六核已驱动 内存16 GB (IstRI DDR4 2666MH…

在字节划水的4年,很真实...

先简单交代一下,我是某不知名211的计算机本硕,18年毕业加入滴滴,之后跳槽到了头条,一直从事测试开发相关的工作。之前没有实习经历,算是四年半的工作经验吧。 这四年半之间完成了一次晋升,换了一家公司&am…

微信可以聚合聊天吗?如何同时管理多个微信?

现在很多企业用微信做私域流量运营,在里面搭建自己的私域流量。随着客户资源逐渐增多,需求增加,不仅需要联系客户,还要联系各大代理,开通多个微信号无疑是最佳方案。 但是不少做电商的朋友表示,微信号越来…

代理ip数据采集的优缺点

随着互联网时代的到来,数据已经成为企业发展和决策的关键。但是,不同的网站它对于数据访问的限制和反爬虫措施却是给企业的数据采集带来了挑战。针对这一问题,代理IP数据采集技术应运而生。但是使用代理ip来进行数据采集也有优缺点。 一、代理…

JS WEB框架Express日志模块winston和express-winston以及winston-daily-rotate-file优化

1.前言 1.Express的日志模块winston和express-winston已经提供了开箱即用的大多数功能,但是和其他语言相比,还缺失对日志记录的当前文件和行号的支持,需要自己实现,以此记录一下。 2.express-winston主要用于记录请求进入和结束时…

【运筹优化】ALNS自适应大领域搜索算法求解TSP问题 + Java代码实现

文章目录 一、TSP问题简介二、数学建模三、实现细节四、案例实战4.1 测试案例说明4.2 Java 完整代码4.2.1 TSP_Instance 实例类4.2.2 TSP_Solution 结果类4.2.3 TSP_Util 工具类4.2.4 TSP_Solver_ALNS 算法类4.2.5 RunAndPlot 运行类 4.3 运行结果展示 一、TSP问题简介 旅行推…

MySQL登录时报错:ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘解决办法

问题描述 在云服务器使用 docker安装的Mysql5.7数据库,刚开始的时候使用正常,后面突然有一天就连接不上了,报错为: ERROR 1045 (28000): Access denied for user root1xxx(using password:YES), 当登录MySQL数据库出现 Error 1045…

python套接字(三):结合pyside2实现多人聊天室

文章目录 前言一、准备1、安装pyside22、设计界面 二、代码实现1、服务器端2、客户端 三、运行 前言 上一章python套接字(二):实现一个服务器和多客户端连接,大概实现了多人聊天室功能,但是比较简陋,本篇内容将结合pyside2做一个…

车间主任、班组长必读:生产车间的现场管理

与工厂车间操作层(一线员工)接触最多的基层管理者,即我们通常所说的班组长、车间主任等,他们是将企业战略规划落实到具体工作当中的终端管理者。 一线班组长的“角色” 1、责任者 对企业来说,班组长是基层的治理员&am…

MySQL高级篇第二天

文章目录 一、Mysql的体系结构概览 二、 存储引擎 三、优化SQL步骤 一、Mysql的体系结构概览 整个MySQL Server由以下组成 Connection Pool : 连接池组件 Management Services & Utilities : 管理服务和工具组件 SQL Interface : SQL接口组件 Parser : 查询分析器组件 O…

游戏测试与一般的软件测试的区别在哪里?

有很多同学进入测试行业之后,一直从事的是软件测试的工作,然后跳槽时遇到一些游戏的公司的面试,就会有点慌,我做的都是软件测试,能胜任游戏测试么? 所以,今天我们需要先来了解一下,…

科技政策 | 《深圳市加快加快推动人工智能高质量发展高水平应用行动方案(2023—2024年)》发布

原创 | 文 BFT机器人 导语 Introduction 近日,深圳市发布了《深圳市加快推动人工智能高质量发展高水平应用行动方案(2023-2024年)》旨在以更大热情拥抱创新,打造最好生态,推动人工智能高质量发展和全方位各领域高水平…