计算机复试面试问答准备(未完)

news/2024/5/14 6:48:05

目录

    • 1、理解多态性
    • 2、怎么逆置⼀个链表
    • 3、顺序表和链表的区别
    • 4、树的存储结构
    • 5、什么是哈夫曼树?简述哈夫曼树的构造过程。介绍哈夫曼树的特性。
    • 6、哈夫曼编码的编码和解码过程
    • 7、图的遍历方式
    • 8、图的存储方式
    • 9、最小生成树
    • 10、迪杰斯特拉算法
    • 11、佛洛依德算法
    • 12、散列表
    • 13、排序
    • <font color="red">14、当键入网址后,到网页显示,其间发生了什么。

1、理解多态性

多态性就像是一只变色龙,它可以改变自己的形状和颜色来适应不同的环境。在软件工程中,多态性指的是一个对象能够表现出多种不同的行为,就像是变了个样子一样。

例如,我们可以有一个动物的类,里面有一个叫作"叫声"的方法。我们可以派生出不同的动物类,比如狗和猫。虽然它们都是动物,但是它们的叫声是不一样的。当我们调用"叫声"的方法时,根据具体是狗还是猫,它们会表现出不同的叫声。

所以,多态性就是让一个对象可以根据具体情况表现出不同的行为,就像变色龙一样。这样可以提高代码的灵活性和重用性。

Polygon  p = new Polygon () ;
Rectangle  r = new Rectangle () ;
p = r;

这段代码展示了多态性的概念。在这段代码中,我们首先创建了一个Polygon对象p,然后创建了一个Rectangle对象r。接下来,我们将r赋值给p,即p = r。这里发生了多态性的体现。

由于Rectangle是Polygon的子类,因此可以将Rectangle对象赋值给Polygon类型的变量。这样做的好处是可以以相同的方式处理不同类型的对象,即使用Polygon类型的变量p来调用Rectangle对象的方法。

通过这种方式,我们可以实现对不同类型对象的统一管理和操作,从而提高代码的复用性和灵活性。这就是多态性的优势所在。

2、怎么逆置⼀个链表

设置三个指针,指向链表中相邻的三个结点,依次更改每两个结点之间的链的方向,每次都进行两步操作:第一步,更改中间指针结点的next域为第一个指针,让中间的结点指向前面的结点;第二步,将这三个指针同时按照原来链表的方向向前移动

如果链表没有头结点,初始的情况需要特殊处理一下再开始重复后面的操作

3、顺序表和链表的区别

顺序表和链表是常用的两种数据结构,它们在存储和访问数据时有以下几方面的区别:

存储方式:顺序表使用一块连续的内存空间来存储数据,而链表则使用多个节点来存储数据,每个节点包含一个数据项和一个指向下一个节点的指针。

插入和删除操作:在顺序表中,插入和删除操作需要移动数据项的位置,这可能需要耗费较多的时间。而在链表中,插入和删除操作只需要修改节点的指针,所以效率较高。

访问元素:在顺序表中,可以通过下标直接访问元素,时间复杂度为O(1)。而在链表中,需要从头节点开始遍历,直到找到目标节点。所以链表的访问操作时间复杂度为O(n)。

空间占用:顺序表的空间占用是连续的,需要一块连续的内存空间,而链表的空间是分散的,每个节点可以在内存中的任意位置。

链表可以动态地分配内存空间,适用于需要频繁插入和删除操作的场景。而顺序表需要一开始就预先分配好内存,不适用于频繁插入和删除操作的场景。

根据具体的应用场景和需求,选择合适的数据结构可以提高程序的效率和性能。

4、树的存储结构

在这里插入图片描述

5、什么是哈夫曼树?简述哈夫曼树的构造过程。介绍哈夫曼树的特性。

哈夫曼树是一种最优二叉树,它的带权路径长度最小,而带权路径长度就是树中所有叶结点的带权路径长度之和。

哈夫曼树的构造过程如下:
在这里插入图片描述

1、将原始由一个结点构成的树按照根节点权值从小到大的顺序排列
2、选择根节点权值最小的两个树,构造一个新的二叉树,将这两个树的跟结点作为新树的左右孩子,新树的根节点的权值为两个结点的权值之和
3、将新构建的树加入权值序列中,将原来的两个结点从序列中删除
4、重复前面操作,直到权值序列只剩下一个结点为止

因为这样的特性,哈夫曼树能够应用数据压缩等方面,可以大大提高解决问题的效率。比如哈夫曼编码的字符集中每个字符都作为一个叶子结点,字符的频度作为结点的权值,这样的可变长度编码可以达到数据压缩的效果,因为存储的编码的二进制个数相当于所建立的树的带权路径长度。

