好文档 - 专业文书写作范文服务资料分享网站

2020年中兴精选50面试题及答案

天下 分享 时间: 加入收藏 我要投稿 点赞

2020年中兴精选50面试题及答案

1. 优先队列时间复杂度。

优先级队列用堆实现,只是需要构建初始堆,这个时间复杂度是0(n)插入和删除只是 修改了堆顶和堆底,不需要所有的都排序,只是需要再次调整好堆,因此时间复杂度都 是0(log2n).

2. 堆的维护时间复杂度。

假如有N个节点,那么高度为H=logN,最后一层每个父节点最多只需要下调1次,倒 数第二层最多只需要下调2次,顶点最多需要下调H次,而最后一层父节点共有2YH-1) 个,倒数第二层公有2、(H-2),顶点只有1(2八。)个,所以总共的时间复杂度为s = 1 * 2A(H-1) + 2 *

2A(H-2) + ... + (H-l) * 2A1 + H * 2A0 将 H 代入后 s= 2N - 2 - 10g2(N),近似的时间复杂度就是C(N)o

3. CPU是怎么执行指令的?

计算机每执行一条指令都可分为三个阶段进行。即职指令——分析指令——执行指 令。 取指令的任务是:根据程序计数器PC中的值从程序存储器读出现行指令,送到指令寄 存器。 分析指令阶段的任务是:将指令寄存器中的指令操作码取出后进行译码,分析其指令性 质。如指令要求操作数,则寻找操作数地址。

计算机执行程序的过程实际上就是逐条指令地重复上述操作过程,直至谒到停机指令可 循环等待指令。

—般计算机进行工作时,首先要通过外部没备把程序和数据通过输入接口电路和数据总 线送入到存储器,然后逐条取出执行。但革片机中的程序一般事先我们都已通过写入器 固化在片内或片外程序存储器中。因而一开机即可执行指令。 下面我们将举个实例来说明指令的执行E程:

幵机时,程序计算器PC变为。。。。川然活单片机在时序电路作用下自动进入执行程序 过程。执行过程实际上就是取出指令(取出存储器中事先存放的指令阶段)和执行指令 (分析和执行指令)的循环过程。

例如执行指令:MOV A,#0E0H,其机器码为“74H EOH”,该指令的功能是把操作数 E0H送入累加器,

0000H单元中已存放74H, 0001H单元中已存放EOH。当单片机开始运行时,首先是进 入

取指阶段,其次序是:

1程序计数器的内容(这时是0000H)送到地址寄存器; 2程序计数器的内容自动加1 (变为。。。川);

3地址寄存器的内容(。。。纺)通过内部地址总线送到存储器,以存储器中地址译码电

跟,使地址为。。。釦的单元被选中;

4 CPU使读控制线有效;

5在读命令控制下被选中存储器单元的内容(此时应为74H)送到内部数据总线上,因 为是

取指阶段,所以该内容通过数据总绒被送到指令寄存器。至此,取指阶段完成,进 入译码分析和执行指令阶段。

由于本次进入指令寄存器中的内容是74H (操作码),以译码器译码后单片机就会知道 该指令是要将一个数送到A累加器,而该数是在这个代码的下一个存储单元。所以,执 行该指令还必须把数据(E0H)从存储器中取出送到CPU,即还要在存储器中取第二个 字节。其过程与取指阶段很相似,只是此时PC已为。。。1田指令译码器结合时序部件, 产生74H操作码的微操作系列,使数字E0H从。001H单元取出。因为指令是要求把取 得的数送到A累加器,所以取出的数字经内部数据总线进入A累加器,而不是进入指 令寄存器。至此,一条指令的执行完毕。单片机中PC=\在CPU每次向存 储器取指或取数时自动加

1,单片机又进入下一取指阶段。这一过程一直重复下去,直 至收到暫停指令或循环等待指令

暂停。

CPU就是这样一条一条地执行指令,完成所有规定。

4. 什么函数不能声明为虚函数?

常见的不能声明为虚函数的有普通函数(非成员函数)、静态成员函数、内联成员函数、 构造函数和友元函数。以下将分别对这只种情况进行分析。

1) 普通函数(非成员函数)只能overload (重载),不能被override (覆盖),不

能 被声明为虚函数,因此,编译器会在编译时绑定函数。

2) 静态成员函数不能是虚函数,因为静态成员函数对于每个类来说只有一份代码,所 有的

对象都共享这一份代码,它不归某个对象所有,所以,它也没有动态绑定的必要性。

3) 内联成员函数不能是虚函数,因为内联函数本身就是为了在代码中直接展开,减少 函数

调用花费的代价而设立的,而虚函数至为了在继承后对象能够准确地执行自己的动 作,这是不可能统一的。再说,inline函数在编译时被展开,虚函数在运行时才能动 态地绑定函数。

4) 构造函数之所以不能是虚函数,因为或I造函数本来是为了明确初始化对象成员才产 生

