《笔试答案及评分标准(共13页).doc》由会员分享,可在线阅读,更多相关《笔试答案及评分标准(共13页).doc(13页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上第一部分 Unix/Linux1. ( BC )在vi中,那些命令可以保存退出vi(2分)A、q!B、wqC、xD、q2. ( A)下面的那写命令可以用来修改文件的权限(2分)A、chmod B、chown C、chgrp D、chkey3. ( ACDE)以下那些函数是共享内存的相关函数(2分)Ashmget B. shmop C. shmdt D. shmat E. shmctl4. ( BCE )关于vi的编辑命令,下列说法是正确的(2分)A i和I可以在光标处插入资料,区别在于插入资料位置分别在光标前和光标后B a在光标后加入资料,A在行末加入资料C o在该行
2、之下新增一行用于输入,O在该行之上新增一行用于输入D d删除光标处字符,D删除光标前一个字符E x删除光标所在字符,X删除光标所在前一个字符5. ( ABCDE )可通过如下命令查看系统cpu负载、内存使用、磁盘I/O情况(2分)Aw B. sar C. up D.vmstat E.iostat6. ( B )FTP、TELNET服务的默认端口分别为(2分)A25,108 B.21,23 C.21,25 D.25,237. ( D )下面的命令可以列出当前操作系统所支持的信号(2分)Akill -9 B.kill s C.kill -16 D.kill l8. 在vi的非编辑状态,如何实现如下
3、功能,请简单描述。(20分)(1) 光标到某一行:n(2) 光标到该行尾$(3) 光标到该行首(4) 到文档最后一行G(5) 把光标所在行及其下一行连接为一行J(大写j)(6) 拷贝光标所在行开始的连续10行到文档最后 10yy, G, p(7) 查找文档中光标以后含有MAPS或者maps字符串的地方 :set ic; /maps(8) 使用vi过程中由于系统管理员发送广播消息,使屏幕换面混乱,请恢复到接收消息前的画面Ctrl + L(9) 显示当前光标所在行Ctrl + G 或者 :set nu(num/number)(10) 放弃对文件所作的修改并且退出:q!9. 用相应的命令,完成如下功
4、能。(45分)(1) 建立一个组testgroup add test(2) 建立用户test,属于组test,登陆目录为/export1/home/test,使用ksh。useradd d /export1/home/test m g test s /bin/ksh test(3) 设定test用户的密码为test。passwd test(4) 用test用户登录,在当前目录下创建空文件test。touch test 或者 vi test(保存退出)(5) 假设test用户主目录下有目录mp3,请在test用户主目录下列出mp3目录下所有文件,按照文件修改时间降序排列,把结果输入到文件test
5、中。ls lt mp3 ./test(6) 不使用vi,查看test文件。cat test 或者 more test(7) 假设test用户主目录下有bin目录,bin目录下有可执行程序dance,请设定环境变量,使得test用户在主目录下也能直接调用dance程序。PATH=$PATH:$HOME/binexport PATH(8) 列出test用户主目录以及所有子目录下文件名中含有maps字符串的文件。find . name *maps* -print(9) 对test用户主目录下的mp3目录进行打包、压缩。tar cvf name.tar mp3;compress ma3 或者 tar
6、zcvf name.tar.gz mp3(10) 查询dance程序的进程号(假定为后台运行)。ps ef |grep dance(11) 列出test用户所有后台运行的进程。jobs(12) 中止后台进程号为1的进程运行。kill -9 %1(13) 列出当前系统上的所有登陆用户。finger或者who(14) 列出最近100条登录系统的记录。last n 100(15) 删除test文件。rm test10. 把test用户设为超级用户,并且进行设置,使得test用户登录后直接执行/export1/home/test/test.sh程序,退出test.sh后就退出登录状态。(10分)方法一
7、:更改/etc/passwd文件方法二:更改用户主目录下的 .profile 文件,增加sh 控制11. 简单描述标准输入、标准输出、标准错误。(6分)是程序可以读取其输入的位置。缺省情况下,进程从键盘读取 stdin。是程序写入其输出的位置。缺省情况下,进程将 stdout 写到终端屏幕上。是程序写入其错误消息的位置。缺省情况下,进程将 stderr 写到终端屏幕上。12. 列出当前系统下各个分区及其空间大小状况;列出/export1/home/test/mp3整个目录总占用了多少空间。(5分)df h/-k/-vdu sk /export1/home/test/mp3第二部分 数据库 本部
8、分试题答案略,第1题10分,后面每题5分,总分70分。1. 建一个员工信息表employee,表中id(员工代码)、sex(员工性别)、name(姓名)、departmentid(部门代码)、address(住址)、birthdate(生日)、postcode(邮编)、salary(薪水)、workdate(入职日期)、remark(备注信息)。其中postcode、remark可以为空,薪水需为number类型,生日、入职日期为date型。以员工代码作为主键。Create table employee(id char(12) NOT NULL,sex char(1),name varchar
9、2(60),departmentid char(8),address varchar2(60),birthdate date,postcode char(8),salary char(17),workdate date,remark varchar2(60),PRIMARY KEY(ID);2. 插入两条记录,id分别为0023、1023,其余信息自己编造。INSERT INTO employee VALUES(0023,0,Harris,A,guangzhou,1980-01-01,5000.00,2008-01-01,);INSERT INTO employee VALUES(1023,0
10、,Harris,A,guangzhou,1980-10-01,5000.00,2008-01-01,);3. 查询员工总数、薪水总额。SELECT COUNT(*),COUNT(salary) FROM employee4. 查询出各部门的最小年龄、最大年龄。SELECT MAX(birthdate) AS MIN_AGE,MIN(birthdate) AS MAX_AGE FROM employee GROUP BY departmentid5. 统计每个部门的男女人数,按照部门代码排序。SELECT count(sex) FROM employee GROUP BY sex6. 创建入职日
11、期(workdate)索引employee_idx。CREATE INDEX employee_idx ON employee(worddate) 7. 修改id为0023的员工的入职日期为2007-12-31。UPDATE employee SET workdate = 2007-12-31 where id = 00238. 删除id为1023的员工信息。 DELETE FROM employee WHERE id = 10239. 使前面所做的修改、删除生效(假定数据库设置不是自动生效)。Commit10. 假定有一表结构和employee完全一样的表employee_bak,把empl
12、oyee表的数据完全导入employee_bak表。INSERT INTO employee_ bak SELECT * FROM employee11. 假设还有一表duty,其记录为员工的级别level,也是以员工id为主键。根据表employee、duty查询出级别在10级以上的所有员工详细信息。SELECT * FROM employee a, duty b WHERE a.id = b.id and b.level 1012. 不区分部门查询出入职日期最早的10位员工信息。DB2数据库表示SELECT * FROM employee ORDER BY workdate ASC FET
13、CH FIRST 10 ROWS ONLYSQL SERVER表示SELECT top 10 * FROM employee ORDER BY workdate ASC13. 删除索引employee_idx。DROP INDEX employee_idx第三部分 Java本部分试题和第四部分的C/C+任选一部分作答。一、选择题(30分)1 ( C )关于运算符和描述正确的是A.执行移动 B. 执行翻转C. 执行有符号左移,执行无符号左移 D.执行无符号左移,执行有符号左移2 ( CD )选出Java语言中的关键词A. NULL B.sizeof C.implements D.extends3
14、 (BCD )现有下述代码,选择出能够打印出”Test2”的数字 switch(x)case 1:System.out.println(Test1);case 2:case 3:System.out.println(Test2);break;System.out.println(Test3);A. 0 B.1 C.2 D.3 E.44 ( B )字符(char)的整型表示范围为A. 032767 B.065535 C.-256255 D.-32768327675 (A D E )选择Java语言中的基本数据类型(多选)A. byte B.Integer C.String D.char E.lo
15、ng6 ( C D )从下列选项中选择正确的Java表达式(多选)A. int k=new String(“aa”)B. String str=String(“bb”)C. char c=74; D. long j=8888;7 ( A D )Java网络程序设计中,下列正确的描述是(多选)A. Java网络编程API建立在Socket基础之上B. Java网络接口只支持TCP以及其上层协议C. Java网络接口只支持UDP以及其上层协议D. Java网络接口支持IP以上的所有高层协议8( A C )关于线程设计,下列描述正确的是(多选) A. 线程对象必须实现Runnable接口 B. 启动
16、一个线程直接调用线程对象的run()方法 C. Java提供对多线程同步提供语言级的支持 9( A )Java I/O程序设计中,下列描述正确的是 A. OutputStream用于写操作 B. InputStream用于写操作 C. I/O库不支持对文件可读可写API10( A B )下列描述中,那些符合Java语言的特征(多选) A. 支持跨平台(Windows,Linux,Unix等) B. GC(自动垃圾回收),提高了代码安全性 C. 支持类C的指针运算操作 D. 不支持与其它语言书写的程序进行通讯11( B )下述代码的执行结果为 public class foo static St
17、ring s;public static void main (Stringargs) system.out.printIn (“s=” + s); A. 代码能够编译,打印出“s=”B. 代码能够编译,打印出“s=null”C. 代码不能够编译,因为String s 没有初始化D. 代码能够编译,但是当调用toString()时抛出NullPointerException 异常12( B )下述代码的执行结果是class Super public int getLength() return 4; public class Sub extends Super public long getL
18、ength() return 5; public static void main (Stringargs) Super sooper = new Super (); Super sub = new Sub(); System.out.printIn(sooper.getLength()+ “,” + sub.getLength() ; A. 4, 4 B. 4, 5 C. 5, 4 D. 5, 5 E. 代码不能被编译13( B )下述程序的执行结果为int index = 1;String test = new String3;String foo = testindex; A. foo
19、的值为 “”B. foo 的值为 nullC. 抛出一个异常D. 程序不能够被编译14( A B D )关于Java语言,下列描述正确的是(多选)A. switch 不能够作用在String类型上B. List, Set, Map都继承自Collection接口C. Java语言支持goto语句D. GC是垃圾收集器,程序员不用担心内存管理15( A B C )关于异常(Exception),下列描述正确的是(多选)A. 异常的基类为Exception,所有异常都必须直接或者间接继承它B. 异常可以用try . . .catch(Exception e) . . .来捕获并进行处理C. 如果某
20、异常继承RuntimeException,则该异常可以不被声明D. 异常可以随便处理,而不是抛给外层的程序进行处理二、是非题(判断写法是否正确,如果错误,请指名具体错误)(15分)1aa.java:public abstract class aa bb.java: public class bb public static void main(String args) aa obj= new aa();System.out.println(“hello”); aa类是abstract类故不可以实例化。2public class Something public int addOne(final
21、 int x) return +x; int x被修饰成final,意味着x不能在addOne method中被修改。3aa.java:public final class aa bb.javapublic class bb extends aa aa类是final类故不可以继承。三、问答题(15分)1简述int和integer的区别。Java 提供两种不同的类型:引用类型和原始类型(或内置类型)。Int是java的原始数据类型,Integer是java为int提供的封装类。2数组的length和String的length有什么区别?数组的length是属性,String的length是方法。
22、3写出以下程序的输出。public class test public static void main(String args) System.out.println(test.doSomething();public static String doSomething()try System.out.println(aa);return dd ; catch (Exception e) System.out.println(bb);finallySystem.out.println(cc);return ff ;aaccdd四、编程题(请在背面作答或者另附纸作答)1写一个线程,每隔10秒钟
23、标准输出到屏幕上一个”hello world” , 打印10次以后退出。(10分)public class ThreadTest implements Runnable private int count = 0;public static void main(String args) ThreadTest test = new ThreadTest();Thread thd = new Thread(test);thd.start();try thd.join(); catch(InterruptedException e) e.printStackTrace();System.out.pr
24、intln(over);public void run() while(count+ 10) System.out.println(hello world);try Thread.sleep(10000); catch(InterruptedException e) break;2写一个接口,包含 public String doTest(Object obj) 这个方法,然后再写一个类并实现这个接口。(10分)public interface MyInterface public String doTest(Object obj);public class Myimpl implements
25、 MyInterface public String doTest(Object obj) if (obj instanceof byte) return new String(byte)obj); else return obj.toString();五、附加题(请在背面作答或者另附纸作答)1写一个Singleton出来,保证这个类只有一个实例。(10分)public class SingletonTest static SingletonTest sng;static Object obj;private String prtData;public static SingletonTest
26、 getInstance() if (sng != null) synchronized(obj) if (sng != null) sng = new SingletonTest();return sng;private SingletonTest() prtData = *;21100共一百个自然数,放入一个99个元素的数组a99,要求写出一个尽量简单的方案,找出没有被放入数组的这个数。(10分)public int find(int arr) byte tag = new bytearr.length;for (int i = 0; i arr.length - 1 | arri = 0
27、) throw new IllegalArgumentException();tagarri - 1 = 1;for (int i = 0; i tag.length; i+) if (tagi != 1) return i + 1;return -1;第四部分 C/C+本部分试题和第三部分任选一部分作答。一、填写BOOL , float, 指针变量 与“零值”比较的 if 语句。“零值”可以是0, 0.0 , FALSE 或者“空指针”。例如 int 变量 n 与“零值”比较的 if 语句为:if ( n = 0 ) 或者 if ( n != 0 )以此类推。请写出 BOOL flag 与“
28、零值”比较的 if 语句:if(flag = FALSE) if(flag != FALSE) 请写出 float x 与“零值”比较的 if 语句:if(x=0.00)if(x!=0.00)最准确,任何编译器都没歧义的表达if(x=(float)0.00)if(x!=(float)0.00)请写出 char *p 与“零值”比较的 if 语句:ANSI C编译器if(p = NULL)if(p != NULL)C89 编译器if(p=(void *)0)if(p!=(void *)0)二、以下为32 位C程序,请计算sizeof 的值。char str = “Hello” ;char *p
29、= str ;int n = 10;请计算sizeof (str ) = 6sizeof ( p ) = 4sizeof ( n ) = 4void Func ( char str100)请计算sizeof( str ) = 4void *p = malloc( 100 );请计算sizeof ( p ) = 4三、简答题1、头文件中的 ifndef/define/endif 干什么用?预编译时防止头文件被重复包含,而产生“重复定义”等预编译错误2、#include 和 #include “filename.h” 有什么区别?#include 在全部包含路径中搜索。#include “file
30、name.h” 在 C 文件当前目录搜索。注:GNU C 两者没有太大区别。都是从全部包含路径中搜索。3、const 有什么用途?(请至少说明两种)1. 修饰变量,防止变量被修改2. 修饰函数指针参数,防止指针被修改3. C+修饰函数本身,函数不能修改类成员。4、 在C+ 程序中调用被 C 编译器编译后的函数,为什么要加 extern “C”声明?C+对函数名、变量名会加入protocol编码(即:根据参数类型、参数个数加一些修饰,如 void MyFunc(int a) 成为 _GCRT_MyFuncqqvya4) 加上了 extern “C” 声明,表示让编译器去掉C+ protocol编
31、码功能。这样才能正确调用C写的API。5、请简述以下两个for 循环的优缺点:/ 第一个 / 第二个 for (i=0; iN; i+) if (condition) if (condition) for (i=0; iN; i+) DoSomething(); DoSomething(); else DoOtherthing(); else for (i=0; iN; i+) DoOtherthing(); 优点: 优点: 在循环中condition发生变化,会调用逻辑严谨,没有实时运行的歧义不同的方法。冗余代码少。缺点: 缺点: For中加if效率低,condition会产生冗余代码多。歧
32、义效果四、思考题1void GetMemory(char *p)char *GetMemory(void) p = (char *)malloc(100); char p = hello world; return p; void Test(void) void Test(void) char *str = NULL; GetMemory(str); char *str = NULL; strcpy(str, hello world); str = GetMemory(); printf(str); printf(str); 请问运行Test 函数会有什么样的结果? 请问运行Test 函数会有
33、什么样的结果? 答: 答: 1段错误(Segmentation fault)任意值,取的是临时栈地址2内存溢出Void GetMemory2(char *p, int num) void Test(void) *p = (char *)malloc(num); char *str = (char *) malloc(100); strcpy(str, “hello”); void Test(void) free(str); if(str != NULL) char *str = NULL; GetMemory2(&str, 100); strcpy(str, “world”); strcpy(
34、str, hello); printf(str); printf(str); 请问运行Test 函数会有什么样的结果? 请问运行Test 函数会有什么样的结果? 答: 答: 1. 正常输出 hello1.在单进程测试程序中 输出 world2. 内存泄漏2.在多线程中输出任意值五编程题(请在背面作答或者另附纸作答,后2题为可选)1对n个数进行排序,要求输出排序前后的结果。2编写strcpy 函数。已知strcpy 函数的原型是char *strcpy(char *strDest, const char *strSrc);其中strDest 是目的字符串,strSrc 是源字符串。(1) 不调用
35、C+/C 的字符串库函数,请编写函数 strcpychar *strcpy(char *strDest, const char *strSrc)while ( *strDest+ = *strSrc+);(2) strcpy 能把strSrc 的内容复制到strDest,为什么还要char * 类型的返回值?用作函数嵌套调用 如 trim(strcpy(dest,src);31100共一百个自然数,放入一个99个元素的数组a99,要求写出一个尽量简单的方案,找出没有被放入数组的这个数。int s ;int r ;s = 0 ;r = 0 ;for (int i = 0 ; i 99 ; i+)s = s + ai;r = 5050 - s; 专心-专注-专业