掌阅科技2023年秋招大数据岗笔试真题

二叉树的第I层上含有的结点数最多为 2^(I-1)

地址分类

  • A:0.0.0.0~127.255.255.255
  • B:128.0.0.0~191.255.255.255
  • C:192.0.0.0~223.255.255.255 私有地址
  • A类:10.0.0.0到10.255.255.255
  • B类:172.16.0.0到172.31.255.255
  • C类:192.168.0.0到192.168.255.255

图片上传失败,请重新上传

线程和进程都可并发执行 线程的粒度小于进程,通常多线程比多进程并发性更高 线程共享相同的堆空间,而不是栈空间; 进程是操作系统分配资源的基本单位,线程是操作系统调度的基本单位;

死锁的三个必要条件:互斥、占有且等待、不可抢占 前三个条件只是死锁存在的必要条件而非充分条件。要产生死锁还需要第四个条件:循环等待

图片上传失败,请重新上传

有关cookie和session的描述

  • cookie数据存放在客户的浏览器上,session数据放在服务器上。
  • session是针对每一个用户的,变量的值保存在服务器上,用一个sessionID来区分是哪个用户session变量
  • 保存这个session id的方式可以采用cookie
  • 只要关闭浏览器,session就消失了(错误的)

事务隔离级别

  1. 串行读(Serializable):完全串行化的读,每次读都需要获得表级共享锁,读写相互都会阻塞
  2. 未提交读(Read Uncommitted):允许脏读,也就是可能读取到其他会话中未提交事务修改 的数据
  3. 提交读(Read Committed):只能读取到已经提交的数据
  4. 可重复读(Repeated Read):在同一个事务内的查询都是事务开始时刻一致的

事务的隔离级别是数据库管理系统用来控制多个并发事务之间互相干扰的程度。不同的隔离级别提供了不同的数据一致性和并发性保证。常见的事务隔离级别包括:

  1. 读未提交(Read Uncommitted):在这个隔离级别下,一个事务可以读取另一个事务未提交的数据。这是最低的隔离级别,不提供任何数据一致性保证,可能导致脏读、不可重复读和幻读问题。

  2. 读提交(Read Committed):在这个隔离级别下,一个事务只能读取已经提交的数据,避免了脏读问题。但仍可能出现不可重复读和幻读问题。

  3. 可重复读(Repeatable Read):在这个隔离级别下,事务在执行期间可以多次读取相同的数据,而不会看到其他事务的修改,避免了脏读和不可重复读。但仍可能出现幻读问题。

  4. 可序列化(Serializable):在这个隔离级别下,事务之间的并发完全被隔离,提供了最高级别的数据一致性保证,避免了脏读、不可重复读和幻读。但由于完全隔离,可能导致性能下降。

这些隔离级别从低到高提供了逐渐增强的数据一致性保证,但也伴随着性能的损失。选择适当的隔离级别取决于应用程序的需求,需要平衡数据的一致性和并发性。不同的数据库管理系统可能支持不同的隔离级别,或者有自定义的隔离级别选项。在设计数据库应用程序时,应谨慎选择和测试隔离级别以确保满足业务需求。

having 和where都是用来筛选用的,having是筛选组,而where是筛选记录 在数据库设计中,一个多对多的关系可通过一个中间表分为两个一对多的关系

数据库的三范式(Normal Forms)是一组规则,用于数据库设计,旨在提高数据的结构、一致性和减少冗余。三范式分为三个级别:

  1. 第一范式(1NF):要求表中的每一列都包含不可再分的原子数据,也就是每个单元格中只包含一个值。这确保了数据的原子性,不会混合多个值在同一列。比如,一列不能包含多个电话号码,而应该分成多列,每列包含一个电话号码。

  2. 第二范式(2NF):要求满足第一范式,并且表必须有一个主键,非主键列必须完全依赖于整个主键,而不是依赖于主键的一部分。这有助于消除数据中的部分函数依赖。如果主键是组合键,那么每个非主键列都必须依赖于整个组合键,而不是组合键的一部分。

  3. 第三范式(3NF):要求满足第一范式和第二范式,同时消除传递依赖。传递依赖指的是一个非主键列依赖于其他非主键列,间接依赖于主键。在第三范式中,非主键列不应该依赖于其他非主键列,以避免数据冗余。

