复试21天Day 20

复试题Day 20

数据结构

有哪些哈希函数的构造方法,列举一些?:

直接定址法

  • 取关键字或关键字的某个线性函数值为散列地址。
  • 即 H(key) = key 或 H(key) = a*key + b,其中a和b为常数。

除留余数法

  • 取关键字被某个不大于散列表长度 m 的数 p 求余,得到的作为散列地址。
  • 即 H(key) = key % p, p < m。

数字分析法

  • 当关键字的位数大于地址的位数,对关键字的各位分布进行分析,选出分布均匀的任意几位作为散列地址。
  • 仅适用于所有关键字都已知的情况下,根据实际应用确定要选取的部分,尽量避免发生冲突。

平方取中法

  • 先计算出关键字值的平方,然后取平方值中间几位作为散列地址。
  • 随机分布的关键字,得到的散列地址也是随机分布的。

折叠法(叠加法)

  • 将关键字分为位数相同的几部分,然后取这几部分的叠加和(舍去进位)作为散列地址。
  • 用于关键字位数较多,并且关键字中每一位上数字分布大致均匀。

随机数法

  • 选择一个随机函数,把关键字的随机函数值作为它的哈希值。
  • 通常当关键字的长度不等时用这种方法。

计算机组成原理

在计算机中,为什么要采用二进制来表示数据?:

计算机最基本的功能就是数值运算,它的实现是建立在数字电路基础之上,为了更简单的设计计算机,让计算机更易于数值运算,同时又根据数字电路的特点,所以就有了二进制,即用0和1的任意组合来表示任意自然数。数字1可以用数字电路中的高电平来表示,数字0可以用数字电路中的低电平来表示。

数字电路中的基本电路单元是门电路,门电路的可以输出高低电平,每个门电路可以表示出一位,多个门电路组合可以表示出任意的多位数值。比如1用二进制表示为1,3用二进制表示就是11,15用二进制表示就是1111,这种表示方法虽然人类看起来有点费解,但是对计算机却很简单,他们的加减运算跟十进制一样,例如对于加法来说十进制是遇到十进一位,而二进制则遇到二进一。

操作系统

SPOOLing技术的特点?:

SPOOLing技术(假脱机技术)系统组成:

  • 输入井和输出井
  • 输入缓冲区和输出缓冲区
  • 输入进程和输出进程

SPOOLing技术的主要特点:提高了I/O速度,将独占设备改造为共享设备,实现了虚拟设备功能。

1.输入井和输出井

输入井和输出井是在磁盘上开辟出的存储区域,输入井用于存储I/O设备输入的数据。输出井用于存储用户程序的输出数据。

2.输入缓冲区和输出缓冲区

输入缓冲区和输出缓冲区是在内存中开辟的缓冲区,输入缓冲区用于暂存由输入设备送来的数据,以后在传送到输出井。输出缓冲区用于暂存从输出井送来的数据,以后再传送到输出设备

3.输入进程和输出进程

输入进程:将用户要求的数据从输入机通过输入缓冲区送到输入井

输出进程:把用户要求输出的数据先从内存输送到输出井,在通过输出缓冲区送到输出设备。

实例:共享打印机

当用户进程请求打印输出时,SPOOLing系统同意为它打印输出,但并不是立即把打印机分配给它而是

1)由输出进程在输出井中为之申请一个空闲磁盘区,并将打印的数据送入其中。

2)输出进程在为用户进程申请一张空白的用户请求打印表,并将用户的打印要求填入其中,再将该表挂到请求打印队列上。

计算机网络

为什么要进行流量控制?:

1、由于通讯双方,网速不同。通讯方任一方发送过快都会导致对方消息处理不过来,所以就需要把数据放到缓冲区中。

2、如果缓冲区满了,发送方还在疯狂发送,那接收方只能把数据包丢弃。因此我们需要控制发送速率。

3、我们缓冲器剩余大小称之接收窗口,用变量win表示。如果win=0,则发送方停止发送。

软件工程

