阿里云第一次面试记录

  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.mzph.cn/news/744065.shtml

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

相关文章

Css基础——精灵图(sprites)和字体图标

1、精灵图 1.1、精灵图的由来 一个网页中往往会应用很多小的背景图像作为修饰,当网页中的图像过多时,服务器就会频繁地接收和发送 请求图片,造成服务器请求压力过大,这将大大降低页面的加载速度。 因此,为了有效地减…

搭建Hadoop集群

一、前言 虚拟机(Virtual Machine)指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。在实体计算机中能够完成的工作在虚拟机中都能够实现。 虚拟机是在一些开发测试工作中常常需要用到的功能,常见的虚拟机…

一文掌握mysql中的查询语句

目录 1. 聚合查询1.1 聚合函数1.2 GROUP BY子句1.3 HAVING 2. 联合查询2.1 内连接2.2 外连接2.3 自连接2.4 子查询2.5 合并查询 1. 聚合查询 1.1 聚合函数 常见的统计总数、计算平局值等操作,可以使用聚合函数来实现,常见的聚合函数有: 函…

【构建部署_Docker介绍与安装】

构建部署_Docker介绍与安装 构建部署_Docker介绍与安装Docker介绍Docker安装CentOS安装DockerCompose 构建部署_Docker介绍与安装 Docker介绍 Docker 是一个基于go语言开发的开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中&#x…

QT 如何防止 QTextEdit 自动滚动到最下方

在往QTextEdit里面append字符串时,如果超出其高度,默认会自动滚动到QTextEdit最下方。但是有些场景可能想从文本最开始的地方展示,那么就需要禁止自动滚动。 我们可以在append之后,添加如下代码: //设置编辑框的光标位…

Java_9最大连续1的个数

最大连续1的个数 给定一个二进制数组 nums , 计算其中最大连续 1 的个数。 示例 1: 输入:nums [1,1,0,1,1,1] 输出:3 解释:开头的两位和最后的三位都是连续 1 ,所以最大连续 1 的个数是 3. 示例 2: 输入…

NBlog整合OSS图库

NBlog部署维护流程记录(持续更新):https://blog.csdn.net/qq_43349112/article/details/136129806 由于项目是fork的,所以我本身并不清楚哪里使用了图床,因此下面就是我熟悉项目期间边做边调整的。 目前已经调整的功能…

CVE-2019-5782:kArgumentsLengthType 设置偏小导致优化阶段可以错误的去除 CheckBound 节点

文章目录 环境搭建漏洞分析笔者初分析笔者再分析漏洞触发源码分析 漏洞利用总结 环境搭建 sudo apt install pythongit reset --hard b474b3102bd4a95eafcdb68e0e44656046132bc9 export DEPOT_TOOLS_UPDATE0 gclient sync -D// debug version tools/dev/v8gen.py x64.debug ni…

FreeRTOS操作系统学习——软件定时器

软件定时器介绍 软件定时器允许设置一段时间,当设置的时间到达之后就执行指定的功能函数,被定时器调用的这个功能函数叫做定时器的回调函数。回调函数的两次执行间隔叫做定时器的定时周期,简而言之,当定时器的定时周期到了以后就…

C语言--字符串面试题

字符串是由若干字符组成的序列。由于字符串在编程时使用的频率非常高,为了优化,很多语言都对字符串做了特殊的规定。下面分别讨论C/C字符串的特性。 C/C中每个字符串都以字符"0作为结尾,这样我们就能很方便地找到字符串的最后尾部。但由于这个特点,每个字符串中…

Android 15 首个开发者预览版到来

作者 / 工程副总裁 Dave Burke Android 15 的首个开发者预览版现已发布,以便各位开发者能与我们通力协作,打造更优秀的 Android 平台。 在 Android 15 中,我们继续致力于打造一个既能提升工作效率,又能提供全新功能的平台。这些新…

【Java - 框架 - Mybatis】(02) SpringBoot整合Mybatis操作Mysql - 快速上手

“SpringBoot"整合"Mybatis"操作"Mysql” - 快速上手; 环境 Java版本"1.8.0_202";Spring Boot版本"2.5.9";Windows 11 专业版_22621.2428;IntelliJ IDEA 2021.1.3(Ultimate Edition)&a…

2.案例、鼠标时间类型、事件对象参数

案例 注册事件 <!-- //disabled默认情况用户不能点击 --><input type"button" value"我已阅读用户协议(5)" disabled><script>// 分析&#xff1a;// 1.修改标签中的文字内容// 2.定时器// 3.修改标签的disabled属性// 4.清除定时器// …

Day15 面向对象进阶——接Day14

Day15 面向对象进阶——接Day14 文章目录 Day15 面向对象进阶——接Day14一、访问修饰符二、Object三、深入String的equals()方法四、final 一、访问修饰符 1、含义&#xff1a;修饰类、方法、属性&#xff0c;定义使用的范围 2、经验&#xff1a; 2.1.属性一般使用private修…

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

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

window python开发环境搭建- Anaconda

window python开发环境搭建- Anaconda 下载Anacnoda配置Anconda验证Anaconda是否安装成功验证 conda 是否安装成功验证 pip 是否安装成功验证 python 是否安装成功 配置镜像源conda 镜像源pip 镜像源 pip 常用命令conda 常用命令 下载Anacnoda anacoda官网地址 https://www.an…

【vue在主页中点击主页面如何弹出一个指定某个页面的窗口】

【vue在主页中点击主页面跳转到某个页面的操作完整过程】 1.首先在主页面中加入一个卡槽用于展示弹出的窗口 代码如下&#xff1a; <el-dialog :visible.sync"dialogVisible1" :close-on-click-modal"false" :title"title" class"dial…

代码随想录算法训练营第八天|344. 反转字符串

344. 反转字符串 已解答 简单 相关标签 相关企业 提示 编写一个函数&#xff0c;其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。 不要给另外的数组分配额外的空间&#xff0c;你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。 示例 1&#…

[LeetCode][LCR 194]二叉树的最近公共祖先

题目 LCR 194. 二叉树的最近公共祖先 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 例如&#xff0c;给定如下二叉树: root [3,5,1,6,2,0,8,null,null,7,4] 示例 1: 输入: root [3,5,1,6,2,0,8,null,null,7,4], p 5, q 1 输出: 3 解释: 节点 5 和节点 1 的最…

#微信小程序(轮播图以及开发方法)

1.IDE&#xff1a;微信开发者工具 2.实验&#xff1a;轮播图以及正确的开发方法 &#xff08;1&#xff09;有HTML&#xff0c;CSS&#xff0c;javascript基础即可 &#xff08;2&#xff09;写界面一定要查看开发手册&#xff0c;这是微信小程序比较好的地方&#xff0c;由于…