热乎的面经——不屈不挠

news2025/1/23 6:06:35

请添加图片描述

⭐️前言⭐️

🍉欢迎点赞 👍 收藏留言评论 📝私信必回哟😁

🍉博主将持续更新学习记录收获,友友们有任何问题可以在评论区留言

🍉博客中涉及源码及博主日常练习代码均已上传GitHub


请添加图片描述

📍内容导读📍

  • 🍅一面
  • 🍅二面

🍅一面

1.封装、继承和多态
封装:
封装是指将数据和行为封装在一个类中,并对外部隐藏实现细节
这样可以保护数据的完整性,防止外部直接访问和修改数据。
继承:
继承是指一个类可以继承另一个类的属性和方法,并在此基础上进行扩展。
抽象多个类的共性,实现代码的复用。
多态:
多态是指一个对象可以表现出多种形态,在Java中,多态可以通过继承和接口实现。
主要在向上转型和动态绑定上体现
向上转型:父类引用指向子类对象
动态绑定:调用类的方法,究竟执行的是父类的方法还是子类的方法,要看这个引用指向的是父类对象还是子类对象,这个过程是运行时决定的,因此称为动态绑定。
2.抽象类和接口的区别
1、抽象类可以包含非抽象方法,但接口中只能包含抽象方法
2、类只能继承一个抽象类,但可以实现多个接口
3、抽象类的目的是为了实现代码重用,而接口则是为了实现多态性和松耦合
4、抽象类可以包含构造方法,但接口不能包含构造方法。
5、抽象类中的方法可以有访问修饰符,但接口中的方法都是公共的。
3.ArrayList和LinkedList的区别
1、在存储空间上,ArrayList一定在物理上是连续的(因为其底层是顺序表),而LinkedList在逻辑上连续,但是物理上不一定连续(因为其底层是链表)
2、ArrayList支持随机访问,时间复杂度达到O(1);而LinkedList不支持随机访问,其搜索的时间复杂度为O(N)。
3、ArrayList在空间不够时需要扩容,LinkedList没有容量的概念
4、ArrayList支持元素的高效存储和频繁访问,而LinkedList支持任意位置的插入和删除。
4.哪些排序算法不稳定
直接插入、冒泡、归并排序是稳定的,其他排序算法都不稳定。
在这里插入图片描述

5.哪些场景下会使用索引
1、数据库表中的数据量比较大,查询速度较慢,需要使用索引来提高查询效率。
2、经常使用wherejoinorder by等查询语句的场景,使用索引可以加速查询速度。
3、查询条件使用到了非主键列或者非唯一性列,这时使用索引可以减少扫描行的数量,提高查询速度。

6.数据库底层索引数据结构
MySQL底层使用B+树结构作为索引
B+树是一种基于B树的树形结构(B树其实就是一棵N叉搜索树),相对于B树,B+树具有更高的磁盘读写效率和更好的数据查询性能。

其特点如下:
1、所有数据都存储在叶子节点上,非叶子节点只存储索引信息,这样可以减少非叶子节点的存储空间,提高效率。
2、叶子节点之间使用指针连接,形成一个有序的链表,这样可以方便范围查询和排序操作。
3、所有叶子节点之间高度相同,可以形成一个平衡的树结构,这样可以保证查询的性能稳定,不会受到数据分布的影响。

7.左右连接和内连接
左连接和右连接是SQL中的外连接的两种连接方式,用于将两个表中的数据联合起来,其主要区别在于连接的方向和结果集的组成:
1、左连接(Left Join):左连接返回左表中的所有记录和右表中匹配的记录,如果右表中没有匹配的记录,那么就返回NULL值。左连接的连接方向是从左表到右表。
2、右连接(Right Join):右连接返回右表中所有记录和左表中匹配的记录,如果做左表中没有匹配的记录,那么就返回NULL值。右连接的连接方向是从右表到左表。
内连接是取两个表中的匹配交集。
1、内连接只包括两个表中都存在的数据行,而左连接和右连接则可以包括其中一个表中不存在的数据行。
2、内连接不包括NULL值,而左连接和右连接则可以包括NULL值。
8.项目中如何使用数据库的

9.项目开发遇到什么问题,是怎么解决的

10.分页是如何实现的

