测试复盘2

1.两个进程合作完成一个任务,在并发执行中,一个进程要等待其合作伙伴发来消息,或者建立某个条件后再向前执行,这种制约性合作关系被称为进程的( )。

  A.互斥

  B.同步

  C.调度

  D.伙伴

解析:

互斥:一组并发进程中的一个或多个程序段,因共享某一公有资源而导致它们必须以一个不允许交叉执行的单位执行。也就是说,不允许两个以上的共享该资源的并发进程同时进入临界区。

同步:把异步环境下的一组并发进程因直接制约而互相发送消息而进行互相合作、互相等待,使得各进程按一定的速度执行的过程称为进程间的同步。

答案:B

 

2. 给定C语言的数据结构

struct T{

   int w;

  union T{char c; int I; double d; )U;

};

假设char类型变量的存储区大小是1字节,int类型变量的存储区大小是4字节, double类型变量的存储区大小是8字节,则在不考虑字对齐方式的情况下,为存储一个 struct T类型变量所需要的存储区域至少应为(  )字节

  A.4  B.8  C.12  D.17

解析:

  在不考虑字对齐规则的情况下,C语言中一个结构体变量的存储区大小就是其所有成员所需存储区大小之和,一个联合体变量的存储区大小就是其各成员所需存储区大小中的最大者。因此题目中给定的联合体Union T变量需要的存储区大小就是存储一个double类型变量的大小(即8字节),struct T类型变量的存储区最小应为int类型成员W存储区大小(4字节)与union T类型成员U的存储区大小之和,即12字节。

答案:C

 

3.在C语言中,有关静态变量的说法,不正确的有( )。

  A.函数中的静态变量,在函数退出后不被释放

  B.静态变量只可以赋值一次,赋值后则不能改变

  C.静态全局变量的作用域为一个程序的所有源文件

  D.静态全局变量过大,可能会导致堆栈溢出

解析:

  函数中的静态变量是静态局部变量 函数退出后不被释放 在程序运行结束时才释放。只在函数中可访问。故A正确。静态变量赋值后可以改变,故B不正确。静态全局变量的作用域只能是定义它的文件里,不是被其他文件使用。故C不正确。全局变量是不占堆栈空间的,只有没有static修饰的局部变量在程序运行的时侯临时分配在栈上,故D不正确。

答案:BCD

 

4.JAVA中 utf编码下一个汉字占三个字节,gdk下两个字节。

 

5.接口:

 

①接口用于描述系统对外提供的所有服务,因此接口中的成员常量和方法都必须是公开(public)类型的,确保外部使用者能访问它们;

 

②接口仅仅描述系统能做什么,但不指明如何去做,所以接口中的方法

 

都是抽象(abstract)方法;

 

③接口不涉及和任何具体实例相关的细节,因此接口没有构造方法,不能被实例化,没有实例变量,只有静态(static)变量。

 

④接口的中的变量是所有实现类共有的,既然共有,肯定是不变的东西,因为变化的东西也不能够算共有。所以变量是不可变(final)类型,也就是常量了。

 

 

6.JSP内置对象

 

7.Linux进程间的通信方式

 

进程通信的方式

 

管道( pipe ):

 

管道包括三种:

 

  • 普通管道PIPE: 通常有两种限制,一是单工,只能单向传输;二是只能在父子或者兄弟进程间使用.
  • 流管道s_pipe: 去除了第一种限制,为半双工,只能在父子或兄弟进程间使用,可以双向传输.
  • 命名管道:name_pipe:去除了第二种限制,可以在许多并不相关的进程之间进行通讯.

 

信号量( semophore ) :

 

  • 信号量是一个计数器,可以用来控制多个进程对共享资源的访问。它常作为一种锁机制,防止某进程正在访问共享资源时,其他进程也访问该资源。因此,主要作为进程间以及同一进程内不同线程之间的同步手段。

 

消息队列( message queue ) :

 

  • 消息队列是由消息的链表,存放在内核中并由消息队列标识符标识。消息队列克服了信号传递信息少、管道只能承载无格式字节流以及缓冲区大小受限等缺点。

 

信号 ( sinal ) :

 

  • 信号是一种比较复杂的通信方式,用于通知接收进程某个事件已经发生。

 

