笔试题

1、五笔的字典序编码与解码

2、哈希表(等概率情况下)查找成功与查找不成功的平均查找长度


3、视图的可更新性和 视图中查询的定义有关,以下类型的视图是不可更新的
  1. 包含以下关键字的SQL语句:  聚合函数(SUM, MIN. MAX, COUNT等)  DISTINCT,     GROUP BY, HAVING, UNION或者UNION ALL
  2. 常量视图
  3. SELECT中包含子查询
  4. FROM一个不能更新的视图
  5. WHERE的子查询引用了FROM中的表

4、爸爸去哪儿中的3对父子站成一排,各自父子之间不能相邻,比如石头不能和郭涛挨着,以此类推,共有几种站法?

法一

第一个位置有6种选择,假设为A;

 第二个位置有4种选择(因为不能为a),假设为B;
第三个位置需要分类讨论一下,如果为a,则可以确定后面三位只有两种选择了,如果不为a,第三个位置有两种选择(D和d),假设为D,进而再确定后面三个位置的选择数。

法二

容斥原理,6个人全排列-一对父子相邻+两对父子相邻-三队父子相邻  
  A(6,6)-C(3,1)*A(2,2)*A(5,5) + C(3,2)*A(4,4)*A(2,2)*A(2,2) -
  A(3,3)*A(2,2)*A(2,2)*A(2,2) = 240
  那么结果是:6*4*(2+2*4)=240。


5、关系模式R中的属性全是主属性,则R的最高范式必定是第二范式

数据库原理——主属性,属性,主码,候选码

[数据库] 第一范式、第二范式、第三范式、BC范式

这样如R(X,Y,Z),  F={Y->Z, XZ->Y}. XY和XZ都可以做为候选码,即R中的属性全为主属性,且不存在非主属性对码的传递函数依赖,因此R属于3NF.
BCNF的定义是:关系模式R<U,F属于1NF.若Y函数依赖于X且Y不包含于X时X必含有码,则R<U,F属于BCNF.即若每一个决定因素都包含码,则R属于BCNF.
BCNF中有一条性质,是所有的主属性对每一个不包含它的码,是完全函数依赖.这样当选择XY做为主码时,Z就对XY部分函数依赖了(因为Z函数依赖于Y),因此R不属于BCNF


6、

main()
{
   int a[5]={1,2,3,4,5};
   int *p=(int *)(&a+1);//和int *p = (int*)a区别
   printf("%d",*(p-1));
}
//输出5

选择c,&a表示一个指向大小为5数组的指针,那么&a+1就是表示一个指向大小为5的下一个数组的指针,也就是数组a最后一个元素的下一个位置,那么int*p=(int*)(&a+1)进行强制类型转换,将指向数组的指针转换为指向第二个数组中首元素的指针,所以p-1则是指向第一个数组中最后一个元素的指针,所以输出是5


7、

int main()
{
   int i=10;
   int j=1;
   const int *p1;//(1)
   int const *p2=&i; //(2)
   p2=&j;//(3)
   int *const p3=&i;//(4)
   *p3=20;//(5)
   *p2=30;//(6)
   p3=&j;//(7)
return 0;
}
(6)、(7)错误

8、22.在一个单CPU的处理机中,有P1,P3,P5三个作业,有两个IO设备IO1,IO2,并且能够实现抢先式多任务并行工作的多道程序环境中,投入运行优先级由高到低P5,P1,P3三个作业,他们使用设备的先后顺序和占用设备的时间分别为:P1:IO2(10ms) CPU(10ms) IO1(30ms)CPU(10ms)P3:IO1(30ms) CPU(10ms) IO2(30ms)CPU(10ms)P5:CPU(20ms) IO1(30ms) CPU(10ms) IO2(15ms)忽略其他的时间损耗,3个作业投入到全部完成的情况下。请问下列哪些选项为IO2的设备利用率?

点击打开链接


8、union大端小端

用union验证机器为大端还是小端

