这是我投亚信科技的java开发实习时候的笔试,发现文章有错误的可以评论哦!

直接开始:

1.当你编译和运行下面的代码时,会出现下面选项中的哪种情况?
public class Pvf{
        static boolean Paddy;
        public static void main(String args[]){
                system.out.println(Paddy );
        )
}
A编译通过并输出结果false
B编译通过并输出结果true
C编译通过并输出结果null
D编译时错误

答案是A,编译通过并输出结果false。

在Java中,未初始化的变量会被默认初始化为默认值。对于布尔类型,它的默认值是false。在这个程序中,布尔变量Paddy没有被显式地初始化,因此它的值将默认为false。在main方法中,它被输出到控制台,因此输出结果将是false。

2.Mysql查询时,只有满足联接条件的记录才包含在查询结果,这种联接是()。
A右联接
B内联接
C全联接
D左联接

答案是B,内联接。

在MySQL中,内联接(INNER JOIN)是指只有在满足联接条件的情况下,连接的两个表中的记录才会出现在查询结果中。这是最常见和最基本的联接类型。当你使用INNER JOIN时,查询结果将只包含两个表中符合连接条件的记录。

其他联接类型包括左联接(LEFT JOIN)、右联接(RIGHT JOIN)和全联接(FULL OUTER JOIN)。在左联接中,所有左表中的记录都会出现在查询结果中,而右表中没有匹配的记录将会被填充为NULL。右联接与左联接相反。全联接将两个表中的所有记录都包括在查询结果中,即使它们没有匹配的记录也一样。

3.使用mvc模式设计的web应用程序具有以下优点,除了?
A可扩展性强
B代码重复少
C大大减少代码量
D可维护行强

答案是C,使用MVC模式设计的Web应用程序不能大大减少代码量。

使用MVC模式可以使Web应用程序更加可扩展、可维护和易于测试。MVC将应用程序分为三个部分:模型、视图和控制器。模型负责处理数据,视图负责呈现数据,控制器负责处理用户输入并调用模型和视图。通过这种方式,MVC可以使代码更加清晰、组织良好,并且易于维护。

然而,MVC并不会大大减少代码量。相反,它可能会增加一些额外的代码,因为您需要编写控制器和视图来处理数据和用户输入。但是,这些额外的代码可以使应用程序更加灵活和易于维护。

