0%

笔试题总结

刷笔试题错误和易混点总结

1. 下面哪些机制可以用于进程间通信?

  • Socket
  • Named pipe
  • Named event
  • Critical Section
  • Shared memory
  • Virtual memory

Linux进程间通信:管道、信号、消息队列、共享内存、信号量、套接字(socket)
Linux线程间通信:互斥量(mutex),信号量,条件变量
Windows进程间通信:管道、消息队列、共享内存、信号量(semaphore)、套接字(socket)
Windows线程间通信:互斥量(mutex),信号量(semaphore)、临界区(critical section)、事件(event)

  • 管道( pipe ):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。
  • 有名管道 (named pipe) : 有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。
  • 信号量( semophore ) : 信号量是一个计数器,可以用来控制多个进程对共享资源的访问。它常作为一种锁机制,防止某进程正在访问共享资源时,其他进程也访问该资源。因此,主要作为进程间以及同一进程内不同线程之间的同步手段。
  • 消息队列( message queue ) : 消息队列是由消息的链表,存放在内核中并由消息队列标识符标识。消息队列克服了信号传递信息少、管道只能承载无格式字节流以及缓冲区大小受限等缺点。
  • 信号 ( signal ) : 信号是一种比较复杂的通信方式,用于通知接收进程某个事件已经发生。
  • 共享内存( shared memory ) :共享内存就是映射一段能被其他进程所访问的内存,这段共享内存由一个进程创建,但多个进程都可以访问。共享内存是最快的 IPC 方式,它是针对其他进程间通信方式运行效率低而专门设计的。它往往与其他通信机制,如信号两,配合使用,来实现进程间的同步和通信。
  • 套接字( socket ) : 套解口也是一种进程间通信机制,与其他通信机制不同的是,它可用于不同及其间的进程通信。

2. Linux系统中的wc (Word Count) 命令的功能为统计指定文件中的字节数、字数、行数,并将统计结果显示输出

1.命令格式:

wc [选项]文件…

2.命令功能:

统计指定文件中的字节数、字数、行数,并将统计结果显示输出。该命令统计指定文件中的字节数、字数、行数。如果没有给出文件名,则从标准输入读取。wc同时也给出所指定文件的***计数。

3.命令参数:

-c 统计字节数。

-l 统计行数。

-m 统计字符数。这个标志不能与 -c 标志一起使用。

-w 统计字数。一个字被定义为由空白、跳格或换行字符分隔的字符串。

-L 打印最长行的长度。

-help 显示帮助信息

–version 显示版本信息

4.使用实例:

实例1:查看文件的字节数、字数、行数

命令:

1
wc test.txt

输出:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[root@localhost test] # cat test.txt 
hnlinux
peida.cnblogs.com
ubuntu
ubuntu linux
redhat
Redhat
linuxmint
[root @localhost test] # wc test.txt
7 8 70 test.txt
[root @localhost test] # wc -l test.txt
7 test.txt
[root @localhost test] # wc -c test.txt
70 test.txt
[root @localhost test] # wc -w test.txt
8 test.txt
[root @localhost test] # wc -m test.txt
70 test.txt
[root @localhost test] # wc -L test.txt
17 test.txt

说明:

1
2
7 8 70 test.txt
行数 单词数 字节数 文件名

3. Cookie可以用于验证用户,并且可以在无状态的HTTP上建立一个用户会话层

正确

当浏览器访问服务器时,服务器会创建一个session对象(该对象有一个唯一的id号,称之为sessionId)服务器在默认的情况下,会将sessionId以cookie的方式,发送给浏览器,浏览器会将sessionId保存到内存中。当浏览器再次访问服务器时,会将sessionId发送给服务器,服务器依据sessionId就可以找到之间创建的session对象

4. 定义字符串 String str = “用户1|用户2|用户3|用户4”,现在想要对字符串根据字符“|”进行分割解析,下面哪种分割方式是正确的?

1
str.split(“\\|”)

|属于正则表达式中的字符,转义字符前面加\\

5. ATM 既可以用于广域网,又可以用于局域网,这是因为它的工作原理与 Ethernet 基本上是相同的

错误

ATM可以用于广域网,也可以用于广域网,一般用于广域网比较多。
ATM的原理是采用面向连接的传输方式,将数据分割成固定长度的信元,通过虚连接进行交换。
ATM的原理和以太网的原理是不一样的。

ATM是一种为了多种业务设计的通用的面向连接的传输模式。它适用于局域网和广域网,它具有高速数据传输率和支持许多种类型如声音、数据、传真、实时视频、CD质量音频和图像的通信。
ATM采用面向连接的传输方式,将数据分割成固定长度的信元,通过虚连接进行交换。ATM集交换、复用、传输为一体,在复用上采用的是异步时分复用方式,通过信息的首部或标头来区分不同信道。

6. 如果一个接口Glass有个方法setColor(),有个类BlueGlass实现接口Glass,则在类BlueGlass中正确的是

  • protected void setColor() {…}
  • void setColor() {…}
  • public void setColor() {…}
  • 以上语句都可以用在类BlueGlass中

JAVA 子类重写继承的方法时,不可以降低方法的访问权限,子类继承父类的访问修饰符要比父类的更大,也就是更加开放,假如我父类是protected修饰的,其子类只能是protected或者public,绝对不能是friendly(默认的访问范围)或者private,当然使用private就不是继承了。还要注意的是,继承当中子类抛出的异常必须是父类抛出的异常的子异常,或者子类抛出的异常要比父类抛出的异常要少。
接口中属性为public static final,方法为public abstract.

7. 以下哪些命令可以查看当前系统的启动时间

  • w
  • top
  • ps
  • uptime

w: 查看当前登录到系统中的用户,并查看该用户正在运行的进程
top: 查看Linux中的资源信息,第一行开始部分显示了系统当前时间,并显示已经运行了多长时间,两者相减就是系统启动时间
uptime: 查看系统启动时间
who -b: 查看登录到系统中的用户什么时候登录的

8. 关于Nginx的安全加固,以下说法正确的是

  • nginx的master进程不能以root权限启动
  • nginx的Worker进程不能以root权限启动
  • 图片等静态资源目录不能给脚本执行权限
  • 禁止访问.git、.svn和.sql目录,可以防止因运维操作不当造成的代码或数据泄漏