失败的面试经历(ʘ̥∧ʘ̥)

news2025/3/18 2:40:38

一.面向对象的三大特性

1.封装:将对象内部的属性私有化,外部对象不能够直接访问,但是可以提供一些可以使外部对象操作内部属性的方法。

2.继承:类与类之间会有一些相似之处,但也会有一些异处,使得他们与众不同,继承就是在父类的基础上,创建一个与父类有相同之处,但是也可以声明自己独有的方法与属性的对象,这样做可以增加代码的复用,使得维护或扩展更加的方便,灵活。

3.多态:一个对象有多种状态,这涉及到了向上或向下转型。
多态的特点:

  • 对象类型和引用类型之间存在继承关系
  • 引用类型变量的方法属于哪个类,要想知道这个问题,要看运行期间
  • 多态不能执行子类拥有但父类没有的方法
  • 如果子类重写了父类的方法,那么直接执行的是子类重新后的方法,若没重写,则执行的是父类方法

二.如何创建线程

1.继承Thread类并重写run()方法

  • 定义Thread类的子类,并重写run()方法,run()方法中的代码就是线程所要执行的任务,所以run()方法被称为执行体(线程体)
  • 创建Thread类的子类的实例对象,就是创建了线程的对象
  • 调用线程对象的start()方法来启动该线程
  • Java不支持多继承
package thread;

public class ThreadTest extends Thread{
    String name;
    ThreadTest(String name){
        this.name=name;
    }

    @Override
    public void run() {
        System.out.println("this is a thread");
    }
}
class StartTest{
    public static void main(String[] args) {
        ThreadTest test=new ThreadTest("thread");
        test.start();
    }
}

2.实现Runnable接口配合Thread

  • 定义Runnable接口的实现类,并重写run()方法,run()方法中的代码就是线程所要执行的任务,所以run()方法被称为执行体(线程体)
  • 创建Runnable接口的实现类的对象,使此对象作为Thread的target来创建Thread对象,这个对象才是真正的线程对象
  • 调用线程对象的start()方法来启动线程
  • Runnable接口支持多继承
package thread;

public class RunnableTest implements Runnable{
    String name;
    RunnableTest(String name){
        this.name=name;
    }

    @Override
    public void run() {
        System.out.println("this is a thread");
    }
}
class RunnableStartTest{
    public static void main(String[] args) {
        RunnableTest test=new RunnableTest("thread");
        Thread thread=new Thread(test);
        thread.start();
    }
}

3.通过Callable和FutureTask创建线程

  • 创建Callable接口的实现类,并重写call()方法,call方法是线程的执行体
  • 创建Callable接口的实现类的实例,然后创建包装了Callable接口的实现类实例的FutureTask类的实例对象,FutureTask对象封装了实现类中的call()方法的返回值(FutureTask是一个包装器,它通过包装Callable接口的实现类来实现,它同时实现了Future和Runnable两个接口)
  • 使用FutureTask对象作为Thread的target来创建实例,此实例对象为线程的对象
  • 调用线程对象的start()方法来启动线程
  • 调用FutureTask对象的get()方法来获取子线程结束的返回值
package thread;

import java.util.concurrent.Callable;
import java.util.concurrent.FutureTask;

public class CallableAndFutureTaskTest implements Callable {
    String name;
    CallableAndFutureTaskTest(String name){
        this.name=name;
    }

    @Override
    public Object call() throws Exception {
        System.out.println("this is a thread");
        return null;
    }
}
class CallableAndFutureTaskStartTest{
    public static void main(String[] args) throws Exception{
        CallableAndFutureTaskTest test=new CallableAndFutureTaskTest("thread");
        FutureTask futureTask=new FutureTask(test);
        Thread thread=new Thread(futureTask);
        thread.start();
        String result=(String) futureTask.get();
        System.out.println(result);
    }
}

三.事物的四大特性(ACID)

