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

目录

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

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

相关文章

mysql刨根问底

索引&#xff1a;排好序的数据结构 二叉树&#xff1a; 红黑树 hash表&#xff1a; b-tree&#xff1a; 叶子相同深度&#xff0c;叶节点指针空&#xff0c;索引元素不重复&#xff0c;从左到右递增排序 节点带data btree&#xff1a; 非叶子节点只存储索引&#xff0c;可…

C语言经典例题(8) --- 进制A+B、网购、及格分数、最高分数、计算一元二次方程

文章目录 1.进制AB2.网购3.及格分数4.最高分数5.计算一元二次方程 1.进制AB 题目描述&#xff1a; 输入一个十六进制数a&#xff0c;和一个八进制数b&#xff0c;输出ab的十进制结果&#xff08;范围-231~231-1&#xff09;。 输入描述&#xff1a; 一行&#xff0c;一个十六…

不使用额外空间交换两个数

1) 算术x x y;y x - y;x x - y; 2) 异或x x^y;// 只能对int,char..y x^y;x x^y;x ^ y ^ x;加法和异或这两种方法都是用于交换两个数的值而不使用额外空间的方法。它们的适用类型如下&#xff1a; 加法方法&#xff1a; 适用于整数类型&#xff08;int、long、long lo…

C++对象的创建和使用

定义了类&#xff0c;就相当于定义了一个数据类型。类与int、char等数据类型的使用方法是一样的。可以定义变量&#xff0c;数组和指针等。使用类定义的变量通常称为该类的对象。 对象的定义格式如下&#xff1a; 类名 对象名; 1.对象访问其成员 对象通过"."访问它的…

[NCNN学习笔记]-4

1、前言 继续学习NCNN。本次学习binaryop和eltwise。 2、学习内容 2.1、binaryop binaryop是用来二元计算的op&#xff0c;先来看binaryop.h的中关于二元计算的定义&#xff0c;其中二元计算定义了如下操作。 enum OperationType {Operation_ADD 0,Operation_SUB 1,Oper…

垃圾回收:垃圾回收器

目录 垃圾回收器 评估GC的性能指标 7种典型的垃圾回收器 Serial回收器&#xff1a;串行回收 ParNew回收器&#xff1a;并行回收 Parallel回收器&#xff1a;吞吐量优先 CMS回收器&#xff1a;低延迟 G1回收器&#xff1a;区域化分代式 G1回收过程1-年轻代GC G1回收过程…

自信当众讲话:从紧张到自如的转变之路

自信当众讲话&#xff1a;从紧张到自如的转变之路 在人生的舞台上&#xff0c;当众讲话是每个人都可能面对的挑战。然而&#xff0c;对于许多人来说&#xff0c;站在众人面前讲话却是一件令人紧张甚至恐惧的事情。这种紧张感往往源于对自我能力的怀疑&#xff0c;对未知的恐惧…

PyTorch----torch.nn.Linear()函数

torch.nn.Linear是PyTorch中的一个模块&#xff0c;用于在神经网络中实现完全连接层。它表示输入张量的一个线性变换通过将它与一个权矩阵相乘并加上一个偏置项。 下面是torch.nn.Linear的语法: torch.nn.Linear(in_features, out_features, biasTrue)参数&#xff1a; in_f…

neo4j使用详解(二、cypher语法基础——最全参考)

1.简介 Cypher是一种声明式图数据库查询语言&#xff0c;它具有丰富的表现力&#xff0c;能高效地查询和更新图数据。具有以下特点&#xff1a; 是一种声明性模式匹配语言遵循SQL语法的语法是非常简单且人性化、可读的格式 语法详情请看博主其他博客&#xff1a; 一、cypher插…

JS——9大陷阱

一、警惕A>X>B写法 3>2>1 返回值为false&#xff08;原因&#xff1a;3>2为true&#xff0c;会默认转成数字1&#xff0c;1>1为false&#xff09; 1<4<3 返回值为true&#xff08;原因&#xff1a;1<4为true&#xff0c;会默认转成数字1&#xff…

Leetcode第35题:搜索插入位置

