复试导师问题——专业课问题(408+数据库+程序语言)

专业问题

算法

随机函数

  • rand函数产生的是伪随机数,也就是说它不是一个真实的随机数。从一个表里面选取,每次调rand都能拿到一个不同的数,只要整个序列的规律不明显,整个函数看起来就是随机的。但程序跑一遍退出后,再重新跑一遍,两次输出的结果是相同的。
  • 是根据一个数(我们可以称它为种子)为基准以某个递推公式推算出来的一系列数,当这系列数很大的时候,就符合正态公布,从而相当于产生了随机数,但这不是真正的随机数,当计算机正常开机后,这个种子的值是定了的
  • 在c语言中的rand函数中有一个定义叫做种子,rand函数是通过对这个种子进行一系列的运算来模拟出一个随机数的。我们直接调用rand函数,并不指定种子,系统就会调用默认的种子:1,来产生随机数。因为每次重新运行时的种子都是1,运行出来的结果自然就还是这几个数啦。
  • 用时间做种子

不使用循环,判断一个数是否是2的N次方

  • 2,4,8,16这样的数转化成二进制是10,100,1000,10000。如果X减1后与X做与运算,答案若是0,则X是2N次方。

在字符串中找出只出现一次的数字,其余数字出现两次

  • 列一个数组,0-9,出现就给数组加1,然后扫描这个数组即可

单淘汰相关算法

字符串匹配算法

  • KMP算法
  • 利用每次匹配完的结果和子串特性,跳着移动,主串指针不用回溯,子串指针回溯次数也变少,完了算NEXT数组,失匹则跳到子串的next位置重新与主串当前位置进行比较
  • next数组计算:算部分匹配值:字符串的前缀和后缀最长相等前后缀的长度。然后右移+1
  • 改进,对next数组进行改进,,回溯时碰见相同数值就匹配值修改为最开始的那个

排序的时间、空间复杂度

01背包问题复杂度

  • 有N件物品,每件物品的体积为wi,价值为ci,现有一个容量为v的背包,问如何选取物品放入背包,使得背包内物品的总价值最大。其中每件物品只有1件
    • f[i,j]代表前i个物品背包容量最大为j时最多能装的物品的总重量
    • 对第i 个物品,要么装要么不装。
  • 完全背包问题就是物品改为无穷件
  • 其实就是构造一个二维数组,所以时间复杂度和空间复杂度为o(nv)

简述弗洛伊德算法求最短路径或如何求最短路径

如何判断无向图是树

不用加减乘除算加法

  • 用异或运算实现无进位加法
  • 用与运算进位
class Solution {
public:
    int Add(int num1, int num2)
    {

        int tmp = 0;
        while(num2)
        {
            tmp = num2 ^ num1;			  //用于存储num1+num2的值
            num2 = (num2 & num1) << 1;   //用于存储进位值
            num1 = tmp;
        }
        
        return num1;
    }
};

数据结构

图书管理系统,图书用什么结构保存?

迪杰斯特拉算法求最短路径

最小生成树算法

链表反转

深度优先遍历使用栈还是队列实现的?叙述一下遍历的过程。

简述快排算法的思想

  • 快排的思想就是说,选定数组中第一个数参考值 key ,然后用两个指针,分别从前往后,从后往前,把比 key 大的放在后边,比 key 小的放在前边。两个指针相遇之后,把 key 和 这个停止点的值交换。至此完成一趟排序,到这里,比key大的都在key后面,比key小的都在key前面。
    对 key 左边的子组迭代,对key右边的子组迭代,直到子组只含有一个数字为止。

栈的特征:

  • 后进先出,输入顺序与输出顺序相反。只能在栈顶对数据进行插入、删除操作。

强连通图和弱连通图的区别:

  • 强连通图是指在有向图G中,如果对于每一对vi、vj,vi≠vj,从vi到vj和从vj到vi都存在路径,则称G是强连通图。将有向图的所有的有向边替换为无向边,所得到的图称为原图的基图。如果一个有向图的基图是连通图,则有向图是弱连通图。