三范式的目标是确保数据库表的数据结构清晰、没有冗余、并且提供高一致性的数据。这有助于数据库的维护、查询和性能优化。但要注意,在某些情况下,为了提高查询性能,可能需要偶尔违反三范式原则,允许一些冗余数据存在。因此,在数据库设计中,需要根据具体需求和性能权衡来选择是否采用三范式。

在Spark中,关于reduceByKey和groupByKey算子的区别 reduceByKey会在map端先合并,而groupByKey不会

对 HIVE 描述

  • HIVE 不支持行级别的数据插入、数据更新和删除操作
  • 创建的 HIVE 数据库可以指定存储目录 CREATE DATABASE ' 数据库名称 ' LOCATION ' 目录位置 '
  • 外部表和内部表的区别是外部表的数据不受 HIVE 管理
  • HIVE 中数据库的概念本质上仅仅是表的一个目录或者命名空间
select (length("NIUKE NIUKE") - length(regexp_replace("NIUKE NIUKE","KE",''))) / length("KE")

这个SQL查询计算了在字符串 "NIUKE NIUKE" 中出现 "KE" 的次数。它使用了字符串长度函数 length() 和正则表达式替换函数 regexp_replace() 来实现。

让我解释一下这个查询:

  1. length("NIUKE NIUKE") 返回原始字符串 "NIUKE NIUKE" 的长度,结果是 11。

  2. regexp_replace("NIUKE NIUKE","KE",'') 使用正则表达式将 "KE" 替换为空字符串,这相当于从原始字符串中删除了所有 "KE"。结果是 "NIU NIU"。

  3. length("NIU NIU") 返回经过替换后的字符串 "NIU NIU" 的长度,结果是 7。

  4. 最后, (11 - 7) / 2 计算了从原始字符串中删除 "KE" 后的字符数(4),然后除以 "KE" 的长度(2),得到 2,这就是 "KE" 在原始字符串中出现的次数。

所以,这个查询的结果是 2,表示 "KE" 在字符串 "NIUKE NIUKE" 中出现了 2 次。

Hadoop Distributed File System (HDFS) 提供了一组命令行工具,用于管理和操作HDFS上的文件和目录。以下是一些常见的HDFS Shell命令:

  1. hadoop fs -ls: 列出HDFS上的文件和目录。

  2. hadoop fs -mkdir: 创建HDFS上的目录。

  3. hadoop fs -copyFromLocal: 从本地文件系统复制文件到HDFS。

  4. hadoop fs -copyToLocal: 从HDFS复制文件到本地文件系统。

  5. hadoop fs -mv: 移动文件或目录。

  6. hadoop fs -rm: 删除HDFS上的文件或目录。

  7. hadoop fs -cat: 查看文件内容。

  8. hadoop fs -tail: 显示文件的末尾内容。

  9. hadoop fs -chown: 更改文件或目录的所有者。

  10. hadoop fs -chmod: 更改文件或目录的权限。

  11. hadoop fs -du: 显示文件或目录的磁盘使用情况。

  12. hadoop fs -df: 显示HDFS集群的磁盘使用情况。

  13. hadoop fs -expunge: 清除HDFS的回收站(删除文件后的保留目录)。

  14. hadoop fs -touchz: 创建一个空的文件。

  15. hadoop fs -count: 统计文件和目录的个数、大小和磁盘使用情况。

这些命令允许用户管理HDFS中的数据,包括创建、复制、移动、删除文件和目录,查看文件内容等。你可以在Hadoop分布式文件系统上运行这些命令,通过终端或Shell来操作HDFS。要查看每个命令的详细用法和选项,可以在终端上输入 hadoop fs -help <command> 来获取帮助信息。

hadoop fs -setrep 设置文件副本数 hadoop fs -setfattr 设置文件属性 hadoop fs -setfacl 设置文件 ACL hadoop fs -stat 查看文件状态信息

#23届找工作求助阵地#
全部评论

相关推荐

评论
8
11
分享

创作者周榜

更多
牛客网
牛客企业服务