考点1:如何修改文件权限

怎样更改一个文件的权限设置?

  • A chmod
  • B file
  • C attrib
  • D change

解析

显示答案/隐藏答案正确答案: A

chmod 是change  mode of file 的缩写,改变文件的的读写权限。

考点2:hardware filename fixed-address server-name命令

在dhcpd.conf中用于向某个客户主机分配固定IP地址的参数是 ( )

  • A server-name
  • B fixed-address
  • C filename
  • D hardware

解析

显示答案/隐藏答案正确答案: B

hardware语句

语法

1
hardware hardware-type hardware-address; 

指明物理硬件接口类型和硬件地址。硬件地址由6个8位组构成,每个8位组以“:”隔开。如00:00:E8:1B:54:97

server-name 语句

1
server-name "name"; 

用于告诉客户服务器的名字。

fixed-address 语句

1
fixed-address address [, address ... ]; 

fixed-address 语句用于指定一个或多个IP地址给一个DHCP客户。只能出现在host声明里。

考点3:ls df du fine命令

下列哪个命令可以看到文件的大小?(不添加参数的情况下)

  • A ls
  • B df
  • C du
  • D find

解析

显示答案/隐藏答案正确答案: C

A:ls是list的缩写,用来显示当前目录下面文件的信息;如果要查看文件的大小则需要加上-al参数
B:df是disk free的缩写,用来显示文件系统中不同磁盘的使用情况;
C:du是disk usage的缩写,显示当前目录或者当前文件的占用的块大小;
D:find命令作用在目录下,用来查找指定目录或者当前目录下的文件。

ls -l查看文件大小

参考资料:https://www.cnblogs.com/sparkdev/p/7476005.html
ls -al命令输出的第5列就是该文件或目录的大小(以字节为单位显示的文件大小)。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[root@localhost ~]# ls -l exam/
总用量 3640
-rw-r--r--. 1 root root 3093 3月 19 21:12 _config.yml
-rw-r--r--. 1 root root 3498022 3月 22 20:29 db.json
-rw-r--r--. 1 root root 158 3月 19 21:12 FM.properties
-rw-r--r--. 1 root root 576 3月 19 21:12 HexoD.bat
-rw-r--r--. 1 root root 431 3月 22 20:52 HexoS.bat
-rwxr--r--. 1 root root 174 3月 19 21:16 hexos.sh
-rw-r--r--. 1 root root 376 3月 19 21:12 HexoSTest.bat
drwxr-xr-x. 308 root root 8192 3月 19 21:19 node_modules
-rw-r--r--. 1 root root 817 3月 19 21:12 package.json
-rw-r--r--. 1 root root 170424 3月 19 21:19 package-lock.json
drwxr-xr-x. 2 root root 4096 3月 19 21:12 scaffolds
drwxr-xr-x. 9 root root 4096 3月 19 21:12 source
-rw-r--r--. 1 root root 422 3月 19 21:12 StartWriting.bat
drwxr-xr-x. 3 root root 4096 3月 19 21:12 themes
[root@localhost ~]#

ls -lh

在 Linux 命令中,涉及到文件大小的地方,一般默认是以字节为单位显示的。这样可读性就不是很好。所以有了 -h 选项!这个选项的全称是 –human-readable(给人读的)。也就是以 K, M, G 等单位来显示文件的大小

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[root@localhost ~]# ls -lh exam/
总用量 3.6M
-rw-r--r--. 1 root root 3.1K 3月 19 21:12 _config.yml
-rw-r--r--. 1 root root 3.4M 3月 22 20:29 db.json
-rw-r--r--. 1 root root 158 3月 19 21:12 FM.properties
-rw-r--r--. 1 root root 576 3月 19 21:12 HexoD.bat
-rw-r--r--. 1 root root 431 3月 22 20:52 HexoS.bat
-rwxr--r--. 1 root root 174 3月 19 21:16 hexos.sh
-rw-r--r--. 1 root root 376 3月 19 21:12 HexoSTest.bat
drwxr-xr-x. 308 root root 8.0K 3月 19 21:19 node_modules
-rw-r--r--. 1 root root 817 3月 19 21:12 package.json
-rw-r--r--. 1 root root 167K 3月 19 21:19 package-lock.json
drwxr-xr-x. 2 root root 4.0K 3月 19 21:12 scaffolds
drwxr-xr-x. 9 root root 4.0K 3月 19 21:12 source
-rw-r--r--. 1 root root 422 3月 19 21:12 StartWriting.bat
drwxr-xr-x. 3 root root 4.0K 3月 19 21:12 themes
[root@localhost ~]#

考点4:Linux命令返回值

linux命令执行成功后会返回

  • A 0
  • B 1
  • C 2
  • D -1

解析

显示答案/隐藏答案正确答案: A

Linux命令返回值

参考资料:
https://blog.csdn.net/cy413026/article/details/104172448
Linux错误代码及其含义:https://blog.csdn.net/u013457167/article/details/79196306

在shell终端中,你所输入的一切命令其实都有返回值,而这个返回值默认保存在变量$?中,举例看一下

1
2
3
4
5
6
7
8
9
#! /bin/bash

grup_pwd=`cat /etc/grub.conf | grep -v ^# | grep password 2> /dev/null`

if [ $? -eq 0 ];then
echo " [ √ ] 已设置grub密码,符合要求"
else
echo " [ X ] 没有设置grub密码,不符合要求,建议设置grub密码"
fi

Linux错误码含义

Linux错误代码及其含义:https://blog.csdn.net/u013457167/article/details/79196306

考点5:查看文件命令cat more tail

为了查看不断更新的日志文件,可以使用的指令是()

  • A cat -n
  • B vi
  • C more
  • D tail -f

解析

显示答案/隐藏答案正确答案: D

linux 下tail用于查看档案的结尾,-f 参数是follow的意思,当文件增长时,输出后续添加的数据。所以使用使用tail命令的-f选项可以方便的查阅正在改变的日志文件。
Linux tail 命令:https://www.runoob.com/linux/linux-comm-tail.html

考点5:vi编辑器的三种模式

在RHEL5系统中,在vi编辑器环境中的任意时刻,选择”ESC”键后,编辑器将进入( )模式

  • A 命令
  • B 输入
  • C 末行
  • D 文本

解析

显示答案/隐藏答案正确答案: A

vim编辑器可以分为三种模式:
1.命令模式:控制屏幕光标的移动,进行文本的删除,复制等文字编辑工作,不使用【del】和【backspace】键,以及进入插入模式或者回到底行模式;
2.插入模式:只有在插入模式下,才可以输入文字,按【esc】可以回到命令模式,vim编辑器一打开是不可以输入的,因为刚打开时候处于命令模式;
3.底行模式:保存文件或者退出vim,也可以设置编辑环境和一些编译工作。

考点6:useradd命令

创建用户时不指定用户主目录的参数( )

  • A useradd -o
  • B useradd -m
  • C useradd -M
  • D useradd -d

解析

显示答案/隐藏答案正确答案: C
useradd参数 全称 释义
-b base-dir BASE_DIR 新账户的主目录的基目录
-c comment COMMENT 新账户的 GECOS 字段
-d home-dir HOME_DIR 新账户的主目录
-D defaults 显示或更改默认的 useradd 配置
-e expiredate EXPIRE_DATE 新账户的过期日期
-f inactive INACTIVE 新账户的密码不活动期
-g gid GROUP 新账户主组的名称或 ID
-G groups GROUPS 新账户的附加组列表
-h help 显示此帮助信息并推出
-k skel SKEL_DIR 使用此目录作为骨架目录
-K key KEY=VALUE 不使用 /etc/login.defs 中的默认值
-l no-log-init 不要将此用户添加到最近登录和登录失败数据库
-m create-home 创建用户的主目录
-M no-create-home 不创建用户的主目录
-N no-user-group 不创建同名的组
-o non-unique 允许使用重复的 UID 创建用户
-p password PASSWORD 加密后的新账户密码
-r system 创建一个系统账户
-s shell SHELL 新账户的登录 shell
-u uid UID 新账户的用户 ID
-U user-group 创建与用户同名的组
-Z selinux-user SEUSER 为 SELinux 用户映射使用指定 SEUSER

考点7:多进程同时操作一个文件

Linux下两个进程可以同时打开同一个文件,这时如下描述错误的是:

  • A 两个进程中分别产生生成两个独立的fd
  • B 两个进程可以任意对文件进行读写操作,操作系统并不保证写的原子性
  • C 进程可以通过系统调用对文件加锁,从而实现对文件内容的保护
  • D 任何一个进程删除该文件时,另外一个进程会立即出现读写失败
  • E 两个进程可以分别读取文件的不同部分而不会相互影响
  • F 一个进程对文件长度和内容的修改另外一个进程可以立即感知

解析

显示答案/隐藏答案正确答案: D

一般删除都是文件索引,如果两个文件同时打开同一个文件,一个线程执行删除操作,只要另一个线程不退出,就可以继续对该文件进行操作,一旦退出才找不到该文件的索引节点而报错。

内核中,对应于每个进程都有一个文件描述符表,表示这个进程打开的所有文件。文件描述表中每一项都是一个指针,指向一个用于描述打开的文件的数据块———file对象,file对象中描述了文件的打开模式,读写位置等重要信息,当进程打开一个文件时,内核就会创建一个新的file对象。需要注意的是,file对象不是专属于某个进程的,不同进程的文件描述符表中的指针可以指向相同的file对象,从而共享这个打开的文件。file对象有引用计数,记录了引用这个对象的文件描述符个数,只有当引用计数为0时,内核才销毁file对象,因此某个进程关闭文件,不影响与之共享同一个file对象的进程.
http://www.cnblogs.com/zhaoyl/archive/2012/05/15/2502010.html
http://blog.chinaunix.net/uid-26548237-id-3046664.html

