如果我是考官……

假如我是考官,下面的就是程序方面的题目(偏向数据结构和算法,还有逻辑)。不过很可惜我不是考官,所以只好用来考考大家,娱乐娱乐了:

1、对著名的八皇后问题,你认为最多要用多少个bit就可以记录任意一个合法解的棋谱?为什么?30分钟内作答。

2、我们知道,根据同一棵二叉树的前序和后序遍历输出,可能构造出一个或多个不同的二叉树,这些二叉树都符合这样的前序和后序遍历输出结果。
    假设有一棵N个节点的二叉树,要求你根据其前序和后序遍历输出生成所有可能的二叉树的中序遍历输出。如果规定:
  a、产生一个遍历输出的一个节点的时间复杂度是A
  b、任意两个遍历输出之间的任意两个节点间的比较的时间复杂度为B
  c、函数调用的时间复杂度是C(主函数和系统函数排除在外),空间复杂度是X(调用栈空间消耗)
  d、每一个遍历输出当中的一个节点的空间复杂度为Y
那么你预计最好的程序其时间复杂度能够达到O(?),空间复杂度呢?为什么?一天内作答。

3、对于下面的程序(.NET的),你打算怎么进行优化?并请说出优化的根据。15分钟内作答。

public   float  Test( float  A,  float  B)
{
  
float C;
  
float newB;
  
float eB;

  C 
= A + B;
  newB 
= C - A;
  eB 
= newB - B;
  newB 
= B - eB;

  
if (newB == B)
  
{
    
return B;
  }

  
else
  
{
    
return A;
  }

}


4、假设需要保存并处理某类“总共有1W个节点的有向加权图”,其中每个节点包括4Bytes的节点编号,4Bytes的权值,而引用每一个节点将需要占用4Bytes的空间。进行处理的机器,其内存有限。现在如果要你设计保存该图的数据结构,允许你向我提出一个问题,那么你会问什么?为什么要这么问?5分钟内作答。



其实我也没有绝对权威的答案,不过我想至少有一个较优的答案,尤其对2、3两道题来说。

你可能感兴趣的:(如果我是考官……)