1.原子性:事物是最小的执行单位,确保了动作要么完全完成,要么就是完全不起作用
2.一致性:处理的数据是一致的,例如转账者和收款者的总金额是不变的
3.隔离性:发生并发访问数据库时,一个事物不会被另一个事物所影响
4.持久性:一个事务提交之后,他对数据库中数据的影响是持久的,即使出现了数据库障碍也不会影响。

四.Get()方法与Post()方法的区别

Get()方法和Post()方法是Http协议中两种常用的请求方法,但是在不同的场景和目的下的使用是不同的。

1.在语义上:Get()方法用于获取和查询资源,而Post()方法更加偏向于修改或创建。这就意味着Get请求拥有等幂性。而Post()方法可能会有副作用,即每次执行都可能产生不同的结果,影响资源的状态。

2.在结构上:Get()方法的请求的参数传递会显示到url上,形成查询字符串(querystring),而Post()方法的参数在执行体(body)中,Get请求的查询字符串长度会受到url的限制,而Post请求则不会有明确的限制。

3.在缓存上:由于Get请求是等幂的,所以对于Get请求来说,在浏览器中会有缓存来保存数据,这样可以提高Get()方法的获取或查询的效率;而Post请求可能会有副作用,所以并没有缓存机制。

4.在安全性上:本质上Get请求和Post请求都不是绝对安全的,因为Http协议都是明文传输,无论是url,header或者是body都有可能被窃取,所以应该使用Http协议加密传输数据。但是在一些应用场景下,Get方法要比Post方法更加不安全,因为Get方法的参数传递会在url上显示出来,在一些代理日志上或者浏览器的历史上可以被找到,所以在传输一些私密数据的时候应该使用Post方法进行传递。

五,数据库(MySQL)的左,右连接以及内连接

1.Left join...on:左连接,以左表为基础,查询左表的所有数据以及满足on关键字后面的条件的右表数据,左连接又称左外连接,是外连接的一种。
2.Right join...on:右连接,以右表为基础,查询右表的所有数据以及满足on关键字后面的条件的左表数据,右连接又称为右外连接,是外连接的一种。
3.Inner join...on:内连接,以左右两表为参考对象,查询左右两表同时满足on关键字后面的条件的数据。

MySQL中没有全外连接,所以就不解释了。

首先创建了两个表table_left和table_right.

---------------------------------------------------------------------------------------------------------------------------------

左连接:

SELECT * FROM table_left LEFT JOIN table_right ON table_left.id=table_right.id

结果:

右连接:

SELECT * FROM table_left RIGHT JOIN table_right ON table_left.id=table_right.id

结果:

内连接:

SELECT * FROM table_left INNER JOIN table_right ON table_left.id=table_right.id

结果:

---------------------------------------------------------------------------------------------------------------------------------总结一下,这就相当于一个集合A和B

A left B join:A
A right B join:B
A inner B join:A∩B

左连接:

右连接:

内连接:

全连接:

六.数据库分表查询中使用到的in关键字可以使用什么代替

一般在做SQL优化的时候讲究使用EXISTS带替代IN的做法,理由是EXISTS执行效率要比IN高。

2d1876ca1c7bc478809ec24afc81dfe7.png

个人理解:

IN表示范围,指某一字段在某一范围之内,这个范围一般使用子查询来获取,由此可知IN子查询返回的结果应该就是这个范围集。

EXISTS表示存在,指至少存在一处,这个条件由EXISTS子查询来完成,但是在这里EXISTS子查询返回的结果却不再是一个结果集,而是一个布尔值(true或false),其实这个挺好理解的,EXISTS就表示如果子查询能查到值则返回true,则执行EXISTS之前的语句。

具体MySQl的详细介绍请看:MySQL数据库的详细介绍

---------------------------------------------------------------------------------------------------------------------------------以上问题都是面试官真实问的面试题,回答的一坨,在事后查询资料加个人理解写的blog,有错误之处还请多包容。

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

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