11.Linux常用命令
12.项目是怎样去测试的
13.测试过程中遇到问题是怎样定位并解决的
1、重现问题,找到问题出现的具体步骤,并确认问题是否可以重现。
2、日志分析,查找异常信息,确定问题的具体原因。
3、使用调试工具辅助分析,深入了解应用程序的内部结构和运行机制,定位问题的具体原因。
4、进行回归测试,确保应用程序的其他功能和性能没有受到影响。
5、及时记录和跟踪问题,多方面思考和分析问题,综合使用各种方法和工具定位和解决问题。

14.为什么选择selenium工具
1)开源免费
2)支持多浏览器。如Chrome、Firefox、edge浏览器等
3)支持多系统。如Linux、Windows、MacOS
4)支持多语言。Java、python、CSharp、Roby、JavaScript
5)selenium包提供了很多可供测试使用的API
15.为什么选择应聘测试岗位
首先,个人对软件测试是比较感兴趣的,我喜欢在软件中发现错误、解决问题和提高软件质量;其次,软件测试岗位需要的一些特质和能力是比较契合我的,比如说沟通能力、耐心和细心等方面;最后,我想谈下我对软件测试的理解,一个产品在完成开发后,不经过我们测试是不敢轻易上线的,那样将会把bug遗留给用户,直接造成公司的损失,这也让我认识到了这个岗位的重要性。
16.提bug不认可
● 1.首先反思自己是不是bug描述的不够清楚
● 2.bug等级要有理有据
● 3.合理友好的沟通,站在用户的角度反问:如果你是用户,能够接受这样的体验吗
● 4.不仅能够提出问题,最好能够给出解决方案。
● 5.组织bug评审
邀请代表参加bug评审:产品代表、开发代表、测试代表,进行以下工作:
1)如何解决bug?
2)如何预防类似的bug?
17.对公司的了解
18.反问

🍅二面

1、多态
多态是指一个对象可以表现出多种形态,在Java中,多态可以通过继承和接口实现。
主要在向上转型和动态绑定上体现
向上转型:父类引用指向子类对象
动态绑定:调用类的方法,究竟执行的是父类的方法还是子类的方法,要看这个引用指向的是父类对象还是子类对象,这个过程是运行时决定的,因此称为动态绑定。
2、介绍一下单例模式
懒汉-饿汉
单例模式能保证某个类在程序中只存在唯一一份实例,而不会创建出多个实例.
单例模式的具体实现方式,分成"饿汉"和"懒汉"两种.

饿汉模式
在类加载阶段就把实例创建出来.

static class Singleton {
    // 把构造方法设为private,防止在类外面调用构造方法,也就禁止了调用者在其他地方创建实例的机会.
    private Singleton() {
    }

    private static Singleton instance=new Singleton();

    public static Singleton getInstance() {
        return instance;
    }
}

懒汉模式
类加载时不创建实例,第一次使用的时候才创建实例

static class Singleton {
    private Singleton() {}
    private static Singleton instance=null;
    public static Singleton getInstance() {
        if(instance==null) {
            instance=new Singleton();
        }
        return instance;
    }
}

3、懒汉模式是否存在线程安全问题,该如何解决线程安全问题。
在实例尚未创建时,多线程调用涉及到LOAD和SAVE两步操作,所以懒汉模式存在线程安全问题,如果在多线程的情况下要通过以下代码实现.

static class Singleton {
    private Singleton() {}
    private static volatile Singleton instance =null;
    
    public static Singleton getInstance() {
        if(instance==null) {
            synchronized (Singleton.class) {
                if(instance==null) {
                    instance=new Singleton();
                }
            }
        }
        return instance;
    }
}

双重if判定:
加锁/解锁是一件开销比较高的事情,而懒汉模式的线程不安全只是发生在首次创建实例的时候.
因此后续使用的时候,就不必再进行加锁了,外层的if就是判定当前是否已经把instance实例创建出来了,如果已经创建出来了实例,就不必再加锁了,节省了开销;而里层的if判断的是是否要创建实例.
理解volatile:
避免"内存可见性"导致读取的instance出现偏差(后续批次的线程通过第一层if的时候,也需要判定instance的值,但是这个判定不一定是从内存读取的数据,也可能是从寄存器读取的数据),于是补充上volatile.

