计算机笔试基础题-收藏1

一、进程间通信:
 1.管道(pipe)及有名管道(named pipe)
 2.信号(signal)
 3.消息队列(message queue)
 4.共享内存(shared memory)
 5.信号量(semaphore)
 6.套接字(socket)
# 管道( pipe ):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。 
# 有名管道 (named pipe) : 有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。 
# 信号量( semophore ) : 信号量是一个计数器,可以用来控制多个进程对共享资源的访问。它常作为一种锁机制,防止某进程正在访问共享资源时,其他进程也访问该资源。因此,主要作为进程间以及同一进程内不同线程之间的同步手段。 
# 消息队列( message queue ) : 消息队列是由消息的链表,存放在内核中并由消息队列标识符标识。消息队列克服了信号传递信息少、管道只能承载无格式字节流以及缓冲区大小受限等缺点。 
# 信号 ( signal ) : 信号是一种比较复杂的通信方式,用于通知接收进程某个事件已经发生。 
# 共享内存( shared memory ) :共享内存就是映射一段能被其他进程所访问的内存,这段共享内存由一个进程创建,但多个进程都可以访问。共享内存是最快的 IPC 方式,它是针对其他进程间通信方式运行效率低而专门设计的。它往往与其他通信机制,如信号两,配合使用,来实现进程间的同步和通信。 
# 套接字( socket ) : 套解口也是一种进程间通信机制,与其他通信机制不同的是,它可用于不同及其间的进程通信。

二、c++的fork()函数
 一个进程,包括代码、数据和分配给进程的资源。fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可以做完全相同的事,但如果初始参数或者传入的变量不同,两个进程也可以做不同的事。
一个进程调用fork()函数后,系统先给新的进程分配资源,例如存储数据和代码的空间。然后把原来的进程的所有值都复制到新的新进程中,只有少数值与原来的进程的值不同。相当于克隆了一个自己。
fork调用的一个奇妙之处就是它仅仅被调用一次,却能够返回两次,它可能有三种不同的返回值:
    1)在父进程中,fork返回新创建子进程的进程ID;
    2)在子进程中,fork返回0;
    3)如果出现错误,fork返回-1;
在fork函数执行完毕后,如果创建新进程成功,则出现两个进程,一个是子进程,一个是父进程。在子进程中,fork函数返回0,在父进程中,fork返回新创建子进程的进程ID。我们可以通过fork返回的值来判断当前进程是子进程还是父进程。
题:下面的程序执行输出几个hello?
#include<stdio.h>
#include <unistd.h>
int main( ) {
    fork( );
    fork( );
    fork( );
    printf(“hello\n”);
    return 0;
}
正确答案: 8
这个题目是这样的:
fork( );
fork( );
fork( );
三条创建子进程的语句,第一句fork()之后,就存在两个进程了,
两个进程继续往下执行,同理 第二个fork()之后,就存在2*2=4个进程了,
再继续往下,到第三个fork()之后,程序当中就已经存在2*4=8个进程了,每个进程输出一句hello

三、数据库事务(Database Transaction) ,是指作为单个逻辑工作单元执行的一系列操作。 事务处理可以确保除非事务性单元内的所有操作都成功完成,否则不会永久更新面向数据的资源。通过将一组相关操作组合为一个要么全部成功要么全部失败的单元,可以简化错误恢复并使应用程序更加可靠。一个逻辑工作单元要成为事务,必须满足所谓的ACID(原子性、一致性、隔离性和持久性)属性。

四、版本控制工具主要有三个:CVS、SVN,Git.
    参考:http://www.cnblogs.com/sujz/archive/2011/05/12/2044379.html

五、假设一段公路上,1小时内有汽车经过的概率为96%,那么,30分钟内有汽车经过的概率为?
1个小时内有车通过的概率是0.96,也就是说这个一个小时内没有车通过的概率是0.04。
题目,故意给出1个小时的单位来迷惑我们。其实,我们可以把单位分解为30分钟。
我是这么分解的:如果一个小时都没出现任何车辆,就相当于在连续的两个30分钟里面都没有出现任何车辆,
这里每半个小时是否有车出现绝对是独立,那么我们可以设30分钟内没有车出现的概率为p,可以列出如下公式:
x² = 0.04 解得 x=0.2 就表示30分钟内出现车辆和不出现车辆是对立事件,那么出现车辆的概率就是0.8.
 