代码实现 class Solution:def searchInsert(self, nums: List[int], target: int) -> int:if target in nums:return nums.index(target)index0for num in nums:if target>num:index1else:nums.insert(index,target)breakreturn index解题思路:先判断target是否在nums中…

【简单随机抽样】

文章目录 什么是简单随机抽样&#xff1f;简单随机抽样的步骤简单随机抽样的优点简单随机抽样的缺点 什么是简单随机抽样&#xff1f; 简单随机抽样是指从总体中以相同的概率随机选择一定数量的样本单元组成样本的一种方法。它要求每个样本单元被抽中的机会是均等的。每一个样…

滴滴出行高级Node.js开发工程师笔试题2024

今天参加了一个滴滴出行的Node.js岗位面试&#xff0c;一面为腾讯视频面试&#xff0c;俩个面试官。面试官比较深入问一些你过去做个的项目&#xff0c;问你解决了哪些棘手的问题。 还有就是他们比较关注性能优化&#xff0c;会问你们现在项目的峰值QPS是多少&#xff0c;如何进…

ChatGPT之道:AI与编程的完美融合

ChatGPT无限次数:点击直达 ChatGPT之道&#xff1a;AI与编程的完美融合 引言 随着人工智能技术的发展&#xff0c;AI在各个领域都展现出了惊人的应用潜力。在编程领域&#xff0c;AI的应用也是愈发广泛。其中&#xff0c;ChatGPT作为一种基于大型神经网络的自然语言生成模型&…

2024第二届经济管理、贸易与信息技术创新国际会议(ICEMITI2024)

2024第二届经济管理、贸易与信息技术创新国际会议&#xff08;ICEMITI2024&#xff09; 会议简介 2024第二届经济管理、贸易与信息技术创新国际会议&#xff08;ICEMITI2024&#xff09;将在中国郑州举行。这是一个重要的学术会议&#xff0c;旨在讨论当前经济管理、贸易和信…

[DDD] ValueObject的一种设计落地及应用

目录 前言一、ValueObject二、设计2.1 接口2.2 单一值ValueObject2.3 单一字符串ValueObject 三、实现3.1 示例3.1.1 PhoneNumber3.1.2 SocialCreditCode 四、使用4.1 异常处理4.2 Json 反/序列化4.2.1 请求体4.2.2 HTTP接口4.2.3 用例 4.3 JPA/MyBatis4.3.1 Converter或TypeHa…

vue响应式基础

声明响应式状态​ ref()​ 在组合式 API 中&#xff0c;推荐使用 ref() 函数来声明响应式状态&#xff1a; import { ref } from vueconst count ref(0) ref() 接收参数&#xff0c;并将其包裹在一个带有 .value 属性的 ref 对象中返回&#xff1a; const count ref(0)c…

202449读书笔记|《悦读诗 乐生活》——跌倒,是生活的偶然 发光,是生命的态度

202449读书笔记|《悦读诗 乐生活》——跌倒&#xff0c;是生活的偶然 发光&#xff0c;是生命的态度 第一篇 全都喜欢上第二篇 生如夏花第三篇 “希望”是带有羽毛之物第四篇 我来到这世界…… 《悦读诗 乐生活&#xff1a;小学生经典现代诗歌鉴赏集》赵迁编著&#xff0c;是小…

【JavaEE初阶系列】——多线程案例三——定时器

目录 &#x1f6a9;定时器是什么 &#x1f6a9;标准库中的定时器 &#x1f6a9;自定义定时器 &#x1f388;构造Task类 &#x1f4dd;相对时间和绝对时间 &#x1f388;构造MyTime类 &#x1f4dd;队列空和队列不为空 &#x1f4dd;wait(带参)解决消耗资源问题 &#…

多列数据表,复制插入一条有唯一索引限制的数据

假如你有一张表&#xff08;列简单列举四个&#xff0c;实际可能十好几二十好几的字段&#xff09; idnameagesex1zhangsan10男2lisi20男3wangermazi30男4xiaotaoqi40男 你想复制id4的数据&#xff0c;只把id变为6其他信息不变&#xff0c;来给自己用&#xff0c;只有主键变更…