发信人: griefjane (grief), 信区: job
标 题: 群硕笔试题
发信站: 饮水思源 (2003
年11月23日16:38:05 星期天), 站内信件
1、100=9 9 9 9 9 9
2、根据pseudo code判断下列哪个x打印"Text 2"
If (x>4) then print "Text 1"
Else if (x>9) then print "Text 2"
Else print "Text 3")
(1)less than 0,(2)less than 4,(3)between 4 and 9,(4)>9,(5)none
5
3
、填
but report:a browser based software crashes when you type "-1" in a inp
ut field called ABC on secong html page after loggong on on WindowXP platfor
m. And this happens every time you try typing "-1".You are not sure if any d
atabase servers are being used or not.
┏━━━━━━━━━━━━━━━━
┃ Serverity:┃
┃Priority:┃ ┃
━━━━━━━━━━━━━━━━━
┃ ━━━━━━━━━━━━━━━━━━━┃
┃ Short Description┃
┃
┃ ━━━━━━━━━┃━━━━━━━━━┃
┃ Reproducible?
┃
┃
┃ ━━━━━━━━━┃━━━━━━━━━┃
┃ Recreate steps:
┃
┃
┃ ━━━━━━━━━┃━━━━━━━━━┃
┃ Attachment:
┃
┃
━━━━━━━━━━━━━━━━━━━━┃
┃ ━━━━━━━━━━━━━━━━━━━┃
┃ platform tested: ┃
┃
┃ ━━━━━━━━━━━━━━━━━━━┃
┃ database server: ┃
┃
┃ ━━━━━━━━━━━━━━━━━━━┃
┃ browser
: ┃
┃
━━━━━━━━━━━━━━━━━━━━┃
4、添加注释
//
//
//
//
private static final int SHORT_COLUMN_WIDTH=5;
private static final int INT_COLUMN_WIDTH=10;
private static final int LONG_COLUMN_WIDTH=19;
private static final int DOUBLE_COLUMN_WIDTH=23;
……
int decimalDigits=DataTypeInfo.getScale();
int widthOfNumber=DataTypeInfo.getPrecision();
int dataType=DataTypeInfo.numberValue;
//
//
//
if (decimalDigits==0){
if (widthOfNumber<=SHORT_COLUMN_WIDTH) {dataType=dataTypeInfo.signedInt16V
alue;}
else if (widthOfNumber<=INT_COLUMN_WIDTH) {dataType=dataTypeInfo.signedInt
32Value;}
else if (widthOfNumber<=LONG_COLUMN_WIDTH) {dataType=dataTypeInfo.signedIn
t64Value;}
else if (widthOfNumber<=DOUBLE_COLUMN_WIDTH) {dataType=dataTypeInfo.number
Value;}
else {dataType=dataTypeInfo.numberValue;}
5、设计一个算法判断一个字符串是否是回文,并写出代码。
"A man a plan a canal panama"是会文。
先除去空格,然后两个指针前后比较来判断
6、定义函数,给出三个参数,从字符串inputString中的下标indexOfChar开始返回noO
fChar个字符。要求找出尽可能多的错误情形
7、编一段代码,求两个int的最大公约数
int gcd(int a, int b)
{
int big, small, tmp;
if(a < b)
{
big = b;
small = a;
}
else
{
big = a;
small = b;
}
while(small)
{
tmp = big % small;
big = small;
small = tmp;
}
return big;
}
8、给出一段c++代码(关于构建器和虚析构器的调用问题),要求(1)其输出,(2)
说明virtual destructor的作用(role)
9、英文阅读理解,个人感觉非常简单
发信人: signals (信号与系统), 信区: Job
标 题: 群硕笔试题目(全)
发信站: 武汉白云黄鹤站 (2005
年11月03日20:29:04 星期四), 站内信件
应哥们要求特意记得,与大家共享!
原文全是英语,我按自己理解写了一些,难免出错,望大家见谅!
一、
1. Debug
和
Release build
的区别,速度有差异吗?
why or why not
?
一、
Debug
和
Release
编译方式的本质区别
Debug
通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序。
Release
称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好地使用。
二
:
只有
DEBUG
版的程序才能设置断点、单步执行、使用
TRACE/ASSERT
等调试输出语句。
REALEASE
不包含任何调试信息,所以体积小、运行速度快。
三
在
debug
的版本里会错的
,
在
release
里面不一定会错误
,
但是代码是肯定有错的
.
2.
死锁的四个必要条件;
死锁产生有四个必要的条件
:
互斥条件
,
不可剥夺条件
,
部分分配
,
循环等待
3.
“
assignment operator
”
and
“
copy constructor
”的差异
调用时间不一样,假设
A
同时拥有两者
,b
是
A
的一个实例:
A a(b)
与
A a=b
调用
opy constructor
A a;
a=b;
调用的是
assignment operator
4.What's serialization,how does it work in .net or Java
5. what's reflection in java
6.How many data types can be used in swith (Java)?
7.定义 a) 含有十个元素的指针数组;
b) 数组指针;
c) 函数指针;
d) 指向函数的指针数组;
8.Describe scope of public/private/frined/protected/protected frined
(C#)
二、
1.an array,Bubble sort.
2.judge current platform using big endion or little endition(高字节还是低字节存放)
微处理机中的存放顺序有正序
(big endian)
和逆序
(little endian)
之分。正序存放就是高字节存放在前低字节在后,而逆序存放就是低字节在前高字节在后。例如,十六进制数为
A02B
,正序存放就是
A02B
,逆序存放就是
2BA0
。摩托罗拉
(Motorola)
公司的微处理器使用正序存放,而英特尔
(Intel)
公司的微处理器使用逆序
。
void endian()
{
int x = 0x12345678;
char *a = (char *)&x;
cout << (*a == 0x12? "big endian":"little endian");
}
三、
1-1000放在含有1001个元素的数组中,只有唯一的一个元素值重复,其它均只出现
一次。每个数组元素只能访问一次,设计一个算法,将它找出来;不用辅助存储空
间,能否设计一个算法实现?(今天唯一的收获就是做出了这个题)
将
1001
个元素相加减去
1,2,3,
……
1000
数列的和,得到的差即为重复的元素。
int Find(int * a)
{
int i;//
变量
for (i = 0 ;i<=1000;i++)
{
a[1000] += a[i];
}
a[1000] -= (i*(i-1))/2 //i
的值为
1001
return a[1000];
}
利用下标与单元中所存储的内容之间的特殊关系,进行遍历访问单元,一旦访问过的单
元赋予一个标记,利用标记作为发现重复数字的关键。代码如下:
void FindRepeat(int array[], int length)
{
int index=array[length-1]-1;
while ( true )
{
if ( array[index]<0 )
break;
array[index]*=-1;
index=array[index]*(-1)-1;
}
cout<<"The repeat number is "<<index+1<<endl;
}
此种方法不非常的不错,而且它具有可扩展性。在坛子上有人提出:
对于一个既定的自然数
N
,有一个
N + M
个元素的数组,其中存放了小于等于
N
的所有
自然数,求重复出现的自然数
序列
{X}
。
对于这个扩展需要,自己在
A_B_C_ABC(
黄瓜儿才起蒂蒂
)
的算法的基础上得到了自己的算法
代码:
按照
A_B_C_ABC(
黄瓜儿才起蒂蒂
)
的算法,易经标记过的单元在后面一定不会再访问到,除非它是重复的数字,也就是说只要每次将重复数字中的一个改为靠近
N+M
的自然数,让遍历能访问到数组后面的单元,就能将整个数组遍历完。
代码:
*/
void FindRepeat(int array[], int length, int num)
{
int index=array[length-1]-1;
cout<<"The repeat number is ";
while ( true )
{
if ( array[index]<0 )
{
num--;
array[index]=length-num;
cout<<index+1<<'t';
}
if ( num==0 )
{
cout<<endl;
return;
}
array[index]*=-1;
index=array[index]*(-1)-1;
}
}
群硕笔试归来
题目:
一概念
1.
过程化编程和面向对象编程的区别
面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。
面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为
2.(a-1)xora==0和条件
3.Garbage Collection
4.java中 equals() 和== 的区别
5.C++中类的定义 :函数重载出错
6.数据库理论中的数据完整性
7.donamic(?) wed programming 中 redirect 和forward
8.双向链表的插入
二算法
字符串倒置
eg. this is a string =>gnirts a si siht
三logic thinking
四个女人过桥,夜间有一火把,每次最多过两个,必需带火把,
过桥速度不一样
no.1 1min
no.2 2min
no.3 5min
no.4 10min
两个人过用最慢一个的速度,火把不能扔
如何在17min内四个女人都过桥
上海群硕笔试
本来是没有提前报名,直到听说群硕有笔试的时候才匆忙发过去了求职简历,回信说可以先去笔试,只是要写下自己的联系电话.下午3:30开始,在山大理科综合楼,一般来说,现在好一点的企业都不来软件学院呢,最近来的两个只是培训的,难道软件学院被看不起???
题目是英文的,不过我全部是用中文答的,毕竟英文太烂,不敢造次啊!
1、用6、7、3、1四个数字(各用一次)与+、—、X、/,四运算符写一个算式,使结果为24(小学生的题目啊!)答案:
6*3+7
—
1=24
2
、解释
1NF
、
2NF
、
3NF
、
BCNF
3、如何存储稀疏矩阵
三元组,
十字链表
4、快排序在最好,最坏,平均情况下的时间复杂度与辅助空间复杂度
.
各种排序方法的综合比较
一、时间性能
按平均的时间性能来分,有三类排序方法:
时间复杂度为
O(nlogn)
的方法有:快速排序、堆排序和归并排序,其中以快速排序为最好;
时间复杂度为
O(n2)
的有:直接插入排序、起泡排序和简单选择排序,其中以直接插入为最好,特别是对那些对关键字近似有序的记录序列尤为如此;
时间复杂度为
O(n)
的排序方法只有,基数排序。
当待排记录序列按关键字顺序有序时,直接插入排序和起泡排序能达到
O(n)
的时间复杂度
;
而对于快速排序而言,这是最不好的情况,此时的时间性能蜕化为
O(n2)
,因此是应该尽量避免的情况。
简单选择排序、堆排序和归并排序的时间性能不随记录序列中关键字的分布而改变。
二、空间性能
指的是排序过程中所需的辅助空间大小。
1.
所有的简单排序方法
(
包括:直接插入、起泡和简单选择
)
和堆排序的空间复杂度为
O(1)
;
2.
快速排序为
O(logn )
,为栈所需的辅助空间
;
3.
归并排序所需辅助空间最多,其空间复杂度为
O(n );
4.
链式基数排序需附设队列首尾指针,则空间复杂度为
O(rd )
。
三、排序方法的稳定性能
1.
稳定的排序方法指的是,对于两个关键字相等的记录,它们在序列中的相对位置,在排序之前和经过排序之后,没有改变。
2.
当对多关键字的记录序列进行
LSD
方法排序时,必须采用稳定的排序方法。
3.
对于不稳定的排序方法,只要能举出一个实例说明即可。
4.
快速排序和堆排序是不稳定的排序方法。
四、关于“排序方法的时间复杂度的下限”
本章讨论的各种排序方法,除基数排序外,其它方法都是基于“比较关键字”进行排序的排序方法,可以证明,这类排序法可能达到的最快的时间复杂度为
O(n logn )
。
(
基数排序不是基于“比较关键字”的排序方法
,
所以它不受这个限制
)
。
http://jpkc.ncwu.edu.cn/sjjg/new/content/ch9/ch9-07-01.htm
5
、小猪存钱罐,爸爸第一天给1分,第二天给2分,第三天给4分,……,到第
14
天满了。几天存半满?(
12
)如果妈妈从第一天开始也是如此给钱,问几天存半满?(
11
)
6
、
ALPHA
与
BETA
测试的不同
Alpha
测试是由一个用户在开发环境下进行的测试,也可以是公司内部的用户在模拟实际操作环境下进行的受控测试,
Alpha
测试不能由程序员或测试员完成。
Alpha
测试发现的错误,可以在测试现场立刻反馈给开发人员,由开发人员及时分析和处理。目的是评价软件产品的功能、可使用性、可靠性、性能和支持。尤其注重产品的界面和特色。
Alpha
测试可以从软件产品编码结束之后开始,或在模块(子系统)测试完成后开始,也可以在确认测试过程中产品达到一定的稳定和可靠程度之后再开始。有关的手册(草稿)等应该在
Alpha
测试前准备好。
Beta
测试是软件的多个用户在一个或多个用户的实际使用环境下进行的测试。开发者通常不在测试现场,
Beta
测试不能由程序员或测试员完成。因而,
Beta
测试是在开发者无法控制的环境下进行的软件现场应用。在
Beta
测试中,由用户记下遇到的所有问题,包括真实的以及主管认定的,定期向开发者报告,开发者在综合用户的报告后,做出修改,最后将软件产品交付给全体用户使用。
Beta
测试着重于产品的支持性,包括文档、客户培训和支持产品的生产能力。只有当
Alpha
测试达到一定的可靠程度后,才能开始
Beta
测试。由于
Beta
测试的主要目标是测试可支持性,所以
Beta
测试应该尽可能由主持产品发行的人员来管理。
Gamma
测试是一个很少被提及的非正式测试阶段,该测试阶段对应的是对“存在缺陷”产品的测试。考虑到任何产品都可以被称为“存在缺陷”的产品(测试只能发现产品中存在的问题,不能说明产品不存在问题),因此这个概念存在一定的不确定。
由于
Alpha
和
Beta
测试的组织难度大,测试费用高,测试的随机性强、测试周期跨度较长,测试质量和测试效率难于保证,所以,很多专业软件可能不再进行
Beta
测试。随着测试技术的提高,以及专业测试服务机构的大量涌现,很多软件的
Beta
测试外包给这些专业测试机构进行测试。
对
Alpha
和
Beta
测试常见的一个认识误区是“
Beta
测试=黑盒测试”。实际上,
Alpha
和
Beta
测试对应在软件产品发布之前的
Alpha
和
Beta
阶段,而白盒、黑盒和灰盒测试技术是从技术和方法层面对测试的描述,不应该将这两部分概念混淆
7
、什么是压力测试?
压力测试是一种基础的质量保证活动,它应当成为每一种有意义的软件测试结果的一部分。压力测试的主要思路很简单:不是在常规条件下手动或自动运行测试,而是在缩减的机器或系统资源下运行测试。要被缩减的资源主要包括:内存储器、可用的
CPU
、磁盘空间,以及网络带宽。通过运行一个工具,可以缩减这些资源,我们称之为压力器(
stressor
)。
8、有四个选项,A、B、C、D,值只有true,false两种情况,其中若A为true,则B一定为ture,问一共有多少种测试,可覆盖全部的情况?
9、你认为是否应该用工具来managing change?有哪些工具?
10、How do we test most simply if an unsigned integer is a power of two?
11、写一个方法实现冒泡排序
12、走廊A与走廊B相交处是直角(拐角)C为矩形物体,设计算法,判断C是否可以从拐角通过?
群硕的笔试在语言方面主要是Java和C++,夹了一道C#题,趁记忆犹新的时候记下来
一、给了一棵二叉树的前序遍历和中序遍历,要求写出后序遍历。
看一下数据结构就行了,很
easy
。提示:前序遍历的第一个节点为根结点,在中序遍历中根结点的左边节点是左子树,右边节点是右子树,如此递归。
二、什么是物理内存和虚拟内存,OS中为什么要使用虚拟内存?
看OS的书。
三、解释一下C#中的“delegate”。
原先不清楚的,然后在技术面试的时候问了一下面试官,原来类似于一个队列,队列中存的是函数指针(托管函数),运行时队列中的函数会在一个线程中被依次执行。
四、与子程序传递参数有哪些方法?
汇编题,我想起来三个:参数压栈、参数存寄存器、参数存数据段。
五、解释一下Java中的String和StringBuffer,什么时候需要使用StringBuffer?
核心是String对象是不变对象,连接、取子串等操作会生成新的对象,旧对象可能会被回收。StringBuufer则是可变对象,上述操作将在原对象上进行。
六、Java中哪些容器的默认布局器(layout)是BorderLayout?
这个不是那得很准,就写了JFrame及其子类,Frame及其子类。
七、一个C++的函数:
int operation(int numberA,int numberB){
return numberA + numberB;
}
然后声明了三个变量:
int a = 2;
int result1 = operation(5, a++);
int result2 = operation(5+a, ++a);
问result1和result2的值。
result1 = 7, result2 = 13
注意在一个表达式内的++值是一样大的
八、如果父类的析构函数没有声明为虚函数的话在父类的指针上调用析构函数会有什么后果?
屏蔽多态,子类申请的资源将不被释放。
九、定义了一个类:
class Something{
public:
Something();
void setValue(int val){
value = val;
}
private:
int value;
}
以及一个函数:
void doSomething(int val){
Something* sth = new Something(); // Line 1
sth->setValue(val); // Line 2
}
问Line 2如果是doSomething()的最后一行的话会有什问题?
doSomething
执行完后
sth
没有被销毁,内存泄漏。
十、写一个程序将输入的16进制转为10进制。
基础
十一、设计一个微波炉的控制程序(OO)。
这道题有点意思,我主要用
Observer
模式设计了一个定时器,然后把微波炉烹饪的对象抽象为
Cookable
。
十二、逻辑题,一列火车以15 mph的速度从北京开往上海,另一列火车以20 mph的速度从上海开往北京,一只鸟(比较笨)速度25 mph,在两列火车之间来回飞,相遇即折回。问到两列火车相遇这只笨鸟一共飞了多远?
很简单,因为鸟一直在飞,所以一共飞了
s/(15 + 20)
,
s
为上海到北京之间的距离,那么它一共飞了
s/(15 + 20) * 25 mile
。
12道题,除了那道C#题,其它觉得没多少地方能扣我分了,当天晚上就没睡好,很兴奋。果然第二天上午就打电话来让我去面试,效率真的很高,然后就果然顺利拿到了offer
发信人: wzhch (欢迎大家来二区区务版灌水), 信区: Job_Discuss
标 题: [新鲜出炉]群硕笔试题
发信站: 武汉白云黄鹤站 (2006
年02月17日21:25:27 星期五), 站内信件
【 原文由 VIPID 所发表 】
就记得几个
1、release和Debug的区别,及其运行速度
2、死锁解缩的四种形式
3、.Net中public/private/proteced/friend/proteced friend的范围
4、关于Java的有两道,没怎么注意
5、写函数的题目
1)冒泡法排序
2)关于judge platform的
6、Logic和算法
大意是有一个1001个元素的数组,每个元素都在1到1000这些整数中取值,其中有一个数值
重复了,现在要设计一个算法找出这个数字,且每个元素只能被访问一次。还有其他的要
求,记得不是很清楚了,等回来的同学再补充吧。
new
动态分配失败会抛出什么异常
,C++
中提供了那两个标准函数来设定异常处理
HANLDER?
会抛出
std::bad_alloc
,
函数是
#include <new>
typedef void (*new_handler)();
new_handler set_new_handler(new_handler p) throw();