六、以下设计模式中,哪一项不属于结构性模式?
引出的知识点:
1.创建型模式
 
前面讲过,社会化的分工越来越细,自然在软件设计方面也是如此,因此对象的创建和对象的使用分开也就成为了必然趋势。因为对象的创建会消耗掉系统的很多资源,所以单独对对象的创建进行研究,
从而能够高效地创建对象就是创建型模式要探讨的问题。这里有6个具体的创建型模式可供研究,它们分别是:
 
简单工厂模式(Simple Factory);
 
工厂方法模式(Factory Method);
 
抽象工厂模式(Abstract Factory);
 
创建者模式(Builder);
 
原型模式(Prototype);
 
单例模式(Singleton)。
 
说明:严格来说,简单工厂模式不是GoF总结出来的23种设计模式之一。
 
2.结构型模式
 
在解决了对象的创建问题之后,对象的组成以及对象之间的依赖关系就成了开发人员关注的焦点,因为如何设计对象的结构、继承和依赖关系会影响到后续程序的维护性、代码的健壮性、耦合性等。
对象结构的设计很容易体现出设计人员水平的高低,这里有7个具体的结构型模式可供研究,它们分别是:
 
外观模式(Facade);
 
适配器模式(Adapter);
 
代理模式(Proxy);
 
装饰模式(Decorator);
 
桥模式(Bridge);
 
组合模式(Composite);
 
享元模式(Flyweight)。
 
3.行为型模式
 
在对象的结构和对象的创建问题都解决了之后,就剩下对象的行为问题了,如果对象的行为设计的好,那么对象的行为就会更清晰,它们之间的协作效率就会提高,
这里有11个具体的行为型模式可供研究,它们分别是:
 
模板方法模式(Template Method);
 
观察者模式(Observer);
 
状态模式(State);
 
策略模式(Strategy);
 
职责链模式(Chain of Responsibility);
 
命令模式(Command);
 
访问者模式(Visitor);
 
调停者模式(Mediator);
 
备忘录模式(Memento);
 
迭代器模式(Iterator);
 
解释器模式(Interpreter)。