介绍哈希表:

  • 是根据关键码值而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。

回溯法的基本思想

  • 在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就“回溯”返回,尝试别的路径。八皇后问题就是回溯算法的典型。

操作系统

为什么说操作系统是由中断驱动的?

  • 操作系统是一个众多程序模块的集合,我这些程序模块分为三类。
  • 第一类是系统启动后主动与用户态程序并发执行。而所有并发程序都是有中断驱动的。
  • 第二类是一些通过系统调用指令被动的为用户服务的程序。而系统调用指令的执行是经中断机构处理的。
  • 第三类是隐藏在操作系统内部即不主动运行。也不必直接面对用户态程序的程序。他们有钱两类程序调用。
  • 综上所述,可得操作系统是由中断驱动的。

多线程是怎样实现的:

  • 一个类如果实现了Runnable接口或者继承了Thread类,那么它就是一个多线程类,如果是要实现多线程,还需要重写run()方法,所以run()方法是多线程的入口。

死锁的概念:

  • 死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。原因:竞争不可抢占性资源、进程推进顺序不当。

死锁的条件是什么

  • 互斥条件:
    一个资源每次只能被一个进程使用,即在一段时间内某 资源仅为一个进程所占有。此时若有其他进程请求该资源,则请求进程只能等待。
  • 请求与保持条件:
    进程已经保持了至少一个资源,但又提出了新的资源请求,而该资源 已被其他进程占有,此时请求进程被阻塞,但对自己已获得的资源保持不放。
  • 不可剥夺条件:
    进程所获得的资源在未使用完毕之前,不能被其他进程强行夺走,即只能 由获得该资源的进程自己来释放(只能是主动释放)。
  • 循环等待条件:
    若干进程间形成首尾相接循环等待资源的关系

临界区和临界资源:

  • 访问临界资源的那段代码称为临界区。临界资源是指一次只允许一个进程访问的资源。

数据库

为什么事务非正常结束时会影响数据库数据的正确性,举例说明

  • 事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。如果数据库系统运行中发生故障,有些事务尚未完成就被迫中断,这些未完成事务对数据库所做的修改有一部分已写入物理数据库,这时数据库就处于一种不正确的状态,或者说是不一致的状态。
    例如某工厂的库存管理系统中,要把数量为Q的某种零件从仓库1移到仓库2存放。则可以定义一个事务T,T包括两个操作;Q1=Q1-Q,Q2=Q2+Q。如果T非正常终止时只做了第一个操作,则数据库就处于不一致性状态,库存量无缘无故少了Q

数据库的漏洞:

  • 是数据库攻击的方式之一,SQL注入是最常见的数据库漏洞之一。

数据库索引的作用,有哪两种索引

  • 使用索引可快速访问数据库表中的特定信息。聚簇索引和非聚簇索引。

计算机网络

tcp和udp区别:

  • 前者是面向连接的,提供可靠性;后者是无连接的,不提供可靠性。

TCP/IP有几层:

  • 4层,网络访问层、互联网络、传输层、应用层。

无线通信的区域转换问题:

  • 无线通信主要包括微波通信和卫星通信。信号通过空气传播,直到它到达目标位置为止。在目标位置,另一个天线接收信号,一个接收器将它转换回电流。接收和发送信号都需要天线,天线分为全向天线和定向天线。

FTP

  • 文件传送协议
    网络环境的一项基本应用就是将文件从一台计算机中复制到另一台计算机中。但是由于众多计算机厂商研制出的文件系统多达数百种,且差别很大,所以文件传输会有问题。
    FTP的主要功能是减少或消除在不同操作系统下处理文件的不兼容性。

超文本

  • 指包含指向其他文档的链接的文本