4.以下程序的输出结果是?
public class Example {

String str = new string("good"");

char[ch= i 'a", "b, "c' 3;

        public static void main(String args[]){
                Example ex =new Example();
                ex.change(ex.str, ex.ch);
                System.out.print(ex.str + " and ");system.out.print(ex.ch);
        }
        public static void change( String str, char ch[]i
                str = "test ok";ch[e] = 'g ”;
        )

}

A good and gbc
B test ok and abc
C test ok and gbc
D good and abc

答案是C,输出结果为 "test ok and gbc"。

原因是,在Java中,字符串是不可变的,即一旦创建,就不能修改。在这个程序中,虽然在change方法中修改了字符串str的值,但是在主方法中打印的是原始的字符串对象ex.str,没有修改过。

另一方面,字符数组是可变的。在change方法中,字符数组ch的值被更改为" g b c",因此在主方法中打印的是更改后的值。

5.下面关于Redis描述错误的一项是(
A 主从复制不要用单向链表结构,用图状结构更为稳定
B 如果数据比较重要,某个Slave开启AOF备份数据,策略设置为每秒同步一次
C 为了主从复制的速度和连接的稳定性,Master和Slave最好在同一个局域网内
D Master最好不要做任何持久化工作,如RDB内存快照和AOF日志文件
 

答案是D,错误的描述是 "Master最好不要做任何持久化工作,如RDB内存快照和AOF日志文件"。

实际上,Redis的Master节点可以做持久化工作,如RDB快照和AOF日志文件。在RDB快照中,Redis会定期将内存中的数据写入磁盘,以防止数据丢失。在AOF日志文件中,Redis会记录每个写操作,以便在服务器重启后重新构建数据集。

另外,其他选项描述正确。主从复制使用图状结构更为稳定,某个Slave可以开启AOF备份数据,策略设置为每秒同步一次,而Master和Slave最好在同一个局域网内以提高速度和连接的稳定性。

6.下面代码输出是?
enum AccountType(
        SAvING,FIXED,cURRENT;

        private AccountType(){
                System.out.println("It is a account type");
        }

)

class Enumone{
        public static void main(String[ ]args)
                System.out.println(AccountType.FIXED);
        }

}

 A编译正确,输出"lt is a account type"twice followed by"FIXED”
B编译正确,输出""It is a account type"four times followed by"FIXEDM
C编译错误
D编译正确,输出"lIt is a account type"thrice followed by"FIXED"
E编译正确。输出It is a account type"once followed by"FIXED”

答案是B,编译正确,输出"It is a account type"四次,后跟"FIXED"。

在这个程序中,枚举类型AccountType有三个枚举常量:SAVING、FIXED和CURRENT。每个枚举常量都会调用AccountType构造函数,因此会打印出四条"It is a account type"的消息。最后,main方法将枚举常量FIXED打印到控制台上。

因此,正确的输出应该是"It is a account type"四次,后跟"FIXED"。

7. Linux中,下面命令的作用是(
set PS1=" [luiwit]11$"" ; export Ps1
A修改辅助命令提示符
B修改错误信息提示
修改命令提示符
D修改当前账号名称

答案是C,修改命令提示符。

在Linux中,PS1环境变量用于控制命令提示符的外观和行为。这个命令将PS1的值设置为" [luiwit]11$",然后将其导出为环境变量。这将更改命令提示符的前缀为 "[luiwit]11$",并将其应用于当前会话中的所有命令提示符。

因此,选项C是正确的,它描述了这个命令的作用。选项A和B是错误的,因为这个命令不会修改辅助命令提示符或错误信息提示。选项D更是错误的,因为这个命令不会修改当前账号名称。


 

8.下面有关java的一些细节问题,描述错误的是?
A一个子类不可以覆盖掉父类的同步方法
B定义在接口中的方法默认是public的
C容器保存的是对象的引用
D构造方法不需要同步化

答案是A,错误的描述是 "一个子类不可以覆盖掉父类的同步方法"。

在Java中,子类可以覆盖掉父类的同步方法。子类可以使用相同的方法名和参数列表来定义一个同步方法,从而覆盖父类的同步方法。子类可以使用synchronized关键字来定义同步方法,它将覆盖父类中的同步方法。

其他选项描述正确。在接口中定义的方法默认是public的,容器保存的是对象的引用,构造方法不需要同步化,因为在创建对象时它们是单线程执行的。

9.针对2.0.X版本的Kafka生产者分区写入策略,下面说法错误的是()
A随机分区策略是默认采用的分配策略
B按key分区分配策略有可能由于key值相同导致大量数据保存在同一个分区中
C采用自定义分区策略时需要实现Partitioner接口
D当生产消息时,key为mull,则采用轮询分区策略
 

答案是D,错误的说法是 "当生产消息时,key为null,则采用轮询分区策略"。

在Kafka中,如果消息的key为null,则默认采用随机分区策略,而不是轮询分区策略。轮询分区策略是指将消息依次分配到可用分区中,以达到负载均衡的目的。然而,当消息的key为null时,Kafka无法使用key来确定分区,因此使用随机分区策略来选择分区。

其他选项描述正确。随机分区策略是默认采用的分配策略,按key分区分配策略有可能由于key值相同导致大量数据保存在同一个分区中,采用自定义分区策略时需要实现Partitioner接口。

10.下面有关JAVA异常类的描述,说法错误的是?
A 非RuntimeException一般是外部错误(非Error),其一般被try-catch语句块所捕获
B Error类体系描述了Java运行系统中的内部错误以及资源耗尽的情形,Error不需要捕捉
C RuntimeException体系包括错误的类型转换、数组越界访问和试图访问空指针等等,必须被tryfcatch语句块所捕获
D 异常的继承结构︰基类为Throwable,Error和Exception继承Throwable,RuntimeException和IOException等继承Exception

答案是A,错误的描述是 "非RuntimeException一般是外部错误(非Error),其一般被try-catch语句块所捕获"。

实际上,非RuntimeException异常通常表示程序的内部错误,例如IO错误、数据库连接错误等。RuntimeException异常通常表示程序错误,例如空指针、数组越界等。无论是RuntimeException还是非RuntimeException异常,都应该被try-catch语句块捕获。

其他选项描述正确。Error类体系描述了Java运行系统中的内部错误以及资源耗尽的情形,Error不需要捕捉。RuntimeException体系包括错误的类型转换、数组越界访问和试图访问空指针等等,必须被try-catch语句块所捕获。异常的继承结构是基类为Throwable,Error和Exception继承Throwable,RuntimeException和IOException等继承Exception。

11.SQL语言中,条件“年龄BETWEEN 20 AND 30"表示年龄在20至30之间,且()。
A不包括20岁和30岁
B包括20岁但不包括30岁
C包括30岁但不包括20岁
D包括20岁和30岁

答案是D,"年龄BETWEEN 20 AND 30"表示年龄在20至30之间,包括20岁和30岁。

在SQL中,BETWEEN运算符用于指定一个范围。当使用BETWEEN时,指定的范围包含起始值和结束值。因此,"年龄BETWEEN 20 AND 30"表示年龄在20至30之间,包括20岁和30岁。

13.IP地址202.100.80.110是〔)地址。
A B类
B C类
C D类
D A类
 

答案是B,C类地址。

IP地址202.100.80.110是一个C类地址。在IPv4中,IP地址被分为A、B、C、D、E五类。每个类别的地址范围由其网络地址的位数决定。

A类地址的网络地址占用8位,范围从1.0.0.0到126.0.0.0。B类地址的网络地址占用16位,范围从128.0.0.0到191.255.0.0。C类地址的网络地址占用24位,范围从192.0.0.0到223.255.255.0。D类地址用于多播,E类地址保留。

14.Redis在的有序集合中在数据量极少(小于128个)的情况下使用以下哪种存储方案()
A跳跃表
B散列表
C双向链表
D压缩表
 

答案是B,散列表。

在Redis中,有序集合使用散列表(Hash Table)或跳跃表(Skip List)来实现。在数据量极少的情况下(小于128个),Redis通常使用散列表来存储有序集合。

散列表在处理小数据量时非常高效,因为它具有O(1)的时间复杂度来获取单个元素。另一方面,跳跃表适用于大型有序集合,因为它提供了更好的时间复杂度(O(log n))来获取元素。

因此,在数据量极少的情况下,Redis使用散列表来存储有序集合,而不是跳跃表。选项B是正确的。

15.下面不属于Kafka生产者分区写入策略的是О
A随机分区策略
B最少连接分区策略
C自定义分区策略
D轮询MV策略

答案是D,"轮询MV策略"不属于Kafka生产者分区写入策略。

Kafka生产者分区写入策略包括以下几种:

A. 随机分区策略
B. 最少连接分区策略
C. 自定义分区策略

"轮询MV策略"并不是Kafka生产者分区写入策略的一种。

因此,选项D是错误的,它描述了一个不存在的分区写入策略。

16.SpringBoot注解中,主要功能是启动Spring应用程序上下文时进行自动配置的注解是()
A @lmport
B @EnableAutoConfiguration
C @Conditional
D @SpringBootApplication

答案是B,@EnableAutoConfiguration 是主要功能是启动Spring应用程序上下文时进行自动配置的注解。

在Spring Boot中,@EnableAutoConfiguration注解用于自动配置Spring应用程序上下文。它会根据已有的依赖项和配置来自动配置Spring应用程序上下文,减少了手动配置的工作量。@EnableAutoConfiguration注解通常与@SpringBootApplication注解一起使用,后者是一个组合注解,包含了@EnableAutoConfiguration注解。

因此,选项B是正确的,它描述了@EnableAutoConfiguration注解的主要功能。选项A、C和D都是Spring Boot中常用的注解,但它们的功能与启动Spring应用程序上下文时进行自动配置无关。

17.在JAVA中,假设A有构造方法A(int a),则在类A的其他构造方法中调用该构造方法和语句格式应该为()
A this(x)
B super(x)
C A(x)
D this.A(x)

答案是A,this(x)。

在Java中,一个构造方法可以调用同一个类的另一个构造方法,这被称为构造方法的重载。要调用同一个类的另一个构造方法,可以使用关键字this,后跟要调用的构造方法的参数列表。因此,在类A的其他构造方法中调用构造方法A(int a)的语句格式应该为this(a)。

因此,选项A是正确的,它描述了调用同一个类的另一个构造方法的语法。选项B是用于在子类中调用父类的构造方法的语法。选项C和D都是错误的语法格式。


 

18.下列关于Spring特性中loC描述错误的是;
A所谓“控制反转"是指控制权由应用代码转到外部容器,即控制权的转移
BloC将控制创建的职责搬进了框架中,从应用代码脱离开来
C使用Spring的loC容器时只需指出组件需要的对象,在运行时Spring的loC容器会根据XML配置数据提供给它
DloC就是指程序之间的关系由程序代码直接操控

答案是D,"loC就是指程序之间的关系由程序代码直接操控"是错误的描述。

在Spring中,IoC(Inversion of Control,控制反转)指的是将组件之间的依赖关系移动到容器中,由容器来管理和注入这些依赖关系。这个过程中,组件并不需要知道它们使用的对象是如何创建或者如何获取的,它们只需要知道它们所依赖的对象是谁即可。

因此,选项D是错误的,它描述了IoC的过程与含义不符。选项A、B、C都是正确的描述。选项A中所说的控制权的转移将应用程序从对象创建和依赖注入中解耦,而IoC容器负责管理对象的生命周期和依赖关系。选项B中说IoC将职责从应用代码中解耦,确保应用程序中的对象不再负责管理它们所依赖的对象的创建和配置。选项C中所说的是IoC容器根据XML配置数据来提供组件需要的对象。

19.下面关于Redis的说法错误的是(
ARedis集群在设计中使用了一致性hash
BRedis集群之间是异步复制的
C分区可以让Redis管理更大的内存
DRedis主要消耗内存资源

答案是B,"Redis集群之间是异步复制的"是错误的描述。

在Redis集群中,节点之间使用同步复制来保持数据同步。当一个主节点接收到写请求时,它会将写操作记录在日志中,并将写操作发送给所有与之相连的从节点。从节点在收到写操作后,会将写操作应用到自己的数据副本中。只有当写操作被主节点和所有从节点都提交后,写操作才被认为是完成的。

因此,选项B是错误的,Redis集群之间使用同步复制来保持数据同步,而不是异步复制。选项A、C、D描述正确。Redis集群在设计中使用了一致性哈希来实现数据分片和负载均衡,分区可以让Redis管理更大的内存,Redis主要消耗内存资源。


 

20.给出数据表score(stu_id,name,math,english,chinese),下列语句正确的是()
A elete * from score
B select stu_id,sum(math) from score
C select sum(math),avg(chinese) from score
D select *,sum(english) from score
 

答案是C,"select sum(math),avg(chinese) from score"是正确的语句。

给出的数据表score包含了学生的成绩信息,包括学生ID、姓名、数学、英语和语文成绩。下面逐个选项进行分析:

A. delete * from score:这是一个删除语句,它会删除score表中的所有数据。它不是正确的语句。

B. select stu_id, sum(math) from score:这是一个查询语句,它将按照学生ID对数学成绩进行求和,并返回每个学生的学生ID和数学总成绩。这是一个错误的语句,因为它只返回了学生ID和数学总成绩,而没有要求返回其他列。

C. select sum(math), avg(chinese) from score:这是一个查询语句,它将计算数学成绩的总和和语文成绩的平均值,并返回这两个计算结果。这是正确的语句。

D. select *, sum(english) from score:这是一个查询语句,它将返回score表中所有列的值和英语成绩的总和。这是一个错误的语句,因为在使用聚合函数(如sum)时,查询语句中的每个列都必须是一个分组键或聚合函数。在这个查询中,*通配符没有被包括在sum函数中,也没有被用作分组键,因此该查询是不合法的。

因此,选项C是正确的,它是一个合法的查询语句。

21.下面关于Kafka文件存储机制的说法,错误的是()
A Partition由多个Segment组成
B segment是最小不可分割单元
C Kafka根据log.segment.bytes 的配置来决定单个 Segment 文件的大小
D Topic由多个Partition组成
 

答案是B,"segment是最小不可分割单元"是错误的说法。

Kafka的文件存储机制是基于分段的。每个分区由多个分段(Segment)组成,每个分段对应一个日志文件。Kafka使用日志分段(Log Segment)来管理Topic分区中的消息。一个分区由多个日志分段组成,每个日志分段对应一个物理上的日志文件。Kafka会周期性地将一个分区的所有消息从当前日志分段写入磁盘,并创建一个新的日志分段来继续存储后续的消息。

因此,选项B是错误的,Segment是可以被分割的。选项A、C、D都是正确的,Partition由多个Segment组成,Kafka根据log.segment.bytes的配置来决定单个Segment文件的大小,Topic由多个Partition组成。

22.关于sleep(和wait(,以下描述错误的一项是( )
A sleep不释放对象锁,wait放弃对象锁
B sleep暂停线程、但监控状态仍然保持,结束后会自动恢复
C wait后进入等待锁定池,只有针对此对象发出notify方法后获得对象锁进入运行状态
D sleep是线程类(Thread)的方法,wait是Object类的方法;
 

答案是A,"sleep不释放对象锁,wait放弃对象锁"是错误的描述。

在Java中,sleep()和wait()都可以暂停线程的执行,但它们的行为有所不同。以下是每个方法的描述:

  • sleep()方法会暂停当前线程的执行,但不会释放对象锁。因此,其他线程仍然无法访问被当前线程锁定的对象。当指定的时间到期或者线程被中断时,sleep()方法会自动恢复线程的执行。

  • wait()方法也会暂停当前线程的执行,但它会释放对象锁,使得其他线程可以访问被锁定的对象。线程会进入等待状态,直到另一个线程调用notify()或notifyAll()方法,或者指定的等待时间到期。当线程被唤醒后,它会重新尝试获取对象锁并继续执行。

23.Zookeeper中,设置节点/test01可创建的子节点个数为3个的命令为()
A setquota -n 4 /test01
B setquota -b 3 /test01
C setquota -b 4 /test01
D setquota -n 3 /test01

答案是D,"setquota -n 3 /test01"是设置节点/test01可创建的子节点个数为3个的命令。

在Zookeeper中,可以使用setquota命令来设置节点的配额(quota)。配额是一种限制,用于限制节点或子节点的使用量。setquota命令有两个选项:

  • -b:指定节点的配额为数据大小(bytes)。
  • -n:指定节点的配额为子节点数量(number of child nodes)。

24.在Java中,关于HashMap类的描述,以下错误的是
A HashMap能够保证其中元素的顺序
BHashMap允许将null用作键
CHashMap允许将null用作值
D HashMap使用键/值得形式保存数据
 

答案是A,"HashMap能够保证其中元素的顺序"是错误的描述。

HashMap不能保证其中元素的顺序。HashMap中的元素是按照哈希码的顺序存储的,而哈希码的计算方式是不可预测的,因此HashMap中的元素没有任何顺序保证。

 25.下列有关Thread的描述,哪个是正确的?
A结束一个线程的通常做法是: thread.stop()
B将一个线程标记成daemon线程,意味着当主线程结束,并且没有其它正在运行的非daemon线程时,该daemon线程也会自动结束。
C让一个线程等待另一个线程的通知的方法是: thread.sleep()
D启动一个线程的方法是: thread.run()

答案是B,"将一个线程标记成daemon线程,意味着当主线程结束,并且没有其它正在运行的非daemon线程时,该daemon线程也会自动结束"是正确的描述。

以下是每个选项的描述:

A. 结束一个线程的通常做法不是调用thread.stop()方法,而是让线程正常退出。可以通过设置一个标志位或者调用Thread.interrupt()方法来通知线程退出。

B. 将一个线程标记成daemon线程,意味着当主线程结束,并且没有其它正在运行的非daemon线程时,该daemon线程也会自动结束。这是正确的描述。

C. 让一个线程等待另一个线程的通知的方法不是调用thread.sleep()方法,而是使用Object.wait()方法来等待另一个线程的通知。

D. 启动一个线程的方法不是调用thread.run()方法,而是调用thread.start()方法。调用start()方法会启动一个新的线程,并在新线程中执行run()方法中的代码。

26.下面不属于Kafka消费者分区分配策略的是(
A RoundRobin分配策略
B Sticky分配策略
C Rebalance分配策略
D Range分配策略
 

答案是B,"Sticky分配策略"不属于Kafka消费者分区分配策略。

在Kafka中,消费者分区分配策略用于决定如何将Topic的分区分配给消费者组中的消费者。以下是每个选项的描述:

A. RoundRobin分配策略:这种策略会将Topic的所有分区轮流分配给消费者组中的每个消费者。如果有多个消费者在同一个消费者组中,则它们将平均分配所有分区。

B. Sticky分配策略:这种策略不是Kafka内置的消费者分区分配策略,因此它不属于Kafka消费者分区分配策略。

C. Rebalance分配策略:这种策略会在消费者加入或离开消费者组时重新分配Topic的分区。它会尽可能平均地分配分区,以确保所有消费者都能够获取相同数量的分区。

D. Range分配策略:这种策略会将Topic的所有分区按照分区ID的范围分配给消费者组中的每个消费者。例如,如果Topic有8个分区,消费者组有4个消费者,则每个消费者将被分配连续的两个分区。

27.以下叙述正确的是
A 实例方法可直接调用超类的类方法
B 实例方法可直接调用子类的实例方法
C 实例方法可直接调用本类的实例方法
D 实例方法可直接调用超类的实例方法

答案是D,"实例方法可直接调用超类的实例方法"是正确的叙述。

以下是每个选项的描述:

A. 实例方法不能直接调用超类的类方法,因为类方法是属于类的,而不是属于实例的。

B. 实例方法不能直接调用子类的实例方法,因为子类的实例方法可能与父类的实例方法同名但不同实现,调用子类的实例方法需要通过子类的实例来调用。

C. 实例方法可以直接调用本类的实例方法,因为它们都属于同一个类。

D. 实例方法可以直接调用超类的实例方法,因为子类会从超类中继承实例方法,并且子类的实例方法可以调用超类的实例方法。


 

28.在Linux中有一个名为test的文件,内容如下所示:
Hi,Today is Friday.
Hello, Hi? Today is Monday .

Hello, Today is Thursday.

Hi,Today is Sunday .
Hello,Today is Thursday .

Hello,Today ...
Hi,Today ......
则执行下面Shell 脚本的结果是()
sed -n ' /Hello/ s/Today/123/p' test / grep -v "\.\.\." | awk -F, '{print $2}'’ | awk '{print $1)’ | grep -oE '[a-zA-Z1-9]’| wc -l

A 3    B 6    C 0    D 9

答案是B,执行脚本的结果是6。

下面是脚本的解释:

  1. sed命令用于从文件中取出包含Hello字符串的行,并将其中的Today字符串替换为123,然后将结果输出。

  2. grep命令用于过滤掉包含连续两个以上句点的行,排除掉内容不完整的句子。

  3. awk命令用于提取逗号分隔的第二列文本,即每个句子的第二部分。

  4. awk命令再次用于提取每个句子的第一个单词,即逗号分隔的第一部分。

  5. grep命令用于匹配每个单词中的字母和数字,并计算匹配结果的行数。

  6. wc命令用于计算结果的行数。

29.MyBatis中以下查询语句正确的是(

A

<select id="findByusernameAndPwd"  resultMap="resultMap">
SELECT *
FRONM t_user
<trim prefixm="WHERE" prefixOverrides="AND" suffixOverrides="AND">
<if test="username !=null and username != "" "> AND username =#{username}</if>
<if test=""password !=null and password != "" "’AND password =#{password}</if></trim>
< /select>

B

<select id="tindByUsernameAndPwd"  resultMap="reSultMap">
SELECT *
FROM t_user
<trim prefix=""WHERE"”" prefixOverrides="AND" suffixOverrides=“AND">
<if testm"username !=null and username != "" "> ANDusername m#{username} AND </if>

<if test="password !=null and password != "" ">password =#{password} AND</if></trim>
</select>


C所有选项均正确

D
<select id="findByUsernameAndPwd" resultMap="resultMap">
SELECT *
FROM t_user
<trim prefix=""WHERE" prefixOverrides="AND" suffixOverrides="AND">
<if testm"username !mnull and username !m "" "> AND username m#{username}</if><if test=""password !=null and password != "" “> AND password =#{password} AND</if></trim>

</select>

答案是C,所有选项都是正确的。

30.如下面的数据库的表中,若职工表的主关键字是职工号,部门表的主关键字是部门号,SQL操作()不能执行。
职工表
职工号 职工名 部门号 工资

001李红01 580
005刘军01 670

025王芳03 720

038 张强02 650
部门表
部门号 部门名 主任

01人事处高平

02财务处蒋华

03教务处许红


A将行(005',‘乔兴',04',750)插入到职工表中
B将职工号为,‘001的工资改为700
C将职工号为,'038"的部门号改为03'
D从职工表中删除行(025',‘王芳”,03',720)
 

答案是A,不能执行将行(005',‘乔兴','04',750)插入到职工表中。

原因是部门表中不存在部门号为04的部门,因此无法将该行插入到职工表中,违反了外键约束。

主键也冲突

31.下面关于关于Kafka中数据文件夹的说法,错误的是(门
A .log是日志数据文件
B leader-epoch-checkpoint持久化每个partition对应的log end offset
C timeindex保存时间索引
D offset通过.index文件查找数据

答案是D,.index文件是Kafka中用于索引数据的文件,它包含了每个消息在.log文件中的偏移量和对应消息的大小等信息。这个文件通过查找偏移量来定位消息,而不是通过偏移量来查找数据。


32.下面有关java内存模型的描述,说法错误的是?
A “synchronized"一保证在块开始时都同步主内存的值到工作内存,而块结束时将变量同步回主内存
B "volatile”—保证修饰后在对变量读写前都会与主内存更新。
C 如果在一个线程构造了一个不可变对象之后(对象仅包含final字段),就可以保证了这个对象被其他线程正确的查看
D JMM通过控制主内存与每个线程的本地内存之间的交互,来为java程序员提供内存可见性保证
 

选项C是错误的,

解释如下:

A. synchronized关键字保证了在进入同步块时,会将变量从主内存中读取到线程的工作内存中,在同步块结束时再将变量同步回主内存。

B. volatile关键字保证了对变量的读写操作都会直接在主内存中进行,不会使用线程的本地内存。

C. 对于不可变对象,如果对象中所有的字段都是final的,那么其他线程在获取该对象的引用后,可以正确地查看该对象中的字段值,这是因为在构造不可变对象时,final字段会在构造函数中被初始化并写入主内存,其他线程获取到该对象引用时,可以直接从主内存中读取final字段的值。

D. Java内存模型(JMM)通过控制主内存与每个线程的本地内存之间的交互,来为Java程序员提供内存可见性保证,确保多线程环境下的数据一致性和可见性。

33.Math.round(11.5)等于()
A 11.5
B 12
C 12.5
D 11
 

答案是B,Math.round()方法是四舍五入取整的方法

34.以下方法,哪个不是对add方法的重载?
public class Test
{
public void add( int x,int y,int z){}

}
A public int add(int x,int y,int z){return 0;}
Bpublic void add(int x,int y){}
C所有选项都不是
D public void add(int x,int y,float z){}

方法的重载是指在同一类中定义多个名称相同但参数类型、个数或顺序不同的方法。

选A

35.考虑下面这个简单的例子,让我们看看reflection是如何工作的。
immport java. lang.reflect.*;
public class DumpMethods{
        public static void main(string[] args){
                try {
                        class c=class.forName( args[0]);
                        Method m[ ]=c.getDeclaredMethods();

                        for (int i = e; i < m.length; i++) {
                        system.out.println(m[i].tostring();}
                catch (Throwable e) {
                        system.err.println(e);
                }
        }
}
其中"c.getDeclaredMethods"的作用是:

A取得类的所有公有方法名称
B取得类的所有方法对象
C以上选项都不正确
D取得类的公有方法对象

选项B是正确的,"c.getDeclaredMethods"的作用是取得类的所有方法对象。

36.下面关于MyBatis的说法错误的是()
A MyBatis支持编写动态SQL语句,不支持存储过程
B MyBatis支持对象与数据库的ORM字段关系映射
C MyBatis 可以自动将查询结果转换为Java对象
D MyBatis是一个免费开源的持久化框架

选项A是错误的,MyBatis不仅支持编写动态SQL语句,还支持存储过程。

MyBatis不仅支持编写动态SQL语句,还支持存储过程。MyBatis提供了调用存储过程的方法,可以通过Mapper文件中的select、insert、update和delete标签来调用存储过程。

37.下面关于ZooKeeper客户端命令的使用错误的是()
A列出节点: cat/node
B获取节点数据: get/node
C删除节点: delete/node
D创建节点:create/node

选项A是错误的,ZooKeeper客户端命令中列出节点应该使用ls命令,而不是cat命令。


 

38.关于抽象类与最终类,下列说法错误的是?
A抽象类和最终类都可以被声明使用
B抽象类中可以没有抽象方法,最终类中可以没有最终方法
C抽象类和最终类被继承时,方法可以被子类覆盖
D抽象类能被继承,最终类只能被实例化。

抽象类可以被继承,最终类不能被继承,只能被实例化。

抽象类和最终类都可以被声明使用,可以被定义为变量类型或方法参数类型。

39.互联网的主要硬件设备有中继器、网桥和() 。
A 网卡
B 网络适配器
C 路由器
D 集线器

选项C,路由器是互联网的主要硬件设备之一。

中继器、网桥和路由器都是常见的网络设备,它们都有不同的作用和功能。

中继器是一种最基本的网络设备,它用于将信号从一个网络传输到另一个网络。中继器只能传输物理层的信号,不能识别MAC地址。

网桥是一种网络设备,它可以识别MAC地址,并根据MAC地址将数据包转发到目标设备。网桥可以将不同的局域网连接起来,形成一个更大的网络。

路由器是一种网络设备,它可以识别IP地址,并根据IP地址将数据包转发到目标设备。路由器可以将不同的子网连接起来,形成一个更大的网络,同时还可以实现不同网络之间的通信。


 

40.以下程序输出()
public static void main(string[] args) {
int num = 2;
switch (num) {

case 1:
++num;

case 2:
++num;

case 3:
++num;

default:
++num;

break;}
System.out.println (num);}
}
 

A3
B4
C5

D2
 

在这个程序中,num的值为2,因此会执行case 2分支和之后的所有分支。

在case 2分支中,会将num的值加1,变为3。

在case 3分支中,同样会将num的值加1,变为4。

在default分支中,同样会将num的值加1,变为5。

发现文章有错误的可以评论哦!

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