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

目录

    • 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、当键入网址后,到网页显示,其间发生了什么。

在这里插入图片描述

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

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

相关文章

ssm005基于SSM框架的购物商城系统+jsp

购物商城系统的设计与实现 摘 要 网络技术和计算机技术发展至今&#xff0c;已经拥有了深厚的理论基础&#xff0c;并在现实中进行了充分运用&#xff0c;尤其是基于计算机运行的软件更是受到各界的关注。加上现在人们已经步入信息时代&#xff0c;所以对于信息的宣传和管理就…

Python利用Turtle小乌龟实现推箱子游戏

文章目录&#xff1a; 一&#xff1a;运行效果 1.演示 2.思路和功能 二&#xff1a;代码 文件架构 level.py PushBox.py 必备知识&#xff1a;python图形化编程turtle小乌龟 一&#xff1a;运行效果 1.演示 效果图◕‿◕✌✌✌ Python利用Turtle小乌龟实现推箱子游戏运…

软件设计师笔记

计算机 运算器组成&#xff1a;算术逻辑单元(ALU)、累加寄存器(AC)、数据缓冲寄存器(DR)、状态条件寄存器()等组成。 控制器组成&#xff1a;指令寄存器(IR)、程序计数器(PC)、地址寄存器(AR)、指令译码器(ID)。 最小数据单位&#xff1a;bit 最小存储单位: byte n进制 转 1…

【工作中问题解决实践 十二】线上如何排查CPU100%的情况

当我们把服务发布到服务器器&#xff0c;可能会因为一些问题造成我们的服务器CPU被打满甚至超过100%&#xff0c;那如果我们想知道到底上在做什么操作导致CPU持续过高呢&#xff1f;因为在线上只能通过日志看问题&#xff0c;或者排查到哪个进程或者哪个线程持续占用CPU。然后才…

基于java+springboot+vue实现的医院门诊信息管理系统(文末源码+Lw+ppt)23-325

摘 要 系统根据现有的管理模块进行开发和扩展&#xff0c;采用面向对象的开发的思想和结构化的开发方法对医院门诊信息的现状进行系统调查。采用结构化的分析设计&#xff0c;该方法要求结合一定的图表&#xff0c;在模块化的基础上进行系统的开发工作。在设计中采用“自下而…

c++翁恺

1、面向对象 Data&#xff1a;杯子的属性 Opera&#xff1a;杯子提供的服务 老师上课&#xff1a; C&#xff1a;按流程执行 C&#xff1a;定一个教室&#xff0c;有很多学生&#xff0c;投影仪&#xff0c;灯&#xff0c;每个学生反映不一样。 这个场景有什么东西&#xff0c…

SSM整合遇到的问题,非常干货,希望能帮助到您~

你们好&#xff0c;我是金金金。 无法自动装配 配置类已经配置了扫描 那是什么原因导致&#xff1f; 解决 很明显位置都不在一起&#xff0c;需要更改。 结果类型不匹配select id“selectEmployeeByCondition” 什么原因导致&#xff1f; 这个是因为我建立了很多子模块 名字…

基于tcp协议的网络通信(将服务端守护进程化)

目录 守护进程化 引入 介绍 如何实现 思路 接口 -- setsid 注意点 实现代码 daemon.hpp log.hpp 运行情况 前情提要 -- 前后台任务介绍(区别命令),sessionsid介绍,session退出后的情况(nuhup,终端进程控制组),任务进程组概念,任务与进程组的关系,-bash介绍-CSDN博客…

最详细的ubuntu 安装 docker教程

Docker是一种流行的容器化平台&#xff0c;它能够简化应用程序的部署和管理。本文将介绍在Ubuntu操作系统上安装Docker的步骤&#xff0c;以便我们可以开始使用Docker来构建和运行容器化应用程序。 系统版本 本文以Ubuntu20.05系统为例安装docker&#xff0c;Ubuntu官方下载地…

输出当前时间