哈夫曼树也可以进行扩展为k叉哈夫曼树,构造过程大体和2叉哈夫曼树的构造过程相同,只不过选择结点构造新树的时候选择的是k个根节点权值最小的树,而不是2个。另外,早构造k叉二叉树之前要补充一定的虚结点,使得构造的哈夫曼树是严格k叉树,即每一个分支节点都有k个孩子。

这样的k叉哈夫曼树可以用于外部排序中的构建最佳归并树的环节中,可以大大减少访问磁盘的次数。

6、哈夫曼编码的编码和解码过程

在这里插入图片描述

7、图的遍历方式

visited 数组防止重复访问

BFS:辅助队列、对于无向图,调用BFS函数的次数=连通分量数、空间复杂度:O(|V|)来自辅助队列

DFS:空间复杂度:O(|V|)来自递归栈
在这里插入图片描述

8、图的存储方式

在这里插入图片描述

9、最小生成树

连通图的生成树是包含图中全部顶点的一个极小连通子图
最小生成树是边权值之和最小的生成树

prim算法:从一个顶点开始构建生成树,每次将代价最小的新顶点纳入生成树,直到所有顶点都纳入为止。时间复杂度:O(V^2),适合边稠密

kruskal算法:每次选择一条权值最小的边,使这条边的两头连通(原本已经连通就不选),直到所有结点都连通。使⽤并查集,时间复杂度O(ElogE),适合顶点较多,边稀疏

10、迪杰斯特拉算法

在这里插入图片描述
时间复杂度O(V^2)
不适合于有负权值的带权图

11、佛洛依德算法

动态规划,时间复杂度O(V^3)
不能解决带有“负权回路”的图

12、散列表

在这里插入图片描述

13、排序

在这里插入图片描述

14、当键入网址后,到网页显示,其间发生了什么。

在这里插入图片描述


http://www.mrgr.cn/p/55678337

相关文章

逆向中常见的加密算法

逆向中常见的加密算法 1.Base64 1) 原理与特征: ​ a.原理:将3个byte(即38=24bit)切割为46,然后根据6bit表示的数字在base64表(64byte的表)寻找对应的值;如果待加密字符串长度不为3的整数,则在末尾处补0对齐,其中0对应的字符为=。 ​ b.特征:在反汇编代码中会出现0x…

Flutter逆向

环境配置(Blutter)及使用 参考 [原创]flutter逆向 ACTF native app-Android安全-看雪-安全社区|安全招聘|kanxue.com 其中在编译过程中遇到 -- Configuring done (2.5s) -- Generating done (0.0s) -- Build files have been written to: E:/blutter/build/blutter_dartvm3.4…

创新指南|如何将人工智能应用于未来的创新管理——并不断付诸实践

ChatGPT 的推出加剧了围绕人工智能的炒作&#xff0c;现在我们看到了前所未有的巨大进展。对于我们这些热衷于创新的人来说&#xff0c;这是一个激动人心的时刻。他们正在共同采取措施&#xff0c;充分利用人工智能进行创新管理。本文将阐述人工智能能为创新管理做什么&#xf…

文件包含一-WEB攻防-PHP应用文件包含LFIRFI伪协议编码算法无文件利用黑白盒

演示案例&#xff1a; 文件包含-原理&分类&利用&修复黑盒利用-VULWEB-有无包含文件白盒利用-CTFSHOW-伪协议玩法 #文件包含-原理&分类&利用&修复 1、原理 程序开发人员通常会把可重复使用的函数写到单个文件中&#xff0c;在使用某些函数时&#xff0c…

docker 的八大技术架构(图解)

docker 的八大技术架构 单机架构 概念&#xff1a; 应用服务和数据库服务公用一台服务器 出现背景&#xff1a; 出现在互联网早期&#xff0c;访问量比较小&#xff0c;单机足以满足需求 架构优缺点&#xff1a; 优点&#xff1a;部署简单&#xff0c;成本低 缺点&#xff1…

Java生成p12证书

本文章使用的环境 jdk1.8&#xff0c;spring-boot2.6.13 一、pom依赖 <dependency><groupId>org.bouncycastle</groupId><artifactId>bcprov-jdk15on</artifactId><version>1.49</version></dependency><dependency>&…

PCL点云处理之最小中值平方(Lmeds法)拟合平面(二百三十四)

PCL点云处理之 最小中值平方法(Lmeds)拟合平面(二百三十四) 一、算法介绍一、拟合原理二、具体实现1.代码2.结果一、算法介绍 (本文提供详细注释,输出拟合平面参数和平面点云) Lmeds(Least Median of Squares)是一种统计学方法,用于拟合数据并减少异常值对拟合结果…

