文思创新笔试题Word格式文档下载.docx
《文思创新笔试题Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《文思创新笔试题Word格式文档下载.docx(14页珍藏版)》请在冰点文库上搜索。
它包含十种图,其中,用例图展示了外部actor与系统所提供的用例之间的连接,UML中的外部actor是指__(4)__,用例可以用__(5)__图来描述。
状态图指明了对象所有可能的状态以及状态间的迁移(transition)。
如果一个并发的状态由n个并发的子状态图组成,那么,该并发状态在某时刻的状态由__(6)__个子状态图中各取一个状态组合而成。
(4)
A.人员
B.单位
C.人员或单位
D.人员或外部系统
(5)
A.类
B.状态
C.活动
D.协作
(6)
A.每一
B.任意一
C.任意二
D.任意m(m≤n)
4、在数据库的并发控制中,事务
T
若要更新记录
Q,必须先执行操作__(7)__。
在封锁技术方面,SQL2
提供如下四种“事务的一致性级别”:
可读未提交数据、读提交数据、可重复读、可串行化。
其中__(8)__允许事务读“脏”数据。
(7)
A.Lock_S(Q)
B.Lock_X(Q)
C.READ(Q)
D.WRITE(Q)
(8)
A.可读未提交数据
B.读提交数据
C.可重复读
D.可串行化
5、对下面的个人所得税程序中满足语句覆盖测试用例的是__(9)__,满足判定覆盖测试的用例是__(10)__。
if
(income<
800)
tarrate=0;
else
=1500)
taxrate=0.05;
2000)
taxrate=0.08;
taxrate=0.1;
(9)
A.income=(800,1500,2000,2001)
B.income=(800,801,1999,2000)
C.income=(799,1499,2000,2001)
D.income=(799,1500,1999,2000)
(10)
A.income=(799,1500,1999,2001)
B.income=(799,1501,2000,2001)
C.income=(800,1500,2000,2001)
D.income=(800,1499,2000,2001)
II(编程题)
1、用你最熟悉的语言编写程序来实现:
比较两个字符串,相等返回TRUE,不相等返回FALSE;
2、请使用一种你熟悉的面向对象语言实现一个名为Singleton的类,要求该类只能被实例化一次。
3、使用SQL语句找出表名为Table1中的处在ID字段中1-200条记录中Name字段包含w的所有记录,并对找到的结果按年龄age
升序排序。
III
(推理题)
甲:
"
我的弹子比你的多。
乙:
我不信,你自己来数数看。
好吧,你的弹子是比我的多。
但玩弹子我可比你玩得好。
我只要赢你三个弹子,我的弹子就会
比你的多一倍。
那你就试试吧。
好,这是你说的!
你不是说你玩得比我好吗?
可这次我赢了!
你只赢了两个。
看吧,我的弹子现在比你多两倍了。
再来一次。
好。
甲
唉,好运气都让你碰上了。
你现在全输光了,而我有……"
问:
乙现在有多少弹子?
答:
15个日本鬼子和15个美国鬼子站成一圈,数到9就从圈里面踢出一个来,要求写个程序把日本鬼子都给踢出来,美国鬼子都不被踢出来,输出美国鬼子应该站在哪些位置。
publicstaticvoidmain(String[]args){
LinkedListll=newLinkedList();
for(inti=1;
i<
=30;
i++){
ll.add(i);
}
=15;
pos=i*9;
if(pos>
30)
pos-=30;
System.out.println(pos);
ll.remove(pos);
Iteratorit=ll.iterator();
while(it.hasNext()){
System.out.print(it.next()+"
"
);
}
1.写一个程序:
实现字符串翻转。
例如:
原字符串“iamastudent”转换后“studentaami”。
要求:
不能使用库函数。
publicclassTest2{
publicstaticvoidmain(String[]args){
Stringstr="
Iamastudent"
;
StringstrNew="
str=reverse(str);
String[]str2=str.split("
for(inti=0;
str2.length;
str2=reverse(str2);
strNew+=str2;
if(i!
=str2.length-1)
strNew+="
System.out.println(strNew);
publicstaticStringreverse(Stringstr)
{
char[]ch=str.toCharArray();
char[]ch2=newchar[ch.length];
ch.length;
ch2[ch.length-1-i]=ch;
returnnewString(ch2);
1、建立一个父类Person
2、建立American,JapaneseextendsPerson
3、newLinkList()
4、new15个A和J国人
5、插入LinkList();
6、初始化len=30,count=0
7、while(len>
15){
//但愿最后只剩下美国佬
for(pos=0;
pos<
len;
pos++){
count++;
if(count==9){
count=0;
if(personinstanceofA)say:
I'
mA"
+pos,donothing;
if(personinstanceofJ){
say:
mJ"
dotickBLinkList.remove(pos);
pos--;
位置向前移一位
len--;
队伍长度减一
endfor
endwhile
1.
构造函数与析构函数是否可以被重载,为什么?
2.
指针和引用的区别。
3.
malloc和new的区别。
4.
字符串反转。
用两种方法,第二种方法只用一个数串,直接互换。
5.
一个time类,包含minute和sec两个数据成员。
模拟秒表,每次走一秒,满60秒进一分钟,此时秒又从0开始。
ClassTime
{
public:
Time(){minute=0;
sec=0;
}
Time(intm,ints):
minute(m),sec(s){}
Timeoperator++();
Timeoperator++(int);
Private:
Intminute;
Intsec;
};
(1)
Time:
operator++()和Time:
operator++(int)的区别;
实现这两个重载函数。
6.
带镖头的单链表倒序。
7.
二叉树的前序和中序遍历如下:
前序:
ABCDEF
中序:
CBDAEF
画出该树。
8.
画出8,9,11,17,28,30,40在二叉搜索树中的位置。
9.
写一个冒泡排序的算法。
10.
栈和队列的相同和不同。
6个数排序
importjava.util.Random;
publicclassTest{
privateInteger[]arrayInteger;
publicTest(){
arrayInteger=newInteger[49];
for(inti=0;
i<
49;
i++)
arrayInteger[i]=i+1;
publicTest(Integer[]array){
this.arrayInteger=array;
publicInteger[]shuffle(){
Randomrand=newRandom(System.currentTimeMillis());
Integer[]array=arrayInteger;
array.length;
array=swap(array,i,rand.nextInt(array.length));
returnarray;
privateInteger[]swap(Integer[]array,intindex,intend){
Integertemp=array[index];
array[index]=array[end];
array[end]=temp;
publicstaticvoidmain(String[]args){
6;
System.out.println(newTest().shuffle()[i]);
B3作业
注意:
前两题笔试题,交过程和答案;
后两题交源程序,程序名分别为t3.pas,t4.pas.
1,已知一棵度为m的树中有n1个度为1的结点,n2个度为2的结点,……,nm个
为m的结点,问树中有多少个叶子结点
答:
在树仅有一根结点的时候,树有1个叶子结点.设该叶子结点是nm个度为m的结点之一,则此时共有1-1+m*1=m个叶子结点.在m个叶子结点中再设它们为剩余
m个度为m个结点,使他们成为nm个度为m的结点,若不够则在这些结点的孩子或者孩子的孩子之中再设他们为度为m的结点,直到所有nm个度为m的结点都被包含在树中,则此时共有1+m*nm-nm个叶子结点.然后设nm-1个度为m-1的结点为叶结点,使他们成为nm-1个度为m-1的结点,如果叶结点不够用,则在该结点的孩子中设.此时共有1+m*nm-nm+(m-1)*(nm-1)-nm-1个叶子结点.依次类推,则树中共有1+(m*nm-nm)+((m-1)*(nm-1)-nm-1)+…+(n2*2-n2)+(n1*1-n1)个叶子结点.
2,由四个结点a,b,c,d组成二叉树,共有多少种不同的结构请分别画出形态.
A
B
C
D
//分割线
由上面8形态可以知道树深度为4的时候,树根为A时数全部形态,层次遍历A,B,C,D.
BC
CD
由上面6形态可以知道树根是A,深度为3时全部形态,层次遍历为A,B,C,D.
而层次遍历有4!
种,所以整个由四个结点a,b,c,d组成二叉树,共有4!
*(8+6)=336种不同的结构.
3,已知一棵具有n个结点(每个结点的数据域为一个字符串,长度不超过5)的完全二叉树被顺序地存储于一维数组A中,试编写一个算法(程序),打印出编号为m的结点的双亲和所有孩子.
输入:
文件名t3.in,格式如下:
n
A[1]~A[n]{每个字符串之间用1个空格隔开}
m
输出:
文件名t3.out,格式如下:
m的父结点(数据域)
m的所有孩子结点(数据域),按照编号从小到大的顺序,每个之间用1个空格隔开.
样例输入:
5
OkYesNoHelloThank
2
样例输出:
Ok
HelloThank
源程序是:
programex_tree1(input,output);
var
t:
array[1..100000]ofstring[5];
i,j,l:
longint;
n,m,ma:
ch:
char;
functiontwo(a:
longint):
integer;
s:
begin
=0;
ma:
while(adiv2)>
0do
=s+1;
=ma+(amod2);
a:
=adiv2;
end;
two:
=s;
procedurerd;
k:
whilech='
'
doread(ch);
repeat
ifnot(eoln)then
t[i]:
=t[i]+ch;
=k+1;
read(ch);
until(ch='
)or(k=5)or(eoln);
functiontwot(a:
i:
=1;
fori:
=1toado
=s*2;
twot:
assign(input,'
t3.in'
reset(input);
readln(n);
ifn>
100000then
writeln('
Nistoobig!
N>
100000'
n:
=100000;
=1tondord;
t[n]:
=t[n]+ch;
read(m);
close(input);
assign(output,'
t3.out'
rewrite(output);
ifm=1
then
Err'
)
else
writeln(t[two(m)]);
ifm*2>
write('
write(t[twot(two(m)+1)+2*ma]);
ifnot((twot(two(m)+1)+2*ma+1)>
n)
t[twot(two(m)+1)+2*ma+1]);
writeln;
close(output);
end.
4,写出对二叉树进行中序遍历的非递归算法(程序).
文件名t4.in,格式如下:
n{结点数,每个结点的编号分别为1~n}
data[1]~data[n]{数据域,data[i]均为一个大写字母}
lchild[1]~lchild[n]{n个结点的左孩子编号,没有则为0}
rchild[1]~rchild[n]{n个结点的右孩子编号,没有则为0}
文件名t4.out,格式如下:
这棵二叉树的中序遍历结果.
3
ABC
200
300
BAC
programex_tree2(input,output);
type
treetype=record
data:
left:
right:
father:
written:
boolean;
array[1..100000]oftreetype;
s,n,temp:
i,j,k:
t4.in'
=1ton-1do
t[i].data:
=ch;
t[i].written:
=false;
readln(ch);
t[n].data:
=1tondo
read(temp);
t[i].left:
=temp;
t[temp].father:
=i;
readln;
t[i].right:
=n;
t4.out'
while(t[i].left0)or(t[i].right0)doi:
=t[i].left;
whiles>
if(t[i].left0)and(t[t[i].left].written=false)then
write(t[t[i].left].data);
ifs>
1thenwrite('
=s-1;
t[t[i].left].written:
=true;
ift[i].written=falsethen
write(t[i].data);
if(t[t[i].left].written=false)and(t[i].left0)then
=t[i].left
if(t[t[i].right].written=false)and(t[i].right0)then
=t[i].right
elsei:
=t[i].father;