牛客刷题笔记:【2020】奇安信秋招Java方向试卷3

2022/1/22 22:34:47

本文主要是介绍牛客刷题笔记:【2020】奇安信秋招Java方向试卷3,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

牛客刷题笔记

  • 【2020】奇安信秋招Java方向试卷3
    • 1. 对一个文件的访问,常由( )共同限制。
    • 2. 下列关于TCP和UDP的描述正确的是( )。
    • 3. 在什么情况下,新插入链表的节点既是首节点也是尾节点
    • 4. 一个有向无环图是否存在拓扑排序?
    • 5. 以下关于哈希表的描述哪个是正确的?
    • 6. 存在一个数字组成的序列[a1,a2,...,aN],若要统计所有数字出现的次数,用以下哪种数据结构比较适合?
    • 7. 存在若干个字符串,若要查找具有相同前缀的字符串,以下哪种数据结构比较适合
    • 8. 以下哪个算法是用于求解两个正整数的最大公约数的算法?
    • 9. 下面说法正确的是?
    • 10. 在一个空目录下执行umask 333; touch hello;命令后,hello文件的权限为?
    • 11. 在DNS系统测试时,假设named进程号是53,如何通知进程重读配置文件
    • 12. 视图可用于
    • 13. 要添加索引的一个理由是
    • 15. 关于NAT说法不正确的是?
    • 16. 下列哪些不是IPv6过渡技术
    • 17. 下面不属于OSI七层模型的是?
    • 18. 下列说法错误的是
    • 19. String s = new String("xyz");创建了几个StringObject
    • 20. 在下列4条语句的前提下:
    • (待完善)21. 下面哪一个命令可以关机,而不重启?
    • 22. 下列属于Linux开机启动过程的是?
    • 23. 下列关于inode说法正确的是?
    • 24. 关于bash中以下符号的说明哪些是正确的
    • 25. 关于 DELETE和 TRUNCATE TABLE的说法正确的是
    • 27. 以下哪些是TCP协议运行时阶段
    • 28. 以下关于超文本传输安全协议说法中正确的说法有
    • 29. 下列有关守护线程描述正确的有
    • 30. Java接口的修饰符包括

【2020】奇安信秋招Java方向试卷3

测试数据

测试分数正确题数排名
31分14/3228%

1. 对一个文件的访问,常由( )共同限制。

知识范围

  • Linux

答案
用户访问权限和文件属性。

解析
参考链接:Linux 权限相关总结(用户&权限管理&权限设置方法)

  1. 用户访问权限
  • 创建用户
#创建新用户
adduser 用户名
#修改指定用户名密码,需要输入两次密码
passwd 用户名
  • 切换用户
#切换到指定用户名的用户下,但不获取环境变量
su 用户名
#切换到指定用户名的用户下,并获取环境变量
su - 用户名
#切换到指定用户名的用户下,执行完指定指令后返回原用户
su -c 指令 用户名
  1. 文件属性
  • 文件信息1
    文件权限
文件类型文件权限
d文件夹,-文件- 无权限
r(read) 读/浏览权限
w(write) 写/删除、增加、移动权限
x(execute) 执行/进入权限
  • 设置权限
# 设置文件/目录权限
# 权限范围:u:user,g:group,o:others,a:all
# 权限操作:+:添加权限,-:去除权限,=:赋予权限
chmod [权限范围][权限操作][权限] 用户名

# 改变文件/目录所有者/所属组
# 参数:-R 递归处理,-v 显示指令执行过程
chown [参数] 用户名 文件名/目录
chgrp [参数] 用户组名 文件名/目录

# 判断文件类型
# 参数:-b:列表不显示文件名,-c:显示指令执行过程,-z:尝试解读压缩文件内容
file [参数] 文件/目录

2. 下列关于TCP和UDP的描述正确的是( )。

知识范围

  • 网络基础

答案
TCP是面向连接的,UDP是面向无连接的。

解析
参考链接:Javase复习系列——网络编程

  1. TCP三次握手四次挥手
  • 三次握手
    客户端:我可以和你握手吗?
    服务器:好的
    客户端:好的
    成功建立连接!
  • 四次挥手
    客户端:我可以和你分手吗?
    服务器:等我有个心理准备
    服务器:我准备好了,拜拜
    客户端:好的,拜拜
    成功释放连接!
  1. TCP面向连接,UDP无连接2
    面向连接:需要双方建立连接后,再传输数据。
    无连接:不需要建立连接,将数据打包发送。