Spark-Scala语言实战(5)

在之前的文章中&#xff0c;我们学习了如何在scala中定义与使用集合和元组。想了解的朋友可以查看这篇文章。同时&#xff0c;希望我的文章能帮助到你&#xff0c;如果觉得我的文章写的不错&#xff0c;请留下你宝贵的点赞&#xff0c;谢谢。 Spark-Scala语言实战&#xff08;…

【Web应用技术基础】CSS(6)——使用 HTML/CSS 实现 Educoder 顶部导航栏

第一题&#xff1a;使用flex布局实现Educoder顶部导航栏容器布局 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Educoder</title><script src"https://cdn.staticfile.org/jquery/1.1…

不启动BMIDE,Teamcenter如何查看property的real property name

问题描述&#xff1a; Teamcenter客户端&#xff0c;查看Item 属性&#xff0c;属性名称默认显示的是Display Name。 在各类开发过程中&#xff0c;对属性的操作&#xff0c;需要使用real property name才能进行。开发可能不在server端&#xff0c;没有安装BMIDE&#xff0c;如…

机器学习——元学习

元学习&#xff08;Meta Learning&#xff09;是一种机器学习方法&#xff0c;旨在使模型能够学习如何学习。它涉及到在学习过程中自动化地学习和优化学习算法或模型的能力。元学习的目标是使模型能够从有限的训练样本中快速适应新任务或新环境。 在传统的机器学习中&#xff…

【漏洞复现】WordPress Plugin NotificationX 存在sql注入CVE-2024-1698

漏洞描述 WordPress和WordPress plugin都是WordPress基金会的产品。WordPress是一套使用PHP语言开发的博客平台。该平台支持在PHP和MySQL的服务器上架设个人博客网站。WordPress plugin是一个应用插件。 WordPress Plugin NotificationX 存在安全漏洞,该漏洞源于对用户提供的…

第三天-centos配置静态IP

跟着无涯老师学习安全知识的一天,今天遇到点问题。给新创建的centos配置静态IP的时候,可能是网卡配置文件里的内容修改或添加的不对,配置完之后网络不通。尝试了几次都没成功,明天再试试吧,今天就记这几个简单的命令,加油,晚安。

线程创建方式、构造方法和线程属性

欢迎各位&#xff01;&#xff01;&#xff01;推荐PC端观看 文章重点&#xff1a;学会五种线程的创造方式 目录 1.开启线程的五种方式 2.线程的构造方法 3.线程的属性及获取方法 1.开启线程的五种方式 创造线程的基本两步&#xff1a;&#xff08;1&#xff09;使用run方法…

学习笔记:NATS--自适应边缘和分布式系统的连接技术。(更新中)

基于NATS英文官方文档的学习,我将使用简单易懂的语言去解释NATS的各种机制及其原理。预计在一个月内,也就是在5月之前完成对NATS官方文档的笔记。大家可以将此笔记当做官方文档的中文低配版来学习。欢迎大家的阅读,也希望各位指出我笔记中可能存在的各种错误。目录1. NATS: …

【数据结构】顺序表的实现——静态分配

&#x1f388;个人主页&#xff1a;豌豆射手^ &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏 &#x1f917;收录专栏&#xff1a;数据结构 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共同学习、交流进…

TOP100-回溯(二)

4.39. 组合总和 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target &#xff0c;找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 &#xff0c;并以列表形式返回。你可以按 任意顺序 返回这些组合。 candidates 中的 同一个 数字可以 无限制…

AIR780E引脚复用笔记

1、应用场景:使用AIR780E模块驱动TM1637数码管驱动芯片,原有方案是AIR724UG+TM1637。为了降低成本,按照官方方案进行代码迁移。伴随着代码迁移,硬件引脚也需要做相应调整。由于其他引脚已经分配了对应的功能,仅剩余I2C引脚未使用,所以需要把I2C引脚【PIN66 PIN67】作为普…

Excel·VBA数组平均分组问题

看到一个帖子《excel吧-数据分组问题》&#xff0c;对一组数据分成4组&#xff0c;使每组的和值相近 上一篇文章《ExcelVBA数组分组问题》&#xff0c;解决了这个帖子问题的第1步&#xff0c;即获取所有数组分组形式的问题 接下来要获取分组和值最相近的一组&#xff0c;只需计…

Docker搭建私有仓库

因为dockerHub公共仓库是外网的&#xff0c;所以访问就特别慢&#xff0c;所以一般公司都会搭建私人的镜像仓库来保存镜像。一台服务上用docker开启一个私有仓库的镜像&#xff0c;后续其他的docket服务器都将镜像保存在这个私有的仓库 1 设置私有镜像仓库 # 下载镜像 docker…