【贝壳找房】测试开发一面凉经--北京现场面(附面试答案)

news2024/9/19 10:44:19

1.单链表反转写

单链表是一种线性结构,它是由一个个节点(Node)组成的。并且每个节点(Node)是由一块数据域(data)和一块指针域(next)组成。

节点的数据域:data数据域一般就是用来存放数据的 。
节点的指针域:next指针域一般就是存放的指向下一个节点的指针,即:指针域中存放的是下一个节点对象的引用变量。

我们要解决这道题,需要明确两件事:

  1. 单链表的数据结构表示
  2. 单链表的逆序方法

单链表的数据结构表示(两个属性:data存放数据,next存放下一个节点对象的引用变量)

public class Node<T> {
    // 节点的数据域
    public T data;
    // 节点的指针域
    public Node next;

    /**
     * 构造方法
     * @param data 数据域值
     */
    public Node(T data) {
        this.data = data;
    }

单链表逆序:一般可以采用三种方式:递归、双指针和循环遍历。
以下采用双指针法作为演示:

/**
 * @PACKAGE_NAME: com.lyl.linklist
 * @ClassName: ReverseByDoublePointerTest
 * @Description:  使用 双指针+辅助临时节点 实现单链表反转
 * @Date: 2020-05-30 19:17
 **/
public class ReverseByDoublePointerTest {

    /**
     * 使用 双指针+辅助临时节点 进行链表反转
     * @param head
     * @return 返回反转后的 head 头结点
     */
    public static Node reverse(Node head) {
        // 当前节点指针
        Node current ;
        // 前一节点指针
        Node previous;
        // 当前节点指针初始化指向头结点
        current = head;
        // 前一节点指针初始化为 null
        previous = null;

        while(current != null){
            // 辅助的临时节点, 存储当前节点的下一个节点
            Node temp = current.next;
            // 当前节点的下一个节点指向了前一个节点指针指向的节点
            current.next = previous;
            // 然后 前一节点指针向前移动一个节点,此时和当前节点指针都指向了当前节点
            previous = current;
            // 当前节点指针也向前移动一个节点,也就是移动到了当前节点的下一个节点,就是临时节点指向的节点
            current = temp;
        }
        // 返回头结点
        return previous;
    }


    // test
    public static void main(String[] args) {
        // 创建单链表
        Node head = Node.createLinkedList();
        // 遍历新创建的单链表
        System.out.print("新创建的单链表: ");
        Node.traverse(head);
        // 递归反转单链表
        Node newHead = reverse(head);
        // 遍历反转后的单链表
        System.out.print("反转后的单链表: ");
        Node.traverse(newHead);
    }
}

2.用过Redis吗?

(1)Redis的使用场景:

热点数据缓存、消息队列、分布式锁、排行榜、延时操作、计数器等

(2)Redis的常见数据类型:

String、List、Hash、Set、Sorted Set

(3)Redis与数据库缓存一致问题:

缓存与数据库同步的大致的流程如图所示:
在这里插入图片描述
下面是删除数据时,出现缓存数据库数据不一致的两种情况:

情况一、删除数据时,先删缓存,再更新数据库。
先删除缓存,数据库还没有更新成功,此时如果读取缓存,缓存不存在,去数据库中读取到的是旧值,缓存不一致发生。

解决方案:延时双删

延时双删的方案的思路是,为了避免更新数据库的时候,其他线程从缓存中读取不到数据,就在更新完数据库之后,再 Sleep 一段时间,然后再次删除缓存。

情况二、先更新数据库,再删除缓存

先更新数据库,再删除缓存。更新数据库成功,如果删除缓存失败或者还没有来得及删除,那么,其他线程从缓存中读取到的就是旧值,还是会发生不一致。

解决方案:消息队列

先更新数据库,成功后往消息队列发消息,消费到消息后再删除缓存,借助消息队列的重试机制来实现,达到最终一致性的效果。

(4)什么是缓存穿透、缓存击穿和缓存雪崩:

缓存穿透:是指查询一个数据库一定不存在的数据。

缓存击穿:只会出现在热点数据上,发生在缓存失效的瞬间。

缓存雪崩:大量的key设置了相同的过期时间,导致在缓存在同一时刻全部失效,造成瞬时DB请求量大、压力骤增,引起雪崩。

3.了解kafaka吗?对中间件有了解吗?

1)Kafka