4、hashcode相同对象一定相同吗
不一定,在Java中,hashCode方法是从Object类继承而来的,它默认返回对象的内存地址的哈希值。因此,如果两个对象的内存地址不同,它们的hashCode值也会不同。但是,如果在类中重写了hashCode方法,使得不同的对象返回相同的hashCode值,这并不意味着这些对象是相等的。
5、Java实现同步线程的方式有哪些
在Java中,常用的同步机制包括以下几种:

  1. synchronized 关键字:synchronized 是Java内置的同步机制,可以实现线程的互斥和同步,使用 synchronized 修饰的方法或代码块在同一时间只能被一个线程执行,其他线程需要等待锁的释放。
  2. ReentrantLock:ReentrantLock 是Java提供的一种可重入的互斥锁,使用 ReentrantLock 可以实现与 synchronized 相同的功能,但 ReentrantLock 提供了更多的功能和灵活性,如可中断锁、公平锁等。
  3. CountDownLatch:CountDownLatch 是Java提供的一个同步工具类,可以实现等待某个事件完成后再执行后续操作,它通过一个计数器来实现,每当一个事件完成时,计数器就减一,当计数器减为0时,等待的线程就会被唤醒。
  4. Semaphore:Semaphore 是Java提供的一个同步工具类,可以用来控制同时访问某个资源的线程数量,它通过一个计数器来实现,每当一个线程访问资源时,计数器就减一,当计数器减为0时,其他线程就需要等待资源的释放。
  5. CyclicBarrier:CyclicBarrier 是Java提供的一个同步工具类,可以用来实现多个线程之间的同步,它通过一个栅栏来实现,当所有线程都到达栅栏时,栅栏就会打开,所有线程就可以继续执行后续操作。
  6. ReadWriteLock:ReadWriteLock 是Java提供的一个读写锁,它允许多个线程同时读取共享资源,但只允许一个线程写入共享资源,这可以提高程序的并发性能。

6、SpringBoot的自动装配
1.自动装配:SpringBoot提供了大量的自动配置功能,可以快速地构建和部署应用程序。
2.条件装配:根据条件自动装配和配置应用程序中的各种组件和功能,使用@Conditional注解
3.自动扫描:通过自动扫描,自动装配和配置应用程序中的各种组件和功能,使用@Controller、@Service、@Repository等注解。
4.属性配置:通过配置文件(application.properties或者application.yml)定义属性,自动装配和配置应用程序中的各种组件和功能。
7、服务之间进行通信的话有什么方式
1.RESTful API:通过HTTP协议进行通信,常用于Web应用之间的交互
2.消息队列:通过消息队列,实现异步、解耦、高可用的服务之间通信,常用于高并发、高可用的场景。
3.WebSocket:实现双向通信,常用于实时通信场景,如在线聊天、实时游戏等。
8、sql语句的执行顺序
1.from子句:查询数据的来源表。
2.where子句:筛选符合条件的记录。
3.group by子句:对查询结果进行分组。
4.having子句:对分组后的结果进行筛选。
5.select子句:查询需要返回的列。
6.order by子句:对查询结果进行排序。
7.limit子句:限制返回结果的数量。
9、MySQL中字符类型用什么表示
定长字符串:char
可变字符串:varchar
10、char和varchar的区别(大数据量做检索时,哪个更快)
1.char存储固定长度字符串类型;varchar存储可变长度字符串类型
2.char在存储空间上比varchar更占用空间,但在查询和排序操作可能会更快。

大数据量做检索时,char会更快。

11、selenium工作原理
● selenium脚本代码创建HTTP请求,并且发送给浏览器驱动WebDriver
● 浏览器驱动中包含一个Http Server来接受HTTP请求
● Http Server接受到请求后根据请求来具体操控浏览器,执行测试步骤
● 浏览器将测试执行结果返回给Http Server
● Http Server再将结果返回给selenium脚本代码

12、微信发消息设计测试用例
在这里插入图片描述
13、测接口的话从哪些方面去重点关注
1.功能测试:测试接口是否按照预期实现了所需的功能。
2.性能测试:测试接口的性能,包括响应时间、吞吐量、并发性等方面。
3.安全测试:测试接口的安全性,包括防止SQL注入、XSS攻击、CSRF攻击等方面。
4.兼容性测试:测试接口在不同的浏览器、操作系统、设备等多个平台上的兼容性。
5.可靠性测试:测试接口的可靠性,包括接口的稳定性、可重复性、容错性等方面。
6.接口文档测试:测试接口的文档是否准确、完整、易懂。

