当前位置: 首页 > news >正文

阿里云第一次面试记录

  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的区别?
    在这里插入图片描述

相关文章:

阿里云第一次面试记录

java多态? 多态表示一个对象具有多种的状态,具体表现为父类的引用指向子类的实例 Fu f Zi z(); 多态是同一个行为具有多个不同表现形式或形态的能力。 多态就是同一个接口,使用不同的实例而执行不同操作 特点: 对象类型和引用类型…...

AndroidStudio跑马灯实现

在activity_main.xml中编写如下代码&#xff1a; <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"android:layout_h…...

mysql笔记:12. 数据备份与还原

文章目录 一、数据备份1. 备份单个数据库2. 备份多个数据库3. 备份所有数据库 二、数据还原1. mysql命令2. source命令 在操作数据库时&#xff0c;难免会发生一些意外情况造成数据丢失。为了确保数据的安全&#xff0c;需要对数据库中的数据进行备份&#xff0c;这样当遇到数据…...

react native使用TS实现路由

一、入口文件app.jsx的配置 入口文件最好还是要保留jsx import { NavigationContainer } from react-navigation/native; import { navigationRef } from "./src/views/RootNavigation";const App () > {return&#xff08;<NavigationContainer ref{navigat…...

手机充值的功能测试框架 - 测试要点

手机充值有微信营销活动的、有 APP 页面应用等&#xff0c;以下是我以前公司的手机充值话费或流量应用的测试要点&#xff0c;分享给大家参考下。 一、手机号码输入框检查 1、手机号码框要控制成只能输入11位数字的文本框。 2、输入以非1开头的手机号&#xff0c;给出提示&a…...

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

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

Nodejs 第五十四章(net)

net模块是Node.js的核心模块之一&#xff0c;它提供了用于创建基于网络的应用程序的API。net模块主要用于创建TCP服务器和TCP客户端&#xff0c;以及处理网络通信。 TCP&#xff08;Transmission Control Protocol&#xff09;是一种面向连接的、可靠的传输协议&#xff0c;用于…...

渗透测试修复笔记 - 04 nacos 可能会导致未经授权的用户获取到系统中的敏感信息的漏洞

问题&#xff1a;该漏洞可能会导致未经授权的用户获取到系统中的敏感信息。 http://ip地址:8848/nacos/v1/auth/users?pageNo1&pageSize9 最直接的解决办法就是升级nacos版本 如果不升级的话还是沿用旧版本就修改相关配置 当前版本为2.0.4 1.nacos的docker-compose文件…...

初级代码游戏的专栏介绍与文章目录

我的github&#xff1a; codetoys&#xff0c;所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的&#xff0c;可以在任何平台上使用。 一、大型专题 1.1 C嵌入式HTTP服务器 C嵌入式HTTP服务器_初级代码游戏的博…...

【Redis系列】深入了解 Redis:一种高性能的内存数据库

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...

C语言例:表达式(a=2,3),a+1的值

题目&#xff1a;设int a; 则表达式(a2,3),a1的值 #include<stdio.h> int main(void) {int a0;int b;int c;b (a2,4);c (a2,3),a1;printf("a1%d\n",a1); //a1 3;printf("a2,4的值为&#xff1a;%d\n",b); //a2,4的值为&…...

基于java的公寓报修管理系统设计与实现(程序+文档+数据库)

** &#x1f345;点赞收藏关注 → 私信领取本源代码、数据库&#x1f345; 本人在Java毕业设计领域有多年的经验&#xff0c;陆续会更新更多优质的Java实战项目&#xff0c;希望你能有所收获&#xff0c;少走一些弯路。&#x1f345;关注我不迷路&#x1f345;** 一、研究背景…...

Lua 函数前的冒号和点号,你知道他们的区别吗?

1. 函数前的冒号和点号 点号&#xff08;.&#xff09;和冒号&#xff08;:&#xff09;的区别主要在于是否自动处理self参数。 在Lua中&#xff0c;函数定义时前面有点号&#xff08;.&#xff09;和冒号&#xff08;:&#xff09;的区别主要体现在函数如何处理其第一个参数…...

4、设计模式之建造者模式(Builder)

一、什么是建造者模式 建造者模式是一种创建型设计模式&#xff0c;也叫生成器模式。 定义&#xff1a;封装一个复杂对象构造过程&#xff0c;并允许按步骤构造。 解释&#xff1a;就是将复杂对象的创建过程拆分成多个简单对象的创建过程&#xff0c;并将这些简单对象组合起来…...

网工内推 | 上市公司网工,IE认证优先,最高18K*13薪,包吃住

01 深圳市宝腾互联科技有限公司 招聘岗位&#xff1a;网络工程师 职责描述&#xff1a; 1、是整个数据中心的网络技术及安全问题的负责人&#xff0c;确保数据中心业务的正常进行&#xff1b; 2、负责规划、设计、搭建、维护数据中心的网络环境&#xff0c;确保IDC /云平台&a…...

SQL Server 技术100问?

这些问题旨在帮助SQL Server的管理员和开发人员深入理解数据库管理系统的核心概念和技术&#xff0c;从而更好地进行数据库设计、性能优化、安全管理等工作。 SQL Server的最新版本有哪些新特性&#xff1f;如何在SQL Server中创建一个新的数据库&#xff1f;如何在SQL Server…...

鸿蒙不再适合JS语言开发

ArkTS是鸿蒙生态的应用开发语言。它在保持TypeScript&#xff08;简称TS&#xff09;基本语法风格的基础上&#xff0c;对TS的动态类型特性施加更严格的约束&#xff0c;引入静态类型。同时&#xff0c;提供了声明式UI、状态管理等相应的能力&#xff0c;让开发者可以以更简洁、…...

Python环境搭建 -- Python与PyCharm安装

一、Python安装 我们先找到Python的官方网站&#xff0c;在浏览器中搜索Python即可&#xff0c;然后进入Python官网 点击Downloads&#xff0c;选择对应匹配的操作系统 点进去之后&#xff0c;Python的版本分为稳定的版本和前置版本&#xff0c;前置的版本就是还没有发行的版本…...

OSCP靶场--Astronaut

OSCP靶场–Astronaut 考点(1.CVE-2021-21425getshell 2.suid php提权) 1.nmap扫描 ┌──(root㉿kali)-[~/Desktop] └─# nmap -sV -sC -p- 192.168.163.12 --min-rate 2500 Starting Nmap 7.92 ( https://nmap.org ) at 2024-03-14 01:24 EDT Nmap scan report for 192.16…...

Springboot 使用【过滤器】实现在请求到达 Controller 之前修改请求体参数和在结果返回之前修改响应体

文章目录 前情提要解决方案自定义 HttpServletRequest 包装类 RequestWrapper自定义 HttpServletResponse 包装类 ResponseWrapper自定义过滤器 MiddlewareFilter配置过滤器注解配置类 编写 Controller 测试 前情提要 在项目中需要使用过滤器 在请求调用 Controller 方法前修改…...

Unity 3D常用的数据结构

目录 数组使用场景 ArrayList数组ArrayList的缺点 List\<T\>数组List\<T\>有以下3点好处 链表链表与数组的不同之处链表的优势数组和链表的应用场景 LinkedList\<T\>C#中内置的双向链表LinkedList使用场景 队列&#xff08;Queue\<T\>&#xff09;和栈…...

h5唤起微信小程序

wx-open-launch-weapp 就用这个 开放标签属于自定义标签&#xff0c;Vue会给予未知标签的警告&#xff0c;可通过配置Vue.config.ignoredElements [wx-open-launch-weapp] 来忽略Vue对开放标签的检查。 sdk授权。 调试打开时iOS会弹窗 noPermissionJsApi: []&#xff0c;confi…...

面向对象(精髓)变继承关系为组和关系(_Decorator模式)

在软件开发中&#xff0c;设计模式是解决常见问题的可重用解决方案。在面向对象编程中&#xff0c;继承和组合是两种常用的代码复用方式。然而&#xff0c;随着软件需求的不断变化&#xff0c;我们需要更灵活的设计方式来应对不断变化的需求。在本文中&#xff0c;我们将讨论从…...

MES系统在智能生产中的重要作用

在未来智能制造的发展趋势中&#xff0c;制造执行系统&#xff08;MES&#xff09;作为关键技术和工具&#xff0c;扮演着至关重要的角色。随着科技的不断进步和制造业的数字化转型&#xff0c;MES的地位将愈发凸显&#xff0c;对于企业实现智能化生产、提高效率、降低成本具有…...

2024.3.13每日一题

LeetCode 最大二进制奇数 题目链接&#xff1a;2864. 最大二进制奇数 - 力扣&#xff08;LeetCode&#xff09; 题目描述 给你一个 二进制 字符串 s &#xff0c;其中至少包含一个 1 。 你必须按某种方式 重新排列 字符串中的位&#xff0c;使得到的二进制数字是可以由该组…...

YOLOv5 | 涨点复现!YOLOv5添加BiFPN有效提升目标检测精度

目录 &#x1f680;&#x1f680;&#x1f680;订阅专栏&#xff0c;更新及时查看不迷路&#x1f680;&#x1f680;&#x1f680; 介绍&#xff1a; BiFPN 代码实现 ⭐欢迎大家订阅我的专栏一起学习⭐ &#x1f680;&#x1f680;&#x1f680;订阅专栏&#xff0c;更新及…...

【Nut3】nuxt.config.ts项目nuxt配置文件介绍

简言 记录下nuxt3的nuxt.config.ts文件的介绍和使用。 Nuxt Configuration nuxt.config.ts Nuxt可以通过一个单独的nuxt.config文件进行简单配置。 配置文件创建 nuxt.config文件的扩展名可以是.js、.ts或.mjs。 然后默认导出全局函数defineNuxtConfig的返回值&#xff0c…...

区块链技术的革命性影响

1. 区块链技术的基本原理&#xff1a; 区块链是一种去中心化的分布式数据库技术&#xff0c;通过不断增长的记录&#xff08;块&#xff09;构成一个链式结构。每个区块包含了交易数据的加密信息以及上一个区块的哈希值&#xff0c;从而形成了不可篡改的交易记录。这种去中心化…...

多线程(volatile)

volatile的功能 保证内存可见性禁止指令重排序 内存可见性 简单的理解 两(多)个线程同时针对一个变量进行操作, 一个线程读, 一个线程修改, 此时读到的值不一定是修改过后的值 即读线程没有感知到变量的变化 (其实是 编译器/JVM 对于代码在多线程情况下的优化进行了误判) 从 J…...

蓝桥杯 填空 卡片

蓝桥杯 填空题 卡片 解题思路&#xff1a; 我们只需要消耗完卡片的个数即可。 代码示例&#xff1a; #include<bits/stdc.h> using namespace std; int a[10]; bool isEnd(){for(int i0;i<10;i){if(a[i]-1)return false;}return true; } bool getN(int x){while(x){i…...