七、如果某系统15*4=112成立,则系统采用的是几进制?
假设采用的是x进制,根据等式有:
(1*x1+5*x0)*4*x0= 1*x2+1*x1+2*x0
解得x=-3或x=6
八、
产生死锁的原因主要是:
(1) 因为系统资源不足。
(2) 进程运行推进的顺序不合适。
(3) 资源分配不当等。
如果系统资源充足,进程的资源请求都能够得到满足,死锁出现的可能性就很低,否则
就会因争夺有限的资源而陷入死锁。其次,进程运行推进顺序与速度不同,也可能产生死锁。
产生死锁的四个必要条件:
(1) 互斥条件:一个资源每次只能被一个进程使用。
(2) 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。
(3) 不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。
(4) 循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。
这四个条件是死锁的必要条件,只要系统发生死锁,这些条件必然成立,而只要上述条件之
一不满足,就不会发生死锁。
死锁的解除与预防:
理解了死锁的原因,尤其是产生死锁的四个必要条件,就可以最大可能地避免、预防和
解除死锁。所以,在系统设计、进程调度等方面注意如何不让这四个必要条件成立,如何确
定资源的合理分配算法,避免进程永久占据系统资源。此外,也要防止进程在处于等待状态
的情况下占用资源。因此,对资源的分配要给予合理的规划。
九、
  • 分布式中,一般要求的是CAP,分别为一致性,可用性,可分区性
    因为要在分布式系统中,所以我们优先保障可分区性,即P,此时C和A只能保证一个:
    如果保证了一致性,则我们的每次操作,都要求完全一致后才成功,这会严重影响可用性,
    如果保证了可用性,则无法保证一致性。 
    好像分布式系统中最常用的是最终一致性。
  • 分布式领域CAP理论
    Consistency(一致性), 数据一致更新,所有数据变动都是同步的
    Availability(可用性), 好的响应性能
    Partition tolerance(分区容错性) 可靠性
    定理:任何分布式 系统只可同时满足二点,没法三者兼顾。
    忠告:架构师不要将精力浪费在如何设计能满足三者的完美分布式 系统,而是应该进行取舍。


     

    十、

    1、RTT(Round-Trip Time): 往返时延:在计算机网络中它是一个重要的性能指标,表示从发送端发送数据开始,到发送端收到来自接收端的确认(接收端收到数据后便立即发送确认),总共经历的时延。
    2、网络延迟:是指各式各样的数据在 网络介质 中通过 网络协议 (如TCP/IP)进行传输, 在 传输介质 中传输所用的时间,即从 报文 开始进入网络到它开始离开网络之间的时间。
    十一、书架一排有5个格子。现在有20本书,编号从1到20。要求20本书要摆放在同一排里,并且从左到右编号依次递减;每个格子至少有一本书;并且编号7,8,9的书籍必须在同一个格子里面。问,一共有多少种可能的摆放方法?
    法一:
    • 把7,8,9看成一本书因此共有18本书,要保证每个格子中都有书,因此可以在1到18之间的空隙中选择四个位置
      组合数 =2380
       
    • 两点:
      一 把7,8,9看成整体一本书
      二 反向思维,把书放到格子想成5个格子的4个挡板在18书之间移动即可
      故C(17,4)
    法二:7,8,9看成一本书,共有18本书,17个空隙,放入4个隔板(a,b,c,d)即分成了5份。共有17*16*15*14=57120种放法。题目又要求20本书从左到右编号依次递减,所以需保证隔板的顺序从左到右依次是a-b-c-d,
    而实际上隔板的排列共有4*3*2=24种,a-b-c-d是其中的一种,所以需要57120/24=2380 
    十二、已知一个线性表(38,25,74,63,52,48),假定采用散列函数h(key) = key%7 计算散列地址,并散列存储在散列表A【0....6】中,若采用线性探测方法解决冲突,则在该散列表上进行等概率成功查找的平均查找长度为?
    平均查找长度=总的查找次数/元素数
    总的查找次数: 38%7=3 (第1次出现3,无冲突,放在位置3,查找次数为1)
    25%7=4(第1次出现4,无冲突,放在位置4,查找次数为1)
    74%7=4(第2次出现4,有冲突,放在位置5,查找次数为2)
    63%7=0(第1次出现0,无冲突,放在位置0,查找次数为1)
    52%7=3(第2次出现3,有冲突,发现冲突3,4,5,故只能放到6,查找次数为4)
    48%7=6 (第1次出现6,有冲突,发现冲突6,0,故只能放到1,查找次数为3)
    1+1+2+1+4+3=12
    元素数=6
    所以:平均查找长度=12/6=2
    十三、用二进制来编码字符串“xyzwxyxx”,需要能够根据编码解码回原来的字符串,则我们最少需要多长的二进制字符串?
    xyzwxyxx:x:4位、y:2位、z:1位、w:1位
    用4、2、1、1构造哈夫曼树
     
    哈夫曼编码的问题 x出现4次 y2次 w1次 z1次
    x用0
    y用10
    w用110 
    z用111
    w和z的编码方案可以互换
    length=1*4+2*2+1*3+1*3=14
    十四、
    • 不稳定的排序算法有:快、希、选、堆。(记忆:找到工作就可以“快些选一堆”美女来玩了(并不能))
      稳定的排序算法:归并,插入排序
    • 不稳定的排序算法:选择排序 (5,7,5,3)3和5交换之后,两个5的相对顺序发
                                                      生了变化)
                                      shell排序  (1, 5, 5, 2,3, 7) 间隔序列为(3, 1), 3的时候
                                                      (1,5,7)(5,2,3)), 在间隔>1的时候会出现不
                                                         稳定
                                      快速排序    (3, 5, 5, 4 ,2, 1)
                                      堆排序       构造堆的时候时稳定的,但是在根节点与尾节点交
                                                       换之后,根节点成为了序列中最后一个,如果字
                                                       节点之一与根节点相同,则其不稳定

    • 十五、

      HTTPS那些事 用java实现HTTPS工作原理

      HTTP协议通常承载于TCP协议之上,有时也承载 于TLS( 安全传输层协议 或 SSL( 安全套接层协议Secure Sockets Layer  协议层之上,这个时候,就成了我们常说的HTTPS

      SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层对网络连接进行加密。


       十六、

      网络层:IP协议、ICMP协议、ARP协议、RARP协议。

      传输层:UDP协议、TCP协议。

      应用层:FTP(文件传送协议)、Telenet(远程登录协议)、DNS(域名解析协议)、SMTP(邮件传送协议),POP3协议(邮局协议),HTTP协议, SNMP协议, TFTP。

       

      物理层:RJ45、CLOCK、IEEE802.3 
      数据链路:PPP、FR、HDLC、VLAN、MAC 
      网络层:IP、ICMP、ARP、RARP、OSPF、IPX、RIP、IGRP
      传输层:TCP、UDP、SPX
      会话层:NFS、SQL、NETBIOS、RPC
      表示层:JPEG、MPEG、ASII
      应用层:FTP、DNS、Telnet、SMTP、HTTP、WWW、NFS
       
      SMTP:简单邮件传输协议,使用TCP连接,端口号为25,
      SNMP:简单网络管理协议,使用UDP 161端口

       

      十七、
      SQL:
      DML(data manipulation language)是数据操纵语言:它们是select 、UPDATE、INSERT、DELETE,就象它的名字一样,这4条命令是用来对数据库里的数据进行操作的语言,增删查改。 
      DDL(data definition language)是数据定义语言:DDL比DML要多,主要的命令有CREATE、ALTER、DROP等,DDL主要是用在定义或改变表(TABLE)的结构,数据类型,表之间的链接和约束等初始化工作上,他们大多在建立表时使用。
      DCL(DataControlLanguage)是数据库控制语言:是用来设置或更改数据库用户或角色权限的语句,包括(grant,deny,revoke等)语句。

      
       十八、HTTP
      Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE。URL全称是资源描述符,我们可以这样认为:一个URL地址,它用于描述一个网络上的资源,而HTTP中的GET,POST,PUT,DELETE就对应着对这个资源的 查 , 改, 增 , 删 4个操作。到这里,大家应该有个大概的了解了,GET一般用于 获取/查询 资源信息,而POST一般用于 更新 资源信息。

      操作方式

      数据位置

      明文密文

      数据安全

      长度限制

      应用场景

      GET

      HTTP包头

      明文

      不安全

      长度较小

      查询数据

      POST

      HTTP正文

      可明可密

      安全

      支持较大数据传输

      修改数据


      十九、jvm
      两个最基本的java回收算法:复制算法和标记清理算法
       
      1-复制算法:两个区域A和B,初始对象在A,继续存活的对象被转移到B。此为新生代最常用的算法
      2-标记清理:一块区域,标记要回收的对象,然后回收,一定会出现碎片,那么引出
      标记-整理算法:多了碎片整理,整理出更大的内存放更大的对象
      两个概念:新生代和年老代
      新生代:初始对象,生命周期短的
      永久代:长时间存在的对象
      整个java的垃圾回收是新生代和年老代的协作,这种叫做分代回收。
      P.S:Serial New收集器是针对新生代的收集器,采用的是复制算法
      Parallel New(并行)收集器,新生代采用复制算法,老年代采用标记整理
      Parallel Scavenge(并行)收集器,针对新生代,采用复制收集算法
      Serial Old(串行)收集器,新生代采用复制,老年代采用标记整理
      Parallel Old(并行)收集器,针对老年代,标记整理
      CMS收集器,基于标记清理
      G1收集器:整体上是基于标记 整理 ,局部采用复制
       
      综上:新生代基本采用复制算法,老年代采用标记整理算法。cms采用标记清理。


      二十、上网的时候发现网页不能访问,QQ使用正常,出现此问题最可能的原因是
      QQ和使用的是传输层的UDP协议,网页访问的 http 协议是建立在 TCP 协议上的,因此QQ正常可以排除传输层以下的所有原因。因此,A,C,D不对,选B项。
      所有网页均打不开的可能原因是DNS服务器配错了,或者是指定DNS服务器故障等原因。若是特定网页打不开,可能是要访问的域名被DNS劫持、DNS污染等。
      A 网线问题
      B DNS问题
      C IP地址冲突
      D 网关错误

      
      


posted on 2017-09-14 17:33  乐学习  阅读(372)  评论(0编辑  收藏  举报

导航