14、为什么选择走测试
首先,个人对软件测试是比较感兴趣的,我喜欢在软件中发现错误、解决问题和提高软件质量;其次,软件测试岗位需要的一些特质和能力是比较契合我的,比如说沟通能力、耐心和细心等方面;最后,我想谈下我对软件测试的理解,一个产品在完成开发后,不经过我们测试是不敢轻易上线的,那样将会把bug遗留给用户,直接造成公司的损失,这也让我认识到了这个岗位的重要性。
15、想象中的测试是做什么工作的
16、反问


⭐️最后的话⭐️
总结不易,希望uu们不要吝啬你们的👍哟(^U^)ノ~YO!!如有问题,欢迎评论区批评指正😁

请添加图片描述

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

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

相关文章

【Linux常见指令以及权限理解】基本指令(3)

写在前面 上一篇文章,我们学习了Linux的一些常用指令, 学习了如何理解Linux系统,介绍了对Linux系统的理解:Linux下一切皆文件 介绍了重定向还有管道相关的知识。这里是上一篇博客的链接:http://t.csdn.cn/2d6fc 接…

Kali HTTrack演示-渗透测试察打一体(1)

HTTrack是一个免费并易于使用的线下浏览器工具,全称是HTTrack Website Copier for Windows,它能够让你从互联网上下载指定的网站进行线下浏览(离线浏览),也可以用来收集信息(甚至有网站使用隐藏的密码文件),一些仿真度极高的伪网站(为了骗取用户密码),也是使用类似工具做…

[一篇读懂]C语言十二讲:栈与队列和真题实战

[一篇读懂]C语言十二讲:栈与队列和真题实战 1. 与408关联解析及本节内容介绍1 与408关联解析2 本节内容介绍 2. 栈(stack)的原理解析2.1 **栈:只允许在一端进行插入或删除操作的线性表**2.2 栈的基本操作2.3 栈的顺序存储2.4 栈的链表存储 3. 初始化栈 -…

PE文件+UPX壳 ida分析

die查壳发现是UPX壳,直接用ida分析,会发现能分析出来的信息特别少,需要脱壳 工具链接发布 UPX/UPX (github.com) 下载压缩包后解压,直接在该文件路径下cmd,输入upx.exe -h安装完成,使用命令“upx -d 文件路…

计算机网络-网络层与链路层协议分析实验

一.实验目的 通过本实验,进一步熟悉PacketTracer的使用,学习路由器与交换机的基本配置,加深对网络层与链路层协议的理解。 二.实验内容 1.完成路由器交换机的基本配置 2.了解 ICMP 数据包的格式 3.检查ARP交换 三.实验过程 1.完成路由…

链表——循环链表

其他形式的链表——循环链表 循环链表 定义:循环链表是表中最后一个结点的指针指向头结点,使链表构成环状 特点:从表中任一结点发出均可找到表中其他结点,提高查找效率 双向循环链表 data:数据元素 prior&#xff1…

进程间通信--管道

文章目录 一.通信二.管道匿名管道(只能用于有血缘关系的进程之间通信)1.匿名管道的创建2.匿名管道的读取情况3.管道的特征4.基于匿名管道的简单进程池 有名管道(用于没有血缘关系的进程间的通信)1.有名管道的建立和删除2.通过一段…

CodeForces 438 D线段树暴力修改

线段树暴力修改 关键是每个数取余操作,看似我们如果暴力改的话m*n肯定超时了 容易发现一个数小于给定模数的时候,取模不会发生改变,而大于给定模数的时候我们得到的最大的结果是x/2向上取整,结果一定小于等于这个数字,这里我想说…

AECC全球留学趋势报告解读

AECC全球留学趋势报告解读 相对更安全的留学目的地: 留学安全是留学生及家长最关注的一个问题。报告显示,在“你认为相对更安全的留学目 的"的问答中,澳大利亚获得总评8.76分(满分10分)位居第一。 英澳新留学更受…