3. 在什么情况下,新插入链表的节点既是首节点也是尾节点

知识范围

  • 编程基础

答案
链表为空时。

4. 一个有向无环图是否存在拓扑排序?

知识范围

  • 编程基础

答案
有向无环图一定存在拓扑序列。

5. 以下关于哈希表的描述哪个是正确的?

知识范围

  • 编程基础

答案
哈希表查询的时间复杂度是O(1)。

解析

  • 哈希表不适于做优先级队列
    优先级队列具有最高级先出的特点,因此需要元素按照优先级排序,但哈希表是无序的,因此哈希表不适于做优先级队列。
  1. 哈希表查找的思想
    ①初始时,Addr = Hash(key)
    ②检测Addr位置是否有记录,若无记录则查找失败;若有记录,则进行对比,若对比成功,则查找成功;否则,进入下一步。
    ③使用冲突解决方案更新Addr,回到第一步。

  2. 哈希查找性能
    ASL = ∑ 比较次数×元素个数
    查询时间复杂度是O(1)

6. 存在一个数字组成的序列[a1,a2,…,aN],若要统计所有数字出现的次数,用以下哪种数据结构比较适合?

知识范围

  • 编程基础

答案
哈希表。

解析
数组、双链表和单链表要做统计就只能做遍历,单选题直接排除;哈希表要做统计,则在构建好哈希表后,则根据哈希函数冲突解决方案进行统计即可。

7. 存在若干个字符串,若要查找具有相同前缀的字符串,以下哪种数据结构比较适合

知识范围

  • 编程基础

答案
Trie树。

解析
参考链接(以下内容摘取自《程序员小灰》小程序):
漫画:什么是红黑树?(整合版)

红黑树主要应用于由于树的深度过大而造成磁盘IO读写过于频繁;哈希表主要应用于迅速查找;栈实现前缀,则实现原理就是遍历;Trie树主要应用于统计、排序和保存大量的字符串。

  1. 红黑树
  • 红黑树定义
    一种自平衡二叉查找树

特性

  • 具有二叉查找树的特性。
  • 结点是红色或黑色。
  • 根结点是黑色。
  • 每个叶子结点都是黑色的空结点(NIL结点)。
  • 每个红色结点的两个子结点都是黑色。
  • 从任一结点到其每个叶子的所有路径都包含相同数目的黑色结点。

若在删除和插入结点时,红黑树的规则被打破,则需要调整树形。

8. 以下哪个算法是用于求解两个正整数的最大公约数的算法?

知识范围

  • 编程基础

答案
辗转相除法。

解析

  1. Dijkstra算法

作用
单源最短路径算法,求从某一点出发到其他各点的最短路径。

算法描述
①每次从上一个加入集合的顶点vi出发,写出从v0出发经过vi到其他未确定顶点的路径长度。
②找出最小的路径长度,将末尾结点加入集合,重复步骤①②,直到所有的顶点确定完。
Dijkstra算法(截自王道课本)
3. 辗转相除法

作用
求两个数的最大公约数。

算法描述
①设a>b,计算c = a % b
②令b = 余数c,再循环执行第一步,直到余数为。

  1. Floyd算法

作用
多源最短路径算法,从各个顶点出发到其他顶点的最短路径。

算法描述
A:
①按照对角线画出十字,十字部分照抄
②无穷的行列 or 对角线的值不变
③未填空的部分画十字,与本来的式子交叉的值求和,若值比原来小,则更新
Path:
①根据A来判断,若值不变,则下标不变;若值改变,则每个矩阵依次+1
Floyd算法

9. 下面说法正确的是?

A. epoll ET模式必须配合non-blocking IO使用
B. epoll LT模式必须配合non-blocking IO使用
C. epoll ET可以配合blocking IO使用

知识范围

  • Linux

答案
A. epoll ET模式必须配合non-blocking IO使用。

解析
参考链接:epoll的两种模式:LT和ET模式

  1. epoll的两种模式:LT和ET模式
  • LT模式(默认模式)
    epoll_wait函数检测到事件,通知应用程序处理,应用程序可以不处理该事件。支持block与non-block。
  • ET模式
    epoll_wait函数检测到事件,通知应用程序处理,应用程序需要马上处理事件。支持non-block。