万维网问题:

  1. 如何标记分布在整个互联网上的万维网文档

    • 使用URL即统一资源定位符
    • URL形式的<协议>常用有http(超文本传送协议) ftp
  2. 用什么样的协议来实现万维网上的各种链接

    • HTTP协议定义了浏览器怎样向万维网服务器请求万维网文档,以及服务器怎样把文档传送给浏览器
    • 代理服务器,即万维网告诉缓存
  3. 如何使不同风格的万维网文档能在互联网主机上显示出来

    • 超文本标记语言HTML,就是一种制作万维网页面的标准语言,它消除了不同计算机之间信息交流的障碍
  4. 怎样使用户能够很方便地找到所需信息

    • 信息检索系统。通过搜索软件到互联网上的各网站收集信息,找到一个网站后可以从这个网站再链接到另一个网站,像蜘蛛爬行一样,然后按照一定的规则建立的索引数据库里进行查询。故查询到的信息可能已经过时

html中的h什么:

  • hypertext 超文本

蜂窝网络

  • 定义:把整个网络划分为许多小区,每个小区设置一个基站,负责本小区各个移动站的联络与控制。移动站的发送或接收都必须经过基站完成。
  • 蜂窝网络又称为移动网络,组成主要有以下三部分:移动站,基站子系统,网络子系统。(问题)
  • 1G 2G 3G 4G就是指这个第i代蜂窝移动通信
  • 采用蜂窝形状结构的小区的好处是可以最大限度地进行频率复用。7个小区,每一个小区的基站使用不同的频率,这样,只要相邻小区采用不同的频率(7个频率),就可以组成由大量小区构成的蜂窝无线通信系统。
  • 蜂窝并不是严格的六角形,而是方便描述

蜂窝网络中定位技术:

  • 抵达时间定位(TOA)
    也称基站三角定位,通过测量从运动目标发射机发射出的无线电波到达3个及以上基站接收机的传播时间t。但是这种方法电磁波传播有误差,使得圆相交时不是交于一点,大大降低了定位精度。
  • 角度到达定位(AOA),
    基站接收机利用基站的天线阵列,接收不同阵元的信号相位信息,并测算出运动目标的电波入射角,构成侧位线,通过测量运动目标与两个基站的信号到达角度参数数据,得到的两个侧位线的交点即为目标位置。
  • 抵达时差定位TDOA
    通过测量信号到达任意两个基站的时间差,计算出到两个基站的距离差,构造以基站为焦点、距离差为长轴的双曲线
    TDOA更具有实际意义,这种方法对网络的要求较低,且定位精度较高。

常见的蜂窝网络类型有:

  • GSM网络(有些国家叫pcs-1900)、CDMA网络、3G网络、FDMA、TDMA、PDC、TACS、AMPS等。

两种不同的无线上网方式

  • 手机不接wifi时是通过附近的某个蜂窝移动网络的基站接入到互联网,费用取决于运营商
  • wifi 上网,宽带加路由器

无线局域网

  • 有固定基础设施的
  • 使用IEEE 802.11标准
  • 如蜂窝移动电话
  • 无固定基础设施的

局域网的mac协议

  • 不能使用CSMA/CD协议 无线信道的传输条件特殊,实现硬件花费过大 即使实现了也无法避免碰撞发生 故采用CSMA/CA协议
  • 协议的设计是要尽量减少碰撞发生的概率

信息安全

更多见传送门
信息安全的属性和含义

  • 保密性、端点鉴别、信息的完整性、运行的安全性

对称加密加密与解密

  • 使用的是同样的密钥,所以速度快,但由于需要将密钥在网络传输,所以安全性不高。

非对称加密使用了一对密钥,

  • 公钥与私钥,所以安全性高,但加密与解密速度慢

数字签名的原理和过程:

  • 数字签名就是附加在数据单元上的一些数据,或是对数据单元所作的密码变换。发送报文时,发送方用一个哈希函数从报文文本中生成报文摘要,然后用自己的私人密钥对这个摘要进行加密,这个加密后的摘要将作为报文的数字签名和报文一起发送给接收方,接收方首先用与发送方一样的哈希函数从接收到的原始报文中计算出报文摘要,接着再用发送方的公用密钥来对报文附加的数字签名进行解密,如果这两个摘要相同、那么接收方就能确认该数字签名是发送方的。

