第一次接触这种完整的笔试题,感觉题目很难的,涉及到方方面面的问题:Java、C++、计算机网络、操作系统、计算机组织与结构、算法导论、数据库、Linux指令等等问题;在这里做个总结,希望和大家共同学习;
选择题(15题)
1、VC提供一种被称为Watch的机制来观看变量和表达式的值,由于指针指向的数组,Watch只能显示第一个元素的值,为了显示数组的后续内容,或者要显示一片内存的内容,可以使用()功能
A、Regsters
B、Varibles
C、Conditions
D、Memory
正确答案:D;本题考察VC调试
解析:http://www.cnblogs.com/lidabo/p/3631224.html
Watch
VC支持查看变量、表达式和内存的值。所有这些观察都必须是在断点中断的情况下进行。
观看变量的值最简单,当断点到达时,把光标移动到这个变量上,停留一会就可以看到变量的值。
VC提供一种被成为Watch的机制来观看变量和表达式的值。在断点状态下,在变量上单击右键,选择Quick Watch, 就弹出一个对话框,显示这个变量的值。
单击Debug工具条上的Watch按钮,就出现一个Watch视图(Watch1,Watch2,Watch3,Watch4),在该视图中输入变量或者表达式,就可以观察 变量或者表达式的值。注意:这个表达式不能有副作用,例如++运算符绝对禁止用于这个表达式中,因为这个运算符将修改变量的值,导致 软件的逻辑被破坏。
Memory
由于指针指向的数组,Watch只能显示第一个元素的值。为了显示数组的后续内容,或者要显示一片内存的内容,可以使用memory功能。在Debug工具条上点memory按钮,就弹出一个对话框,在其中输入地址,就可以显示该地址指向的内存的内容。
Varibles
Debug工具条上的Varibles按钮弹出一个框,显示所有当前执行上下文中可见的变量的值。特别是当前指令涉及的变量,以红色显示。
寄存器
Debug工具条上的Reigsters按钮弹出一个框,显示当前的所有寄存器的值。
2、根据关系型数据库规范范理论,关系数据库中的关系要满足第一范式,在部门关系中,因哪个属性而石塔不满足第一范式?()
A、部门名
B、部门成员
C、部门总经理
D、部门号
正确答案:B;本题考察关系型数据库
解析:
在任何一个关系型数据库中,第一范式(1NF)是对关系模型的基本要求,不满足第一范式(1NF)的数据库就不是关系数据库;关系数据库的第一范式规定:关系中的每一个属性都是不可分割的。而本关系中,“部门成员”显然包括“部门总经理”,所以它是可分的。这样就不满足第一范式的条件;
3、用命令行方式运行一下代码的运行结果是()
public class f {
public static void main(String[] args) {
String foot1 = args[1];
String foot2 = args[2];
String foot3 = args[3];
}
}
命令:java T11 a b c
A、a b c
B、t11
C、程序运行异常
D、程序编译错误
这道题我没有找到正确,但是经过我在命令行中编译的结果来看应该是选:C
解析:
首先程序编译通过,执行命令java T11 a b c是无法通过的,因为根本没有T11主类;估计题目出错,应该将T11改为f,在控制台执行完javac f.java编译通过后,接着执行java f a b c; 运行时抛出 java.lang.ArrayIndexOutOfBoundsException 异常;
由于String[] args接受从控制台中输入的字符串;所以在main函数里args的数组长度为3,则这里执行String foot3 = args[3]时出现数组越界;所以该题目选择C、程序运行异常;
4、
#include <iostream>
using namespace std;
class TestClass{
char x;
public:
TestClass(){cout<<'A';}
TestClass(char c){cout << c;}
~TestClass(){cout<<'B';}
};
int main() {
TestClass p1,*p2;
p2 = new TestClass('X');
delete(p2);
return 0;
}
执行这个程序的结果是()
A、AXBB
B、AAXBBB
C、AAXB
D、XB
正确答案 A;本题考察C++的构造函数和析构函数
解析:
p1执行默认构造函数,p2执行传参构造函数;都需要执行析构函数来释放内存,只是p1时自动释放,p2需要手动释放,p2在p1之前执行析构函数;
5、现有4个同时到达的作业J1、J2、J3、J4,他们的执行时间分别是1小时、3小时、5小时、7小时,系统按单道方式运行且采用短作业优先算法,则平均周转时间是()小时
A、5
B、4
C、7.5
D、6
正确答案:C;本题考查操作系统相关问题
解析:
执行次序 | 提交时间 | 执行时间 | 开始时间 | 完成时间 | 周转时间 |
---|---|---|---|---|---|
J1 | 0 | 1 | 0 | 1 | 1 |
J2 | 0 | 3 | 1 | 4 | 4 |
J3 | 0 | 5 | 4 | 9 | 9 |
J4 | 0 | 7 | 9 | 16 | 16 |
平均等待时间:将所有作业的运行时间加起来除以总的作业数 (1+3+5+7)/4=4
平均周转时间:将所有作业运行的时间和等待的时间全部加起来除以作业数,这四个作业的等待时间分别是:0,1,4,9
(1+3+5+7+0+1+4+9)/4=7.5
6、浮点数的尾数基值取2,并采用隐含位表数方法,则这种浮点数的表数效率为()
A、94%
B、75%
C、100%
D、50%
正确答案:C;本题考查指令系统中的浮点数的表数效率;
解析:http://202.197.191.206:8080/22/content/chap2/section1/08.htm
从浮点数的表数范围和表数精度来看,尾数基值取2或4最好,但当尾数基值等于2时,表数效率最低只有50%。为例在尾数基值取2时提高浮点数的表数效率,目前在许多机器中采用了隐藏位数表数法。具体做法是:因为在尾数基值取2时,规格化浮点数尾数的最高位一定是1(如果尾数用补码表示,规格化浮点数尾数最高位一定与尾数符号位相反),所以,浮点数在存储和传送的过程中,尾数最高位可以不表示出来,只在计算时恢复这一个隐藏位,或采用某种方法对运算结果进行修正。
在采用采用隐藏位表数方法之后,当取尾数基值=2时,浮点数的表数效率能够达到最大值100%。如果取尾数基值=4,就不能采用隐藏位表数方法,这时的浮点数的表数效率为75%。
网上很多答案都认为选D,但是没有看清楚题目是采用隐含位表数方法;
7、记号O的定义正确的是()
A、O(g(n))= {f(n) | 对于任何正常数c>0,存在正数和n0>0使得对所有n>=n0有:0<=cg(n)<f(n)}
B、O(g(n))= {f(n) | 对于任何正常数c和n0使得所有n>=n0有:0<=cg(n)<=f(n)}
C、O(g(n))= {f(n) | 对于任何正常数c>0,存在正数和n0>0使得对所有n>=n0有:0<=f(n)<cg(n)}
D、O(g(n))= {f(n) | 对于任何正常数c和n0使得所有n>=n0有:0<=f(n)<=cg(n)}
正确答案:D;本题来源于算法导论概念;
解析:
记号O是用于描述函数渐进行为的数学符号。更确切地说,它是用另一个(通常个更简单的)函数来描述一个函数数量级的渐行上界。在计算机科学中,它在分析算法复杂性的方面非常有用;
8、关于渐进记号的性质是正确的有()
A、f(n) = O( g(n),g(n) = O(h(n)) => h(n)=O(f(n)) )
B、O( f(n) ) + o( g(n) ) = O( min { ( f(n),g(n) ) } )
C、f(n) = O( g(n) ), g(n) = O( h(n) ) => f(n) = O( h(n) )
D、f(n) = O(g(n)) <=>g(n) = O( f(n) )
正确答案:C;考查渐进记号的性质;
解析:
f(n) = O(g(n)),对于记号O的直观含义是:f(n)的阶不高于g(n)的阶;
A意思是 f(n)的阶不高于g(n),g(n) 的阶不高于h(n),则 h(n) 的阶不高于f(n);错误;
B错误:关于渐进符号的定理:对于f1(n),f2(n),如果f1(n) = O(g1(n)),f2(n) = O(g2(n)),则必有
f1(n)+f2(n) = O(max{g1(n),g2(n)})。
C意思是f(n)的阶不高于g(n),g(n) 的阶不高于h(n),则 f(n) 的阶不高于h(n);正确;
D意思是f(n)的阶不高于g(n),等价于g(n)的阶不高于f(n),错误;
9、一个查询语句执行后显示的结果为;
1班80
2班75
3班null,
则最有可能的查询语句是()
A、SELECT AVG(成绩) FROM 成绩表 WHERE class<=3 GROUP BY class
B、SELECT AVG(成绩) FROM 成绩表 HAVING class <=3 GROUP BY class
C、SELECT AVG(成绩) FROM 成绩表 WHERE class<=3 order by class
D、SELECT AVG(成绩) FROM 成绩表 WHERE class<=3
正确答案:B;本题考察数据库查询语句;
解析:
having :对分组后的语句进行过滤;
select之后如果是聚合函数则group by 分组会显示null的结果,而order by不会显示null的结果;
order by 用于对结果集进行排序;group by 根据一个或多个列对结果集进行分组。返回结果,所依赖的列中元素不会重复;
10、磁盘阵列需要的配置文件和逻辑设备是()
A、Raid.conf与sdc0
B、Raid.conf与md0
C、Raidtab与md0
D、raidtab与hda0
正确答案:C;本题考查计算机组成原理相关内容;
解析:
磁盘阵列的配置文件为/etc/raidtab 逻辑设备为 /dev/md0磁盘阵列
11、某公司申请到一个C类IP地址,但要连接6个的子公司,最大的一个子公司有26台计算机,每个子公司在一个网段中,则子网掩码应设为()
A、255.255.255.128
B、255.255.255.224
C、255.255.255.0
D、255.255.255.192
正确答案:B;本题考察计算机网络相关内容;
解析:
因为有六个子公司,22<6<23,则必须有3位1;最大有26台,24<26<25,最少使用5位表示主机号,必须有5个0,所以二进制位11100000,转换为十进制是224;
12、mysql中查看SQL模式的命令是()
A、select global.sql_mode
B、select @@session.sql_mode
C、select @@sql_mode
D、select @@global.sql_mode
正确答案:C;本题考察mySql数据库相关内容;
解析
MySQL数据库中,变量分为 系统变量(以"@@"开头)和用户自定义变量。系统变量分为全局系统变量(global)和会话系统变量(session)。
@@global 仅用于访问全局系统变量的值;
@@session 仅用于访问会话系统变量的值;
@@ 先访问会话系统变量的值,若不存在则去访问全局系统变量的值;
sql_mode 为系统变量,既是全局系统变量,又是会话系统变量。
按照题目的描述选择B、C、D均正确,但是这里是单选题,而且给出的答案是C;所以
13、tcp套接字中不会阻塞的是()
A、write
B、bind
C、accept
D、read
正确答案:B;本题考察计算机网络相关知识;
解析:
首先,服务器端启动进程,调用Socket创建一个基于TCP协议的流套接字描述符。
其次,服务进程调用bind命名套接字,将套接字描述符绑定到本地地址和本地端口上。
再次,服务器端调用listen,开始侦听客户端的Socket连接请求。
接下来阻塞,直到收到了客户端的connect请求,调用accept进行相应。
因此,不阻塞bind和listen;即不参与解析和传输应该就不会阻塞
14、执行指令find / -name “test.c”,按Ctrl+z后的提示有[1]166,可以继续执行的方式有()
A、Ctrl+h
B、bg 1
C、fg 1
D、kill 166
正确答案: C;本题考查linux操作系统下的指令;
解析:
指令“find / -name “test.c””表示按照名字查找test.c文件;Ctrl+z表示挂起当前任务,[1]166中1表示任务编号,166表示进程号;
Ctrl+h表示删除光标前的一个字符;
bg n 命令表示将编号为n的任务转到后台执行;
fg n 命令表示将编号为n的任务转前台运行;
kill 166表示将进程为166的任务杀掉;
所以应该选择C;
15、在工程网络计划中,工作M的最早开始时间为第16天,其持续时间为5天。该工作有三项紧后工作,他们的最早开始时间分别为第25天,第27天和第30天,最迟开始时间分别为第28天、第29天和第30天。则工作M的总时差为()天。
A、7
B、5
C、6
D、9
正确答案:A;本题继续考察操作系统相关问题;
解析
总时差TF(Total Float )指一项工作在不影响总工期的前提下所具有的机动时间,即用最迟完成时间与最早完成时间之差,28-(16+5)=7 (总时差 = 最迟完成时间 - 最早完成时间)
自由时差 = 紧后工作最早开始时间 - 本工作最早完工时间
编程题(3道):
1、小易经常沉迷于网络游戏.有一次,他在玩一个打怪升级的游戏,他的角色的初始能力值为 a.在接下来的一段时间内,他将会依次遇见n个怪物,每个怪物的防御力为b1,b2,b3...bn. 如果遇到的怪物防御力bi小于等于小易的当前能力值c,那么他就能轻松打败怪物,并 且使得自己的能力值增加bi;如果bi大于c,那他也能打败怪物,但他的能力值只能增加bi 与c的最大公约数.那么问题来了,在一系列的锻炼后,小易的最终能力值为多少?
输入描述:
对于每组数据,第一行是两个整数n(1≤n<100000)表示怪物的数量和a表示小易的初始能力值.
第二行n个整数,b1,b2...bn(1≤bi≤n)表示每个怪物的防御力
输出描述:
对于每组数据,输出一行.每行仅包含一个整数,表示小易的最终能力值
输入例子
3 50
50 105 200
5 20
30 20 15 40 100
输出例子
110
205
代码:
https://github.com/ToryangChen/ImitateTest/blob/master/src/Game.java
2、兰博教训提莫之后,然后和提莫讨论起约德尔人,谈起约德尔人,自然少不了一个人,那 就是黑默丁格------约德尔人历史上最伟大的科学家. 提莫说,黑默丁格最近在思考一个问题:黑默丁格有三个炮台,炮台能攻击到距离它R的敌人 (两点之间的距离为两点连续的距离,例如(3,0),(0,4)之间的距离是5),如果一个炮台能攻击 到敌人,那么就会对敌人造成1×的伤害.黑默丁格将三个炮台放在N*M方格中的点上,并且给出敌人 的坐标. 问:那么敌人受到伤害会是多大?
输入描述:
第一行9个整数,R,x1,y1,x2,y2,x3,y3,x0,y0.R代表炮台攻击的最大距离,
(x1,y1),(x2,y2),(x3,y3)代表三个炮台的坐标.(x0,y0)代表敌人的坐标.
输出描述:
输出一行,这一行代表敌人承受的最大伤害,(如果每个炮台都不能攻击到敌人,输出0×)
输入例子:
1 1 1 2 2 3 3 1 2
输出例子:
2x
代码:
https://github.com/ToryangChen/ImitateTest/blob/master/src/Attach.java
3、在NM的草地上,提莫种了K个蘑菇,蘑菇爆炸的威力极大,兰博不想贸然去闯,而且蘑菇是隐形的.只 有一种叫做扫描透镜的物品可以扫描出隐形的蘑菇,于是他回了一趟战争学院,买了2个扫描透镜,一个 扫描透镜可以扫描出(33)方格中所有的蘑菇,然后兰博就可以清理掉一些隐形的蘑菇.问:兰博最多可以清理多少个蘑菇?
输入描述:
第一行三个整数:N,M,K,(1≤N,M≤20,K≤100),N,M代表了草地的大小;
接下来K行,每行两个整数x,y(1≤x≤N,1≤y≤M).代表(x,y)处提莫种了一个蘑菇.
一个方格可以种无穷个蘑菇.
输出描述:
输出一行,在这一行输出一个整数,代表兰博最多可以清理多少个蘑菇.
代码:
https://github.com/ToryangChen/ImitateTest/blob/master/src/Mushroom.java