相关文章

Android 7 及以上夜神模拟器,Fiddler 抓 https 包

文章目录 问题描述解决方案环境准备操作步骤1、导出 Fiddler 证书并修改成 .pem 和 .0 文件2、修改夜神模拟器配置3、打开夜神模拟器设备的 USB 调试选项4、将0725b47c.0证书放入夜神模拟器系统证书目录5、夜神模拟器 cmd 环境配置6、给 0725b47c.0 证书赋予权限7、打开 fiddle…

全国医院数据可视化分析系统

【大数据】全国医院数据可视化分析系统 (完整系统源码开发笔记详细部署教程)✅ 目录 一、项目简介二、项目界面展示三、项目视频展示 一、项目简介 🏥 项目名:医疗导航神器!——《基于大数据的微医挂号网医院数据可视…

音视频入门基础:RTCP专题(1)——RTCP官方文档下载

一、引言 实时传输控制协议(Real-time Transport Control Protocol或RTP Control Protocol或简写RTCP)是实时传输协议(RTP)的一个姐妹协议。RTCP由《RFC 3550》定义(取代废弃的《RFC 1889》)。RTP使用一个…

蓝桥杯专项复习——结构体、输入输出

目录 结构体&#xff1a;排序 输入输出 结构体&#xff1a;排序 [NOIP2007]奖学金 #include<iostream> #include<cstring> #include<algorithm>using namespace std;const int N310; int n;struct Student {int chinese,math,eng,sum;int idx; }Stu[N];//定…

工作记录 2017-01-06

工作记录 2017-01-06 序号 工作 相关人员 1 协助BPO进行Billing的工作。 修改CSV、EDI837的导入。 修改邮件上的问题。 更新RD服务器。 郝 修改的问题&#xff1a; 1、 In “Full Job Summary” (patient info.), sometime, the Visit->Facility is missed, then …

LLM(2):准备构建 LLM

在了解大语言模型一文中&#xff0c;对 LLM 做了初步介绍&#xff0c;本文接续前一篇文章的内容&#xff0c;简要介绍 LLM 的应用和构建过程。 1.2 LLM 的应用 由于大型语言模型&#xff08;LLMs&#xff09;在解析和理解非结构化文本数据方面具备先进能力&#xff0c;它们在…

pytest+allure+jenkins

本地运行参考&#xff1a;pytestallure 入门-CSDN博客 jenkins运行如下&#xff1a; 安装插件&#xff1a;allure 配置allure安装目录 配置pytest、allure 环境变量 配置流水线 进行build,结果如下 ,点击allure report 查看结果

【linux篇】--linux常见指令

文章目录 一、Linux基本概念 二、Linux入门 1.目录结构 2.Linux命令 *Linux基础命令 ls命令的选项&#xff1a; 3.目录切换相关命令&#xff08;cd & pwd) 4.相对&绝对路径和特殊路径符 4.1相对路径 4.2绝对路径 4.3 你特殊路径符 5.创建目录命令&#xff08;mkdir) 6.…

Kubernetes的组成和架构

Kubernetes&#xff08;K8s&#xff09;是一个开源的容器编排平台&#xff0c;用于自动化部署、扩展和管理容器化应用程序。它由多个组件组成&#xff0c;这些组件可以分为两类&#xff1a;控制平面&#xff08;Control Plane&#xff09;组件和节点&#xff08;Node&#xff0…

Android之RecyclerView列表拖动排序

文章目录 前言一、效果图二、实现步骤1.xml布局2.activity代码3.adapter 总结 前言 随着需求的变化&#xff0c;很多地方需要加拖动改变顺序的需求&#xff0c;用RecyclerView就可以实现列表拖动排序&#xff0c;列如像朋友圈图片拖动排序&#xff0c;或者音乐播放器列表拖动排…

C# WPF 基础知识学习(一)