针对密码算法常见的攻击方式

  • 大量尝试,获取超级用户的权限来修改密码,绕过密码系统。

黑客利用木马进行网络攻击的步骤

  • 查看IP地址,扫描,实施攻击。

计算机组成原理

cache和寄存器区别:

  • 寄存器是CPU内部的元件,寄存器拥有非常高的读写速度,所以在寄存器之间的数据传送非常快。
  • Cache即高速缓冲存储器,是位于CPU与主存间的一种容量较小但速度很高的存储器。

计算机体系结构:

  • 是程序员所看到的计算机的属性,即计算机的逻辑结构和功能特征,包括其各个硬部件和软部件之间的相互关系。

典型的计算机体系结构

  • 冯-诺依曼结构。

计算机组成有哪些

  • 控制器、运算器、存储器、输入设备、输出设备。

软件工程

软件工程流程(声明周期):

  • 问题定义、可行性研究、需求分析、总体设计、详细设计、编码和单元测试、综合测试、软件维护。

软件成熟度模型(cmm)是什么

  • 是对于软件在定义、实施、度量、控制和改善其软件过程的实践中各个发展阶段的描述。

其他

层次分析法:

  • 将一个复杂的多目标决策问题作为一个系统,将目标分解为多个目标或准则,进而分解为多指标(或准则、约束)的若干层次,通过定性指标模糊量化方法算出层次单排序(权数)和总排序,以作为目标(多指标)、多方案优化决策的系统方法。

linux系统有几种:

  • 多种,比如ubuntu、CentOS、Deepin

蠕虫病毒介绍

  • 蠕虫病毒是一种常见的计算机病毒,是无须计算机使用者干预即可运行的独立程序,它通过不停的获得网络中存在漏洞的计算机上的部分或全部控制权来进行传播
  • 它是利用网络进行复制和传播,传染途径是通过网络和电子邮件。最初的蠕虫病毒定义是因为在DOS环境下,病毒发作时会在屏幕上出现一条类似虫子的东西,胡乱吞吃屏幕上的字母并将其改形。

编译器原理

  • 编译器是将源代码转化成机器码的软件;所以编译的过程则是将源代码转化成机器码的过程,也就是 cpu 可执行的二进制代码。编译的过程大概可以分为三个阶段,这也正是当前主流的编译器架构,即:编译前端(frontEnd)、中间代码优化(optimizer)、编译后端(backEnd)。
  • 编译前端将源代码转化成中间代码。其详细过程包括:预处理、词法分析、语法分析、生成中间代码;
  • 中间代码优化则是对编译器生成的中间代码进行一些优化,最终提供给编译后端;
  • 编译后端根据不同的 cpu 架构,将中间代码汇编,产生汇编代码,最后解析汇编指令,生成目标代码,也就是机器码;
  • 至此,编译器的工作结束

