阿里云第一次面试记录

  1. java多态?
    多态表示一个对象具有多种的状态,具体表现为父类的引用指向子类的实例
    Fu f = Zi z();

    多态是同一个行为具有多个不同表现形式或形态的能力。

    多态就是同一个接口,使用不同的实例而执行不同操作

    特点:
    对象类型和引用类型之间具有继承(类)/实现(接口)的关系
    多态不能调用只在子类中存在但在父类中不存在的方法
    如果子类重写了父类的方法,真正执行的是子类覆盖的方法,如果子类没有覆盖父 类的方法,执行的是父类的方法。

    其存在的三个条件:继承、重写、父类的引用指向子类的实例

    当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则编译错误;如果有,再去调用子类的同名方法。

    多态的好处:可以使程序有良好的扩展,并可以对所有类的对象进行通用处理。

  2. 泛型?
    泛型,即“参数化类型”。
    泛型的本质是为了参数化类型(在不创建新的类型的情况下,通过泛型指定的不同类型来控制形参具体限制的类型)。也就是说在泛型使用过程中,

    操作的数据类型被指定为一个参数,这种参数类型可以用在类、接口和方法中,分别被称为泛型类、泛型接口、泛型方法。

    比如:ArrayList可以存放任意类型,例子中添加了一个String类型,添加了一个Integer类型,再使用时都以String的方式使用,因此程序崩溃了。为了解决类似这样的问题(在编译阶段就可以解决),泛型应运而生。

    泛型类型在逻辑上看以看成是多个不同的类型,实际上都是相同的基本类型。

    泛型有三种使用方式,分别为:泛型类、泛型接口、泛型方法
    泛型类型用于类的定义中,被称为泛型类。通过泛型可以完成对一组类的操作对外开放相同的接口。最典型的就是各种容器类,如:List、Set、Map

  3. 反射?
    Java反射机制的核心是在程序运行时动态加载类并获取类的详细信息,从而操作类或对象的属性和方法。本质是JVM得到class对象之后,再通过class对象进行反编译,从而获取对象的各种信息。
    Java属于先编译再运行的语言,程序中对象的类型在编译期就确定下来了,而当程序在运行时可能需要动态加载某些类,这些类因为之前用不到,所以没有被加载到JVM。通过反射,可以在运行时动态地创建对象并调用其属性,不需要提前在编译期知道运行的对象是谁。

    比如:我们编译时知道类或对象的具体信息,此时直接对类和对象进行操作即可,无需使用反射(reflection)
    如果编译不知道类或对象的具体信息,此时应该如何做呢?这时就要用到 反射 来实现。比如类的名称放在XML文件中,属性和属性值放在XML文件中,需要在运行时读取XML文件,动态获取类的信息
    在这里插入图片描述
    反射的作用

    动态创建对象
    动态操作属性
    动态调用方法
    在JDK中,主要由以下类来实现Java反射机制,这些类都位于java.lang.reflect包中

    Class类:代表一个类
    Constructor 类:代表类的构造方法
    Field 类:代表类的成员变量(属性)
    Method类:代表类的成员方法

  4. Java的设计模式?
    Java 中常见的设计模式有很多,它们是为了解决软件设计过程中经常遇到的问题而提出的经验总结和最佳实践

    创建型模式(Creational Patterns):
    工厂模式(Factory Pattern):定义一个创建对象的接口,但是由子类决定实例化哪个类。
    抽象工厂模式(Abstract Factory Pattern):提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们的具体类。
    建造者模式(Builder Pattern):将一个复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示。
    原型模式(Prototype Pattern):用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。

    结构型模式(Structural Patterns):
    适配器模式(Adapter Pattern):将一个类的接口转换成客户希望的另一个接口,使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
    装饰器模式(Decorator Pattern):动态地给一个对象添加一些额外的职责,就增加功能来说,装饰器模式相比生成子类更为灵活。
    代理模式(Proxy Pattern):为其他对象提供一种代理以控制对这个对象的访问。

    行为型模式(Behavioral Patterns):
    观察者模式(Observer Pattern):定义了对象间的一种一对多的依赖关系,使得当一个对象状态改变时,所有依赖于它的对象都会得到通知并自动更新。
    策略模式(Strategy Pattern):定义一系列算法,将每一个算法封装起来,并使它们可以相互替换。
    模板方法模式(Template Method Pattern):定义了一个操作中的算法的骨架,而将一些步骤延迟到子类中,使得子类可以不改变该算法的结构即可重新定义该算法的某些特定步骤。
    迭代器模式(Iterator Pattern):提供一种方法顺序访问一个聚合对象中的各个元素,而又不需要暴露该对象的内部表示。

    其他模式:
    单例模式(Singleton Pattern):保证一个类仅有一个实例,并提供一个访问它的全局访问点。
    命令模式(Command Pattern):将一个请求封装为一个对象,使发出请求的责任和执行请求的责任分割开。
    状态模式(State Pattern):允许对象在内部状态改变时改变它的行为,对象看起来似乎修改了它的类。
    这些设计模式在软件开发中被广泛应用,有助于提高代码的可维护性、扩展性和复用性。
    在这里插入图片描述

  5. static 和 final
    在Java中,static 和 final 是两个关键字,它们分别用于不同的场景。

    static(静态):

    当变量或方法被声明为静态时,它们属于类而不是实例。这意味着无论创建多少个类的实例,静态成员只有一份拷贝
    静态变量用于表示类级别的数据,比如记录类的实例数量或者共享的常量值。
    静态方法不依赖于实例,可以直接通过类名调用,通常用于工具方法或者辅助函数,比如Math类中的数学函数。

    final(不可变):
    当变量被声明为 final 时,它的值无法被修改,即它是一个常量
    final 可以用于变量、方法和类。
    对于变量,一旦被赋值,就不能再次修改。
    对于方法,final 方法不能被子类重写。
    对于类,final 类不能被继承。
    这些关键字在Java中起着重要的作用:

    static 用于表示类级别的成员,提供了一种在不创建类实例的情况下访问成员的方式,也用于静态块和静态内部类。
    final 用于声明常量、确保方法不被重写或类不被继承,以及确保不可变性。

  6. 数据库的关键字、函数等?

    聚合函数:
    COUNT():用于计算表中行的数量。
    SUM():计算指定列的总和。
    AVG():计算指定列的平均值。
    MIN():找出指定列的最小值。
    MAX():找出指定列的最大值。

    字符串函数:
    CONCAT():用于连接两个或多个字符串。
    LENGTH():返回字符串的长度。
    UPPER():将字符串转换为大写。
    LOWER():将字符串转换为小写。
    SUBSTRING():从字符串中提取子串。

    日期和时间函数:
    NOW():返回当前日期和时间。
    DATE():从日期时间中提取日期部分。
    TIME():从日期时间中提取时间部分。
    DATEDIFF():计算两个日期之间的差值。
    DATE_ADD() 和 DATE_SUB():对日期进行加法和减法操作。

    数值函数:
    ABS():返回一个数的绝对值。
    ROUND():对一个数进行四舍五入。
    CEILING():返回大于或等于指定数的最小整数。
    FLOOR():返回小于或等于指定数的最大整数。
    MOD():返回两个数相除的余数。

    逻辑函数:
    IF()、CASE WHEN THEN ELSE END:用于条件判断和逻辑运算。

    类型转换函数:
    CAST():将一个数据类型转换为另一个数据类型。
    CONVERT():将一个数据类型转换为另一个数据类型。

    SQL(Structured Query Language)是用于管理和操作关系型数据库的语言,其中包含了许多关键字(keywords),用于构建数据库的结构、执行查询、更新数据等操作。以下是一些常见的 SQL 关键字:

    数据定义语言(DDL):
    CREATE:用于创建数据库对象,如表、索引等。
    ALTER:用于修改数据库对象的结构。
    DROP:用于删除数据库对象。
    TRUNCATE:用于删除表中的所有数据。
    RENAME:用于重命名数据库对象。

    数据操作语言(DML):
    SELECT:用于从数据库中检索数据。
    INSERT:用于向表中插入数据。
    UPDATE:用于更新表中的数据。
    DELETE:用于从表中删除数据。

    数据控制语言(DCL):
    GRANT:用于授予用户访问权限。
    REVOKE:用于撤销用户的访问权限。

    事务控制语言(TCL):
    COMMIT:用于提交事务,将更改保存到数据库中。
    ROLLBACK:用于回滚事务,撤销未提交的更改。
    SAVEPOINT:用于设置事务中的保存点,以便在稍后的时间回滚到该点。

    数据查询语言(DQL):
    SELECT:用于从数据库中检索数据,也可用于查询数据库对象的元数据信息。

    其他关键字:
    FROM:用于指定查询的数据源。
    WHERE:用于指定条件以过滤数据。
    GROUP BY:用于将查询结果按指定列进行分组。
    ORDER BY:用于对查询结果进行排序。
    HAVING:用于在分组数据上设置条件。
    INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL JOIN:用于连接多个表。
    这些关键字是构成 SQL 语句的基础,通过组合这些关键字可以实现各种数据库操作。
    在这里插入图片描述
    在这里插入图片描述

    多表查询:
    内连接:相当于查询A、B两个表的交集
    (隐式内连接)select 字段列表 from 表1,表2 where 条件…
    (显式内连接):select 字段列表 from 表1 [inner] join 表2 on 连接条件…
    外连接:
    左外连接:查询左表所有的数据,包括两个表交集的部分数据
    select 字段列表 from 表1 left [outer] join 表2 on 连接条件
    右外连接:查询右表所有的数据,包括两个表交集的部分数据
    select 字段列表 from 表1 right [outer] join 表2 on 连接条件

  7. ping www.baidu.com整个过程?
    PING 命令是一种常用的网络诊断工具,经常用来测试网络中主机之间的连通性和网络延迟
    在这里插入图片描述
    PING 基于网络层的 ICMP(Internet Control Message Protocol,互联网控制报文协议),其主要原理就是通过在网络上发送和接收 ICMP 报文实现的。
    在这里插入图片描述

  8. TCP和UDP的区别?
    在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

