1.设图 G 的相邻矩阵如下图:则 G 的顶点数和边数分别为()
01111
10100
11011
10101
10110
正确答案: D 你的答案: 空 (错误)
A.4,5
B.4,10
C.5,6
D.5,8
-------------------------------------------------------------------------------------------------------------------------------------------------------
2.mysql 数据库有选课表 learn(student_id int,course_id int),字段分别表示学号和课程编号, 现在想获取每个学生所选课程的个数信息,请问如下的 sql 语句正确的是()
正确答案: B 你的答案: 空 (错误)
A.select student_id,sum(course_id)from learn
B.select student_id,count(course_id)from learn group by student_id
C.select student_id,count(course_id)from learn
D.select student_id,sum(course_id)from learn group by student_id
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
3.下列排序算法中元素的移动次数和关键字的初始排列次序无关的是()
正确答案: C 你的答案: 空 (错误)
A.直接插入排序
B.起泡排序
C.基数排序
D.快速排序
---------------------------------------------------------------------------------------------------------------------------------------------------------------
4.某一密码仅使用 K、 L、 M、 N、 O 共 5 个字母,密码中的单词从左向右排列,密码
单词 必须遵循如下规则:
(1) 密码单词的最小长度是两个字母,可以相同,也可以不同
(2) K 不可能是单词的第一个字母
(3) 如果 L 出现,则出现次数不止一次
(4) M 不能使最后一个也不能是倒数第二个字母 (5) K 出现,则 N 就一定出现
(6) O 如果是最后一个字母,则 L 一定出现 问题:下列哪一个是单词密码?()
正确答案: C 你的答案: 空 (错误)
KLLN
LOML
MLLO
NMKO
---------------------------------------------------------------------------------------------------------------------------------------------------------------
5.n 从 1 开始,每个操作可以选择对 n 加 1,或者对 n 加倍。如果最后结果为 2013, 最少 需要()个操作。
正确答案: A 你的答案: 空 (错误)
A.18
B.24
C.21
D.不可能
解析:
2013->2012->1006->503->502->251->250->125->124->62->31->30->15->14->7->6->3->2->1
数数有多少个->就可以了,每个->就是一次演变过程。
-------------------------------------------------------------------------------------------------------------------------------------------------------
6.下面一段代码的输出结果是()
void f(char *c, char d) {
*c = *c + 1;
d = d + 1;
cout << *c << d;
}
int main() {
char a = 'A', b = 'a'; f(&b, a);
cout << a << b << endl;
return 0;
}
A.BaBa
B.bBAb
C.AbAb
D.aBaB
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
7.关于 JAVA 堆,下面说法错误的是()
A.所有类的实例和数组都是在堆上分配内存的
D.对象所占的堆内存是由自动内存管理系统回收
C.堆内存由存活和死亡的对象,空闲碎片区组成
D.数组是分配在栈中的
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
8.某系统有 n 台互斥使用的同类设备,3 个并发进程需要 3,4,5 台设备,可确保系统不发生死锁的设备数 n 最小为()
正确答案: B 你的答案: 空 (错误)
A.9
B.10
C.11
D.12
解析:
是不是可以这么想。
极端状态下:
进程1(3台):申请到2台,无法工作;
进程2(4台):申请到3台,无法工作;
进程3(5台):申请到4台,无法工作;
申请总数:2+3+4=9,此时若只有9台,3个进程持续申请且申请不到,造成死锁。
所以必须再空出一台。
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
9.下面有关 java 类加载器,说法正确的是?(A,B,C,D)
A.引导类加载器(bootstrap class loader):它用来加载 Java 的核心库,是用原生代码来实现的
B.扩展类加载器(extensions class loader):它用来加载 Java 的扩展库。
C.系统类加载器(system class loader):它根据 Java 应用的类路径(CLASSPATH)来加载 Java 类
D.tomcat 为每个 App 创建一个 Loader,里面保存着此 WebApp 的 ClassLoader。需要加载 WebApp 下的类时,就取出 ClassLoader 来使用
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
10.下面有关事务隔离级别说法正确的是?(A,B,C,D)
A.串行读(Serializable):完全串行化的读,每次读都需要获得表级共享锁,读写相互都会阻塞
B.未提交读(Read Uncommitted):允许脏读,也就是可能读取到其他会话中未提交事务修改 的数据
C.提交读(Read Committed):只能读取到已经提交的数据
D.可重复读(Repeated Read):在同一个事务内的查询都是事务开始时刻一致的
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
11.下列说法错误的是 ()
A.利用一组地址连续的存储单元依次存放自栈底到栈顶的数据元素,这种形式的栈也称为顺序栈
B.top=0 时为空栈,元素进栈时指针 top 不断地减 1
C.当 top 等于数组的最大下标值时则栈满
D.栈不能对输入序列部分或全局起求逆作用
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
12.找出两个链表相交的结点(定义链表结构)
/节点定义
typedef struct Node{
int data;
Node* next;
}
//寻找内存位置相同的节点
Node* Search(Node* head1,Node* head2){
if(head1==null || head2==null)
return null;
int diff = head1.size() - head2.size();
Node* p1=head1,p2=head2;
if(diff<0){
for(int i=1;i<=diff;i++)
p2 = p2->next;
}else if(diff>0){
for(int i=1;i<=diff;i++)
p1 = p1->next;
}
while(p1->next!=p2->next){
p1 = p1->next;
p2 = p2->next;
}
return p1->next;
}
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
13.给定一个已经排好序的字符串数组,空字符串散布在该数组中,编写一个函数寻找一个 给定字符串的位置。
Python版:
def find_string(str_target,string):
str_list = string.split(' ')
for i in range(len(str_list)):
if str_list[i] == str_target:
print("该字符串的位置为 %d" % (i+1))
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
14.给定一个二叉树,且每个节点存储一个值。设计一个算法,实现:对于一个给定的数值, 打印出所有的路径。这条路径不必要开始于或结束语根节点或叶节点。
bool visitTreePathByValue(TreeNode * pNode , int nNodeVal)
{
if (NULL == pNode)
{
return false;
}
if (nNodeVal == pNode->value())
{
printf("%d" , pNode->value());
return true;
}
bool bVisit = false;
bVisit = visitTreePathByValue(pNode->left() , nNodeVal);
if (bVisit)
{
printf("%d" , pNode->value());
}
bVisit = visitTreePathByValue(pNode->right() , nNodeVal);
if (bVisit)
{
printf("%d" , pNode->value());
}
return bVisit;
}