10. 在一个空目录下执行umask 333; touch hello;命令后,hello文件的权限为?

知识范围

  • Linux

答案
r–r--r–。

解析

# umask过滤权限,333表示-wx-wx-wx
# umask 333结果为r--r--r--
umask 333

# 创建一个空文件hello
touch hello

11. 在DNS系统测试时,假设named进程号是53,如何通知进程重读配置文件

知识范围

  • Linux

答案
kill -HUP 53。

解析
参考链接:每天一个linux命令(42):kill命令

# kill命令格式
# HUP:重新加载进程,INT:中断进程
kill 参数 进程号

12. 视图可用于

知识范围

  • 编程基础

答案
限制对表中特定行或列中的数据的访问。

解析
参考链接:关于数据库的视图,你了解多少
视图即查询所得的结果集,是动态生成的。

13. 要添加索引的一个理由是

知识范围

  • 编程基础

答案
提高 SELECT 语句的性能。

解析
参考链接:什么是数据库索引

15. 关于NAT说法不正确的是?

可实现地址转换
可实现端口转换
IPv6根本不需要NAT
可同时实现地址和端口转换

知识范围

  • 网络基础

答案
IPv6根本不需要NAT。

解析
参考链接:

  • 网络地址转换NAT
  1. NAT是什么?
    NAT位于专用网和因特网的连接处,用于完成专用网与因特网之间的地址转换,也可以完成IPv4与IPv6之间的地址转换。
    *NAT技术的出现是为了解决IP资源不够的问题。

  2. NAT工作原理
    NAT利用NAT转换表实现地址转换:

WAN端LAN端
IP地址:端口号IP地址:端口号

假设网络架构为A——NAT——B,使用A访问B。

  • A发送数据报(源IP,目的IP,端口号)给NAT路由。
  • NAT路由查询NAT转换表LAN端,将数据报的(源IP,端口号)使用WAN端替换。
  • 最后发送的数据报为(WAN源IP,目的IP,WAN端口号)。
    假设网络架构B——NAT——C,使用B访问C。
  • B发送数据报(源IP,目的IP,端口号)给网络系统。
  • 数据报到达NAT路由,NAT查询NAT转换表WAN端,将数据报的(源IP,端口号)使用LAN端替换。
  • 最后发送的数据报为(LAN源IP,目的IP,LAN端口号)。

16. 下列哪些不是IPv6过渡技术

知识范围

  • 网络基础

答案
应用识别技术。

解析

  • 隧道技术简介
  • IPv6过渡技术之双栈技术
  1. 隧道技术
    再同层之间建立一条虚拟链路以传递数据。

  2. 地址翻译技术
    即NAT。

  3. 双栈技术
    其节点同时支持IPv4和IPv6协议栈,IPv6与IPv6通信使用IPv6协议栈,IPv6与IPv4通信利用IPv4 over IPv6隧道使用IPv4协议栈,所以双栈技术实现了分别与IPv4或IPv6节点间的信息互通。

17. 下面不属于OSI七层模型的是?

知识范围

  • 网络基础

答案
聚合层。

解析
应用层、表示层、会话层、传输层、网络层、数据链路层、物理层
*口诀无数网传会表演(从下至上)

18. 下列说法错误的是

A. final修饰的类不可以被继承
B. final修饰的变量不可以被改变
C. final修饰的方法不可以重载
D. final修饰的方法可以被继承

知识范围

  • Java

答案
C. final修饰的方法不可以重载。

解析
参考链接:
JAVA中final关键字的作用

  1. final修饰范围
    引用、方法、类。

  2. final修饰引用
    引用 = 基本数据类型——常量;
    引用 = 对象or数组——本身可改,引用不可改;
    引用 = 类的成员变量——必须立刻赋值;

  3. final修饰方法
    不可重写,但可以被继承、重载。

  4. final修饰类
    无法继承(断子绝孙类)。

19. String s = new String(“xyz”);创建了几个StringObject

知识范围

  • Java

答案
两个或一个都有可能。

解析
参考链接:Java中 String str = new String(“hello”);的底层实现

  • 若在常量池中没有“xyz”,则A ⟶ \longrightarrow ⟶“xyz”,再B ⟶ \longrightarrow ⟶A。
  • 若在常量池中存在“xyz”,则直接B ⟶ \longrightarrow ⟶A。