wordpress博客趣主题个人静态网页模板

博客趣页面模板适合个人博客,个人模板等内容分享。喜欢的可以下载套用自己熟悉的开源程序建站。 博客趣主题具有最小和清洁的设计,易于使用,并具有有趣的功能。bokequ主题简约干净的设计、在明暗风格之间进行现场切换。 下载地址 清新个人…

未来已来:科技驱动的教育变革

我们的基础教育数百年来一成不变。学生们齐聚在一个物理空间,听老师现场授课。每节课时长和节奏几乎一致,严格按照课表进行。老师就像“讲台上的圣人”。这种模式千篇一律,并不适用于所有人。学生遇到不懂的问题,只能自己摸索或者…

ctf_show笔记篇(web入门---代码审计)

301:多种方式进入 从index.php页面来看 只需要访问index.php时session[login]不为空就能访问 那么就在访问index.php的时候上传login 随机一个东西就能进去从checklogin页面来看sql注入没有任何过滤 直接联合绕过 密码随意 还有多种方式可以自己去看代码分析 30…

【OpenCV实战】基于OpenCV中DNN(深度神经网络)使用OpenPose模型实现手势识别详解

一、手部关键点检测 如图所示,为我们的手部关键点所在位置。第一步,我们需要检测手部21个关键点。我们使用深度神经网络DNN模块来完成这件事。通过使用DNN模块可以检测出手部21个关键点作为结果输出,具体请看源码。 二,openpose手势识别模型 OpenPose的原理基于卷积神经网…

