linux编程考试重点
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
题型:1 选择(30分) 2 填空(20分) 3判断(20分) 4简答(20分) 5编程(10分)
考试内容: 1Linux基础知识
2 组件编程基本知识:事件驱动
3 网络基础知识
4 数据库基础知识
5 操作系统并发编程的基本原理
一 选择
1 关于Linux操作系统的描述中,错误的是(D )
A.Linux是开源软件,支持多种应用 B.GNU的目标是创建完全自由的软件
C.Minix是开源软件,但不是自由软件 D.Linux是共享软件,但不是自由软件
2 下面的网络协议中,面向连接的的协议是:( A )。
A 传输控制协议 B 用户数据报协议 C 网际协议 D 网际控制报文协议
3 一个文件名字为rr.Z,可以用来解压缩的命令是( D )。
A tar B gzip C compress D uncompress
4 下列关于链接描述,错误的是( B )。
A 硬链接就是让链接文件的i节点号指向被链接文件的i节点
B 硬链接和符号连接都是产生一个新的i节点
C 链接分为硬链接和符号链接
D 硬连接不能链接目录文件
5 下列不是Linux操作系统特点的是( D )
A.开放性 B.良好的用户界面 C.良好的可移植性 D.单用户
6 Linux内核包括几个重要部分,其中有( D )
A.进程管理 B.网络管理 C.文件系统驱动 D.以上都包括
7 在Linux系统中最高目录是( C )
A.我的计算机 B.C:\ C./ D. home
8 可以代替任意单个字符的通配符是( A )。
A.? B.# C.@ D.*
9 在vi编辑器中,如果对文件进行修改后,不想保存被修改后的文件而要强行退出,应该使用(D )命令。
A.:ql B.:qw C.:q D.:q!
10 以下不属于Vi的3种工作模式的是(C )
A.末行模式 B.编辑模式 C.替换模式 D.命令模式
11 telnet 命令的功能是(C )
A.远程执行命令 B.传输信息 C.远程登录 D.查看网络状态
12 常见的Linux发布版本很多,下列不是Linux发布版本的是(D )
A.Red Hat Linux B.红旗Linux C.Fedora Core D.X-Window
13 怎样更改一个文件的权限设置?( B )
A.attrib B.chmod C.change D.file
14 关于线程,错误的是(C)
A. 主线程就是执行main方法对应的执行序列 B.主线程不需要用户显式建立
C. 类的一个方法可以在不同线程中同时运行 D.以上都不对
15 在图形编程中,让控件按相同大小排列用什么布局管理器?( )
A CardLayout
B GridLayout
C FlowLayout
D BorderLayout
16 临界区是__C__。
A.一个缓冲区 B.一段共享数据区 C.一段程序你 D.一个互斥资源
17 若信号量S的初值为2,当前值为-1,则表示有_B___等待进程。
A.0个 B.1个 C.2个 D.3个
18 从下面对临界区的论述中,选择一条正确的论述。(5)
(1)临界区是指进程中用于实现进程互斥的那段代码。
(2)临界区是指进程中用于实现
进程同步的那段代码。
(3)临界区是指进程中用于实现进程通信的那段代码。
(4)临界区是指进程中用于实现共享资源的那段代码。
(5)临界区是指进程中访问临界资源的那段代码。
19 有m个进程共享同一个临界资源,若使用信号量机制实现对一临界资源的互斥访问,则信号量的变化范围是(A)。
A.1 ~-(m-1) B.1 ~ m-1 C.1 ~ - m D.1 ~ m
20 FTP协议下层采用的协议是:(B)
A.UDP B. TCP C. IP D. TELNET
21 进程的并发执行是指两个以上的进程( B )。
A 同时执行 B 在执行的时间上重叠的
C 在执行的时间上是不重叠的 D 共享系统资源
22.用V操作唤醒一个等待进行程时,把唤醒进程的状态转换为( B )。
A 等待 B 就绪 C 运行 D 完成
23 存在下列关键字的SQL语句中,不能出现where字句的是的是(D)
A update B delete C select D alter
24 如果要在一张表中限制属性的数值范围,应该使用关键字( B )
A primary key B check C unique D foreign key
25 列值为空,说明这一列( C )
A 数值为0 B 值为空格 C 值未知 D 不存在
26 在sql语句中,可以匹配多个字符的通配符是 (C)
A * B ? C % D _
27 同样的消息被不同对象接受时可导致完全不同的行为,这种现象称为(A)。
A多态性 B继承性 C重载性 D封装性
28 进程和程序的一个本质区别是(A)。
A 前者为动态的,后者为静态的 B前者存储在内存,后者存储在外存
C 前者在一个文件中,后者在多个文件中 D前者分时使用CPU,后者独占CPU
29 The (A) class allows you to execute code at specified intervals.
A wxTimer B wxTextCtrl C wxStaticText D wxSocketSerer
30 Which style could let the text be echoed as asterisks in wxTextCtrl?
A wxTE_MULTILINE B wxTE_PASSWORD C wxTE_READONLY D wxTE_RICH
31 Which style could let the text will not be user-editable?
32 Which style could let the text text control allows multiple lines?
33 Which (A) event will be issued whenever there is data available for reading?
A wxSOCKET_INPUT B wxSOCKET_OUTPUT C wxSOCKET_CONNECTION D wxSOCKET_LOST
二 填空
1 在Linux系统中,以(文件)方式访问设备和网络等资源。
2 Ping命令可以测试网络中本机系统是否能到达 一台远程主机 ,所以常常用于测试网络的 连通性 。
3 vi编辑器具有两种工作模式: 命令模式 和 输入模式 。
4 进行远程登录的命令是 telnet 。
5 进行远程服务器登录的命令是 ftp.
6 DHCP是动态主机配置协议的简称,其作用是:为网络中的主机分配IP地址。
7 rm命令可删除文件或目录,其主要差别就是是否使用递归开关 -r或-R 。
8 mv 命令可以移动文件和目录,还可以为文件和目录重新命名。
9 线程可以分为分离线
程和联合线程
10 tcp/udp是属于ISO的七层模型传输层
11 事件的三要素是事event type, event class, event source
12 创建线程需继承类wxThread并重载Entry函数。
13 进程是资源分配的基本单位;线程是程序调度的基本单位
14 现代操作系统的基本特征是并发性和共享性
15 进程是由程序、数据和PCB组成的。
16 一次只允许一个并发进程(线程)访问的资源称之为临界资源
17 并发进程(线程)访问临界资源的代码称之为临界区
18 程序执行的特征是顺序性,封闭性和可再现性
19 某个信号量S初值为3,当前值为-2,则等待在该信号量上的进程数为(2)个。
20 wxWidgets可以将容器子元素进行横向或者纵向排列的布局是(wxBoxSizer)。
21 wxWidgets以相同大小的二维表格方式排列子元素的布局是(wxGridSizer)。
22 在C++类中,有一种不能定义对象的类,这样的类只能被继承,称之为 抽象类 ,定义该类至少具有一个 纯虚函数 。
23 There are two kinds of dialog, modal and modeless. A modal dialog blocks program flow and user input on other windows until it is dismissed, whereas a modeless dialog behaves more like a frame in that program flow continues, and input in other windows is still possible. To show a modal dialog you should use the ShowModal() method while to show a dialog modelessly you simply use Show(), just as with frames.
24 SQL的DML语句包括select\update\delete\insert
25 wxSocketBase is the base class for all socket-related objects, and it defines all basic IO functionality.
26 There are two types of threads in wxWidgets: detached and joinable
27 gcc编译器用于指定可输出文件名的参数是(-o )。
28 在关系数据库中,实体完整性是对主键的约束,参照完整性是对外键的约束。
29 Sql的集合处理方式与宿主语言的单记录处理方式之间用游标机制进行协调。
30 在Sql查询时,如果要去掉结果中重复记录,需用distinct关键字。
31 Sql语句中,表示判断条件的语句用where引导。
32 To use an event table you must first decide in which class you wish to handle the events, and the class must derives from wxEvtHandler.
三 判断
1 每个线程都有自己的堆栈空间。(T)
2 线程不携带任何资源,所以并发程度非常高。(F)
3 桌面管理程序只是Linux操作系统的一个应用程序。(T)
5 本地代码较之托管代码的可移植性更强,效率也更高。
6 操作系统中并发是并行的不同描述,原理相同。
7 在select中,当使用order by时,一定要使用group by
8 两个空值的比较结果是未知。
9 wxTimer控件只响应 wxTimerEvent 事件,且在程序运行期间,该控件在窗体中不可见.
10 分离线程建立于堆上HEAP;联合式可以建在STACK堆、栈上。
11 父类指针可以指向任何派生类的对象。
12 wxWidgets所有事件
函数的返回值必须为void。
13 任何一个进程都至少含有一个线程。
14 因特网传送数据比一定通过TCP/IP协议
15 一个关系中,主键的取值可以为NULL.
16 The events can be triggered by using the input devices (such as keyboard, mouse, joystick), directly or, more commonly, by a standard control which synthesizes such input events into higher level events
17 wxWidgets represents all events in a uniform way and allows you to handle them in the same way wherever they originate from.
18 wxWidgets represents these events in a uniform way and allows you to handle them in the same way wherever they originate from.
19 Threads are sometimes called light-weight processes, but the fundamental difference between threads and processes is that memory spaces of different processes are separated while all threads share the same address space.
20 Assume host A sends data to host B using a TCP socket. If A writes three
blocks of data into the TCP socket, then there will be three packets sent to B.
简答:
1.什么是临界区和相关临界区?
临界区是指在并发进程中与共享变量(共享资源)有关的程序段。
相关临界区是指在并发进程中涉及到相同变量(共享资源)的那些程序段。
2 TCP和UDP协议的区别
TCP:面向连接、传输可靠(保证数据正确性,保证数据顺序)、用于传输大量数据(流模式)、速度慢,建立连接需要开销较多(时间,系统资源。 UDP:面向非连接、传输不可靠、用于传输少量数据(数据包模式)、速度快。
3 wxString类型和int,char*类型的相互转化
wxString转换
wxString logBuf;
wxLogMessage( wxT("%s"), logBuf.c_str() );
wxString->char*
wxString wx_string=_T("hello");
char ansi_string[30];
strcpy(ansi_string,wx_string.mb_str());
char*->wxString
char ansii_string[100] = "我hello";
wxString wx_string(ansii_string,wxConvUTF8);
wxString->TCHAR*
wxString wx_string=_T("hello");
TCHAR wchar_string[30];
wcscpy(wchar_string,wx_string.wc_str());
TCHAR*->wxString
TCHAR *tchar_string = _T("hello");
wxString wx_string(tchar_string,wxConvUTF8);
char*->TCHAR*
char *ansii_string = "hello";
int size = strlen(ansii_string);
TCHAR unicode_string[100];
mbstowcs(unicode_string, ansii_string, size+1);
TCHAR*->char*
TCHAR* unicode_string=_T("unicode string");
int size= wcslen(unicode_string);
char ansi_string[30];
wcstombs(ansi_string, unicode_string, size+1);
wxString Message("打开源文件失败!",wxConvLocal);
wxMessageBox(Message);
char rsdata[100];
sprintf(rsdata,"刚读取的数据存放在:");
wxString mess(rsdata,wxConvLocal);
wxMessageBox(mess);
4 sql编程
create database stud;
use stud;
create table student(
num varchar(10
),
department varchar(30),
major varchar(30),
name varchar(20),
sex varchar(6),
primary key(num));
5.Please describe the differences between Process and Thread.
(1)划分尺度:线程更小,所以多线程程序并发性更高;(1分)
(2)资源分配:进程是资源分配的基本单位,同一进程内多个线程共享其资源;(3分)
(3)地址空间:进程拥有独立的地址空间,同一进程内多个线程共享其资源;(2分)
(4)处理器调度:线程是处理器调度的基本单位;(3分)
(5)执行:每个线程都有一个程序运行的入口,顺序执行序列和程序的出口,但线程不能单独执行,必须组成进程,一个进程至少有一个主线程。简而言之,一个程序至少有一个进程,一个进程至少有一个线程. (1分)
6.多线程编程中为什么要实现线程同步?试列举几种线程同步的方法。
当线程在同一进程中执行时,可能不止一个线程同时访问同一内存段的数据,执行同一段代码。为保证同一时间内只有一个线程对共享资源有控制权,就需要线程的同步。多线程共享系统资源,当他们协同工作时,需要在线程进行次序之间进行协调控制。同步的方法:临界区、互锁函数、互斥体、内核对象、信号量等。
7 编写多线程程序,主线程中有一int型变量g_cnt初始值为0和两个辅助线程t1, t2, t1和t2 都可以让g_cnt的值累加10次:
1) 生成多线程t1, t2并在主线程中启动;(5分)
2) 要求t1和t2可以并发执行并可以实现对g_cnt的互斥访问。(5分)
#include
#include
#include
#include
#include
int g_Flag=0;
void* thread1(void*);
void* thread2(void*);
/*
* when program is started, a single thread is created, called the initial thread or main thread.
* Additional threads are created by pthread_create.
* So we just need to create two thread in main().
*/
int main(int argc, char** argv)
{
printf("enter main\n");
pthread_t tid1, tid2;
int rc1=0, rc2=0;
rc2 = pthread_create(&tid2, NULL, thread2, NULL);
if(rc2 != 0)
printf("%s: %d\n",__func__, strerror(rc2));
rc1 = pthread_create(&tid1, NULL, thread1, &tid2);
if(rc1 != 0)
printf("%s: %d\n",__func__, strerror(rc1));
printf("leave main\n");
exit(0);
}
/*
* thread1() will be execute by thread1, after pthread_create()
* it will set g_Flag = 1;
*/
void* thread1(void* arg)
{
printf("enter thread1\n");
printf("this is thread1, g_Flag: %d, thread id is %u\n",g_Flag, (unsigned int)pthread_self());
g_Flag = 1;
printf("this is thread1, g_Flag: %d, thread id is %u\n",g_Flag, (unsigned int)pthread_self());
printf("leave thread1\n");
pthread_exit(0);
}
/*
* thread2() will be execute by thread2, after pthread_create()
* it will set g_Flag = 2;
*/
void* thread2(void* arg)
{
printf("enter thread2\n");
print
f("this is thread2, g_Flag: %d, thread id is %u\n",g_Flag, (unsigned int)pthread_self());
g_Flag = 2;
printf("this is thread1, g_Flag: %d, thread id is %u\n",g_Flag, (unsigned int)pthread_self());
printf("leave thread2\n");
pthread_exit(0);
}
8 设有一学生数据库,其数据模型为:S(sno int, sname char[30], sage int),其中要求sno是主键, sname 非空。
1) 写出建立数据表S的SQL语句。
2) 查询姓名为’Lisi’的学生年龄。
3) 查询学生总人数。
9 在“学生-选课-课程”数据库中的三个关系如下:
S(sno, sname, sage),SC(sno, sname, grade),C(cno, cname)。
写出建立数据表S,SC, C的SQL语句
查找选修"Linux应用开发"这门课程的学生的学生姓名和成绩。
10 Please describe the differences between #include < > and #include“”
① #include <>引用的是系统头文件,#include ""引用的是自定义头文件
② #include ""是先从本地目录开始寻找,然后去寻找系统路径,#include <> 相反先从系统目录,后从本地目录
11 使用TCP协议实现网络中两台主机之间的文本信息传输,假设:
1) A为服务器,其IP可被直接连接,监听在某端口;
2) B为客户 端,B知道A的IP和端口,并可直接连接A。