9、作业归还分区,要调整空闲区表,把空闲区表调整成空闲区长度递减的次序排列登记。可变分区分配方式下,当收回主存时,应检查是否有与归还区相邻的空闲区,若有,则应合并成一个空闲区。
相邻可能有上邻空闲区、下邻空闲区、既上邻又下邻空闲区、既无上邻又无下邻空闲区四种情况。
有上邻空闲区,但无下邻空闲区.只修改上邻空闲区长度(为收回的空闲区长度与原上邻区长度之和),空闲区数不变
无下邻空闲区,但有下邻空闲区.改记录这个下邻空闲区记录的地址为收回空闲区的地址,长度为下邻空闲区的长度和收回空闲区的长度,空闲区数不变
有上邻空闲区,也有下邻空闲区.改记录上邻区记录的长度(为上邻区长度、下邻区长度和收回区长度之和),再把下邻区记录的标志位改为空,即空闲区数-1
无上邻空闲区,也无下邻空闲区.那么找一个标志位为空的记录,记下该回收区的起始地址和长度,且改写相应的标志位为未分配,表明该登记栏中指示了一个空闲区。 空闲区数+1


10、某一速率为100M的交换机有20个端口,其一个端口上连着一台笔记本电脑,此电脑从迅雷上下载一部1G的电影需要的时间可能是多久?


11、new/delete malloc/free

double *a=new double[1];
//.... 
delete a;//a为int*,正确,若为A*不正确
基本类型数组来说,delete a和delete []a的效果是一样的。如果,a是一个自定义对象的数组,那么只能用delete []a。


12、数据完整性:主键不可重复不可为空,外键可以,并且可以为空。

13、工程师M发明了一种游戏:M将一个小球随机放入完全相同的三个盒子中的某一个,玩家选中装有球的盒子即获胜;开始时M会让玩家选择一个盒子(选择任何一个获胜概率均为1/3);玩家做出选择后,M会打开没有被选择的两个盒子中的一个空盒,此时M会询问玩家是否更改选择(可以坚持第一次选择,也可以选择另一个没有打开的盒子),下列叙述正确的有()。

1. 不修改选择并获胜,表示第一次已经选对。概率为:1/3 * 1/2 = 1/6
2. 修改选择并 获胜,表示第一次选错。概率为:2/3 * 1/2 = 2/6
       综上可知,第二次选择中修改选择后获胜的概率较大。


14、1)程序直接访问方式跟循环检测IO方式,应该是一个意思吧,是最古老的方式。CPU和IO串行,每读一个字节(或字),CPU都需要不断检测状态寄存器的busy标志,当busy=1时,表示IO还没完成;当busy=0时,表示IO完成。此时读取一个字的过程才结束,接着读取下一个字。
(2)中断控制方式:循环检测先进些,IO设备和CPU可以并行工作,只有在开始IO和结束IO时,才需要CPU。但每次只能读取一个字。
(3)DMA方式:Direct Memory Access,直接存储器访问,比中断先进的地方是每次可以读取一个块,而不是一个字。
(4)通道方式:比DMA先进的地方是,每次可以处理多个块,而不只是一个块。


#pragma pack(2)//填充为2的整数倍
class BU
{
    int number;//4
    union UBffer
    {
        char buffer[13];
        int number;
    }ubuf;//13+填充1
    void foo(){}//0
    typedef char*(*f)(void*);//0
    enum{hdd,ssd,blueray}disk;//相当于int,4
}bu;
4+13+1+0+0+4=22


15、VLAN(Virtual Local Area Network)的中文名为"虚拟局域网"。
虚拟局域网(VLAN)是一组逻辑上的设备和用户,这些设备和用户并不受物理位置的限制,可以根据功能、部门及应用等因素将它们组织起来,相互之间的通信就好像它们在同一个网段中一样,由此得名虚拟局域网。VLAN是一种比较新的技术,工作在OSI参考模型的第2层和第3层,一个VLAN就是一个广播域,VLAN之间的通信是通过第3层的路由器来完成的。与传统的局域网技术相比较,VLAN技术更加灵活,它具有以下优点: 网络设备的移动、添加和修改的管理开销减少;可以控制广播活动;可提高网络的安全性。
在计算机网络中,一个二层网络可以被划分为多个不同的广播域,一个广播域对应了一个特定的用户组,默认情况下这些不同的广播域是相互隔离的。不同的广播域之间想要通信,需要通过一个或多个路由器。这样的一个广播域就称为VLAN。

16、ICMP是网络层,UDP是传输层,FTP和HTTP是应用层,ARP和RARP属于网络层协议;

目前VPN隧道协议主要有4种:点到点隧道协议PPTP、第二层隧道协议L2TP、网络层隧道协议IPSec以及SOCKS v5协议。其中,PPTP和L2TP工作在数据链路层,IPSec工作在网络层,SOCK v5工作在会话层。