购物平台为何要添增短视频部件?是应时代发展还是别有用心?

每天五分钟讲解一个商业模式,大家好我是模式设计啊浩。 不知道大家有在购物商城平台刷过短视频吗,不管怎么说啊浩是有这样做过的,甚至一度觉得还挺有意思的。有时候本来只是想去买件衣服,结果商城刷了五分钟,短视频就刷…

SpringBoot配置达梦数据库依赖(达梦8)

maven配置 <!-- 达梦数据库 --><dependency><groupId>com.dameng</groupId><artifactId>DmJdbcDriver18</artifactId><version>8.1.1.193</version></dependency><dependency><groupId>com.alibaba&l…

利用位运算符设置标志位

在写程序的过程中&#xff0c;会碰到需要修改标志位的情况。比如需要设置一个文件标识符可读或可写&#xff0c;首先想到的是利用int变量&#xff08;1表示不可读不可写 &#xff0c;2表示不可读可写&#xff0c;3表示可读不可写&#xff0c;4表示可读可写&#xff09;。但是这…

ChatGPT提问技巧——对话提示

ChatGPT提问技巧——对话提示 对话提示是一种允许模型生成模拟两个或多个实体之间对话的文本的技术。 通过向模型提供上下文和一组角色或实体&#xff0c;以及他们的角色和背景&#xff0c;并要求模型生成他们之间的对话。 因此&#xff0c;应向模型提供一个上下文和一组角色…

中国工程精英智创数字工厂——2023纵览基础设施大会暨光辉大奖赛观察 (下)