考点8:TCP握手 分手

TCP的握手与分手,可能出现的情形有()。

  • A 握手需要3次通信
  • B 分手需要进行4次通信
  • C FINACK 在同一包里
  • D ACKSYN 在同一包里

解析

显示答案/隐藏答案正确答案: ABCD

知识盲区:后续再解析
https://m.nowcoder.com/questions?tagId=42507626&type=1&source=intelli&pos=6

考点9:Linux日志文件

以下说法正确的是()

  • A linux系统中的/var/log/lastlog日志记录了所有用户最后登录的记录,可以用lastlog命令查看
  • B linux系统中的/var/log/last日志可以用last命令查看
  • C /var/log/wtmp日志记录了登录过本系统的用户信息,可以用tail -f命令查看
  • D /var/run/utmp日志记录了正在登录本系统中的用户信息,可以用last -f命令查看

解析

显示答案/隐藏答案正确答案: AD

B. 执行last指令时,它会读取位于/var/log/wtmp的文件,并把该给文件的内容记录的登录系统的用户名单全部显示出来。
C. wtmp是二进制文件,他们不能被诸如tail命令剪贴或合并,需要使用who、w、users、last和ac来使用这两个文件包含的信息。

/var/log/lastlog:记录系统中所有用户最后一次的登录时间的曰志。这个文件也是二进制文件.不能直接用Vi 查看。而要使用lastlog命令查看
/var/log/wtmp :永久记录所有用户的登陆、注销信息,同时记录系统的后动、重启、关机事件。同样,这个文件也是二进制文件.不能直接用Vi查看,而要使用last命令查看.
/var/log/utmp:记录当前已经登录的用户的信息。这个文件会随着用户的登录和注销而不断变化,只记录当前登录用户的信息。同样,这个文件不能直接用Vi查看,而要使用w、who、users等命令查看

/var/log/wtmp是一个二进制文件,记录每个用户的登录次数和持续时间等信息,使用”last -f”查看,如”last -f /var/log/wtmp”;
/var/run/utmp是一个二进制文件,保存当前在本系统中的用户信息,使用”last -f”查看,如”last -f /var/run/utmp”;

参考资料

https://linux.cn/article-10096-1.html

考点1:HTML清除浮动

浮动会导致页面的非正常显示,以下几种清除浮动的方法,哪个是不推荐使用的?

  • A 在浮动元素末尾添加一个空的标签例如 <div style="clear:both"></div>
  • B 通过设置父元素overflow值为hidden;
  • C 父元素也设置浮动
  • D 给父元素添加clearfix

解析

显示答案/隐藏答案正确答案: C

完美的解答: https://segmentfault.com/a/1190000004865198

考点2:jQuery的text,html,val,attr方法