VMware Tanzu Kubernetes Grid (TKG) 2.1 - 企业级 Kubernetes 解决方案

VMware Tanzu Kubernetes Grid (TKG) 2.1 - 企业级 Kubernetes 解决方案 VMware 构建、签名和支持的开源 Kubernetes 容器编排平台的完整分发版 请访问原文链接:https://sysin.org/blog/vmware-tkg-2/,查看最新版。原创作品,转载请保留出处…

华为OD机试真题 Java 实现【最优资源分配】【2023Q1 200分】

一、题目描述 某块业务芯片最小容量单位为 1.25G,总容量为 M*1.25G,对该芯片资源编号为 1,2,… M。 该芯片支持 3 种不同的配置,分别为 A、B、C. 配置 A: 占用容量为 1.25 * 1 1.25G配置 B: 占用容量为 1.25* 2 2…

白嫖chatgpt的Edge插件,很难不爱啊

目录 🍁1.常见的Edge浏览器界面 🍁二.安装WebTab插件 🍁三.WebTab插件的各种功能 🍁1.支持免费的chatgpt,不限次数​编辑 🍁2.有几个休闲的小游戏可以玩耍,点击即玩。 🍁3.支…

【迷宫问题】找出迷宫所有可能的路径C++

1 引入情境 我记得小时候玩过推箱子游戏,也是如下图这种,四周由深色的方格作为墙壁,白色的地方是可以通过的。现在想要从红色方格出发走到黄色方格,能有什么好办法呢? 注意到,对于计算机没有全局的观念&…

Flutter音乐播放audioplayers

简介 Flutter的audioplayers是一个Flutter插件,可以播放多个同时的音频文件,支持Android、iOS、Linux、macOS、Windows和web平台。它有以下特点: 可以从本地文件、网络资源或内存中加载音频可以控制音量、进度、速度和循环可以播放多个音频…

《编程思维与实践》1069.第一位数字

《编程思维与实践》1069.第一位数字 题目 思路 由于正整数N的N次方最大可以为 1 0 8 ⋅ 1 0 8 10^{8\cdot 10^8} 108⋅108,加上数据可能有很多组,所以直接采用大整数计算次方这方法很可能超时, 这里给出一种数学算法: 幂指函数通常的处理方式是取对数将乘方转化为乘法: N N 1…

Linux驱动编程(驱动程序基石)(上)

一、休眠与唤醒 要休眠的线程,放在 wq 队列里,中断处理函数从 wq 队列里把它取出来唤醒。所以,我们要做这几件事: ① 初始化 wq 队列 ② 在驱动的 read 函数中,调用 wait_event_interruptible: 它本身会判断…

English Learning - L3 作业打卡 Lesson1 Day7 2023.5.11 周四

English Learning - L3 作业打卡 Lesson1 Day7 2023.5.11 周四 引言🍉句1: Blues is slow, sad and soulful.成分划分弱读连读爆破语调 🍉句2: Duke Ellington and his orchestra recorded a famous song – Mood Indigo – about the deep blue color, …

【嵌入式环境下linux内核及驱动学习笔记-(11-设备树)】

目录 1、设备树体系1.1 DTS /DTSI / DTC / DTB 2、基础语法2.1 节点语法2.1.1 通用名称建议 2.2 属性语法2.2.1 属性值 2.3 关于label2.4 节点的[unit-address] 与reg属性2.5 根节点 /2.6 标准属性compatible2.6.1 of_machine_is_compatible函数 2.7 地址编码2.7.1 标准属性#ad…

Linux常用命令(4)

文章目录 Linux常用命令(4)查找文件或目录 find在当前文件下找一个hello.txt的文件在/user/include目录下找stdio.h文件 查找内容 grep在当前目录的hello.txt 文件中搜索1234在当前目录下所有文件中搜索1234在当前目录下所有以.txt结尾的文件中搜索1234 制作压缩包和解压缩命令…

Java 函数式编程 详细介绍

在兼顾面向对象特性的基础上,Java语言通过Lambda表达式与方法引用等,为开发者打开了函数式编程的大门。 下面我们做一个初探。 Lambda的延迟执行 有些场景的代码执行后,结果不一定会被使用,从而造成性能浪费。而Lambda表达式是延…