当前位置: 首页 > 面试经验 >

Java软件开发笔试题3

优质
小牛编辑
83浏览
2024-03-04

Java软件开发笔试题3

上一篇

1.给定Java代码如下所示,在A处新增下列()方法,不是对cal方法的重载。

A. public void cal(int z, int y, int x){}

B. public int cal(int x, int y, float z){return 0;}

C. public float cal(float y, float x_{return y+x;}

D. public String cal(String x, String y, String z){return x+y+z;}

在这种情况下,选项 A 不会导致对cal方法的重载,因为它与现有的cal方法具有相同的参数类型和数量。因此,选项 A 是符合要求的

2.以下两个事务并行执行,下面说法正确的是:

事务1:

START TRANSACTION;

UPDATE students SET name="张三" WHERE id=123;

COMMIT;

事务2:

START TRANSACTION;

UPDATE students SET name="李四" WHERE id=123;

COMMIT

A.两个事务均执行成功,name最终为后提交事务修改后的值

B.以上说法均错误

C.产生冲突, 两个事务均无法执行成功

D.先提交的事务执行成功,name最终为先提交事务修改后的值

C. 产生冲突,两个事务均无法执行成功。因为两个事务都试图更新相同的行,数据库会阻止其中一个事务成功提交,以避免数据的不一致性。

3.关于下面的SQL说法正确的是

select * from test where a=1 and b=1;

select * from test where b=1;

select * from test where b=1 order by time desc;

若只建一个索引,则下列选项中最优的建法是:

(这题我不太懂,求大神给我解答下)

4.判断说法正确性 “即将正式发布的HTTP3前身为QUIC协议,基于UDP协议”。

5.hset tmp val 123

incr tmp

hincrby tmp val 123

上述redis命令执行结束后,tmp的内容是

hset tmp val 123:这个命令在哈希 tmp 中设置了一个字段 val,其值为 123。如果 tmp 之前不存在,那么它会被创建。

incr tmp:这个命令试图对 tmp 进行自增操作。但是,这里有一个问题。incr 命令是用于对整数键进行操作的,而不是哈希。所以,这个命令会失败,并返回一个错误。

hinxrby tmp val 123:该命令用于对哈希中的某个字段进行自增操作。如果 val 字段在 tmp 中不存在,它会被创建并初始化为 0,然后增加 123。如果它已经存在,那么它的值会增加 123。

因此最终答案是 246

6.判断说法正确性 “fopen等方法打开文件时可以指定二进制方式打开,是因为文件在文件系统里被分成了二进制文件和文本文件两种类型”

文件在文件系统里并不被分成二进制文件和文本文件两种类型。实际上,所有文件在底层都是以二进制形式存储的。无论是文本文件、图像文件、音频文件还是其他任何类型的文件,它们最终都是以二进制形式存储在磁盘上的。

当我们说“以二进制方式打开文件”时,我们实际上是指文件的内容应当被原封不动地读取,而不对其中的字符进行任何转换或解释。这在处理非文本文件(如图像、音频、视频等)时尤为重要,因为这些文件的内容通常不能被简单地解释为文本。

另一方面,当我们说“以文本方式打开文件”时,我们通常是指文件的内容应当按照某种字符编码(如UTF-8、ASCII等)进行解释,以便能够正确地读取和写入文本数据。在这种情况下,操作系统或编程语言可能会对文件中的字符进行某些转换,如换行符的转换(在Windows中为\r\n,在Unix/Linux中为\n)。

因此,打开文件时指定二进制方式并不是因为文件在文件系统里被分成了二进制文件和文本文件两种类型,而是因为我们想要以不同的方式处理文件内容。

7.关于Redis,说法正确的是

A.list类型的数据可以用于模拟简单的优先队列

B.Redis的存储引擎是单线程的,无论多少个连接同时发起请求,其内部都会按照顺序执行命令,所以每个客户端只需要一个连接即可

C.DEL prefix* 命令会删除所有以 prefix开头的key

D.hash类型的数据的每个子项都可以单独设置过期时间

正确的选项是A。

B:Redis确实使用单线程来处理命令,这保证了命令执行的原子性。但是,每个客户端可能需要多个连接,这取决于应用程序的需求。例如,如果一个客户端需要执行多个不相关的操作,那么使用多个连接可能会更有效。

C:DEL命令在Redis中用于删除一个或多个key。当你使用DEL prefix*这样的模式时,它不会删除所有以prefix开头的key。你需要使用UNLINK命令或者编写脚本来批量删除匹配的key。

D:在Redis中,你不能为hash类型的数据的每个子项单独设置过期时间。你只能为整个hash设置一个过期时间。如果你需要为每个子项设置不同的过期时间,你可能需要考虑使用其他数据结构或方法。

8.写算法时遇到的一些不太熟的API复习补充:

ArrayList添加数字: list.add()

ArrayList逆序: import java.util.Collections; Collections.reverse(list);

ArraysList转为数组: for(int i=0 ; i<list.size() ; i++){ int[i] = (int)list.get(i); }

查看数据类型: A instanceof Integer; //返回boolean

判断字符串是否包含某个字串: textStr.contains("字串"); //返回boolean

将字符串中的字母全部转为小写: originalString.toLowerCase();

 类似资料: