完美时空笔试题和面试题答案

2021-08-10 07:49:39华夏高考网

  前5题是5选3,后5题不作要求

  使用 C++ (VC6、VS2003、VS2005、GCC4.1.2、GCC3.2.2)或java(JDK1.6.0)两种语言,题目如下:

  1.编写一个简单的2人点对点聊天工具,一方利用IP地址和端口连接另一方,可以相互发送文本信息。

  2.编写一个用于局域网(同一子网)的、没有服务器的、可以多人同时聊天的程序,可以给某个人或者全部人发送文本信息。

  3.编写一个可以计算四则运算(包含括号)程序,比如输入字符串" 1 + 2 * 3 / ( 4 - 5)" ,输出的结果为" -5" 。

  4.模拟一个生产者、消费者问题,自己实现一个支持多线程、有上限的队列,附带测试代码。

  5.编写一个GUI程序。在一个一定长、宽的区域内,随机分布有一定数量的矩形(边与区域的边平行,并且一定在区域内),当鼠标在该区域内任意一点按下左键,找到所有矩形中,某个边到该点的距离最近的那个矩形,并相对其他矩形特殊的显示出来。

  对下列问题,如果不感兴趣,可以略过;如果感兴趣,可以选择性的对一个或者多个问题发表一下自己的认识,看法等等,不要说如何求解。

  1.从前有三座塔,分别命名为X、Y、Z。其中在Z这座塔上,有个一定数量个盘子,比如N个,每个盘子的直径都不相同,并且按自下往上、从大到小排列。现在想把Z塔上的盘子都移动到X塔上,并且移动之后,X塔上盘子的顺序和Z原来的顺序是一样的。在移动过程中,每次只能移动一个盘子;Y也可以放盘子,但是盘子无论放在哪座塔上,盘子必须按自下往上、从大到小排列。

  2.在一个4×4的格子中,放入4个棋子,使得每个棋子相同行、相同列和2个45度斜边上,都没有其它棋子。

  3.在一个圆桌上,放了8个盘子,每2个盘子中间放了一根筷子;每个盘子前站一个人,如果每人都先用左手拿起左边的筷子,再去拿右边的筷子,因为他右边的筷子已经被他右边的人用左手拿起了,所以他没有办法凑齐一双筷子。如果希望每个人都能在某个时刻可以凑齐一双筷子,该怎么做。

  4.C++中的const只能在编译的时候限制为常量,如果想在程序运行的时候,做const的限制,有什么方法没?

  5.C++中,限制一个类的对象实例,只能在堆上分配,或者只能在栈上分配,有什么方法没?