Apache Kafka 是一款开源的消息系统。可以在系统中起到“肖峰填谷”的作用,也可以用于异构、分布式系统中海量数据的异步化处理。一共包含4个API:
Producer API:允许一个应用推送流记录通过一个或多个Kafka topics ;
Consumer API:允许一个应用订阅一个或多个topics 并且处理这些流记录;
Streams API:允许一个应用作为一个流处理者,通过topics 输入或输出流数据 ;
Connector API:绑定并运行 Producer 或 Consumer 连接Kafka topics 到 到已经存在的系统或存储上;

2)常用的中间件:

  1. 接入层中间件:nginx、openrestry、tomcat

  2. 缓存中间件:guava、redis

  3. 文件存储中间件:fastdfs、hdfs、oos、ES

  4. 数据库中间件:mycat、shardingsphere

  5. 消息中间件:Kafka、Rabbitmq、Rocketmq

  6. 搜索中间件:ES

  7. 引擎类中间件:Drools、URule、Activiti、Jflow

  8. 调度类中间件:xxljob、Azkaban、Airflow、Oozie、elastic-job、Jenkins

  9. 服务治理中间件:Zookeeper、nacos

  10. AMP中间件( Application Performance Management):zipkin、大众cat、skywalking

  11. 大数据中间件:hadoop、cdh、ambari、spark、flink、hive、hbase-phoenix、kylin、es

4. url输入到浏览器发生什么?

总体来说分为以下几个过程:

  • DNS 解析:将域名解析成 IP 地址
  • TCP 连接:TCP 三次握手
  • 发送 HTTP or HTTPS 请求
  • 服务器处理请求并返回响应(这里可以简要介绍MVC架构数据流转)
  • 浏览器解析渲染页面
  • 断开连接:TCP 四次挥手

5.如何测试电梯?

从黑盒测试的角度去思考:

  • 功能:关注电梯的基本功能是否实现
  • 性能:关注电梯的性能指标,如负重多少kg
  • 安全性:关注电梯的安全性,如超重报警,下坠制动
  • 用户体验:关注电梯的舒适性

白盒角度或其他角度去思考:

  • 效率:关注电梯控制逻辑的内部算法
  • 接口:电梯和电梯控制器,电梯和大楼,电梯和摄像头,电梯和对讲机(报警装置)的接口测试
  • 零件:电梯的零件的单元测试
  • 兼容性:电梯和其他东西的兼容性

tips:回答测试用例设计的面试题时的注意事项

  • 一定要明确测试用例设计的范围,这个阶段可以多向面试官询问测试需求、测试范围。
  • 明确系统的边界值以及核心的功能点,展开测试设计。
  • 不要张口就答,可以先在稿纸上画出大概的脑图,根据脑图,捋顺思路再做答。

6.为什么投测开?

…按自身情况回答

7.内外网地址转换

通过NAT技术进行转换,

NAT(Network Address Translation),中文名唤作网络地址转换,诞生于IP地址匮乏的时代。

NAT的基本思想是ISP(Internet服务提供商)为每个家庭或者公司分配一个IP地址,这个IP地址用作Internet流量的传输,也就是大家常说的外网IP地址或者公网IP地址。在客户网络的内部,每台计算机有唯一一个IP地址,即内网IP地址,这些地址主要用于路由内部流量。当一个数据包离开客户网络发送至其他ISP时,需要进行地址转换,把唯一的内网IP地址转换成外网的IP地址。

8.https证书机制


客户端向服务端发起https链接,服务端返回服务端证书。

证书的主要内容有公钥(Public Key)、ISSUER(证书的发布机构)、Subject(证书持有者)、证书有效期、签名算法、指纹及指纹算法。

客户端收到证书后需要做证书的验证工作。首先获取ISSUER的公钥,将加密了的指纹解密,同时计算证书内容的指纹,比对两者的内容,如果内容一致,说明服务端可信。

整个解密过程就是完成了一次签名的认证,证明这个证书是权威的发证机构颁发的(指纹用机构的私钥加密了),并且证书内容没有经过修改(指纹相符)。那么证书中持有者一定是权威机构认证的公司或者个人。

客户端生成对称加密算法使用的秘钥,将请求参数用服务端的公钥加密后传送给服务端。
服务端解密,之后使用对称秘钥通信,返回给客户端加密后的数据。

9.测开职业规划

…按自身情况回答

10.数据库索引建立如何选择?占用空间不?

索引建立的选择:

  • 频繁搜索、查询选择的列
  • 经常排序、分组的列
  • 经常用于连接的列(主键、外键)

不适合建立索引的情况:

  • 仅包含几个值的列
  • 表中仅包含几行

