FCB
FIFO
FDT
PCB
操作系统在控制和管理进程过程中,涉及到( d )这一重要数据结构,这是进程存在的唯一
标志。
a.
b.
c.
d.
编程找出两个字符串中最大公共子字符串,如"abccade","dgcadde"的最大子串为"cad"
参考答案:
#include
#include
#include
char* longest(char *a,char *b)
{
int alen = strlen(a);
int blen = strlen(b);
int i,j,index,max=0,num=0;
int start;
char *str;
for(i = 0; i < alen; i++)
{
for(j = 0; j < blen; j++)
{
//这里的 start1、start2 是比较关键的
int start1=i;
int start2=j;
while((start1 <= alen-1) && (start2 <= blen-1) && (a[start1++] == b[start2++]))
num++;
if(num > max)//如果 num 是当前最大匹配的个数,则赋给 max,并且在 start 记下
str1 最长匹配开始的位置
{
max=num;
start=i;
}
num=0;//如果 num 不是当前最大的,则赋为 0 值继续循环
}
}
str=(char *)malloc(max + 1);
strncpy(str,a + start,max);//从字符串 a 的 start 位置开始,拷贝 max 个字符到 str 中,这就
是我们找出的最大子串
str[max] = '/0';
return str;
}
int main()
{
char a[]=""abcdabcdcbadffdaccccafg"";
char b[]=""gfaccccadffdabcdcbadcba"";
char *str;
str = longest(a,b);
printf(""%s/n"",str);
free(str);
system(""pause"");
return 0;
}
1 , 2 , 3 , 4 , 5 , 6
2 , 1 , 3 , 4 , 5 , 6
3 , 4 , 2 , 1 , 5 , 6
4 , 3 , 2 , 1 , 5 , 6
RO 段
RW 段
ZI 段
RW 和 ZI 段
设栈最大长度为 3 ,入栈序列为 1,2,3,4,5, 6,则不可能的出栈序列是(d)
a.
b.
c.
d.
不同进程加载同一个动态库时,不能共享的部分是(d)
a.
b.
c.
d.
已知函数 fun 的原型为 int fun(int,int,int);下列重载函数原型中错误的是(d)
a.
b.
c.
d.
"请问如何定义 C++类,阻止 C++类对象的相互赋值(obj2=obj1)?
造编译错误 class A{
}"
参考答案:
char fun(int,int);
double fun(int,int,double);
int fun(int,char*);
float
fun (int,int,int);
提示:利用重载制
只要重载=的定义在 private 或 protected 下面即可,重载原型的 const 修饰及函数体内容
无所谓
class A{
protected:
A& operator = (const A&){};
} 或者 class A{
private:
A& operator = (const A&){};
}
在定点二进制运算器中,减法运算一般通过( d )来实现
a. 原码运算的二进制减法器
b. 补码运算的二进制减法器
c. 补码运算的十进制加法器
d. 补码运算的二进制加法器
有关线程的哪些叙述是对的(bd)
a. 一旦一个线程被创建,它就立即开始运行。
b. 一个线程可能因为不同的原因停止并进入就绪状态。
c. 当一个线程因为抢先机制而停止运行,它被放在可运行队列的前面。
d. 使用 start()方法可以使一个线程成为可运行的,但是它不一定立即开始运行。
以下三条输出语句分别输出什么? (d)
int main (void) {
char str1[] = “abc”;
char str2[] = “abc”;
const char str3[] = “abc”;
const char str4[] = “abc”;
const char* str5 = “abc”;
const char* str6 = “abc”;
cout << (str1 == str2) << endl;
cout << (str3 == str4) << endl;
cout << (str5 == str6) << endl;
return 0;
}
false,true,true;
false,true,false;
true,false,false;
false,false,true;
a.
b.
c.
d.
下面程序运行的结果是?(b)
public static void main(String args[])
{
Thread
t = new Thread()
{
Void
run() {
public
pong();
}
};
t.run();
System.out.print("ping");
}
static void pong()
{
}
System.out.print("pong");
pingpong
pongping
pingpong 和 pongping 都有可能
a.
b.
c.
d. 都不输出
1
3
4
8
知道数组有序且由小到大排列,采用顺序查找方式从数组 int[] a = {22, 33, 44, 55, 66, 77, 88,
99};寻找 50,需要循环的次数为(c)
a.
b.
c.
d.
请问 linux 系统发送信号的系统调用是(b)
a. Open
b.
c.
d.
JAVA 中,final 修饰的类、成员函数、变量分别有什么特点?
参考答案:
Kill
Send
socket
类被声明为 final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不
能既被声明为 abstract 的,又被声明为 final 的。
将变量声明为 final,可以保证它们在使用中不被改变。被声明为 final 的变量必须在 new 一
个对象时初始化(即只能在声明变量或构造器或代码块内初始化),而在以后的引用中只能
读取,不可修改。
将方法声明为 final,则方法只能使用,而不能在子类重写。
"下面这段代码的输出是多少?(b)
#include
int main()
{
int a,b,c,d;
a=9;
b=a++;
c=++a;
d=10*a++;
printf(""a,b,c,d:%d,%d,%d,%d"",a,b,c,d);
return 0;
}"
参考答案:
12,9,11,110
同一个进程的不同线程,哪个是不能共享的?(c)
a. 全局变量
b. 栈
c. 堆
d. 文件句柄
在一盘纸牌游戏中,某个人的手中有这样的一副牌:
(1)正好有十三张牌。
(2)每种花色至少有一张。
(3)每种花色的张数不同。
(4)红心和方块总共五张。
(5)红心和黑桃总共六张。
(6)属于"王牌"花色的有两张。
红心、黑桃、方块和梅花这四种花色,哪一种是"王牌"花色?写出具体推理过程。
参考答案:
黑桃是王牌花色
根据(1),(2),(3),此人手中四种花色的分布是以下三种可能情况之一: (a)1237 (b)1246 (c)1345
根据(6),情况(c)被排除,因为其中所有花色都不是两张牌。
根据(5),情况(a)被排除,因为其中任何两种花色的张数之和都不是六。 因此,(b)是实际的
花色分布情况。
根据(5),其中要么有两张红心和四张黑桃,要么有四张红心和两张黑桃。
根据(4),其中要么有一张红心和四张方块,要么有四张红心和一张方块。
综合(4)和(5),其中一定有四张红心;从而一定有两张黑桃。因此,黑桃是王牌花色。
概括起来,此人手中有四张红心、两张黑桃、一张方块和六张梅花。
已定义以下函数:
int fun(int *p){ return *p; }
该函数的返回值是(a)
a. 不确定的值
b. 形参 p 中存放的值
c. 形参 p 所指存储单元中的值
d. 形参 p 的地址值
以下程序的输出结果是
void main()
{
int i=O11,j=11,k=0x11;
printf("%d,%d,%d\n",i,j,k);
}
9,11,17
9,11,11
a.
b.
c. 、11,11,11
d.
sprintf、strcpy、strncpy 及 memcpy 函数,请问这些函数功能有什么区别?从安全角度考
虑一般应该用哪个函数复制字符串?
参考答案:
11,11,17
sprintf 为格式化字符串函数
strcpy 为字符串复制函数
strncpy 也是字符串复制函数,但是可以指定最大复制长度
memcpy 为内存复制函数
从安全角度应该选 strncpy,不易出现越界异常
有三位男生张强、赵林、王刚和三位女生李华、秦珊、刘玉暑假外出旅游,可能去上海、杭
州、青岛和大连。条件是:①每人只能去一个地方;②凡是男生去的地方就必须有女生去;
③凡是有女生去的地方就必须有男生去;④李华去上海或者杭州,赵林去大连。如果上述断
定都为真,则去杭州的人中不可能同时包含( c )。
a. 张强和王刚
b. 王刚和刘玉
c. 秦珊和刘玉
d. 张强和秦珊
阅读以下 JAVA 程序段,执行结果正确的是( b )。
public class Test
{
}
public static void main (String[] args)
{
Byte var1 = 126;
Byte var2 = 127;
Byte var3 = var1 + var2;
//第 7 行
}
a. 编译成功并且变量 var3 的值为 253
b. 第 7 行有错误导致编译不成功
c. 第 7 行有“溢出”导致执行失败
d. 编译成功并且变量 var3 的值为 1
java 中 Thread.sleep()和 Object.wait() 有什么区别?
参考答案:
sleep 是使线程休眠一段时间。在 sleep 休眠时间到期后,线程不一定立即恢复执行,除
非系统没有其它更高优先级的任务正在执行
wait 是线程间实现同步的一种机制。调用 wait 的线程会主动进入等待状态,直到被其它线
程唤醒或者等待超时