阿里云第一次面试记录

news/2024/7/27 8:02:36/文章来源:https://blog.csdn.net/buptlzl/article/details/136658859
  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.luyixian.cn/news_show_1007066.aspx

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

相关文章

手机和电脑同步的好用记事本软件有哪些

我常常需要随手记录各种信息,以便随时查阅和使用。比如,在下班路上,我会用手机记录明天要处理的工作事项、购物清单,或是某个突然迸发的创意想法;而在办公室,我则需要在电脑上整理会议纪要、项目计划&#…

宏碁又遭网络袭击,菲律宾分公司大量数据被盗

近日,宏碁(Acer)菲律宾公司方面证实,管理该公司员工考勤数据的第三方供应商遭遇网络攻击,部分员工数据被盗。 宏碁,中国台湾计算机硬件和电子产品制造商,以其电脑产品极具性价比而闻名。 据悉&a…

基于springboot社团管理系统的设计与实现

互联网发展至今,无论是其理论还是技术都已经成熟,而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播,搭配信息管理工具可以很好地为人们提供服务。针对信息管理混乱,出错率高,信息安全性差,劳…

在Docker上传我们自己的镜像(以springboot项目为例)

首先确定好在我们的centOS服务器上已经安装并配置好docker 配置自己的springboot镜像并运行 获取springboot的jar包 maven clean--》mavenue package --》复制target目录下生成的jar包 在服务器选择一个文件夹上传jar包,我这里选用的文件夹叫做/opt/dockertest…

【MySQL】的相关面试题

面试题 数据库引擎有哪些? InnoDB:这是MySQl默认的事务性存储引擎。它支持ACID事务,具有较好的性能和稳定性,适合大多数的应用场景MyISAM:这是MySQL的另外一种常用存储引擎。它不支持事务,但是适用于读取密集型应用&a…

U盘启动盘 制作Linux Ubuntu CentOS系统启动盘 系统安装

U盘启动盘 制作Linux Ubuntu CentOS系统启动盘 系统安装 准备条件 准备一个U盘,建议容量至少为8GB,以便存放系统镜像文件 一台已经安装好操作系统的计算机,用于制作U盘启动盘 Ubuntu和CentOS的Linux ISO镜像文件。可以从官方网站或相关资源…

鸿蒙到底好不好?要不要搞?

相信各位搞安卓的小伙伴多多少少都了解过鸿蒙,有些一知半解而有些已经开始学习起来了。 鸿蒙到底好不好?要不要搞? Android开发反正目前工作感觉也不好找,即便是上海这样的大城市也难搞,人员挺饱和的。而且年前裁员的…

未来城市:数字孪生技术助力智慧城市构建

目录 一、数字孪生技术的兴起与定义 二、数字孪生技术在智慧城市构建中的应用 1、城市规划与管理 2、智慧交通 3、智慧能源 4、智慧环保 三、数字孪生技术助力智慧城市构建的挑战与对策 四、结语 随着科技的飞速发展,未来城市正在经历一场前所未有的变革。数…

ruoyi-vue插件集成websocket

链接:插件集成 | RuoYi WebSocketServer.java:补充代码 /*** 此为广播消息* param message 消息内容*/public void sendAllMessage(String message) {LOGGER.info("【websocket.sendAllMessage】广播消息:"message);try {for(String sessionI…

【UE5】键盘事件

添加游戏中会用到的输入按键 项目资源文末百度网盘自取 打开按键映射面板 先添加动作映射相关按键 添加映射,命名为Crouch,按下后角色执行蹲动作,选择键盘C键 添加映射,命名为Prone,按下后角色执行趴动作&#xff0c…

CCProxy代理服务器地址的设置步骤

目录 前言 一、下载和安装CCProxy 二、启动CCProxy并设置代理服务器地址 三、验证代理服务器设置是否生效 四、使用CCProxy进行代理设置的代码示例 总结 前言 CCProxy是一款常用的代理服务器软件,可以帮助用户实现网络共享和上网代理。本文将详细介绍CCProxy…

Jmeter分布式性能测试,80%资深测试都会遇到这个坑!

在做后端服务器性能测试中,我们会经常听到分布式。哪你,是否了解分布式呢?今天,我们就来给大家讲讲,在企业实战中,如何使用分布式进行性能测试,实战过程中,又有哪些地方要特别注意&a…

Java初阶数据结构队列的实现

1.队列的概念 1.队列就是相当于排队打饭 2.在排队的时候就有一个队头一个队尾。 3.从队尾进对头出 4.所以他的特点就是先进先出 所以我们可以用链表来实现 单链表实现要队尾进队头出{要有last 尾插头删} 双向链表实现效率高:不管从哪个地方当作队列都是可以的&…

你了解软件验收测试和确认测试的区别吗?

1、软件验收测试   软件验收测试是一个检查软件是否符合特定需求和规格的过程。它通常在软件开发的最后阶段进行,以确保软件的质量和可靠性。该测试的目标是验证软件是否满足用户的需求,并确保软件在交付前经过充分的测试和质量保证。 2、软件确认测试…

string接口[小白理解篇]

作文目的 本文是为了加深对string底层函数的一点理解(请勿与底层源码混为一谈),下面从模拟与注意项出发。 一.string 功能化模拟 1.迭代器模拟 迭代器,为实现简单便理解故使用指针的方式(非说明迭代器使用该方法实现)。其中的begin、end都是为了给迭代…

Docker之部署前后端分离项目(以若依为案例实施必会!!!)

文章目录 一、搭建局域网二、需要安装redis三、安装MySQL四、部署后端服务4.1使用Dockerfile自定义镜像 一、搭建局域网 四个服务器去部署。 ①启动容器②制作镜像③搭建局域网④容器之间的相互通信 搭建net-ry局域网,用于部署若依项目 docker network create …

一文了解Cornerstone3D中窗宽窗位的3种设置场景及原理

🔆 引言 在使用Cornerstone3D渲染影像时,有一个常用功能“设置窗宽窗位(windowWidth&windowLevel)”,通过精确调整窗宽窗位,医生能够更清晰地区分各种组织,如区别软组织、骨骼、脑组织等。…

2024 年中国高校大数据挑战赛赛题 D:行业职业技术培训能力评价完整思路以及源代码分享

中国是制造业大国,产业门类齐全,每年需要培养大量的技能娴 熟的技术工人进入工厂。某行业在全国有多所不同类型(如国家级、 省级等)的职业技术培训学校,进行 5 种技能培训。学员入校时需要 进行统一的技能考核&#xf…

UnityShader常用算法笔记(颜色叠加混合、RGB-HSV-HSL的转换、重映射、UV序列帧动画采样等,持续更新中)

一.颜色叠加混合 1.Blend混合 // 正常,透明度混合 Normal Blend SrcAlpha OneMinusSrcAlpha //柔和叠加 Soft Additive Blend OneMinusDstColor One //正片叠底 相乘 Multiply Blend DstColor Zero //两倍叠加 相加 2x Multiply Blend DstColor SrcColor //变暗…

scrcpy远程投屏控制Android

下载 下载后解压压缩包scrcpy-win64-v2.4.zip scrcpy连接手机 1. 有线连接 - 手机开启开发者选项,并开启USB调试,连接电脑,华为手机示例解压scrcpy,在scrcpy目录下打开终端,(或添加scrcpy路径为环境变…