索引虽然能够提高查询效率,但是索引是需要占用空间的。

11.一组有序元素,选择哪种排序算法?为什么选择快速排序?若使用冒泡排序,最好时间复杂度是多少?冒泡排序最坏时间复杂度?

几乎有序的一组元素,建议用插入排序算法。

12.讲讲实习工作内容是啥?

应该没有了,就这些。

感谢有这次面试机会。

如果这篇文章对你有帮助,请给我点个三连!👍这样我才有动力继续更新下去!

总结:

感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

 

          视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。

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

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

相关文章

vue element-plus el-drawer 自定义抽屉标题 template slot动态标题定义方法

默认抽屉定义&#xff0c; 这里的title就是标题的定义 <el-drawer v-model"drawer" title"I am the title" :direction"direction" :before-close"handleClose" > 如果我们需要自定义这个标题&#xff0c;就需要使用slot <e…

ebpf教程(4.1):XDP程序的加载

文章目录 前言环境准备加载XDP程序源码构建过程运行 前言 前置阅读要求&#xff1a; ebpf教程(3):使用cmake构建ebpf项目-CSDN博客[译] [论文] XDP (eXpress Data Path)&#xff1a;在操作系统内核中实现快速、可编程包处理&#xff08;ACM&#xff0c;2018&#xff09;xdp-t…

Zabbix 中网络设备(交换机和防火墙)的报警信息配置指南

简述 本文介绍配置 Zabbix 以监控网络设备&#xff08;如交换机和防火墙&#xff09;并发送钉钉报警信息&#xff0c;我将提供一个详细的步骤指南。 请确保你已经完成了以下前提条件&#xff1a; 1. Zabbix 已经搭建完成。2. 网络设备&#xff08;交换机和防火墙&#xff09…

空状态设计教程:连接用户体验的桥梁

空状态设计是产品设计中常被忽视却又极其重要的一环。它不仅是用户旅程的起点&#xff0c;更是塑造第一印象的关键。本文将引导你如何使用强大的设计工具设计出既美观又实用的空状态&#xff0c;以提升用户体验。 空状态设计的意义 空状态作为用户与产品初次邂逅的界面&#…

PostgreSQL-04-入门篇-连接多张表

文章目录 1. 连接设置样例表PostgreSQL 左连接PostgreSQL 右连接PostgreSQL 全外连接 2. 表别名简介表别名的实际应用1) 对长表名使用表别名&#xff0c;使查询更具可读性2) 在连接子句中使用表别名3) 在自连接中使用表别名 3. INNER JOIN 内连接简介PostgreSQL INNER JOIN 示例…

【机器学习】正则化,欠拟合与过拟合(详细代码与图片演示!助你迅速拿下!!!)

目录 &#x1f354;欠拟合与过拟合 1.1 欠拟合与过拟合定义 1.2 通过代码认识过拟合和欠拟合 1.3 原因以及解决办法 &#x1f354;正则化 2.1 什么是正则化 2.2 正则化类别 &#x1f354;小结 学习目标 &#x1f340; 掌握过拟合、欠拟合的概念 &#x1f340; 掌握过…

黄山黄小徽光影乐园:思特科技打造沉浸式光影乐园解决方案,快乐指数拉满了!

01      「黄小徽儿童光影乐园」是由思特科技全力打造&#xff0c;依托行业领先的数字光影技术与交互科技&#xff0c;专为3-8岁儿童设计的全场景、全交互、全沉浸的沉浸式光影乐园解决方案。    沉浸式光影乐园解决方案-黄小徽儿童光影乐园      02      思特…

无人机之固定翼无人机的组成

固定翼无人机是根据空气动力学原理设计机翼的形状&#xff0c;靠动力装置产生推力或者拉力&#xff0c;使无人机获得一定速度后&#xff0c;会导致空气在飞机上下表面的压力不同&#xff0c;进而产生升力&#xff0c;其升力主要来源于固定的机翼。大多数都是由机翼、机身、尾翼…

ultralytics实例分割mask读取

在前面学习YOLOv8的实例分割过程中&#xff0c;需要使用实例分割的数据集&#xff0c;其标签的标注格式如下&#xff1a; 实例分割勾勒轮廓 其中&#xff0c;第一个数字代表的是类别编号&#xff0c;后面的数据代表的是标注的坐标&#xff08;转换到0-1之间&#xff09;每两个…

编程修炼之Hibernate--- springboot启动初始化ddl过程与如何自定义修改 table 字段长度