20. 在下列4条语句的前提下:

Integer i01 = -128;
int i02 = -128;
Integer i03 =Integer.valueOf(-128);
Integer i04 = new Integer(-128);
以下输出结果为false的是:

知识范围

  • Java

答案
System.out.println(i03 == i04);

解析
参考链接:java面试题之int和Integer的区别

//Integer与int比较时,对Integer进行了拆箱,实际上是比较了值
System.out.println(i01 == i02); //true
//由于在在valueOf函数中,对-128~127范围内的数保存与缓存中,因此引用是一样的
System.out.println(i01 == i03); //true
//Integer与int比较时,对Integer进行了拆箱,实际上是比较了值
System.out.println(i02 == i04); //true
//由于new Integer会重新分配内存空间,因此引用并不相同
System.out.println(i03 == i04); //false

(待完善)21. 下面哪一个命令可以关机,而不重启?

知识范围

  • Linux

答案
halt、netstat

解析

  1. halt
# 关闭系统
halt
# 关闭系统并关闭电源
halt -p
# 关闭系统,但不留下记录
halt -d
  1. netstat
# 用于查看网络状态
  1. reboot
# 重启计算机
reboot
  1. shutdown
# 立即关机
shutdown -h now
# 10分钟后关机
shutdown -h 10
# 重启计算机
shutdown -r now

22. 下列属于Linux开机启动过程的是?

知识范围

  • Linux

答案

  1. 运行第一个进程init(进程号永远为1)
  2. 读取MBR的引导文件(grub,lilo)
  3. 引导linux内核
  4. 进入相应的运行级别

23. 下列关于inode说法正确的是?

知识范围

  • Linux

答案
每一个文件都有对应的inode,里面包含了与该文件有关的一些信息
特殊文件(比如乱码文件名)可以通过inode的方式删除

解析
参考链接:Linux inode 详解

  1. inode定义
    inode存储文件元信息的区域(包含元信息,但不包含文件名);block存储文件内容的区域。一个文件必须占用一个inode,但至少占用一个block。

  2. inode号码(打开文件流程)
    (1)找到文件名对应的inode号码;
    (2)通过inode号码,获取inode信息;
    (3)根据inode信息,找到文件数据所在的block,并读出数据。

  3. inode大小
    每个inode的大小,一般是128字节256字节

  4. 特有现象

(1)文件名包含特殊字符,直接删除inode,能够起到删除文件的作用;

find ./* -inum 节点号 -delete

(2)移动文件或重命名文件,只是改变文件名,不影响inode号码;
(3)打开一个文件以后,系统就以inode号码来识别这个文件,不再考虑文件名。

24. 关于bash中以下符号的说明哪些是正确的

知识范围

  • Linux

答案
A. $0代表脚本的名称
B. $@代表所有位置参数
C. $# 代表位置参数的数量

25. 关于 DELETE和 TRUNCATE TABLE的说法正确的是

知识范围

  • 编程基础

答案
前者可以删除指定条目的记录,后者不能
删除整张表的数据, truncate比delete更高效

解析
参考链接:删除数据(DELETE、TRUNCATE TABLE)

  1. delete
# 删除表中记录行
# 删除表中数据后,不会释放空间,且删除操作可以撤销
DELETE FROM 表名 [WHERE 判断条件];
  1. truncate table
# 删除表中所有数据
# 操作执行更快,会释放空间,操作不可撤销
TRUNCATE TABLE 表名;

27. 以下哪些是TCP协议运行时阶段

知识范围

  • 网络基础

答案
连接创建、数据传送、连接终止

28. 以下关于超文本传输安全协议说法中正确的说法有

知识范围

  • 网络基础

答案
非对称加密和对称加密都使用了。

29. 下列有关守护线程描述正确的有

知识范围

  • Java

答案
任何一个非守护线程没有结束,守护线程就全部工作
当最后一个非守护线程结束时,守护线程随着JVM一同结束工作
GC是守护线程
守护线程产生的新线程也是守护线程

30. Java接口的修饰符包括

知识范围

  • Java

答案
public、final

解析
public、abstract、static、final


  1. 详细介绍可以查看参考链接。 ↩︎

  2. TCP和UDP的详细区别请看参考链接。 ↩︎



这篇关于牛客刷题笔记:【2020】奇安信秋招Java方向试卷3的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程