jQuery通过哪个方法可以设置或返回表单字段的值:

  • A $(&quot;#test&quot;).text()
  • B $(&quot;#test&quot;).html()
  • C $(&quot;#test&quot;).val()
  • D $(&quot;#test&quot;).attr()

解析

显示答案/隐藏答案正确答案: C

.value() 用在表单元素上,用来设置获取 input 或 select 的值
.html() 设置或返回的是源代码
.text() 设置或返回的是纯文本内容
.attr() 设置或返回被选元素的属性值

考点3:HTTP协议

下列关于HTTP协议的描述中,错误的是()

  • A HTTP协议是应用层协议,它的底层基于UDP连接
  • B HTTP协议规定了浏览器与服务器通信的四个步骤,依次是:建立连接、发送请求、接收响应、关闭连接
  • C HTTP请求报文中,包含请求方式、请求路径、协议版本、消息头等内容
  • D HTTP响应报文中,包含状态码、状态名、协议版本、消息头等内容

解析

显示答案/隐藏答案正确答案: A

http是一个简单的请求-响应协议,它通常运行在TCP之上,其底层基于TCP。

考点4:HTML5组合标题元素

在 HTML5 中,哪个元素用于组合标题元素?()

  • A <group>
  • B <header>
  • C <headings>
  • D <hgroup>

解析

显示答案/隐藏答案正确答案: D

https://m.runoob.com/tags/tag-hgroup.html

考点5:HTML滑块控件

哪种输入类型定义滑块控件?

  • A search
  • B controls
  • C slider
  • D range

解析

显示答案/隐藏答案正确答案: D

input type 为 range

input type属性 描述
button 定义可点击的按钮(大多与 JavaScript 使用来启动脚本)
checkbox 定义复选框。
color 定义拾色器。
date 定义日期字段(带有 calendar 控件)
datetime 定义日期字段(带有 calendar 和 time 控件)
datetime-local 定义日期字段(带有 calendar 和 time 控件)
month 定义日期字段的月(带有 calendar 控件)
week 定义日期字段的周(带有 calendar 控件)
time 定义日期字段的时、分、秒(带有 time 控件)
email 定义用于 e-mail 地址的文本字段
file 定义输入字段和 “浏览…” 按钮,供文件上传
hidden 定义隐藏输入字段
image 定义图像作为提交按钮
number 定义带有 spinner 控件的数字字段
password 定义密码字段。字段中的字符会被遮蔽。
radio 定义单选按钮。
range 定义带有 slider 控件的数字字段。
reset 定义重置按钮。重置按钮会将所有表单字段重置为初始值。
search 定义用于搜索的文本字段。
submit 定义提交按钮。提交按钮向服务器发送数据。
tel 定义用于电话号码的文本字段。
text 默认。定义单行输入字段,用户可在其中输入文本。默认是 20 个字符。
url 定义用于 URL 的文本字段。

考点6:HTML5相关框架或者类库

下列哪些是HTML5相关的框架或类库:( )

  • A spring-core
  • B RactiveJS
  • C Dubbo
  • D Bootstrap
  • E AngularJS
  • F Hibernate

解析

显示答案/隐藏答案正确答案: BDE

Bootstrap、AngularJS这三个。
查了一下:
Spring框架是一个开放源代码的J2EE应用程序框架
Dubbo是一款高性能、轻量级的开源Java RPC框架
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架

考点7:HTML5

下列属于HTML5新元素的是?()

  • A header
  • B nav
  • C section
  • D viewport

解析

显示答案/隐藏答案正确答案: ABC

Viewport是属性
HTML5中常用的新特性:
canvas元素:用于定义图形(图表等),只是图形容器,必须使用脚本来绘制图形。
audio:用于音频播放。
video:用于视频播放。
article:规定独立的自包含内容。
header:定义文档的页眉,介绍相关信息。
section:定义文档中的节。
footer:定义文档的页脚,通常有文档的作者、版权信息、联系方式等。
nav:定义导航链接。
表单控件:
calender
date
time
email
url
search
https://zhuanlan.zhihu.com/p/25445181

考点8:HTML5新增元素

下列选项中哪些标签是HTML5新增的?

  • A footer
  • B content
  • C section
  • D header

解析

显示答案/隐藏答案正确答案: ACD

考点9:

以下哪些HTML标签属于行内元素:

  • A p
  • B span
  • C canvas
  • D label
  • E img

解析

显示答案/隐藏答案正确答案: BDE

p 、canvas –> 块状元素
span 、img 、label –> 内联元素(行内)

考点1:Linux八进制文件权限

权限为765的文件,下列哪个是正确的权限位标记()?

  • A -rw-rw-r-x
  • B -rw-r-xr-r
  • C -rwxrw-r-x
  • D -rwxr-xrwx

解析

显示答案/隐藏答案正确答案: C

首先在 rwx 中r=4,w=2,x=1

1
2
3
7=4+2+1
6=4+2
5=4+1

因此是rwxrw-r-x,选C
至于最前面那位,如果是文件夹的话为d,否则为-

考点2:ls -al

用ls –al 命令列出下面的文件列表,哪个文件是符号连接文件?

  • A -rw-rw-rw- 2 hel-s users 56 Sep 09 11:05 hello
  • B -rwxrwxrwx 2 hel-s users 56 Sep 09 11:05 goodbye
  • C drwxr–r– 1 hel users 1024 Sep 10 08:10 zhang
  • D lrwxr–r– 1 hel users 2024 Sep 12 08:12 cheng > peng.yan1

解析

显示答案/隐藏答案正确答案: D

ls -l第一列含义

ls -l的第一列的

  • 第1个字符表示文件的类型,
    • - 表示文件;
    • d 表示目录directory;
    • l 表示软链接link。软链接 类似于快捷方式,当源文件丢失时,软链接也失败。
  • 第2,3,4个字符是文件所属主的权限,
  • 第5,6,7个字符是,所属组的权限,、
  • 第8,9,10个字符是其他用户的权限

软链接就类似windows的快捷方式,删掉源文件快捷方式就不能用了。 而硬链接源文件和新文件是同等地位的,删了源文件,用新文件依旧可以访问,只是有一个记录链接数的参数会减一。

考点3:Linux路由设置

局域网的网络地址192.168.1.0/24,局域网络连接其它网络的网关地址是192.168.1.1。主机192.168.1.20访问172.16.1.0/24网络时,其路由设置正确的是?

  • A route add –net 192.168.1.0 gw 192.168.1.1 netmask 255.255.255.0 metric 1
  • B route add –net 172.16.1.0 gw 192.168.1.1 netmask 255.255.255.0 metric 1
  • C route add –net 172.16.1.0 gw 172.16.1.1 netmask 255.255.255.0 metric 1
  • D route add default 192.168.1.0 netmask 172.168.1.1 metric 1

解析

显示答案/隐藏答案正确答案: B

-net 后面跟的是目标网络,gw就是gateway(网关入口)就是你从哪个网关去到那个目标网络。

考点4:Linux环境变量

以下哪个环境变量表示当前路径 () 。

  • A PATH
  • B PWD
  • C HOME
  • D ROOT

解析

显示答案/隐藏答案正确答案: B

pwd命令

命令pwd是print working directory的缩写,打印当前工作目录

PWD环境变量

大写的PWD代表环境变量,小写的pwd是shell命令输出当前工作目录。

查看PWD环境变量:

1
echo $PWD

PWD和OLDPWD环境变量

PWD记录当前的目录路径,当利用cd命令切换当前目录时,系统自动更新PWD的值,
OLDPWD记录旧的工作目录,即用户所处的前一个目录。

env命令

查看系统中所有环境变量可以使用env命令,可以看到PWD的值会随着工作目录变化而变化

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
[root@localhost ~]# env
NVM_RC_VERSION=
HOSTNAME=localhost
NVM_CD_FLAGS=
TERM=xterm
SHELL=/bin/bash
HISTSIZE=1000
SSH_CLIENT=192.168.1.4 5694 22
SSH_TTY=/dev/pts/5
NVM_DIR=/root/.nvm
JRE_HOME=/opt/java/jdk1.8.0_281/jre
USER=root
LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=01;36:*.axa=01;36:*.oga=01;36:*.spx=01;36:*.xspf=01;36:
MAIL=/var/spool/mail/root
PATH=/opt/java/jdk1.8.0_281/bin:/opt/java/jdk1.8.0_281/jre/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/git/bin:/root/bin
PWD=/root
JAVA_HOME=/opt/java/jdk1.8.0_281
LANG=zh_CN.UTF-8
HISTCONTROL=ignoredups
SHLVL=1
HOME=/root
LOGNAME=root
CLASSPATH=.:JAVA_HOME/lib:JRE_HOME/lib:
SSH_CONNECTION=192.168.1.4 5694 192.168.1.3 22
LESSOPEN=||/usr/bin/lesspipe.sh %s
_=/usr/bin/env
[root@localhost ~]#

PATH环境变量

PATHLinux中一个极为重要的环境变量,它用于帮助Shell找到用户输入的命令。用户所输入的每个命令实际上是一个源代码文件,计算机执行这个文件里的代码以实现这个命令的功能,这些源代码文件称为可执行文件。可执行文件存在于各种各样的目录下,PATH就记录了一系列的目录列表,Shell为每个输入命令搜索PATH中的目录列表。

HOME环境变量

HOME记录当前用户的目录,由/etc/passwd的倒数第2个域决定,HOME目录用于保存用户自己的文件。

[root@localhost ~]# cat /etc/passwd|grep root
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@localhost ~]# 

考点5:grep命令

在Linux系统中, 为找到文件try_grep含有以a字母为行开头的内容, 可以使用命令?

  • A grep -E #$ try_grep
  • B grep -E #a try_grep
  • C grep -E ^$ try_grep
  • D grep -E ^a try_grep

解析

显示答案/隐藏答案正确答案: D

grep命令

-E参数:表示使用扩展的正则表达式

^:开始行
$: 结束行

1
2
grep  -E  ^a  try_grep #匹配以a开头的行
grep -E a$ try_grep #匹配以a结束的行

考点6:tar解压参数

tar命令用于解压的参数是?

  • A -v
  • B -x
  • C -c
  • D -f

解析

显示答案/隐藏答案正确答案: B

tar参数

主要参数:

  • c:创建新的档案文件。如果用户想备份一个目录或是一些文件,就要选择这个选项。相当于打包
  • x:从档案文件中释放文件。相当于拆包

辅助参数:

  • z:是否同时具有 gzip 的属性?亦即是否需要用gzip 压缩或解压? 一般格式为xx.tar.gz或xx. tgz
  • j:是否同时具有 bzip2 的属性?亦即是否需要用bzip2 压缩或解压?一般格式为xx.tar.bz2
  • v:压缩的过程中显示文件!这个常用
  • f:使用档名,请留意,在 f 之后要立即接档名喔!不要再加其他参数!
  • p:使用原文件的原来属性(属性不会依据使用者而变)
  • –exclude FILE:在压缩的过程中,不要将 FILE 打包!

考点7:软链接硬链接

Linux中包括两种链接:硬链接(Hard Link)和软链接(Soft Link),下列说法正确的是()

  • A 软链接可以跨文件系统进行连接,硬链接不可以
  • B 当删除原文件的时候软链接文件仍然存在,且指向的内容不变
  • C 硬链接被删除,磁盘上的数据文件会同时被删除
  • D 硬链接会重新建立一个inode,软链接不会

解析

显示答案/隐藏答案正确答案: A

什么是链接

链接操作实际上是给系统中已有的某个文件指定另外一个可用于访问它的名称。对于这个新的文件名,我们可以为之指定不同的

硬链接

硬链接只能引用同一文件系统中的文件。
它引用的是文件在文件系统中的物理索引(也称为 inode)。
当您移动或删除原始文件时,硬链接不会被破坏,因为它所引用的是文件的物理数据而不是文件在文件结构中的位置。
硬链接的文件不需要用户有访问原始文件的权限,也不会显示原始文件的位置,这样有助于文件的安全。
如果您删除的文件有相应的硬链接,那么这个文件依然会保留,直到所有对它的引用都被删除。

软链接(符号链接)

软链接,其实就是新建立一个文件,这个文件就是专门用来指向别的文件的(那就和windows 下的快捷方式的那个文件有很接近的意味)。
软链接产生的是一个新的文件,但这个文件的作用就是专门指向某个文件的,删了这个软链接文件,那就等于不需要这个连接,和原来的存在的实体原文件没有任何关系,
但删除原来的文件,则相应的软链接不可用(cat那个软链接文件,则提示“没有该文件或目录“)。

硬链接与软链接的区别

硬链接不会创建inode 不可跨越文件系统

硬链接是不会建立inode的,他只是在文件原来的inode link count域再增加1而已,也因此硬链接是不可以跨越文件系统的。

软链接会重新创建inode

相反都是软链接会重新建立一个inode,当然inode的结构跟其他的不一样,他只是一个指明源文件的字符串信息。一旦删除源文件,那么软链接将变得毫无意义。

删除硬链接的时候 文件可能不会被删除

而硬链接删除的时候,系统调用会检查inode link count的数值,如果他大于等于1,那么inode不会被回收。因此文件的内容不会被删除。

硬链接的链接文件和源文件是同一个文件

硬链接实际上是为文件建一个别名,链接文件和原文件实际上是同一个文件。

可以通过ls -i来查看一下,这两个文件的inode号是同一个,说明它们是同一个文件;

而软链接建立的是一个指向,即链接文件内的内容是指向原文件的指针,它们是两个文件。

软链接可以跨文件系统

软链接可以跨文件系统,硬链接不可以;

硬链接的文件必须存在 软链接可以对不存在的文件进行链接

软链接可以对一个不存在的文件名(filename)进行链接(当然此时如果你vi这个软链接文件,linux会自动新建一个文件名为filename的文件),
硬链接不可以(其文件必须存在,inode必须存在);

软链接可以对目录进行链接 硬链接不可以

软链接可以对目录进行连接,硬链接不可以。

如何创建链接

两种链接都可以通过命令ln 来创建。

创建硬链接ln

ln默认创建的是硬链接。

创建软链接ls -s

使用ln -s可以创建软链接。

考点8:环境变量

在RHEL5系统中,下面关于shell环境变量配置文件的描述,正确的是( )

  • A 用户登录系统时,bash首先执行/etc/profile配置文件和/etc/profile.d/目录下的配置文件,这些配置文件对所有用户都有效
  • B 用户登录系统时,bash首先执行.bash_profile文件和.bashrc文件,这些配置文件对所有用户都有效
  • C 用户主目录下的.bashrc设置为每次登录时执行,而.bash_profile则为每次打开新的终端时执行
  • D 执行用户主目录下的环境变量配置文件时,不可以重复设置用户登录时配置文件中已经设置的选项

解析

显示答案/隐藏答案正确答案: A

https://www.jianshu.com/p/6d32b166f47d

/ect/profile

此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行.并从/etc/profile.d目录的配置文件中搜集shell的设置.

/etc/bashrc

为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取.

~/.bash_profile

每个用户都可使用该文件输入
专用于 自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行~/.bashrc文件.

~/.bashrc

该文件包含专用于用户的bash shell的bash信息,当登录时以及每次打开新的shell时,该该文件被读取.

~/.bash_logout

https://blog.csdn.net/wackycrazy/article/details/47998747
/etc/profile 文件中设定的环境变量,运行的命令或脚本,针对所有用户有效
/etc/bashrc 文件中设定的本地变量,定义的别名,针对所有启动的shell程序的用户有效
这两个配置文件是全局的。
~/.bash_profile 作用跟/etc/profile是一样的,只不过针对的是某一个用户
~/.bashrc的作用跟/etc/bashrc也是一样的,只不过针对的也是某一个用户

https://blog.csdn.net/ithomer/article/details/6322892
(1) /etc/profile: 此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行. 并从/etc/profile.d目录的配置文件中搜集shell的设置。
(2) /etc/bashrc: 为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取(即每次新开一个终端,都会执行bashrc)。
(3) /.bash_profile: 每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次。默认情况下,设置一些环境变量,执行用户的.bashrc文件。
(4) ~/.bashrc: 该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该该文件被读取。
(5) ~/.bash_logout: 当每次退出系统(退出bash shell)时,执行该文件. 另外,/etc/profile中设定的变量(全局)的可以作用于任何用户,而
/.bashrc等中设定的变量(局部)只能继承 /etc/profile中的变量,他们是”父子”关系。
(6) /.bash_profile: 是交互式、login 方式进入 bash 运行的/.bashrc 是交互式 non-login 方式进入 bash 运行的通常二者设置大致相同,所以通常前者会调用后者。

https://www.linuxprobe.com/diff-bashrcprofile.html
profile
其实看名字就能了解大概了, profile 是某个用户唯一的用来设置环境变量的地方, 因为用户可以有多个 shell 比如 bash, sh, zsh 之类的, 但像环境变量这种其实只需要在统一的一个地方初始化就可以了, 而这就是 profile.
bashrc
bashrc 也是看名字就知道, 是专门用来给 bash 做初始化的比如用来初始化 bash 的设置, bash 的代码补全, bash 的别名, bash 的颜色. 以此类推也就还会有 shrc, zshrc 这样的文件存在了, 只是 bash 太常用了而已.
期望的执行顺序

https://zhuanlan.zhihu.com/p/25944849
/.bashrc
该文件存储的是专属于个人bash shell的信息,当登录时以及每次打开一个新的shell时,执行这个文件。在这个文件里可以自定义用户专属的个人信息。
相关文件的读取顺序
在刚登录Linux时,首先启动 /etc/profile 文件,然后再启动用户目录下的 ~/.bash_profile、 ~/.bash_login或 ~/.profile文件中的其中一个,执行的顺序为:
/.bash_profile、 ~/.bash_login、 ~/.profile。如果 ~/.bash_profile文件存在的话,一般还会执行 ~/.bashrc文件。

http://blog.itpub.net/27040306/viewspace-732343/
/etc/profile、/etc/bashrc、/.bash_profile、/.bashrc很容易混淆,他们之间有什么区别?它们的作用到底是什么?
/etc/profile: 用来设置系统环境参数,比如$PATH. 这里面的环境变量是对系统内所有用户生效的。
/etc/bashrc: 这个文件设置系统bash shell相关的东西,对系统内所有用户生效。只要用户运行bash命令,那么这里面的东西就在起作用。
/.bash_profile: 用来设置一些环境变量,功能和/etc/profile 类似,但是这个是针对用户来设定的,也就是说,你在/home/user1/.bash_profile 中设定了环境变量,那么这个环境变量只针对 user1 这个用户生效.
~/.bashrc: 作用类似于/etc/bashrc, 只是针对用户自己而言,不对其他用户生效。
另外/etc/profile中设定的变量(全局)的可以作用于任何用户,而
/.bashrc等中设定的变量(局部)只能继承/etc/profile中的变量,他们是”父子”关系.
~/.bash_profile 是交互式、login 方式进入 bash 运行的,意思是只有用户登录时才会生效。
~/.bashrc 是交互式 non-login 方式进入 bash 运行的,用户不一定登录,只要以该用户身份运行命令行就会读取该文件。

https://cloud.tencent.com/developer/article/1148535

/etc/profile
为系统的每个用户设置环境信息和启动程序,当用户第一次登录时,该文件被执行,其配置对所有登录的用户都有效。当被修改时,必须重启才会生效。英文描述:”System wide environment and startup programs, for login setup.”
/etc/environment
系统的环境变量,/etc/profile是所有用户的环境变量,前者与登录用户无关,后者与登录用户有关,当同一变量在两个文件里有冲突时,以用户环境为准。
/etc/bashrc
为每个运行 bash shell 的用户执行该文件,当 bash shell 打开时,该文件被执行,其配置对所有使用bash的用户打开的每个bash都有效。当被修改后,不用重启只需要打开一个新的 bash 即可生效。英文描述:”System wide functions and aliases.”
/.bash_profile
为当前用户设置专属的环境信息和启动程序,当用户登录时该文件执行一次。默认情况下,它用于设置环境变量,并执行当前用户的 .bashrc 文件。理念类似于 /etc/profile,只不过只对当前用户有效,也需要重启才能生效。(注意:Centos7系统命名为.bash_profile,其他系统可能是.bash_login或.profile。)
~/.bashrc
为当前用户设置专属的 bash 信息,当每次打开新的shell时,该文件被执行。理念类似于/etc/bashrc,只不过只对当前用户有效,不需要重启只需要打开新的shell即可生效。
~/.bash_logout
为当前用户,每次退出bash shell时执行该文件,可以把一些清理工作的命令放进这个文件。
/etc/profile.d/
此文件夹里是除/etc/profile之外其他的”application-specific startup files”。英文描述为”The /etc/profile file sets the environment variables at startup of the Bash shell. The /etc/profile.d directory contains other scripts that contain application-specific startup files, which are also executed at startup time by the shell.” 同时,这些文件”are loaded via /etc/profile which makes them a part of the bash “profile” in the same way anyway.” 因此可以简单的理解为是/etc/profile的一部分,只不过按类别或功能拆分成若干个文件进行配置了(方便维护和理解)。
注意事项
以上需要重启才能生效的文件,其实可以通过source xxx暂时生效。
文件的执行顺序为:当登录Linux时,首先启动/etc/environment和/etc/profile,然后启动当前用户目录下的/.bash_profile,执行此文件时一般会调用/.bashrc文件,而执行/.bashrc时一般会调用/etc/bashrc,最后退出shell时,执行/.bash_logout。简单来说顺序为:
(登录时)/etc/environment –> /etc/profile(以及/etc/profile.d/里的文件) –> ~/.bash_profile –> (打开shell时)
/.bashrc –> /etc/bashrc –> (退出shell时)~/.bash_logout

考点9:shell脚本参数

如果参数列表个数为1则执行$<1 , 如果参数列表个数为2则执行$<2<$ ,其他情况则……,补充下面的命令

1
2
3
4
5
6
7
Case (  ) in
1>
$<1
2>
$<2<$1
Default >
echo ……
  • A $$
  • B $#
  • C $@
  • D $*

解析

显示答案/隐藏答案正确答案: B
命令 描述
$# 是传给脚本的参数个数
$0 是脚本本身的名字
$1 是传递给该shell脚本的第一个参数
$2 是传递给该shell脚本的第二个参数
$@ 是传给脚本的所有参数的列表
$* 是以一个单字符串显示所有向脚本传递的参数,与位置变量不同,参数可超过9个
$$ 是脚本运行的当前进程ID号
$? 是显示最后命令的退出状态,0表示没有错误,其他表示有错误

考点10:进程间通讯方式

进程间通讯方式有哪些?

  • A 管道
  • B 消息队列
  • C 共享内存
  • D 文件和记录锁定

解析

显示答案/隐藏答案正确答案: ABCD

UNIX的通信方式

1 文件和记录锁定

为避免两个进程间同时要求访问同一共享资源而引起访问和操作的混乱,在进程对共享资源进行访问前必须对其进行锁定,该进程访问完后再释放。这是UNIX为共享资源提供的互斥性保障。

2 管道

管道一般用于两个不同进程之间的通信。当一个进程创建一个管道,并调用fork创建自己的一个子进程后,父进程关闭读管道端,子进程关闭写管道端,这样 提供了两个进程之间数据流动的一种方式。

3 FIFO

FIFO是一种先进先出的队列。它类似于一个管道,只允许数据的单向流动。每个FIFO都有一个名字,允许不相关的进程访问同一个FIFO。因此也成为命名管。

4 消息队列

UNIX下不同进程之间可实现共享资源的一种机制;UNIX允许不同进程将格式化的数据流以消息形式发送给任意进程。对消息队列具有操作权限的进程都可以使用msget完成对消息队列的操作控制。通过使用消息类型,进程可以按任何顺序读消息,或为消息安排优先级顺序。

5 信号灯

作为进程间通讯的一种方法,它不是用于交换大批数据,而用于多进程之间的同步(协调对共享存储段的存取)。

6 共享内存

通过信号灯实现存储共享(类似“红灯停、绿灯行”)

考点1:cat -n

cat -n file1 file2命令的意思是?

  • A 只会把文件file1的内容输出到屏幕上。
  • B 把文件file1file2连在一起,然后输出到屏幕上。
  • C 创建文件file1file2
  • D 把file2的内容输出到file1中并保存

解析

显示答案/隐藏答案正确答案: B

参数-n 或 –number 表示显示行号,行号从1开始

上述命令即将file1和file2的文件内容连在一起然后输出到屏幕,并打印行号,file1和file2文件内容不变

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
[root@localhost ~]# cat --help
用法:cat [选项]... [文件]...
将[文件]或标准输入组合输出到标准输出。

-A, --show-all 等于-vET
-b, --number-nonblank 对非空输出行编号
-e 等于-vE
-E, --show-ends 在每行结束处显示"$"
-n, --number 对输出的所有行编号
-s, --squeeze-blank 不输出多行空行
-t 与-vT 等价
-T, --show-tabs 将跳格字符显示为^I
-u (被忽略)
-v, --show-nonprinting 使用^ 和M- 引用,除了LFD和 TAB 之外
--help 显示此帮助信息并退出
--version 显示版本信息并退出

如果没有指定文件,或者文件为"-",则从标准输入读取。

示例:
cat f - g 先输出f 的内容,然后输出标准输入的内容,最后输出g 的内容。
cat 将标准输入的内容复制到标准输出。

GNU coreutils online help: <http://www.gnu.org/software/coreutils/>
请向<http://translationproject.org/team/zh_CN.html> 报告cat 的翻译错误
要获取完整文档,请运行:info coreutils 'cat invocation'
[root@localhost ~]#

考点2:自由软件的定义

说 Linux 是一种”自由软件”的主要理由是 ____________ 。

  • A Linux的源代码是公开的
  • B Linux是多用户、多任务的操作系统
  • C Linux具有可移植性
  • D Linux属于GPL软件

解析

显示答案/隐藏答案正确答案: A

考点3:多路复用IO监听 套接字描述符 select方法的第一个参数maxfd的取值

采用多路复用I/O监听3个套接字的数据时,如果套接字描述符分别是:5,17,19,则
select(int maxfd,struct fd_set* rdset,NULL,NULL)
中的maxfd应取为()

  • A 4
  • B 20
  • C 5
  • D 9

解析

显示答案/隐藏答案正确答案: B

Maxfd表示要监视的文件描述符的范围,一般取监视的描述符数的最大值+1

考点4:文件权限

某文件的组外成员的权限为只读;所有者有全部权限;组内的权限为读与写,则该文件的权限为__ _ ___ 。

  • A 467
  • B 674
  • C 476
  • D 764

解析

显示答案/隐藏答案正确答案: D

文件权限ugo

u-g-o:用户-组内用户-其他用户

r-w-x:用4-2-1表示。

所有者u有全部权限:

1
rwx = 7

组内g的权限为读与写:

1
rw- = 6

组外成员o的权限为只读:

1
r-- = 4

如:-r-xr-x--x为551
最前面的-表示文件类型,

  • 如果是文件用-表示,
  • 如果是文件夹用d表示,
  • 如果是链接文件用l表示。

考点5:显示当前目录的命令

用什么命令来显示当前目录?

  • A echo $(pwd)
  • B echo pwd
  • C $pwd
  • D pwd | echo

解析

显示答案/隐藏答案正确答案: A

考对于命令替换、echo、环境变量、管道的理解。

A. 将命令替换$()内的的pwd命令执行后,输出结果给到echo,再由echo输出。等效于直接执行命令pwd
B. echo后面的普通字符会被直接默认当做字符串输出。
C. 一般来说系统里是不存在$pwd这个环境变量的,而有$PWD$OLDPWD,这俩环境变量分别是用来打印当前、上一次工作目录的。一般在shell脚本编写里也会使用环境变量$PWD来代替命令$(pwd)获取当前工作目录。
D. 由于存在管道符,所以pwd命令的输出传递给了管道后的输入,但echo无法接收该输入,所以就相当于把pwd的结果丢弃了,然后执行echo,就输出为空了。如果想要把通过管道后的输入作为参数传递给echo,则需要加上xargs。像这样pwd | xargs echo

考点6:bash环境的用户文件

定义bash环境的用户文件是?

  • A bash &.bashrc
  • B bash & bash_profile
  • C bashrc &.bash_profile
  • D bashrc &.bash_conf

解析

显示答案/隐藏答案正确答案: C
文件 描述
~/.bash_profile 每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件.此文件类似于/etc/profile,也是需要需要重启才会生效,/etc/profile对所有用户生效,~/.bash_profile只对当前用户生效。
~/.bashrc 该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该文件被读取.(每个用户都有一个.bashrc文件,在用户目录下)此文件类似于/etc/bashrc,不需要重启生效,重新打开一个bash即可生效, /etc/bashrc对所有用户新打开的bash都生效,但~/.bashrc只对当前用户新打开的bash生效。

考点7:死锁的必要条件

下面哪些是死锁的必要条件?

  • A 互斥
  • B 请求保持
  • C 不可剥夺
  • D 环路

解析

显示答案/隐藏答案正确答案: ABCD

产生死锁的四个必要条件

(1) 互斥条件:一个资源每次只能被一个进程使用。
(2) 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。
(3) 不剥夺条件:进程已获得的资源,在使用完之前,不能强行剥夺。
(4) 循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。

考点8:查看Linux系统状态的命令

如何查看当前Linux系统的状态,如CPU使用,内存使用,负载情况,下列描述正确的是?

  • A 可以使用top命令分析CPU使用,内存使用,负载等情况
  • B 可以使用free查看内存整体的使用情况
  • C 可以使用cat /proc/meminfo查看内存更详细的情况
  • D 以上描述都不正确

解析

显示答案/隐藏答案正确答案: ABC

top命令:
Linux下常用的性能分析工具。能够实时显示系统中各个进程对资源的占用状况。
free命令:
可以显示Linux系统中空闲的、已用的物理内存及swap内存,及被内核使用的buffer。
df命令:
用于显示当前在Linux系统上的文件系统的磁盘使用情况的统计信息。

考点9:DHCP 获取服务器分配的IP地址的命令

Linux系统中,已经将DHCP服务器架设好,客户端的网络接口eth0,可以通过( )命令获得服务器分配的IP地址。多选

  • A dhclient
  • B ifdown eth0;ifup eth0
  • C ifconfig
  • D service network stop;service network start

解析

显示答案/隐藏答案正确答案: ABD

考点1:Linux添加用户命令

增加一个用户的命令是什么

  • A useradd
  • B usermod
  • C groupadd
  • D userdel

解析

显示答案/隐藏答案正确答案: A
  • useradd 增加用户
  • usermod 修改用户账号信息
  • groupadd 添加组账号
  • userdel 删除用户

考点2:查看线程信息的gdb

写出完成gdb查看线程信息功能的gdb命令。

  • A bt
  • B info thread
  • C set scheduler-locking off
  • D info break

解析

显示答案/隐藏答案正确答案: B

backtrace bt

打印当前的函数调用栈的所有信息。

info threads

显示当前可调试的所有线程,每个线程会有一个GDB为其分配的ID,后面操作线程的时候会用到这个ID。前面有*的是当前调试的线程。

set scheduler-locking

线程调试显示线程状态,off 不锁定任何线程

info break

可列出所有断点信息,info break 后也可设置要查看的break num

考点3:Linux查看CPU占用

linux查看cpu占用的命令是什么?

  • A top
  • B netstat
  • C free
  • D df

解析

显示答案/隐藏答案正确答案: A
命令 功能
top 查看CPU占用、
netstat 显示网络连接、路由表、网络接口信息、
free 查看内存使用情况、
df 检查文件系统的磁盘空间的占用情况

top

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
[root@localhost ~]# top
top - 14:55:48 up 1 day, 7:53, 1 user, load average: 5.39, 5.48, 5.66
Tasks: 459 total, 5 running, 454 sleeping, 0 stopped, 0 zombie
%Cpu(s): 2.9 us, 10.5 sy, 0.0 ni, 86.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 3686064 total, 210728 free, 1495188 used, 1980148 buff/cache
KiB Swap: 0 total, 0 free, 0 used. 2154167 avail Mem

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
459 aid_med+ 20 0 105704 25716 8812 S 28.6 0.7 525:05.08 mediaserver
18389 root 20 0 112596 2364 1372 R 23.8 0.1 0:00.13 top
271 root rt 0 0 0 0 S 4.8 0.0 20:48.85 cfinteractive
3100 root 19 -1 0 0 0 S 4.8 0.0 11:05.56 VosRXThread
1 root 20 0 1256 1000 396 S 0.0 0.0 1:29.37 init
2 root -2 0 0 0 0 S 0.0 0.0 0:00.25 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 2:26.66 ksoftirqd/0
6 root 20 0 0 0 0 S 0.0 0.0 0:00.10 kworker/u16:0
7 root 20 0 0 0 0 S 0.0 0.0 3:14.78 rcu_preempt
8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh
9 root 20 0 0 0 0 S 0.0 0.0 0:00.68 rcu_sched
10 root rt 0 0 0 0 S 0.0 0.0 0:24.56 migration/0
11 root rt 0 0 0 0 S 0.0 0.0 0:18.06 migration/1
12 root 20 0 0 0 0 S 0.0 0.0 1:50.00 ksoftirqd/1
15 root rt 0 0 0 0 S 0.0 0.0 0:14.80 migration/2
16 root 20 0 0 0 0 S 0.0 0.0 1:36.11 ksoftirqd/2
19 root rt 0 0 0 0 S 0.0 0.0 0:13.23 migration/3
20 root 20 0 0 0 0 S 0.0 0.0 1:26.22 ksoftirqd/3
22 root 0 -20 0 0 0 S 0.0 0.0 0:15.00 kworker/3:0H
23 root rt 0 0 0 0 S 0.0 0.0 0:04.04 migration/4
24 root 20 0 0 0 0 S 0.0 0.0 0:03.91 ksoftirqd/4
26 root 0 -20 0 0 0 S 0.0 0.0 0:00.15 kworker/4:0H
27 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 khelper
28 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 netns
29 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 wakelock_printk
30 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 perf
[root@localhost ~]#

考点4:/etc目录下各个文件的作用

下列文件中,包含了主机名到IP地址的映射关系的文件是: 。

  • A /etc/HOSTNAME
  • B /etc/hosts
  • C /etc/resolv.conf
  • D /etc/networks

解析

显示答案/隐藏答案正确答案: B

/etc/目录下的文件的作用

/etc/文件 作用
/etc/resolv.conf DNS配置文件。在网卡配置文件中进行配置,默认情况下 网卡配置文件DNS优先于/etc/resolv.conf
/etc/hostname Centos 7,配置主机名,查看修改。
/etc/hosts ip与域名对应关系 ,解析域名(主机名),用/etc/hosts搭建网站的测试环境 (虚拟机)。不同服务器之间相互访问。
/etc/fstab file system table :文件系统挂载表,开机的时候设备与入口对应关系 开机自动挂载列表。
/etc/rc.local 开机自启
/etc/inittabcentos 6 运行级别的配置文件
/etc/profile 环境变量配置文件
/etc/bashrc 命令别名
/etc/motd 文件中的内容 会在用户登录系统之后显示出来
/etc/issue /etc/issue.net 文件中的内容 会在用户登录系统之前显示出来

考点5:Linux系统调用

linux的系统调用是指

  • A 由内核发起的调用
  • B glibc函数库里的函数
  • C 由系统管理员运行的程序
  • D 是用户进程调用内核功能的接口

解析

显示答案/隐藏答案正确答案: D

什么是系统调用

系统调用是指内核提供的,功能十分强大的一系列函数。这些系统调用是在内核中实现的,再通过一定的方式把系统调用给用户,一般通过门(gate)陷入(trap)实现。系统调用是用户程序和内核交互的接口。

5个系统调用

  • open,
  • write,
  • read,
  • close,
  • ioctl

考点6:top free /proc/meminfo

如何查看当前Linux系统的状态,如CPU使用,内存使用,负载情况,下列描述正确的是?

  • A 可以使用top命令分析CPU使用,内存使用,负载等情况
  • B 可以使用free查看内存整体的使用情况
  • C 可以使用cat /proc/meminfo查看内存更详细的情况
  • D 以上描述都不正确

解析

显示答案/隐藏答案正确答案: ABC

分析CPU使用 内存使用 负载情况 top

见上述的top

查看内存整体使用情况 free -h

1
2
3
4
5
[root@localhost ~]# free -h
total used free shared buff/cache available
Mem: 3.5G 1.4G 202M 2.8M 1.9G 2.1G
Swap: 0B 0B 0B
[root@localhost ~]#

查看内存详细信息 cat /proc/meminfo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
[root@localhost ~]# cat /proc/meminfo
MemTotal: 3686064 kB
MemFree: 204972 kB
Buffers: 117712 kB
Cached: 1803660 kB
SwapCached: 0 kB
Active: 1754532 kB
Inactive: 1109552 kB
Active(anon): 949128 kB
Inactive(anon): 2440 kB
Active(file): 805404 kB
Inactive(file): 1107112 kB
Unevictable: 5956 kB
Mlocked: 0 kB
SwapTotal: 0 kB
SwapFree: 0 kB
Dirty: 0 kB
Writeback: 84 kB
AnonPages: 948680 kB
Mapped: 467008 kB
Shmem: 2820 kB
Slab: 150864 kB
SReclaimable: 64912 kB
SUnreclaim: 85952 kB
KernelStack: 38384 kB
PageTables: 35820 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 1843032 kB
Committed_AS: 86691356 kB
VmallocTotal: 251658176 kB
VmallocUsed: 189540 kB
VmallocChunk: 251341732 kB
[root@localhost ~]#

考点7:哪些是子进程从父进程继承得到的

在Linux上,对于多进程,子进程继承了父进程的下列哪些?

  • A 进程地址空间
  • B 共享内存
  • C 信号掩码
  • D 已打开的文件描述符
  • E 以上都不是

解析

显示答案/隐藏答案正确答案: BCD

参考:

子进程继承父进程

  • 用户号UIDs和用户组号GIDs;
  • 环境Environment;
  • 堆栈;
  • 共享内存;
  • 打开文件的描述符;
  • 执行时关闭(Close-on-exec)标志;
  • 信号(Signal)控制设定;
  • 进程组号;
  • 当前工作目录;
  • 根目录;
  • 文件方式创建屏蔽字;
  • 资源限制;
  • 控制终端;

子进程独有

  • 进程号PID;
  • 不同的父进程号;
  • 自己的文件描述符和目录流的拷贝;
  • 子进程不继承父进程的进程正文(text),数据和其他锁定内存(memory locks);
  • 不继承异步输入和输出;

父进程和子进程拥有独立的地址空间和PID参数。

子进程从父进程继承了用户号和用户组号,用户信息,目录信息,环境(表),打开的文件描述符,堆栈,(共享)内存等。
经过fork()以后,父进程和子进程拥有相同内容的代码段、数据段和用户堆栈,就像父进程把自己克隆了一遍。事实上,父进程只复制了自己的PCB块。而代码段,数据段和用户堆栈内存空间并没有复制一份,而是与子进程共享。只有当子进程在运行中出现写操作时,才会产生中断,并为子进程分配内存空间。由于父进程的PCB和子进程的一样,所以在PCB中断中所记录的父进程占有的资源,也是与子进程共享使用的。这里的“共享”一词意味着“竞争”

考点8:Linux主机负载相关命令

以下哪些命令可以获取linux主机的负载相关指标

  • A uptime
  • B top
  • C ls
  • D sar
  • E crontab

解析

显示答案/隐藏答案正确答案: ABD
命令 描述
uptime命令 能够打印系统总共运行了多长时间和系统的平均负载。可以显示的信息显示依次为:现在时间、系统已经运行了多长时间、目前有多少登陆用户、系统在过去的1分钟、5分钟和15分钟内的平均负载。
top命令 是用来监控 Linux 系统状况,比如cpu、内存的使用。
ls命令 用于显示指定工作目录下之内容(列出目前工作目录所含之文件及子目录)。
sar命令 (System ActivityReporter系统活动情况报告)是目前Linux上最为全面的系统性能分析工具之一,可以从多方面对系统的活动进行报告,包括:文件的读写情况、系统调用的使用情况、磁盘I/O、CPU效率、内存使用状况、进程活动及IPC有关的活动等。
crontab 是用来定期执行程序的命令。crond 命令每分钟会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作。
1
2
3
[root@localhost ~]# uptime
15:23:59 up 1 day, 8:21, 1 user, load average: 5.45, 5.51, 5.51
[root@localhost ~]#

考点9:Linux交换分区

关于Linux交换分区的说法正确是( )

  • A 安装Linux系统时必须划分交换分区
  • B 交换分区的作用是虚拟内存空间
  • C 交换分区的数据存取速度比物理内存慢
  • D 计算机内存为8GB,则交换分区的大小通常设置为16GB

解析

显示答案/隐藏答案正确答案: BCD

交换分区一般设置内存的2倍

考点1 java集合旧类和新类的区别

ArrayList和Vector主要区别是什么?

  • A VectorArrayList一样,也是通过数组实现的,不同的是Vector支持线程的同步
  • B VectorArrayList一样,也是通过数组实现的,不同的是ArrayList支持线程的同步
  • C Vector是通过链表结构存储数据,ArrayList是通过数组存储数据
  • D 上述说法都不正确

解析

显示答案/隐藏答案正确答案: A

Vector与ArrayList的主要区别

  • 同步性:

    • Vector是线程安全的,也就是说是同步的而
    • ArrayList是线程序不安全的,不是同步的。
  • 数据增长:当需要增长时,

    • Vector默认增长为原来一倍
    • 而ArrayList却是原来的50%,这样,ArrayList就有利于节约内存空间。
  • 如果涉及到堆栈,队列等操作,应该考虑用Vector,

  • 如果需要快速随机访问元素,应该使用ArrayList 。

Hashtable与HashMap

Hashtable和HashMap它们的性能方面的比较类似
Vector和ArrayList,比如Hashtable的方法是同步的,而HashMap的不是。

ArrayList与LinkedList

ArrayList的内部实现是基于内部数组Object[],所以从概念上讲,它更象数组,
但LinkedList的内部实现是基于一组连接的记录,所以,它更象一个链表结构,所以,它们在性能上有很大的差别:
在ArrayList的前面或中间插入数据时,你必须将其后的所有数据相应的后移,这样必然要花费较多时间,所以,当你的操作是在一列数据的后面添加数据而不是在前面或中间,
需要随机地访问其中的元素时,使用ArrayList会提供比较好的性能;
而访问链表中的某个元素时,就必须从链表的一端开始沿着连接方向一个一个元素地去查找,直到找到所需的元素为止,所以,当你的操作是在一列数据的前面或中间添加或删除数据,并且按照顺序访问其中的元素时,就应该使用LinkedList了。

考点2 java包装类 数据转换

关于Float,下列说法错误的是()

  • A Float是一个类
  • B Floatjava.lang包中
  • C Float a=1.0是正确的赋值方法
  • D Float a= new Float(1.0)是正确的赋值方法

解析

显示答案/隐藏答案正确答案: C
  • Float是类,float不是类.
  • 查看JDK源码就可以发现Byte,Character,Short,Integer,Long,Float,Double,Boolean都在java.lang包中.
  • Float正确复制方式是Float f=1.0f,若不加f会被识别成double型,double无法向float隐式转换.
  • Float a= new Float(1.0)是正确的赋值方法,但是在1.5及以上版本引入自动装箱拆箱后,会提示这是不必要的装箱的警告,通常直接使用Float f=1.0f.

考点4 java短路逻辑运算符

根据下面的代码,
String s = null;
会抛出NullPointerException异常的有()。

  • A if( (s!=null) & (s.length()>0) )
  • B if( (s!=null) && (s.length()>0) )
  • C if( (s==null) | (s.length()==0) )
  • D if( (s==null) || (s.length()==0) )

解析

显示答案/隐藏答案正确答案: AC
  • 逻辑运算符:&&和|| 是按照“短路”方式求值的。如果第一个操作数已经能够确定表达式的值,第二个操作数就不必计算了
  • 位移运算符:&和| 运算符应用于布尔值,得到的结果也是布尔值,不按“短路”方式计算。即在得到计算结果之前,一定要计算两个操作数的值。

考点5 javaEE JSP生命周期

关于JSP生命周期的叙述,下列哪些为真?

  • A JSP会先解释成Servlet源文件,然后编译成Servlet类文件
  • B 每当用户端运行JSP时,jsp init()方法都会运行一次
  • C 每当用户端运行JSP时,jsp service()方法都会运行一次
  • D 每当用户端运行JSP时,jsp destroy()方法都会运行一次

解析

显示答案/隐藏答案正确答案: AC

B:init方法:负责初始化Servlet对象。在Servlet的整个生命周期类,init()方法只被调用一次。
D:destroy方法:销毁Servlet对象,释放占用的资源,Servlet要被卸载时调用

考点6 常用的final类

以下类型为Final类型的为()

  • A HashMap
  • B StringBuffer
  • C String
  • D Hashtable

解析

显示答案/隐藏答案正确答案: BC

StringBuilder , StringBuffer ,String 都是 final 的

考点1 java数组声明

以下二维数组声明合法的是( )

  • A char[2][3] ch = new char[][]
  • B char[2][] ch = new char[][3]
  • C char[][] ch = new char[2][3]
  • D char[][] ch = new [2]char[3]

解析

显示答案/隐藏答案正确答案: C

定义数组,等号左边不能出现数字,也就是数组的不管什么大小 不能出现在左边

考点2 java类加载器

下面有关java classloader说法错误的是?

  • A Java默认提供的三个ClassLoaderBootStrap ClassLoader,Extension ClassLoader,App ClassLoader
  • B ClassLoader使用的是双亲委托模型来搜索类的
  • C JVM在判定两个class是否相同时,只用判断类名相同即可,和类加载器无关
  • D ClassLoader就是用来动态加载class文件到内存当中用的

解析

显示答案/隐藏答案正确答案: C

考点3 java抽象类方法默认访问权限

抽象类方法的访问权限默认都是public。( )

  • A 正确
  • B 错误

解析

显示答案/隐藏答案正确答案: B

JDK 1.8以前,抽象类的方法默认访问权限为protected
JDK 1.8时,抽象类的方法默认访问权限变为default
JDK 1.8以前,接口中的方法必须是public的
JDK 1.8时,接口中的方法可以是public的,也可以是default的
JDK 1.9时,接口中的方法可以是private的

考点4 排序算法复杂度

在各自最优条件下,对N个数进行排序,哪个算法复杂度最低的是? ()

  • A 插入排序
  • B 快速排序
  • C 堆排序
  • D 归并排序

解析

显示答案/隐藏答案正确答案: A

插入排序:最佳O(N)
快速排序:最佳O(NlogN)
堆 排序:最佳O(NlogN)
归并排序:最佳O(NlogN)
因此选择插入排序。
排序算法复杂度

考点5 类的修饰符

若需要定义一个类,下列哪些修饰符是允许被使用的?( )

  • A static
  • B package
  • C private
  • D public

解析

显示答案/隐藏答案正确答案: ACD

普通类(外部类):只能用publicdefault(不写)、abstractfinal修饰。
(成员)内部类:可理解为外部类的成员,所以修饰类成员的publicprotecteddefaultprivatestatic等关键字都能使用。
局部内部类:出现在方法里的类,不能用上述关键词来修饰。
匿名内部类:给的是直接实现,类名都没有,没有修饰符。

考点1 表达式运算

如果定义一种表达式结构:(+ 6 3)的值为9,(- 6 3)的值为3,(* 6 3)的值为18,(/ 6 3)的值为2;那么对于表达式(* (- 16 (* 3 2 2 )) (+ 5 (/ 6 (- 5 3))))输出的结果为____。

  • A 44
  • B 40
  • C 40
  • D 32
  • E 24
  • F 21

解析

显示答案/隐藏答案正确答案: D

考点2 java集合List常用方法

如果一个list初始化为{5,3,1},执行以下代码后,其结果为()?
nums.add(6);
nums.add(0,4);
nums.remove(1);

  • A [5, 3, 1, 6]
  • B [4, 3, 1, 6]
  • C [4, 3, 6]
  • D [5, 3, 6]

解析

显示答案/隐藏答案正确答案: B
方法 描述
boolean add(E e) 将指定的元素追加到此列表的末尾(可选操作)。
void add(int index, E element) 将指定的元素插入此列表中的index指定位置(可选操作)。
E remove(int index) 删除该列表中指定位置的元素(可选操作)。

考点3 java位运算 按位与

Java表达式”13 & 17”的结果是什么?()

  • A 30
  • B 13
  • C 17
  • D 1

解析

显示答案/隐藏答案正确答案: D

&运算符:两个数都转为二进制,然后从两个数的最高位进行与运算,两个都为真(1),结果才为真(1),否则为假(0)

十进制 二进制
13 01101
17 10001
按位与结果:1 00001

考点4 计算机网络 远程方法调用

默认RMI采用的是什么通信协议?

  • A HTTP
  • B UDP/IP
  • C TCP/IP
  • D Multicast

解析

显示答案/隐藏答案正确答案: C

RMI(Remote MethodInvocation)远程方法调用是一种计算机之间利用远程对象互相调用实现双方通讯的一种通讯机制。使用这种机制,某一台计算机上的对象可以调用另外一台计算机上的对象来获取远程数据。RMIEnterpriseJavaBeans的支柱,是建立分布式Java应用程序的方便途径。在过去,TCP/IP套接字通讯是远程通讯的主要手段,但此开发方式没有使用面向对象的方式实现开发,在开发一个如此的通讯机制时往往令程序员感觉到乏味,对此RPC(RemoteProcedureCall)应运而生,它使程序员更容易地调用远程程序,但在面对复杂的信息传讯时,RPC依然未能很好的支持,而且RPC未能做到面向对象调用的开发模式。针对RPC服务遗留的问题,RMI出现在世人面前,它被设计成一种面向对象的通讯方式,允许程序员使用远程对象来实现通信,并且支持多线程的服务,这是一次远程通讯的***,为远程通信开辟新的里程碑。RMI的开发步骤先创建远程接口及声明远程方法,注意这是实现双方通讯的接口,需要继承Remote开发一个类来实现远程接口及远程方法,值得注意的是实现类需要继承UnicastRemoteObject通过javac命令编译文件,通过java -server 命令注册服务,启动远程对象最后客户端查找远程对象,并调用远程方法所以选C

考点5 java垃圾收集器的区别

下列哪项不属于jdk1.6垃圾收集器?

  • A Serial收集器
  • B parNew收集器
  • C CMS收集器
  • D G1收集器

解析

显示答案/隐藏答案正确答案: D

考点1 JSP内置session对象

要在session对象中保存属性,可以使用以下哪个语句( )

  • A session.getAttribute("key","value")
  • B session.setAttribute("key","value")
  • C session.setAttribute("key")
  • D session.getAttribute("key")

解析

显示答案/隐藏答案正确答案: B

session.setAttribute()和session.getAttribute()配对使用,作用域是整个会话期间,在所有的页面都使用这些数据的时候使用。
设置
session.getAttribute(“key”,”value”)
获取
session.getAttribute(“key”)
移除
session.removeAttribute(“key”)

request.getAttribute()表示从request范围取得设置的属性,必须要先setAttribute设置属性,才能通过getAttribute来取得,设置与取得的为Object对象类型。其实表单控件中的Object的 name与value是存放在一个哈希表中的,所以在这里给出Object的name会到哈希表中找出对应它的value。setAttribute()的参数是String和Object。

考点2 表达式运算

如果定义一种表达式结构:(+ 6 3)的值为9,(- 6 3)的值为3,(* 6 3)的值为18,(/ 6 3)的值为2;那么对于表达式(* (- 16 (* 3 2 2 )) (+ 5 (/ 6 (- 5 3))))输出的结果为____。

  • A 44
  • B 40
  • C 40
  • D 32
  • E 24
  • F 21

解析

显示答案/隐藏答案正确答案: D

从括号最多的地方开始算

考点3 短路或

如下语句通过算术运算和逻辑运算之后i和 j的结果是( )
int i=0;
int j=0;
if((++i>0)||(++j>0))
{
//打印出i和j的值。
}

  • A i=0;j=0
  • B i=1;j=1
  • C i=0;j=1
  • D i=1;j=0

解析

显示答案/隐藏答案正确答案: D

考点4

在运行时,由java解释器自动引入,而不用import语句引入的包是()。

  • A java.lang
  • B java.system
  • C java.io
  • D java.util

解析

显示答案/隐藏答案正确答案: A

java.lang包是java语言的核心包,lang是language的缩写
java.lang包定义了一些基本的类型,包括Integer,String之类的,是java程序必备的包,有解释器自动引入,无需手动导入

考点5 线程安全的操作

以下多线程对int型变量x的操作,哪个不需要进行同步()

  • A ++x
  • B x=y
  • C x++
  • D x=1

解析

显示答案/隐藏答案正确答案: D

原子操作:只进行一次的操作。

前三个都至少需要先读取再操作,是非原子操作
x++,需要先读取x的值,然后加一,然后再写入x
++x,同理
x=y,需要先读取y的值,然后写入x
D选项:
x=1,1是直接量,不许需要读取,直接写入即可
直接赋值只需要一次写入操作即可完成

考点6 逻辑运算符短路或

Given the following code:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class Test {
private static int j = 0;
private static Boolean methodB(int k) {
j += k;
return true;
}
public static void methodA(int i) {
boolean b;
b = i < 10 | methodB(4);
b = i < 10 || methodB(8);
}
public static void main(String args[]) {
methodA(0);
System.out.println(j);
}
}

What is the result?

  • A The program prints”0”
  • B The program prints”4”
  • C The program prints”8”
  • D The program prints”12”
  • E The code does not complete.

解析

显示答案/隐藏答案正确答案: B

考点7

关于对象成员占用内存的说法哪个正确?( )

  • A 同一个类的对象共用同一段内存
  • B 同一个类的对象使用不同的内存段,但静态成员共享相同的内存空间
  • C 对象的方法不占用内存
  • D 以上都不对

解析

显示答案/隐藏答案正确答案: B

java成员内存

在校生的困境

对于那些已经工作的同学,哪怕才工作不久,毕竟也能从项目实践里总结和探索java的学习途径和相关方法。但在校生同学由于没机会接触实际项目,在学习内容、进阶途径和学成标准这些方面都是两眼一抹黑,而大学里的内容可能偏重于理论,讲述的技术往往也和软件公司里常用的技术不匹配。
这就导致了很多上心的在校生,虽然很努力,但到毕业时,才发现自己起早贪黑学成的技能并不能帮他们找到工作。在本文里,就将结合我面试实习生和毕业生的标准,专门给在校生这个群体一些学习Java方面的建议。

建议

1. 明确目标,先说下公司面试应届生的标准

我最近可能都在大公司,到毕业季,会到一些学校去校招,校招的标准描述起来很简单:Java方面能干活,或者能经短期帮带后能干活,具体标准如下。

  1. Web框架方面,需要以全栈的形式,了解SSM,或Spring BootSpring Cloud从前端到后端的基本语法,至少能在项目经理短期帮助下,能照着别人的例子写代码。应届生候选人只要能讲清楚相关框架的语法点和流程即可,最多再附带说明下mybatis等组件的用法,至于redisdubbo,根本没要求。
  2. 数据库方面,能会基本的增删改查即可,外带一些基本概念,比如事务怎么处理,JDBC里批处理怎么处理。
  3. Java语法(也就是核心方面),其实如果能讲清楚SSMWeb框架技能,这块只要刷题就能过,比如就问些ArrayListLinkedList的差别,以及多线程等的概念。
  4. 人看上去听话,想法少,学习能力强,责任心强,不是刺头,这块其实大多数人都可以达标。

以上不要求有商业项目经验,当然如果有,绝对是加分项,而且这还是大公司的面试应届生的标准。至于一些小公司,或者是一些外包公司,有时候能招到人就阿弥陀佛了(至于有些能力比较强的一本的应届生愿不愿意去还难说)。有些在招收应届生的时候,不少小公司甚至在“项目经验”方面没要求,哪怕没学习项目经验也不要紧,只会问些网上比较大路的面试题,能说上来即可

2. 面试中大多数应届生的实际表现

从面试官角度来看,招收应届生的标准其实是很低的,对应的,在招初级开发时,多少都需要有商业项目经验。从这个角度来看,应届生最好在校期间就找到工作,毕业后两三个月找不到工作问题还不怎么大,但如果半年后再找不到工作,那么到时候被面试的标准就高于“应届生”的标准了。
这里我无意贬低应届生的水平,毕竟我们都是从这个阶段过来的,但从面试情况来看,至少有将近一半的应届生达不到标准。

达不到标准的具体表现

  1. 没有框架开发的经验,这里最低要求是能自行搭建个SSM项目,但不少同学根本没有。
  2. 数据库方面,就知道理论上的增删改查,甚至不会在MySQL, OracleSQL Server平台上运行过SQL语句。
  3. Java核心方面,掌握了一大堆项目里一定不会用的,比如Swing之类的界面编程技术,但该掌握的多线程集合等,一些常用的概念也不清楚。
  4. 论动手能力,有些同学甚至没有在EclipseIDE上运行通Java代码,或者出了基本的语法错误不知道如何自行解决,至于没有**debug调试经验**的,就更加见怪不怪了,而在代码里需要加必要的try...catch异常处理语句,这就更加凤毛麟角了。

在一些一本大学里,理论和实际操作能力较差的同学虽然不多,但也有,就更别提其它大学和大专了。我也和一些大学老师打过交道,也看过一些大学里用的Java和数据库等编程方面的教材,再结合诸多应届生在面试时的表现,我的感受是,或许大学阶段更会培养学生的理论素养,但大学生朋友在读大学阶段,一定要提升实际的编程能力,包含但不限于(SSM)框架的编程能力,数据库实际操作能力和Java核心部分代码的开发和调试能力

3. 哪些大学里学到的知识点面试大概率不问(根本不用太费精力看的技术有哪些)

这里就将结合具体的知识点,列出面试时需要掌握的最低技能标准,除此之外,大概率不会问的

面试时需要掌握的最低技能标准

Java核心常问:

  • 集合,
  • 多线程,
  • 异常处理,
  • IO
  • JDBC
  • 面向对象技能,

这些大概率会问到

java核心不常问

  • 图形化界面,
  • NIO
  • Socket网络编程,
  • 甚至Applet之类的

数据库方面

  • 会写增删改查的SQL语句,
  • 知道存储过程之类的概念,
  • 会通过索引优化查询条件,
  • 会建表,
  • 会些诸如子查询,group by,having
  • 表关联查询等基本SQL技能,
  • 至少得用过一种商业化数据库

框架方面

需要有Spring+Spring MVC+mybatis框架的实际操作能力(不是商业项目开发能力),
至于有Spring Boot或Spring Cloud,那更好了。

综合技能方面

  • 能知道基本的数据结构知识(线性表外带排序外带一些树的技能),
  • 基本的操作系统知识(一般仅限于线程进程概念),
  • 基本网络通讯知识(一般仅限于网络通讯模型和tcp udp协议),

这些要求是“需要知道”而已。

看招聘要求查缺补漏

大家其实也可以通过看各种职位描述和招聘需求,看下哪些技能实际上是不会问的,对于这些知识,就不用学,从而把精力用到学实际Java相关技能上。

大学许多知识后面才用到

这里需要说明,在大学阶段学的很多知识,不能说没用。比如网络通讯里的tcp底层通讯细节,这些技能或者要等到工作5年后升级到高级开发或架构师的时候才会用到,而且以高级开发视角观察需要掌握的通讯协议细节知识,绝对要比大学阶段要复杂。

换句话说,很多技能,在大学阶段也就“需要了解有这事”,以在大学阶段的经历,再多用时间学,估计也无法达到“实际项目的需求”,而且等到有实际项目经验时,再学这类技能也就是一两周的事情。两厢一对比,结论就很明确了:在校阶段应该更多积累实际开发能力,因为更得靠这个找工作。

4. 用一个月的时间了解Java核心部分的内容

  • 着重观察集合面向对象多线程IO处理JDBC异常处理相关章节,这个阶段,是以掌握API用法为主,在这基本上再看下诸如接口,抽象类,异常处理流程,垃圾回收之类的高级知识点。
  • 在上述基础上,如果可以通过资料的帮助,
  • 用Java实现堆栈,链表,队列,散列表,树等的数据结构
  • 同时操练各种排序算法,这对找工作也有些帮助

5. 用半个月的时间,以MySQL为例,了解数据库的大致操作

在数据库方面,最好也去找本书,同时在MYSQL上实践。为什么选MYSQL,因为这比较轻,相比Oracle而言,好安装,当然如果有条件装SQL Server之类的,那就更好了。
1、在MySQL数据库上,实践各种增删改查的SQL语句,实践建表,建索引能技巧,同时实践一下诸如子查询,with as等等复杂的SQL语句。
2、用JDBC连同MYSQL,在Java代码里做各种增删改查的操作。
3、在此基础上,了解诸如索引,范式和锁等概念,这时候虽然认识也会很肤浅,但至少不会一头雾水了。

这样,在数据库方面,好歹有实际操作经验了,这为之后的项目实践,能打下很好的基础。

6、用一个月的时间,了解基于Spring的web框架

面试时更看重的是框架经验,这块学习的建议如下。
1、先通过运行代码,了解SpringIOC, AOP,这时应该注意各种配置。
2、熟悉Spring的基本概念后,可以尝试跑一个SSM的小例子,这个例子可以非常简答,就一个页面也行,但要包含Spring MVCMybatis诸多要素,这样大家好歹能知道框架的构成,在这个基础上,可以继续扩展,加些必要的业务,从而进一步了解这个框架。
在这个阶段,还是最好看书上的例子,因为书上的例子一定能通,而且还会带部署和运行的步骤,还是不建议自己敲代码,因为SSM框架相对复杂,在这个阶段如果自己敲,很有可能会因为问题太多而放弃。
3、在自己机器上跑通SSM框架的案例后,可以网上找个带业务的系统,比如图书管理系统等,从中看些前端和后端交互数据的流程,同时,结合业务看Mybatis里的ORM过程,以及**Spring里的常用注解**。

8、有学习项目经验后,争取找些商业项目的实践机会

拥有最基本的SSM以及其它Java和数据库相关技能后,要做的绝不是继续积累学习项目经验,而是尽可能去找实习的机会,以积累商业项目的经验。在找实习经验方面,大家可以参照如下的建议。
1、在我之前的博文里也提到,大三时,打听计算机学院里哪些老师和外面公司有合作,一般硕导都有这样的项目,然后直接去找老师,刚开始不要钱,只求经验,或许对各位在校生同学而言,这种方式是比较可行的,本人第一个商业项目经验也是由此得到的。
2、一般学校里都会安排实习,实习的过程中,一定要重视,这个是实打实的商业项目经验。
3、寒暑假,找软件公司,这可能会比较艰辛,因为在校阶段自己非常难找相关实习机会,但要去找。
5、如果实在找不到实习的机会,那么尽可能通过各种渠道,去找商业项目经验的案例

哪怕实际只干了三个月的商业项目经验,自己的技能也会很大程度提升,而且实际的商业项目经验,会让大家掌握书本上根本不会多提但项目里一定会用的技能,比如JVM内存调优或多线程并发。从这意义上来讲,只要有条件,大学生朋友应该挤破头去找商业项目的经验,而不是悠哉游哉地坐在机房里敲代码。只要你有商业项目的经验,哪怕就三个月,找工作时你就有代差优势。

9、毕业生准备简历的要点

在招聘毕业生时
,第一看项目经验,
第二看项目里包含的技能,
第三再问算法和理论问题,
至于逻辑题和情商题,只供参考

毕业生在简历中,一定得突出做过的项目经验,优先挖掘商业项目经验,
实在没有学习项目也行。
如果没任何项目经验,那么找工作时会吃力很多

原文链接

https://mp.weixin.qq.com/s/y_ozO8BnH6YkoFh_Oq8M1w