复试21天Day19
Posted 最爱那不息的变幻
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了复试21天Day19相关的知识,希望对你有一定的参考价值。
复试题Day 19
文章目录
数据结构
贪心算法和动态规划以及分治法的区别?:
分治法与动态规划的相同点:
分治法与动态规划,二者要求原问题具有最有子结构,都是将问题分而治之分解成若干个规模较小的子问题;
不同点:
动态规划是将原问题分解为多个子问题,通过计算出子问题的结果构造一个最优解。动态规划通过迭代法自底向上求解,动态规划将分解后的子问题理解为相互间有联系,有重叠的部分;
算法的应用:装配线,矩阵乘法,最长公共子序列,构造最优的二叉树
分治法是将原问题分解为多个子问题,利用递归对各个子问题独立求解,最后利用各子问题的解进行合并形成原问题的解。分治法将分解后的子问题看成是相互独立的。
例如:在求解斐波那契数列过程中 ,求解fibonacci(5)求解fibonacci(5)时,得求解fibonacci(4)和fibonacci(3).其中,求解fibonacci(4)时,需要求解fibonacci(3).
在分治法中,求解完fibonacci(4)后还得重新求解fibonacci(3),即使求解fibonacci(4)子问题的时候已经求解过,也就是说,求解了二次子问题fibonacci(3).
贪心算法:依赖于当前已经做出的所有选择,采用自顶向下(每一步根据策略得到当前一个最优解,保证每一步都是选择当前最优的)的解决方法。
贪心算法的应用:最小生成树,最短路径,数据压缩–哈夫曼编码
计算机组成原理
在计算机系统结构中,什么是编译?什么是解释?:
3、在计算机系统结构中,什么是编译?什么是解释?
翻译的方式有两种:一个是编译,一个是解释。
编译型语言写的程序在执行之前,需要一个专门的编译过程,把程序编译称为机器语言的文件,比如exe文件,如果源程序不变以后要运行的话就不用重新翻译。
解释则不同,解释性语言的程序不需要编译,在运行程序的时候才翻译,翻译一句执行一句,不生成目标程序,这样解释性语言每执行一次就要翻译一次,效率比较低。
.java文件—>编译—>.class文件,编译成.class字节码,.class需要jvm解释,然后解释执行。Java很特殊,java程序需要编译但是没有直接编译成机器语言,即二进制语言,而是编译成字节码(.class)再用解释方式执行。java程序编译以后的class属于中间代码,并不是可执行程序exe,不是二进制文件,所以在执行的时候需要一个中介来解释中间代码,这就是所谓的java虚拟机(JVM)。
C语言编译过程分成四个步骤:
(1)由.c文件到.i文件,这个过程叫预处理,将#include包含的头文件直接拷贝到hello.c当中;将#define定义的宏进行替换,同时将代码中没用的注释部分删除等。
(2)由.i文件到.s文件,这个过程叫编译。
(3)由.s文件到.o文件,这个过程叫汇编。
(4)由.o文件到可执行文件,这个过程叫链接,将翻译成的二进制与需要用到库绑定在一块。
操作系统
简述银行家算法?
银行家算法是一种最有代表性的避免死锁的算法。在避免死锁方法中允许进程动态地申请资源,但系统在进行资源分配之前,应先计算此次分配资源的安全性,若分配不会导致系统进入不安全状态,则分配,否则等待。为实现银行家算法,系统必须设置若干数据结构。
安全序列是指一个进程序列P1,…,Pn是安全的,即对于每一个进程Pi(1≤i≤n),它以后尚需要的资源量不超过系统当前剩余资源量与所有进程Pj (j < i )当前占有资源量之和。(即在分配过程中,不会出现某一进程后续需要的资源量比其他所有进程及当前剩余资源量总和还大的情况)
注:存在安全序列则系统是安全的,如果不存在则系统不安全,但不安全状态不一定引起死锁。
原理过程:系统给当前进程分配资源时,先检查是否安全:
在满足当前的进程X资源申请后,是否还能有足够的资源去满足下一个距最大资源需求最近的进程(如某进程最大需要5个单位资源,已拥有1个,还尚需4个),若可以满足,则继续检查下一个距最大资源需求最近的进程,若均能满足所有进程,则表示为安全,可以允许给当前进程X分配其所需的资源申请,否则让该进程X进入等待。
(注:检查过程中,每拟满足一个进程,则进行下个检查时,当前可用资源为回收上一个进程资源的总值,每满足一个进程表示此进程已结束,资源可回收。)
计算机网络
动态路由算法有那些?:
1)按应用范围的不同,路由协议可分为两类
在一个 AS 内的路由协议称为内部网关协议:内部网关路由协议有以下几种: RIP-1, RIP-2, IGRP, EIGRP,
IS-IS 和 OSPF;
AS 之间的路由协议称为外部网关协议外部网关协议(也叫域 间路由协议):域间路由协议有两种:外部
网关协议(EGP)和边界网关协议(BGP)
2)动态路由按照算法可以分为:距离矢量路由协议,链路状态路由协议
距离矢量路由协议:依据从源网络到目标网络所经过的路由的个数选择路由 RIP,IGRP
链路状态路由协议:综合考虑从源网络到目标网络的各条路径的情况选择路由 OSPF,IS-IS
软件工程
索引的设计原则?:
索引设计不合理或者缺少索引都会对数据库和应用程序的性能造成障碍。高效的索引对于获得良好的性能非常重要。设计索引时,应该考虑一下的准则:
1)索引并非越多越好,一个表中如有大量的索引,不仅占用磁盘空间,而且会影响INSERT,DELETE,UPDATE等语句的性能,因为当表中的数据更改的同事,索引会进行调整和更新。
2)避免对经常更新的表进行过多的索引,并且索引中的列尽可能的少。而对于经常用与查询的字段应该创建索引,但要避免添加不必要的字段。
3)数据量小的表最好不要使用索引,由于数据较少,查询花费的时间可能比遍历索引的时间还要短,索引可能不会产生优化效果。
4)在条件表达式中经常用到的不同值较多的列上建立索引,在不同值很少的列上不要建立索引。比如在学生表的“性别”字段上只有“男”与“女”两个不同值,因此就无需建立索引。如果建立索引不但不会提高查询效率,反而会严重降低数据更新速度。
5)当唯一性时某种数据本身的特征时,指定唯一索引。使用唯一索引需能确保定义的列的数据完整性,以提高查询速度。
6)在频繁进行排序或分组(即进行group by 或者 order by操作)的列上建立索引,如果待排序的列有多个,可以在这些列上建立组合索引。
专业面试
大数据和机器学习之间有什么联系?
大数据的核心是利用数据的价值,机器学习是利用数据价值的关键技术,对于大数据而言,机器学习是不可或缺的。相反,对于机器学习而言,越多的数据会越可能提升模型的精确性,同时,复杂的机器学习算法的计算时间也迫切需要分布式计算与内存计算这样的关键技术。因此,机器学习的兴盛也离不开大数据的帮助。大数据与机器学习两者是互相促进,相依相存的关系。机器学习与大数据紧密联系。但是,必须清醒的认识到,大数据并不等同于机器学习,同理,机器学习也不等同于大数据。大数据中包含有分布式计算,内存数据库,多维分析等等多种技术。
英语面试
Do you think English ability is important in academic research?
Thank you teacher for your question. There are two aspects to this question.
The first aspect is that I need to consult professional literature when I am working on a project, and some important literature needs to look up foreign data, so it is very important to learn a foreign language well.
Another aspect is that I need to improve my English ability to communicate with foreign friends, so that I can better discuss academic issues and facilitate communication.
感谢老师的提问,针对这个问题我想说的有两个方面。
首先一个方面是我在做项目的时候需要查阅专业文献,一些重要的文献需要查询国外数据,所以学好一门外语很重要。
还有另一个方面是我面对国外的朋友的沟通需要英语能力的提升,这样可以更好地去讨论学术问题,也方便了沟通交流。
以上是关于复试21天Day19的主要内容,如果未能解决你的问题,请参考以下文章
Leetcode刷题100天—19. 删除链表的倒数第 N 个结点(双指针)—day21
Leetcode刷题100天—1979. 找出数组的最大公约数(数学)—day19
Leetcode刷题100天—1979. 找出数组的最大公约数(数学)—day19