17、

线程安全函数 
• 概念: 
       线程安全的概念比较直观。一般说来,一个函数被称为线程安全的,当且仅当被多个并发线程反复调用时,它会一直产生正确的结果。 
• 确保线程安全: 
       要确保函数线程安全,主要需要考虑的是线程之间的共享变量。属于同一进程的不同线程会共享进程内存空间中的全局区和堆,而私有的线程空间则主要包括栈和寄存器。因此,对于同一进程的不同线程来说,每个线程的局部变量都是私有的,而全局变量、局部静态变量、分配于堆的变量都是共享的。在对这些共享变量进行访 问时,如果要保证线程安全,则必须通过加锁的方式。
• 线程不安全的后果: 
       线程不安全可能导致的后果是显而易见的——共享变量的值由于不同线程的访问,可能发生不可预料的变化,进而导致程序的错误,甚至崩溃。 

可重入函数 
• 概念: 
       可重入的概念基本没有比较正式的完整解释,多数的文档都只是说明什么样的情况才能保证函数可重入,但没有完整定义。按照Wiki上的说法,“A computer program or routine is described as reentrant if it can be safely executed concurrently; that is, the routine can be re-entered while it is already running.”根据笔者的经验,所谓“重入”,常见的情况是,程序执行到某个函数foo()时,收到信号,于是暂停目前正在执行的函数,转到信号处理 函数,而这个信号处理函数的执行过程中,又恰恰也会进入到刚刚执行的函数foo(),这样便发生了所谓的重入。此时如果foo()能够正确的运行,而且处 理完成后,之前暂停的foo()也能够正确运行,则说明它是可重入的。
• 确保可重入: 
       要确保函数可重入,需满足以下几个条件: 
       1、不在函数内部使用静态或全局数据 
       2、不返回静态或全局数据,所有数据都由函数的调用者提供。 
       3、使用本地数据,或者通过制作全局数据的本地拷贝来保护全局数据。 
       4、不调用不可重入函数。 
• 不可重入的后果: 
       不可重入的后果主要体现在象信号处理函数这样需要重入的情况中。如果信号处理函数中使用了不可重入的函数,则可能导致程序的错误甚至崩溃。 

可重入与线程安全

       可重入与线程安全并不等同。一般说来,可重入的函数一定是线程安全的,但反过来不一定成立。它们的关系可用下图来表示:


18、平均周转时间

平均周转时间就是用周转时间总时间除以作业个数:
周转时间为作业完成时刻减去作业到达的时刻:作业完成时刻-作业到达时刻

响应比 =(等待时间+要求服务时间)/ 要求服务时间


19、无论是static还是非static的全局变量,如果不加限制随意访问的话易出现同步问题。
无论是static还是非static的局部变量,每个线程都是私有的,其他线程不会对其进行干扰。


20、数据库完整性约束分为以下四类:
1) 实体完整性:规定表的每一行在表中是惟一的实体。
2) 域完整性:是指表中的列必须满足某种特定的数据类型约束,其中约束又包括取值范围、精度等规定。
3) 参照完整性:是指两个表的主关键字和外关键字的数据应一致,保证了表之间的数据的一致性,防止了数据丢失或无意义的数据在数据库中扩散。
4) 用户定义的完整性:不同的关系数据库系统根据其应用环境的不同,往往还需要一些特殊的约束条件。用户定义的完整性即是针对某个特定关系数据库的约束条件,它反映某一具体应用必须满足的语义要求。


21、case

int test( )
{
    int k=0;
    char c='A';
    do{
        switch (c++)
        {
            case 'A': k++; break;
            case 'B': k--;
            case 'C': k+=2; break;
            case 'D': k=k%2; break;
            case 'E': k=k*10; break;
            default: k=k/3;
        }
        k++;
    }while(c<'G');
    return k;
}

22、unsigned int和int隐式转换

二者长度相同,按照被减数的的类型; 二者长度不同,按长的
unsigned int比int"大" 
int 比 unsigned short"大" 

23、负数的2进制表示

取原码

得反码

得补码


24、

int &a //引用
int (&a)//将a的地址转成int型
int* &// 指针的引用。他是一个 指针 的 别名 ,一般可以当成 指针 使用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值