您的位置:首页 > 职场人生

H面试的基础知识(1):一些基础知识的总结

2013-08-12 23:20 441 查看
1.链表和数组的比较

链表:链表可以支持动态内存大小,插入和删除的速度快,空间开销大,不支持随机访问;
数组:数组的大小不能动态扩充,支持随机访问,数组在内存中逐个存放;

2.C++中为什么用模板类。

(1)可用来创建动态增长和减小的数据结构

(2)它是类型无关的,因此具有很高的可复用性。

(3)它在编译时而不是运行时检查数据类型,保证了类型安全

(4)它是平台无关的,可移植性好

(5)可用于基本数据类型

3.程序什么时候应该使用线程,什么时候单线程效率高。

(1)耗时的操作使用线程,提高应用程序响应

(2)并行操作时使用线程,如C/S架构的服务器端并发线程响应用户的请求。

(3)多CPU系统中,使用线程提高CPU利用率

(4)改善程序结构。一个既长又复杂的进程可以考虑分为多个线程,成为几个独立或半独
立的运行部分,这样的程序会利于理解和修改。

4.群硕智力题:

有101个硬币,其中有一个是假币,假币重量和真币不同。现有一个无砝码的天平,只允许称2次。请你告诉我,假币比真币重还是轻?

答案:平分成50,称一次;取重(轻)的50个出来,再平分称一次,如果相等,那么假币轻(重)了;如果不相等,那么重(轻)了;

5.(操作系统)
(1) 说明进程的三个基本状态之间转换的原因
a.处于就绪状态的进程,当进程调度程序为之分配了处理机后,进程便由就绪状态转为执行状态;
b.当前进程因发生某事件无法执行,如访问了已经被占用的临界资源,就会由执行态转为阻塞态;
c.当前进程的时间片用完而暂停执行或者有更高优先级的进程到来,该进程便由执行态转为就绪态;
(2) 什么是死锁?产生死锁的原因是什么?必要条件是什么?
死锁是多个进程竞争资源造成的,若无外力的作用,这些进程将永远不能向前推进;
产生死锁的原因:一是竞争资源;二是进程推进顺序非法;
产生死锁的必要条件:互斥条件;请求和保持条件;不剥夺条件;环路等待条件
(3) 创建进程的必要步骤
a.建立一个PCB(进程控制块);
b.为进程分配内存等必要资源;
c.将PCB接入进程就绪队列;
(4) 进程间的互斥
多个进程需要使用临界资源,获得资源的进程可以运行,没有获得资源的进程必须等待,进程间的这种关系叫互斥
可以采用信号量和P,V操作来实现进程间的互斥
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: