ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

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

2022-01-22 22:30:00  阅读:253  来源: 互联网

标签:解析 Java 答案 知识 牛客 NAT 秋招 权限 inode


牛客刷题笔记

【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。

解析
参考链接:

  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过渡技术

知识范围

  • 网络基础

答案
应用识别技术。

解析

  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的详细区别请看参考链接。 ↩︎

标签:解析,Java,答案,知识,牛客,NAT,秋招,权限,inode
来源: https://blog.csdn.net/weixin_42991822/article/details/122587952

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有