中兴笔试题目及答案

发布时间:2015-01-09 编辑:1081 手机版

  中兴笔试题目及答案(一)

  1、 恢复和并发控制的基本单位

  事务串行执行:即每个时刻只有一个事务运行,其他事物必须等到这个事务结束以后方能运行。

  同时并发方式:在多处理系统中,每个处理机可以运行一个事务,多个处理机可以同时运行多个事务,实现多个事务真正的并行运行,这种并行方式称为同时并发方式。

  并发控制是指在多用户的环境下,对数据库进行并发操作进行规范的机制。其目的是为了避免对数据的丢失修改、读脏数据与不可重复读等,从而保证数据的正确性与一致性

  大型关系系统都有比较好的并发控制功能。例如可以采用更新游标、显式加锁、更改事务隔离级别等等

  事务是数据库中一个重要概念,它是一系列要么都做,要么都不做的程序集合,是数据库并发控制的单位。

  (1):事务(Transaction)是并发控制的单位,,是用户定义的一个操作序列。这些操作要么都做,要么都不做,是一个不可分割的工作单位。

  (3):事务运行的三种模式:

  A:自动提交事务

  每条单独的语句都是一个事务。每个语句后都隐含一个COMMIT。

  B:显式事务

  以BEGIN TRANSACTION显式开始,以COMMIT或ROLLBACK显式结束。

  C:隐性事务

  在前一个事务完成时,新事务隐式启动,但每个事务仍以COMMIT或ROLLBACK显式结束。

  (4):事务的特性(ACID特性)

  A:原子性(Atomicity)

  事务是数据库的逻辑工作单位,事务中包括的诸操作要么全做,要么全不做。

  B:一致性(Consistency)

  事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。

  C:隔离性(Isolation)

  一个事务的执行不能被其他事务干扰。

  D:持续性/永久性(Durability)

  一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。

  注:事务是恢复和并发控制的基本单位。

  2、 中断的功能

  3、 ISO七层结构

  4、 给出个Ip地址,要划分9个子网,子页掩码——

  5、 数据库查询优化问题

  6、 编写程序:键盘输入一系列数字(-1结束),输出到aabb.bat文件中

  7、 利用1、2、2、3、4这4个数字,组合

  package list;

  import java.util.ArrayList;

  public class Test {

  public java.util.ArrayList r; //存放排列组合的结果

  public Test(ArrayList in) { //输入参数 待排列组合的数组

  r = new ArrayList();

  if (in.size()==1) //递归终止条件

  r.add(in.get(0));

  String temp="";

  for (int i=0;i

  ArrayList sub = (ArrayList)in.clone(); //

  String s = (String)sub.remove(i); //输入数组,先提取第i个元素

  if(s.equalsIgnoreCase(temp))

  continue;

  temp=s;

  Test other = new Test(sub); //对剩余的元素递归调用

  for (int j=0;j

  r.add(s+(String)other.r.get(j)); // 合并剩余元素排列元素结果

  }

  }

  public static void main(String[] args) {

  ArrayList a = new ArrayList();

  a.add("1");

  a.add("2");

  a.add("3");

  a.add("4");

  Test test = new Test(a);

  System.out.println("test.size()==="+test.r.size());

  System.out.println("test==="+test.r.toString());

  /* for (int i=0;i

  if ((i+1)%(a.size()-1)==0)

  System.out.println(test.r.get(i).toString());

  else

  System.out.print(test.r.get(i).toString()+","); */

  }

  8、 进制转换器

  要求:(1)可输入二进制、八进制、十进制、十六进制数;

  (2)将已输入的数转换成其余进制的数;

  (3)具有输入输出界面

  9、 标识符 java

  编写一个程序,检查字符串是否为合法的Java标识符

  使用Character.isJavaIdentifierStart()方法和Character.isJavaIdentifierpart()方法,

  class JavaIdentifierTest {

  public static boolean isValidJavaIdentifier( String candidate ) {

  if ( candidate.length( ) == 0 ||

  ! Character.isJavaIdentifierStart( candidate.charAt( 0 ) ) )

  return false;

  String tail = candidate.substring( 1 );

  for ( int i = 0; i < tail.length( ); i++ )

  if ( ! Character.isJavaIdentifierpart( tail.charAt( i ) ) )

  return false;

  return true;

  }

  public static void main( String[ ] args ) {

  String[ ] candidates = { "", "9", "36C", "a1", "_pos", "index" };

  for ( int i = 0; i < candidates.length; i++ )

  System.out.println(

  "isValidJavaIdentifier( \\"" + candidates[ i ] + "\\"\\t) --> " +

  isValidJavaIdentifier( candidates[ i ] ) );

  }

  }

  10、 C#中的访问修饰符

  类的每个成员都有特定类型的可访问性。C#中的访问修饰符与Java中的基本对应,但多出了一个internal。简而言之,C#有5种类型的可访问性,如下所示:

  public:成员可以从任何代码访问。

  protected:成员只能从派生类访问。

  internal:成员只能从同一程序集的内部访问。

  protected internal:成员只能从同一程序集内的派生类访问。

  private:成员只能在当前类的内部访问。

  11从一个或几个基本表(或视图)导出的表,它与基本表不同,是一个虚表。

  数据库中只存放视图的定义,而不存放视图对应的数据,这些数据仍存放在原来的基本表中。所有基本表中的数据发生变化,从视图中查询出的数据也随之改变。

  视图一经定义,就可以和基本表一样被查询、删除,也可以在一个视图上再定义新的视图,但对视图的更新(增加、修改、删除)操作则有一定的限制。

  中兴笔试题及答案(二)

  公共部分(50分)

  1:作业调度程序从处于(B)状态的队列中选择适当的作业投入运行。(3分)

  A 运行 B 提交 C 完成 D后备

  2:SQL语言中,删除一个表的命令是(B) (3分)

  A CLEAR TABLE B DROP TABLE

  C DELETE TABLE D REMOVE TABLE

  3:ATM采用的线路复用方式为(C) (3分)

  A 频分多路复用

  B 同步时分多路复用

  C 异步时分多路复用

  D 独占信道

  4:数据库中只存放视图的(C) (3分)

  A操作

  B 对应的数据

  C 定义

  D 限制

  5:什么是虚拟设备?为什么在操作系统中引入虚拟设备?(10分)

  通过虚拟技术将一台独占设备虚拟成多台逻辑设备,供多个用户进程同时使用, 通常把这种经过虚拟的设备称为虚拟设备.

  在操作系统设备管理中,引入虚拟设备是为了克服独占设备速度较慢,降低设备资源利用率的缺占,从而提高设备的利用率.

  6:TCP为何采用三次握手来建立连接,若采用二次握手可以吗,请说明原因?(16分)

  三次握手是为了防止已失效的连接请求再次传送到服务器端。

  二次握手不可行,因为:如果由于网络不稳定,虽然客户端以前发送的连接请求以到达服务方,但服务方的同意连接的应答未能到达客户端。则客户方要重新发送连接请求,若采用二次握手,服务方收到重传的请求连接后,会以为是新的请求,就会发送同意连接报文,并新开进程提供服务,这样会造成服务方资源的无谓浪费。

  7:什么是分布式数据库?(12分)

  分布式数据库系统是在集中式数据库系统成熟技术的基础上发展起来的,但不是简单地把集中式数据库分散地实现,它具有自己的性质和特征。集中式数据库系统的许多概念和技术,如数据独立性、数据共享和减少冗余度、并发控制、完整性、安全性和恢复等在分布式数据库系统中都有了不同的、更加丰富的内容。

  (1)数据独立性。数据独立性是数据库方法追求的主要目标之一。在集中式数据库中,数据独立性包括两方面:数据的逻辑独立性和物理独立性。其意义在于程序和数据的逻辑结构和数据的存储结构无关。在分布式系统中,数据库独立性除了上面所说之外,还有数据分布独立性亦称分布透明性,即用户不必关心数据的逻辑分片,不必关心数据的物理位置分布的细节,也不必关心重复副本(冗余数据)的一致性问题。有了分布透明性,用户的应用程序书写起来就如同数据没有分布一样。在集中式数据库中,数据的独立性是通过系统的三级模式和它们之间的二级映象得到的。分布式数据库,分布透明性是由于引入新的模式和模式之间的映象得到的。

  (2)集中与自治相结合的控制结构。数据库是供用户共享的,在集中式数据库中,为保证数据的安全性和完整性,对数据库的控制是集中的。由数据库管理员(DBA)负责监督和维护系统的正常运行。

  在分布式数据库中,数据的共享有两个层次:一是局部共享,即在局部场地上存储局部用户的共享数据。二是全局共享,即在分布式数据库的各个场地也存储可供网络中其他场地的用户共享的数据,支持全局引用。因此,相应的控制结构也具有两个层次:集中和自治。各局部的DBMS可以独立地管理局部数据库,具有自治的功能。同时,系统又设有集中控制机制,协调各局部DBMS的工作,执行全局应用。

  (3)适当增加数据冗余度。在集中式数据库中,尽量减少冗余度是系统目标之一。其原因是,冗余数据浪费存储空间,而且容易造成个副本之间的不一致性。减少冗余度的目标是用数据共享来达到的。而在分布式系统中却希望增加冗余数据,在不同的场地存储同一数据的多个副本。其原因是提高系统的可靠性和性能,当某一场地出现故障,系统可以对另一场地上的相同副本进行操作,不会造成系统的瘫痪。系统可以根据距离选择离用户最近的数据副本进行操作,减少通信代价。但是增加冗余会碰到集中式数据库同样的问题,即不利于更新,增加了系统维护代价,需要在这些方面作出权衡。

  (4)全局的一致性、可串行性和可恢复性。分布式数据库中各局部数据库应满足集中式数据库的一致性、可串行性和可恢复性。除此以外,还要保证数据库的全局一致性、可串行性和可恢复性。例如,在前面提到的银行转帐事务中,包括两个节点上的更新操作,当其中一个节点出现故障,应使全局事务回滚,在一个节点撤销已经执行的操作等。

  C++部分(50分)

  1:设有“int w[3][4];”,pw是与数组名w等价的数组指针,则pw的初始化语句为int (*pw)[4] = w;(3分)

  2:要使引用pr代表变量“char *p”,则pr的初始化语句为char * &pr = p;(3分)

  3:“零值”可以是0,0.0,FALSE或者“空指针”。例如int变量n与“零值”比较的if语句为:if(n==0),则BOOL flag与“零值”比较的if语句为 if(!a) ;float x与“零值”比较的if语句为:const float EPSINON = 0.00001; if ((x >= - EPSINON) && (x <= EPSINON)。(6分)

  4:设有如下语句:(C)(3分)

  Int x;

  *px=0;

  则选择以下哪条语句可将x值置为0。

  A int *px; B int const *px=&x;

  C int *const px=&x; D const int *px=&x;

  5:设void f1(int *m,long &n);int a;long b;则以下调用合法的是(B)(3分)

  A f1(a,b) B f1(&a,b)

  C f1(a,&b) D f1(&a,&b)

  6:请写出如下代码的运行结果(6分)

  int main()

  {

  int a,b,c,d;

  a=0;

  b=1;

  c=2;

  d=3;

  printf(“%d”,a+++b+c+++d++);

  }

  7:写出下面函数的功能(12分)将数组a中的元素(如果为类类型,调用拷贝赋值算符)逆序放置到数组b中

  Template

  void WE(Type a[],Type b[],int n)

  {

  for(int i=0;i

  b[n-i-1]=a[i];

  }

  8:写一段代码判断一个单向链表中是否有环。(14分)

  给出如下结构

  struct node

  {

  struct *next;

  };

  typedef stuct node Node;

  答:

  #include

  struct listtype

  {

  int data;

  struct listtype * next;

  };

  typedef struct listtype * list;

  int find_circle(list sll)

  {

  list fast = sll;

  list slow = sll;

  if (NULL == fast)

  {

  return -1;

  }

  while (fast && fast->next)

  {

  fast = fast->next->next;

  slow = slow->next;

  if (fast == slow)

  {

  return 1;

  }

  }

  return 0;

  }

  JAVA部分(50分)

  1:判断下列对的是哪个(B)(3分)

  A short s1=1;s1=s1+1

  B short s1=1;s1+=1

  C short s1=1;s1=s1-1

  D short s1=1;s1=s1*1

  2:main方法是Java Application程序执行的入口点,关于main方法的方法头以下哪项是合法的(C)(3分)

  A public static void main ()

  B public static void main (String args)

  C public static int main (String []arg)

  D public void main (String args)

  3:设float x=1,y=2,z=3,则表达式y+=z--/++x的值是(A)(3分)

  A 3.5 B 3

  C 4 D 5

  4:Math.round(11.5)=12

  Math.round(-11.5)=-11(4分)

  5:假设x=10,y=20,z=30;计算下列表达式的值(6分)

  A x<10||x>10_________false

  B !(x<=20)___________false

  C z-y==x&&Math.abs(y-z)!=x_____________false

  6:方法重建Overload和方法的重写Overriding的区别。Overload的方法是否可以改变返回值的类型?(10分)

  方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写(Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被“屏蔽”了。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。 Overloaded的方法是可以改变返回值的类型。

  7:谈谈HashMap和Hashtable的区别(6分)

  答:

  1.Hashtable是Dictionary的子类,HashMap是Map接口的一个实现类;

  2.Hashtable中的方法是同步的,而HashMap中的方法在缺省情况下是非同步的。即是说,在多线程应用程序中,不用专门的操作就安全地可以使用Hashtable了;而对于HashMap,则需要额外的同步机制。但HashMap的同步问题可通过Collections的一个静态方法得到解决:

  Map Collections.synchronizedMap(Map m)

  这个方法返回一个同步的Map,这个Map封装了底层的HashMap的所有方法,使得底层的HashMap即使是在多线程的环境中也是安全的。

  3. 在HashMap中,null可以作为键,这样的键只有一个;可以有一个或多个键所对应的值为null。当get()方法返回null值时,即可以表示 HashMap中没有该键,也可以表示该键所对应的值为null。因此,在HashMap中不能由get()方法来判断HashMap中是否存在某个键,而应该用containsKey()方法来判断。

  4.其底层的实现机制不同,hashmap的访问速度要快于hashtable,因为它不需要进行同步检验,建议在非多线程环境中使用hashmap代替hashtable .

  8:构造一个类来描述屏幕上的一个点,该类的构成包括点x和y两个坐标,以及一些对点进行的操作,包括:取得点的坐标值,对点的坐标进行赋值,编写应用程序生成该类的对象并对其进行操作。(15分)

  class Point

  {

  private int x;

  private int y;

  public int getX() {

  return x;

  }

  public int getY() {

  return y;

  }

  public void setX(int x) {

  this.x = x;

  }

  public void setY(int y) {

  this.y = y;

  }

  }

  数据结构和算法

  1. 假设执行语句S的时间为O(1),则执行下列程序短的时间为(B)

  for(i=1;i<=n;i++)

  for(j=i;j<=n;j++)

  S;

  A. O(n)

  B. O(n2)

  C. O(n*i)

  D. O(n+1)

  2. 二位数组A[10…20,5…10]采用行序为主序方式存储,每个数据元素占4个存储单元,且A[10][5]的存储地址是1000,则A[18][9]的地址是(A)

  A. 1208

  B. 1212

  C. 1368

  D. 1364

  3. 设栈最大长度为3,入栈序列为1,2,3,4,5,6,则不可能得出栈序列是(D)

  A. 1,2,3,4,5,6

  B. 2,1,3,4,5,6

  C. 3,4,2,1,5,6

  D. 4,3,2,1,5,6

  4. 设有98个已排序列元素,采用二分法查找时,最大比较次数是(D)

  A. 49

  B. 15

  C. 20

  D. 7

  5. Hash表示用于数据存储的一种有效的数据结构,Hash表等查找复杂度依赖于Hash值算法的有效性,在最好的情况下,Hash表的查找复杂度为(A)

  A. O(1)

  B. O(logn)

  C. O(n)

  D. O(nlogn)

 

下页更精彩:1 2 3 4 5 下一页
本文已影响
中兴笔试题目及答案相关推荐