用途&#xff1a;在项目中一些属性中设置当前时间 实例代码 import java.time.LocalDateTime; import java.time.format.DateTimeFormatter;public class time {public static void main(String[] args){LocalDateTime china LocalDateTime.now(); DateTimeFormatter forma…

函数作用域和块级作用域:JavaScript中的变量作用域解析

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

知识图谱操作的探索与利用

目录 前言1 搜索&#xff08;Search&#xff09;1.1 基于关键词搜索1.2 属性搜索1.3 模式匹配 2 过滤&#xff08;Filtering&#xff09;2.1 属性过滤2.2 关系过滤 3 引导&#xff08;Guidance&#xff09;3.1 相关实体推荐3.2 路径推荐 4 合并&#xff08;Merging&#xff09;…

OpenLayers基础教程——WebGLPoints图层样式的设置方法

1、前言 前一篇博客介绍了如何在OpenLayers中使用WebGLPoints加载海量数据点的方法&#xff0c;这篇博客就来介绍一下WebGLPoints图层的样式设置问题。 2、样式运算符 在VectorLayer图层中&#xff0c;我们只需要创建一个ol.style.Style对象即可&#xff0c;WebGLPoints则不…

【c++】类和对象(三)构造函数和析构函数

&#x1f525;个人主页&#xff1a;Quitecoder &#x1f525;专栏&#xff1a;c笔记仓 朋友们大家好&#xff0c;本篇文章我们带来类和对象重要的部分&#xff0c;构造函数和析构函数 目录 1.类的6个默认成员函数2.构造函数2.1构造函数其他特性 3.构析函数3.1特性&#xff1a;…

03课程发布模块课程预览

课程预览界面 界面原型 课程在发布前需要运营方进行审核&#xff0c;作为课程制作方即教学机构发布课程前可以通过课程预览功能查看课程详情界面&#xff0c;及时修改页面中的内容排版和违规问题 课程预览就是把课程的相关信息进行整合然后在课程预览界面进行展示&#xff0…

为jupyter安装和使用不同的python版本

安装好jupyter后&#xff0c;发现为默认的python3&#xff0c;想要切换到python3.10&#xff0c; 1.创建新环境python310 conda create -n python310 python3.10 2.进入新环境python310 conda activate python310 3.下载jupyter notebook conda install jupyter notebook…

802.1X网络访问控制协议

802.1X是一种由IEEE&#xff08;电气和电子工程师协会&#xff09;制定的网络访问控制协议&#xff0c;主要用于以太网和无线局域网&#xff08;WLAN&#xff09;中基于端口的网络接入控制。802.1X协议通过认证和授权机制&#xff0c;确保只有合法的用户和设备才能够接入网络&a…

Facebook如何使用增强技术提升广告效果?

AR in AD - case study 脸书2021年宣布了引入AR的新方法&#xff0c;以推动其应用套件中的产品发现和购买。但他们首先考虑是技术。据脸书称&#xff0c;技术一直是增强现实在其应用程序中更广泛使用的主要障碍。这就是为什么它现在正在做出改变&#xff0c;使企业主和广告商更…

OpenHarmony 源码解析之SystemUi—Statusbar(TS)

作者&#xff1a;董伟 简介 SystemUI应用是OpenHarmony中预置的系统应用&#xff0c;为用户提供系统相关信息展示及交互界面&#xff0c;包括系统状态、系统提示、系统提醒等&#xff0c;例如系统时间、电量信息。 本文主要分析batterycomponent、clockcomponent、wificompo…

2024年3月26日 十二生肖 今日运势

小运播报&#xff1a;2024年3月26日&#xff0c;星期二&#xff0c;农历二月十七 &#xff08;甲辰年丁卯月己丑日&#xff09;&#xff0c;法定工作日。 红榜生肖&#xff1a;鸡、鼠、猴 需要注意&#xff1a;马、狗、羊 喜神方位&#xff1a;东北方 财神方位&#xff1a;…