解析高内聚低耦合?:

**耦合和内聚的的评判标准是强度,耦合越弱越好,内聚越强越好。**耦合指模块与模块之间的关系,最弱的耦合就是通过一个主控模快来协调n哥模块进行运作。例如:客户要求在界面上增加一个字段,你的项目要修改几个地方呢?如果你只要修改项目文档,那么你的开发构架就是最低强度的耦合,而这种设计 成熟的开发团队都已经做到了,他们使用开发工具通过项目模型驱动数据库和各层次的代码,而不是直接修改那些代码;内聚指的是模块内部的功能,最强的就是功能不能拆分,也就是原子化。

简单来说: 高内聚、低耦合讲的是程序单位协作的问题, 你可以这样理解,一个企业的管理, 最理想的情况就是各个部门各司其职,井然有序,互不干涉, 但是需要沟通交流的时候呢, 各个部门都可以找到接口人专门负责部门沟通以及对外沟通。在软件里呢, 就是说各个模块要智能明确, 一个功能尽量由一个模块实现, 同样,一个模块最好只实行一个功能。这个是所谓的“内聚”; 模块与模块之间、系统与系统之间的交互,是不可避免的,但是我们要尽量减少由于交互引起的单个模块无法独立使用或者无法移植的情况发生, 尽可能多的单独提供接口用于对外操作, 这个就是所谓的“低耦合”。但是实际的设计开发过程中,总会发生这样那样的问题与情况,真正做到高内聚、低耦合是很难的,很多时候未必一定要这样,更多的时候“最适合”的才是最好的,不过,理解思想,审时度势地使用,融会贯通,灵活运用,才是设计的王道。

专业面试

是否有接触过区块链?谈一谈你对区块链的理解?

区块链是中本聪为了解决比特币去中心化而发明的,网上普遍解读成 一种分布式的数据库(或账本)。交易公开透明:我们每发生一笔交易,都会产生一个交易的数据信息,里面包含交易双方的地址、交易时间、金额、签名(确认转账的人是本人)、交易hash值(通过hash算法来生成一个唯一的散列值),这样就保证了交易的可见透明性,不会存在非法交易,每一个人都能看到交易的内容,是无法造假的。

区块链的特点是:

去中心化:交易是自动生成的,不会有人去操控

不可溯源:每隔一段时间,都会生产一个区块去将这段时间内新发生的交易打包进区块内部,用二叉树的形式存储交易信息。

区块链的设计机制是只有最长的链是有效的,假设有一个坏节点希望篡改区块链的内容,它无法改变某个单独的区块,只能争取产生新的假区块算力攻击。

区块链技术的特别之处,就在于通过竞争记账(算数学题)的方式,巧妙的解决了这一问题。当一个节点算出了数学题,可以迅速的向其他节点进行验证,当足够多的节点承认了这一结果后,系统就会进行确认,这就既避免了需要一个中心化的权威机构来做判断,又防止了恶意节点的操纵。

英语面试

Do you like taking online classes during epidemic time?

Thank you teacher for your question. There are two aspects to this question.

The first aspect is that when I am training new students for the Mathematical Modeling Association, I need to go to the online class to explain, including some methods of consulting important literature and searching foreign data. This needs to be demonstrated through online teaching, which will be very clear. Demonstrate the method steps.

Another aspect is that due to the seriousness of the epidemic, we need to be responsible for our own safety. Only when we have a good body can we conduct research better. Therefore, I like to exchange academic issues online and share learning knowledge in online courses.

​ 感谢老师的提问,针对这个问题我想说的有两个方面。

​ 首先一个方面是我在做数学建模协会培训新学员的时候需要去上网课来讲解,包括一些查阅重要的文献以及搜索国外数据的方法,这需要网上教学的方式来展现,会很清晰的体现方法步骤。

​ 还有另一个方面是由于疫情很严重,所以我们需要对自己的安全负责,有好的身体才可以更好地进行研究,所以我很喜欢网上交流学术问题和网课分享学习知识。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值