一、WPF 简介 Windows Presentation Foundation&#xff08;WPF&#xff09;是微软推出的一款用于构建用户界面的框架&#xff0c;它为开发 Windows 桌面应用程序提供了统一的编程模型、语言和框架。WPF 将用户界面的设计与业务逻辑分离开来&#xff0c;采用了 XAML&#xff0…

MATLAB基于ResNet18的交通标志识别系统

1. 数据准备 数据集&#xff1a;该数据集包含了大量标注好的交通标志图片&#xff0c;每类标志都有不同的样本。数据预处理&#xff1a;图像需要进行一些基本的预处理&#xff0c;如调整大小、归一化等&#xff0c;以适应ResNet18的输入要求。 2. 网络设计 使用MATLAB自带的…

CSS3-流星雨

1. 绘制标签 <div class"container"><span></span> </div>2. 设置div背景 在百度上搜索一幅星空的图片 <style>* {/* 初始化 */margin: 0;padding: 0;}body {/* 高度100% */height: 100vh;/* 溢出隐藏 */overflow: hidden;}.contai…

数学建模 第一节

目录​​​​​​ 前言 一 优化模型的类型 二 线性规划1 线性规划2 三 0-1规划 总结 前言 数学建模主要是将问题转化为模型&#xff0c;然后再以编程的形式输出出来 算法都知道&#xff0c;数学建模也需要用到算法&#xff0c;但是不是主要以编程形式展示&#xff0c;而是…

平方矩阵问题

Ⅰ 回字形二维数组 #include <iostream> #include <iomanip> using namespace std; int main(){int n;while(cin>>n,n){for(int i0; i<n;i){for(int j0; j<n; j){int upi, downn-i1, leftj, rightn-j1;cout<<min(min(up,down),min(left,right)…

自动化立体仓库堆垛机HMI屏幕程序施耐德HMIGXU系列 Vijeo Designer功能设计

堆垛机HMI屏幕功能概况 在自动化立体仓库堆垛机的HMI屏幕程序里,有着施耐德HMIGXU系列Vijeo Designer功能设计。此HMI程序运用标准的工程组织结构,凭借拖拽方式迅速构建人机交互界面。 其主要功能涵盖:设备参数、设备状态、手动/自动操作控制、报警显示、IO信息监控等模块…

实验- 分片上传 VS 直接上传

分片上传和直接上传是两种常见的文件上传方式。分片上传将文件分成多个小块&#xff0c;每次上传一个小块&#xff0c;可以并行处理多个分片&#xff0c;适用于大文件上传&#xff0c;减少了单个请求的大小&#xff0c;能有效避免因网络波动或上传中断导致的失败&#xff0c;并…

生活中的可靠性小案例12:类肤材质老化发粘问题

我一直觉得我买的某品牌车载吸尘器很好用&#xff0c;用了几年&#xff0c;目前性能也是杠杠的。然而它现在有个最大的问题&#xff0c;就是表面发粘了&#xff0c;用起来粘手&#xff0c;非常不舒服。 这一类问题在生活中不少见&#xff0c;尤其是一些用了类肤材质涂层的物件。…

qt 自带虚拟键盘的编译使用记录

一、windows 下编译 使用vs 命令窗口&#xff0c;分别执行&#xff1a; qmake CONFIG"lang-en_GB lang-zh_CN" nmake nmake install 如果事先没有 指定需要使用的输入法语言就进行过编译&#xff0c;则需要先 执行 nmake distclean 清理后执行 qmake 才能生效。 …

python中print函数的flush如何使用

在 Python 中&#xff0c;print 函数的 flush 参数是一个布尔值&#xff0c;默认值为 False。当设置为 True 时&#xff0c;它会强制将输出缓冲区的内容立即刷新到目标设备&#xff08;通常是控制台&#xff09;&#xff0c;而不是等待缓冲区满或者程序结束时才输出。 要注意fl…