编译分哪几个阶段,各个阶段的作用是什么

  • 预处理
    预处理就是对源程序中的伪指令(以#开头的指令)和特殊符号进行处理的过程。伪指令包含宏定义指令,条件编译指令和头文件包含指令。gcc对C源文件进行预处理后会输出 .i 文件。

    • 主要处理规则如下:
      (1)将所有#define删除,并且展开所有的宏定义。
      (2)处理所有条件编译指令。如#if、#ifdef等
      (3)处理#include预编译指令,将被包含的文件插入该预编译指令的位置。
      (4)删除所有的注释
      (5)添加行号和文件标识,以便于编译时编译器产生调试用的行号信息及编译时产生编译错误或警告时能够显示行号信息
      (6)保留所有的#pragma编译器指令,因为编译器需要使用它们。
  • 编译
    编译就是把预处理完的文件进行一系列词法分析、语法分析、语义分析及优化后生成相应的汇编代码。使用gcc进行编译时,默认情况下,不输出该文件,生成的汇编文件是 .s 文件

  • 汇编
    汇编就是将汇编代码转变为机器可以执行的二进制代码,每一个汇编语句几乎都对应一条机器指令。汇编相对于编译过程比较简单,根据汇编指令和机器指令的对照表一一翻译即可。

  • 链接
    在成功汇编之后,就进入链接阶段。链接主要是为了解决多个文件之间符号引用的问题。编译时编译器只对单个文件进行处理,如果该文件里面需要引用到其他文件中的符号,那么这时在这个文件中该符号的地址是没法确定的,只能等链接器把所有的目标文件链接到一起,才能确定最终的地址,最终生成可执行文件。

内存泄漏:

  • 是指该内存空间使用完毕之后未回收。

你对哪一个算法的印象比较深刻

  • 我对动态规划算法思想印象深刻。动态规划问题的一般形式就是求最值比如说让你求最长递增子序列呀,最小编辑距离等等。既然是要求最值,核心问题是什么呢?求解动态规划的核心问题是穷举。因为要求最值,肯定要把所有可行的答案穷举出来,然后在其中找最值呗。但是动态规划的穷举有点特别,因为这类问题存在「重叠子问题」,如果暴力穷举的话效率会极其低下,所以需要「备忘录」来优化穷举过程,避免不必要的计算。而且,动态规划问题一定会具备「最优子结构」,才能通过子问题的最值得到原问题的最值。找状态转移方程是最难的。

计算机理论的应用有哪些

  • 1.科学计算
    科学计算是指科学和工程中的数值计算。它与理论研究、科学实验一起成 为当代科学研究的三种主要方法。
  • 2.信息管理
    是指非数值形式的数据处理,是指以计算机技术为基础,对大量数据进行加工处理,形成有用的信息。
  • 3.过程控制又称实时控制
    指用计算机及时采集检测数据,按最佳值迅速地对控制对象进行自动控制或自动调节。
  • 4.计算机辅助系统
    指通过人机对话,使计算机辅助人们进行设计、加工、计划和学习等工作。如计算机辅助设计CAD、计算机辅助制造CAM、计算机辅助教育CBE、计算机辅助教学CAI、计算机辅助教学管理CMI .另外还有计算机辅助测试CAT和计算机集成制造系统CIMS等。
  • 5.人工智能人工智能(AI, Artificial Inelligence)
    是研究怎样让计算机做-些通常认为需要智能才能做的事情,又称机器智能,主要研究智能机器所执行的通常是人类智能的有关功能。人工智能是计算机当前和今后相当长的一段时间的重要研究领域。
  • 6.计算机网络与通信
    利用网络通信技术,将不同地理位置的计算机互联,可以实现世界范围内的信息资源共享,并能交互式地交流信息。
  • 7.多媒体技术应用
    系统多媒体系统一般由计算机、 多媒体设备和多媒体应用软件组成。
  • 8.嵌入式系统
    嵌入式系统是以应用为中心,以计算机技术为基础,软硬件能灵活变化以适应所嵌入的应用系统。

你最敬佩的计算机科学家是谁

  • 图灵,英国数学家、逻辑学家,被称为计算机科学之父,人工智能之父。
    人工智能方面,提出著名的“图灵测试”,指出如果第三者无法辨别人类与人工智能机器反应的差别, 则可以论断该机器具备人工智能。
    可计算性理论方面,图灵给计算下了一个完全确定的定义,而且第一次把计算和自动机联系起来,对后世产生了巨大的影响,这种“自动机”后来被人们称为“图灵机”。为现代计算机的逻辑工作方式奠定了基础

本科最喜欢的课程?为什么?

  • 我比较喜欢c++这门课,因为编程能让我第一次感受真切的体会到知识就是生产力,(比如自己写程序解决问题)很有成就感。

java是怎么分配和释放对象的

  • JAVA的对象是如何分配:通过new为每个对象申请内存空间(基本类型除外),所有对象都在堆中分配空间
  • 释放:对象的释放是由垃圾回收机制决定和执行的。
  • java垃圾回收机制:发现无用信息,进行标记,然后使用垃圾回收算法释放内存空间。

欧拉回路:

  • 一个无向图存在欧拉回路的充要条件是当且仅当该图的所有顶点度数都是偶数,且该图是连通图。一个有有向图存在欧拉回路,当且仅当所有顶点的入度等于出度,并且该图是连通图。经过图中每一条边一次且仅一次,并回到起点的回路。

哈密顿回路:

心问题是穷举。因为要求最值,肯定要把所有可行的答案穷举出来,然后在其中找最值呗。但是动态规划的穷举有点特别,因为这类问题存在「重叠子问题」,如果暴力穷举的话效率会极其低下,所以需要「备忘录」来优化穷举过程,避免不必要的计算。而且,动态规划问题一定会具备「最优子结构」,才能通过子问题的最值得到原问题的最值。找状态转移方程是最难的。

计算机理论的应用有哪些

  • 1.科学计算
    科学计算是指科学和工程中的数值计算。它与理论研究、科学实验一起成 为当代科学研究的三种主要方法。
  • 2.信息管理
    是指非数值形式的数据处理,是指以计算机技术为基础,对大量数据进行加工处理,形成有用的信息。
  • 3.过程控制又称实时控制
    指用计算机及时采集检测数据,按最佳值迅速地对控制对象进行自动控制或自动调节。
  • 4.计算机辅助系统
    指通过人机对话,使计算机辅助人们进行设计、加工、计划和学习等工作。如计算机辅助设计CAD、计算机辅助制造CAM、计算机辅助教育CBE、计算机辅助教学CAI、计算机辅助教学管理CMI .另外还有计算机辅助测试CAT和计算机集成制造系统CIMS等。
  • 5.人工智能人工智能(AI, Artificial Inelligence)
    是研究怎样让计算机做-些通常认为需要智能才能做的事情,又称机器智能,主要研究智能机器所执行的通常是人类智能的有关功能。人工智能是计算机当前和今后相当长的一段时间的重要研究领域。
  • 6.计算机网络与通信
    利用网络通信技术,将不同地理位置的计算机互联,可以实现世界范围内的信息资源共享,并能交互式地交流信息。
  • 7.多媒体技术应用
    系统多媒体系统一般由计算机、 多媒体设备和多媒体应用软件组成。
  • 8.嵌入式系统
    嵌入式系统是以应用为中心,以计算机技术为基础,软硬件能灵活变化以适应所嵌入的应用系统。

你最敬佩的计算机科学家是谁

  • 图灵,英国数学家、逻辑学家,被称为计算机科学之父,人工智能之父。
    人工智能方面,提出著名的“图灵测试”,指出如果第三者无法辨别人类与人工智能机器反应的差别, 则可以论断该机器具备人工智能。
    可计算性理论方面,图灵给计算下了一个完全确定的定义,而且第一次把计算和自动机联系起来,对后世产生了巨大的影响,这种“自动机”后来被人们称为“图灵机”。为现代计算机的逻辑工作方式奠定了基础

本科最喜欢的课程?为什么?

  • 我比较喜欢c++这门课,因为编程能让我第一次感受真切的体会到知识就是生产力,(比如自己写程序解决问题)很有成就感。

java是怎么分配和释放对象的

  • JAVA的对象是如何分配:通过new为每个对象申请内存空间(基本类型除外),所有对象都在堆中分配空间
  • 释放:对象的释放是由垃圾回收机制决定和执行的。
  • java垃圾回收机制:发现无用信息,进行标记,然后使用垃圾回收算法释放内存空间。

欧拉回路:

  • 一个无向图存在欧拉回路的充要条件是当且仅当该图的所有顶点度数都是偶数,且该图是连通图。一个有有向图存在欧拉回路,当且仅当所有顶点的入度等于出度,并且该图是连通图。经过图中每一条边一次且仅一次,并回到起点的回路。

哈密顿回路:

  • 从图中的任意一点出发,路途中经过图中每一个结点当且仅当一次。
  • 3
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王蒟蒻

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值