的,然而虚函数主要是为了在不完全了解细节的情况下也能正确处理对象。另外,虚 函数是在不同类型的对象产生不同的动作,现在对象还没有产生,如何使用虚函数来完 成你想完成的动作?

5) 友元函数。C++语言不支持友元函数钓继承,对于没有继承特性的函数没有虚函数 的说

法。友元函数不属于类的成员函数,不能被继承。所以,友元函数不能是虚函数。

5. 在函数内定义一个字符数组,用gets函数输入字符串的

时候,如果输入越界,为什么程序会崩溃?

因为gets无法截断数组越界部分,会将所有输入都写入内存,这样越界部分就可能覆 盖其他内容,造成程序崩溃。

6. 线上CPU爆高,请问你如何找到问题所在。

1、 top命令:Linux命令。可以查看实时的CPU使用情况。也可以查看最近一段时间 的CPU

使用情况。

2、 PS命令:Linux命令。强大的进程状态监控命令。可以查看进程以及进程中线程的 当前CPU使用情况。属于当前状态的采栏数据。

3、 jstack: Java提供的命令。可以查看某个进程的当前线程栈运行情况。根据这个 命令的

输出可以定位某个进程的所有线程的当前运行状态、运行代码,以及是否死锁等

4、pstack: Linux命令。可以查看某个进程的当前线程栈运行情况。

7. 从innodb的索引结构分析,为什么索引的key长度不 能太

长?

key太长会导致一个页当中能够存放的key的数目变少,间接导致索引树的页数目变 多,索

引层次増加,从而影响整体查询变更的效率。

8. MySQL的数据如何恢复到任意时间点?

恢复到任意时间点以定时的做全量备份,以及备份増量的binlog日志为前提。恢复 到任意时间点首先将全量备份恢复之后,再此基础上回放増加的binlog直至指定的 时间点。

9. 曹操南下攻打刘备,刘备派关羽守锦州,关羽派张飞去守

城 门。刘备又派诸葛亮去向孙权求援。孙权派兵攻打曹操.请画 岀UML图.

10. 信号的生命周期?

信号产生-》信号在进程中注册-》信号在进程中的注销-》执行信号处理函数

11. 信号的产生方式?

(1) (2) (3) (4)

当用户按某些终端键时产生信号 硬件异常产生信号【内存非法访问】 软件异常产生信号【某一个条件达到时】

调用kill函数产生信号【接受和发送的所有者必须相同,或者发送的进程所有 者

必须为超级用户】(5)运行kill命令产生信号

12. 信号处理方式?

(1) (2) (3)

执行默认处理方式 忽略处理

执行用户自定义的函数

13. 红黑树如何插入和删除的?

插入:

(1) 如果父节点为黑色,直接插入不处理

(2) 如果父节点为红色,叔叔节点为红色,则父节点和叔叔节点变为黑色,祖先节 点

变为红色,将节点操作转换为祖先节点

(3) 如果当前节点为父亲节点的右节点,则以父亲结点为中心左旋操作

(4) 如果当前节点为父亲节点的左节点,则父亲节点变为黑色,祖先节点变为红色, 以

祖先节点为中心右旋操作 删除:

(1) 先按照排序二叉树的方法,删除当前节点,如果需要转移即转移到下一个节点 (2) 当前节点,必定为这样的情况:没有左子树。

(3) 删除为红色节点,不需要处理,直接按照删除二叉树节点一样

(4) 如果兄弟节点为黑色,兄弟节点的两个子节点为黑色,则将兄弟节点变为红色, 将

着色转移到父亲节点

(5) 如果兄弟节点为红色,将兄弟节点设为黑色,父亲结点设为红色节点,对父亲 结

点进行左旋操作

(6) 如果兄弟节点为黑色,左孩子为红色,右孩子为黑色,对兄弟节点进行右旋操 作 (7) 如果兄弟节点为黑色,右孩子为红色,则将父亲节点的颜色赋值给兄弟节点, 将

父亲节点设置为黑色,将兄弟节点的右孩子设为黑色,对父亲节点进行左旋

14. 输入某班级学生的姓名、分数,并对分数进行降幕排列 并输岀;

Sinclude using namespace std; struct Node {

char name[100]; int score; Node *next;

void show(Node *head) {

while(head) {

cout<name?\head = head->next;

2020年中兴精选50面试题及答案

2020年中兴精选50面试题及答案1.优先队列时间复杂度。优先级队列用堆实现,只是需要构建初始堆,这个时间复杂度是0(n)插入和删除只是修改了堆顶和堆底,不需要所有的都排序,只是需要再次调整好堆,因此时间复杂度都是0(log2n).2.堆的维护时间复杂度。假如有N个节点,那么高度为H=logN,最后一层每
推荐度:
点击下载文档文档为doc格式
4ux876kwwl47le14lopx1jxus0hl5300vug
领取福利

微信扫码领取福利

微信扫码分享