文章目录 springboot启动初始化ddl过程如何自定义修改 table springboot启动初始化ddl过程 跟踪Springboot整合hibernate的启动代码&#xff1a; SessionFactoryImpl 的初始化里做了非常多的事情&#xff0c;初始化各种资源&#xff0c;并调用 SchemaManagementToolCoordinat…

c语言基础--------字符串指针

在 C 语言中&#xff0c;字符串指针是一个指向字符类型的指针&#xff0c;通常用于指向字符串的第一个字符。字符串在 C 语言中通常表示为字符数组&#xff0c;而字符串指针则是用来存储这种字符数组首地址的变量。 定义字符串指针 字符串指针的定义方式如下&#xff1a; ch…

Android更改包名和签名

一、更改包名 1、包名——鼠标右键——Refactor——Rename 修改自己想更改的包名和选择更改范围后点击Refactor就可以了 2.手动修改app的build.gradle文件中的applicationId&#xff08;改成和我们之前修改的包名相同&#xff09; 3.修改AndroidManifest.xml文件中的packag…

“AI+Security”系列第2期(三):面向LLM(大语言模型)的漏洞挖掘与对齐防御研究

近日&#xff0c;由安全极客、Wisemodel 社区和 InForSec 网络安全研究国际学术论坛联合主办的“AISecurity”系列第 2 期——对抗&#xff01;大模型自身安全的攻防博弈线上活动如期举行。 在此次活动中&#xff0c;前阿里云高级安全专家郑瀚带来了以《通往LLM安全对齐的道路…

网易云音乐故障 2 小时,这次到底谁背锅?(今天记得领补偿)

大家好&#xff0c;我是程序员鱼皮&#xff0c;8 月 19 日下午&#xff0c;网易云音乐突发严重故障&#xff0c;并登顶微博热搜&#xff0c;跟黑神话悟空抢了热度。 根据用户的反馈&#xff0c;故障的具体表现为&#xff1a;用户无法登录、歌单加载失败、播放信息获取失败、无法…

SQL— DML语句学习【后端 10】

数据库操作-DML 详解 在数据库管理系统中&#xff0c;DML&#xff08;Data Manipulation Language&#xff0c;数据操作语言&#xff09;扮演着至关重要的角色&#xff0c;它负责对数据库中的数据进行增、删、改操作。掌握DML操作对于数据库的日常维护和管理至关重要。本文将详…

CSP 2023 普及组第一轮 - CSP/S 2023初试题 完善程序第二题解析

一、题目阅读 &#xff08;编辑距离&#xff09;给定两个字符串&#xff0c;每次操作可以选择删除&#xff08;Delete&#xff09;、插入&#xff08;Insert&#xff09;、替换&#xff08;Replace&#xff09;&#xff0c;一个字符&#xff0c;求将第一个字符串转换为第二个字…

时序预测|基于贝叶斯BO-卷积-双向门控单元-注意力机制的单变量时间序列预测模型BO-CNN-BiGRU-Attention

时序预测|基于贝叶斯BO-卷积-双向门控单元-注意力机制的单变量时间序列预测模型BO-CNN-BiGRU-Attention 文章目录 前言时序预测|基于贝叶斯BO-卷积-双向门控单元-注意力机制的单变量时间序列预测模型BO-CNN-BiGRU-Attention 一、BO-CNN-BiGRU-Attention模型1. 贝叶斯优化&#…

【C++ 第十二章】二叉搜索树

1.1 二叉搜索树概念 二叉搜索树又称二叉排序树&#xff0c;它或者是一棵空树&#xff0c;或者是具有以下性质的二叉树: 左边小&#xff1a;若它的左子树不为空&#xff0c;则左子树上所有节点的值都小于根节点的值右边大&#xff1a;若它的右子树不为空&#xff0c;则右子树上…

并网式光伏气象站——科技百科

并网式光伏气象站的工作原理简洁而充满智慧&#xff0c;并网式光伏气象站巧妙地通过太阳能电池板将太阳能转化为电能&#xff0c;利用先进的气象监测设备&#xff0c;‌对风速、‌风向、‌温度、‌湿度、‌光照等关键气象要素进行实时监测和记录&#xff0c;不仅充分利用了太阳…

【初阶数据结构题目】32. 希尔排序

文章目录 希尔排序希尔排序的时间复杂度计算 希尔排序 希尔排序法又称缩小增量法。希尔排序法的基本思想是&#xff1a;先选定一个整数&#xff08;通常是gap n/31&#xff09;&#xff0c;把待排序文件所有记录分成各组&#xff0c;所有的距离相等的记录分在同一组内&#x…