共享内存( shared memory ) :

 

  • 共享内存就是映射一段能被其他进程所访问的内存,这段共享内存由一个进程创建,但多个进程都可以访问。共享内存是最快的 IPC 方式,它是针对其他进程间通信方式运行效率低而专门设计的。它往往与其他通信机制,如信号两,配合使用,来实现进程间的同步和通信。

 

套接字( socket ) :

 

  • 套解口也是一种进程间通信机制,与其他通信机制不同的是,它可用于不同机器间的进程通信。

 

8. 一个算法通常由两种基本要素组成:一是(对数据对象的运算和操作),二是(算法的控制结构

 

 

9.64位操作系统理论上最多可以管理(17179869184)GB内存。

 

 

10.SQL92标准定义的最严格的事务级别是?  Serializable (顺序执行)

 

11.常见的过程设计工具有:程序流程图、N-S图、PAD图和HIPO图。其中,为了避免流程图在描述程序逻辑时的灵活性,提出了用方框图来代替传统的程序流程图,通常也把这种图称为N-S图

 

12.下列哪个选项是Java调试器,如果编译器返回程序代码的错误,可以用它对程序进行调试
  A.java.exe
  B.javadoc.exe
  C.jdb.exe
  D.javaprof.exe

解析:

  java.exe为Java解释器,javadoc.exe为Java文档生成器,
javaprof.exe为Java剖析工具提供解释器剖析信息。

答案:C

 

13.下列关于 Applet 的说法,正确的是( B)。

 

A.它们能读写用户的文件系统

 

B.它们能与提供包含小程序的网页的站点之内的 Internet 站点联系

 

C.它们能在阅读者的系统上运行任何程序

 

D.它们能加载存储在用户系统上的程序

 

 

14.下列说法不正确的是( B  )。

 

A.Java 语言中,异常处理分为编译异常、运行异常、捕获异常三种

 

B.捕获异常要求在程序的方法中预先声明

 

C.运行异常在编程时必须定义

 

D.以上说法都不对

 

 

15.解释内存中的栈(stack)、堆(heap)和静态区(static area)的用法。

 

答:通常我们定义一个基本数据类型的变量,一个对象的引用,还有就是函数调用的现场保存都使用内存中的栈空间;而通过new关键字和构造器创建的对象放在堆空间;程序中的字面量(literal)如直接书写的100、"hello"和常量都是放在静态区中。栈空间操作起来最快但是栈很小,通常大量的对象都是放在堆空间,理论上整个内存没有被其他进程使用的空间甚至硬盘上的虚拟内存都可以被当成堆空间来使用。

 

String str = new String("hello");

 

上面的语句中变量str放在栈上,用new创建出来的字符串对象放在堆上,而"hello"这个字面量放在静态区。

 

    补充:较新版本的Java(从Java 6的某个更新开始)中使用了一项叫"逃逸分析"的技术,可以将一些局部对象放在栈上以提升对象的操作性能。

 

 

16.&和&&的区别?

答:&运算符有两种用法:(1)按位与;(2)逻辑与。&&运算符是短路与运算。逻辑与跟短路与的差别是非常巨大的,虽然二者都要求运算符左右两端的布尔值都是true整个表达式的值才是true。&&之所以称为短路运算是因为,如果&&左边的表达式的值是false,右边的表达式会被直接短路掉,不会进行运算。很多时候我们可能都需要用&&而不是&,例如在验证用户登录时判定用户名不是null而且不是空字符串,应当写为:username != null &&!username.equals(""),二者的顺序不能交换,更不能用&运算符,因为第一个条件如果不成立,根本不能进行字符串的equals比较,否则会产生NullPointerException异常。注意:逻辑或运算符(|)和短路或运算符(||)的差别也是如此。

 

17.short s1 = 1; s1 = s1 + 1;有错吗?short s1 = 1; s1 += 1;有错吗?

答:对于short s1 = 1; s1 = s1 + 1;由于1是int类型,因此s1+1运算结果也是int 型,需要强制转换类型才能赋值给short型。而short s1 = 1; s1 += 1;可以正确编译,因为s1+= 1;相当于s1 = (short)(s1 + 1);其中有隐含的强制类型转换。

 

posted @ 2019-09-27 15:56  19呀  阅读(569)  评论(0编辑  收藏  举报