中国工程精英智创数字工厂 ——2023纵览基础设施大会暨光辉大奖赛观察 &#xff08;下&#xff09; 吴付标 中国制造的尽头是智能化、智慧化&#xff0c;这一趋势正在加速前进。2022年&#xff0c;中国以50座达沃斯论坛盖章认证的“灯塔工厂”数量冠绝全球&#xff0c;而“数…

Javascript的Execution Context

概要 本文主要通过一个实例&#xff0c;来理解什么是Javascript中的Execution Context&#xff0c;以及在JavaScript执行过程中&#xff0c;Execution Context是如何工作的。 基本概念 事实上&#xff0c;我们可以理解为JavaScript代码在一个盒子中执行&#xff0c;而这个盒…

Linux 建立链接(ln)

目录 1、ln命令 创建软链接&#xff1a; 创建硬链接&#xff1a; 2、输出重定向&#xff08;>/>>&#xff09; 3、管道&#xff08;|&#xff09; 1、ln命令 &#xff08;英文全拼&#xff1a;link files&#xff09;为某一个文件在另外一个位置建立一个同步的…

如何使用vue定义组件之——子组件调用父组件数据

1.定义父子模板template <div class"container"><my-father></my-father><my-father></my-father><my-father></my-father><!-- 此处无法调用子组件&#xff0c;子组件必须依赖于父组件进行展示 --><!-- <my-…

如何实现sam(Segment Anything Model)|fastsam模型

sam是2023年提出的一个在图像分割领域的大模型&#xff0c;其具备了对任意现实数据的分割能力&#xff0c;其论文的介绍可以参考 https://hpg123.blog.csdn.net/article/details/131137939&#xff0c;sam的亮点在于提出一种工作模式&#xff0c;同时将多形式的prompt集成到了语…

武汉星起航:秉承客户至上服务理念,为创业者打造坚实后盾

在跨境电商的激荡浪潮中&#xff0c;武汉星起航电子商务有限公司一直秉持着以客户为中心的发展理念&#xff0c;为跨境创业者提供了独特的支持和经验积累&#xff0c;公司通过多年的探索和实践&#xff0c;成功塑造了一个以卖家需求为导向的服务平台&#xff0c;为每一位创业者…

专升本 C语言笔记-03 变量的作用域

1.变量的概念 内存中有个存储区域,这个地方的数据可以在同一类型范围内不断变化通过变量名,可以访问这块内存区域,获取里面的值; 变量名的构成:数据类型 变量名 值 C语言中变量声明格式: 数据类型 变量名 值 2.变量的注意 2.1.全局变量: 定义在函数外部的叫全局变量…

监听抖音直播间的评论并实现存储

监听抖音直播间评论&#xff0c;主要是动态监听dom元素的变化&#xff0c;如果评论是图片类型的&#xff0c;获取alt的值 主要采用的是MutationObserver&#xff1a;https://developer.mozilla.org/zh-CN/docs/Web/API/MutationObserver index.js如下所示:function getPL() {…

交流回馈老化测试负载如何实现这些功能的

交流回馈老化测试负载是一种用于模拟电力系统中各种负载特性的装置&#xff0c;它可以对电力设备进行长时间的老化测试&#xff0c;以确保其在实际运行中的稳定性和可靠性。交流回馈老化测试负载主要通过以下几个方面实现这些功能&#xff1a; 1. 模拟负载特性&#xff1a;交流…

科普:防泄密软件下载(实用+收藏篇)

防泄密软件是企业构建安全信息环境、保障业务稳定发展的重要工具。是一种专门用于保护数据安全、防止信息泄露的软件工具。 它能够监控和管理电脑的使用行为&#xff0c;防止敏感数据被非法获取、篡改或传播。 防泄密软件通过实时监控、加密技术、访问控制等手段&#xff0c;…

C# EPPlus导出dataset----Excel2绘制图像

一、生成折线图方法 /// <summary> ///生成折线图 /// </summary> /// <param name="worksheet">sheet页数据 </param> /// <param name="colcount">总列数</param> /// &l…

LarkXR上新了 | Apollo多终端与XR体验的优化创新

作为领先的数字平行世界产品技术提供方&#xff0c;「Paraverse平行云」一直致力于为企业和开发者提供企业级实时云渲染解决方案。其多终端接入产品LarkXR Apollo&#xff0c;基于底层Runtime技术&#xff0c;实现了在Windows、Linux、MacOS、Android、iOS等多种操作系统下&…