Java笔试强训错题本之选择题篇(持续更新)

⭐️前面的话⭐️

普普通通的错题本,没有什么特别之处,记录java相关选择题错题或者蒙对的题,以便复习。

📒博客主页:未见花闻的博客主页
🎉欢迎关注🔎点赞👍收藏⭐️留言📝
📌本文由未见花闻原创,CSDN首发!
📆首发时间:🌴这个并不重要🌴
✉️坚持和努力一定能换来诗与远方!
💭参考书籍:📚《有关Java的书可能会参考》
💬参考在线编程网站:🌐牛客网🌐力扣
博主的码云gitee,平常博主写的程序代码都在里面。
博主的github,平常博主写的程序代码都在里面。
🍭作者水平很有限,如果发现错误,一定要及时告知作者哦!感谢感谢!



封面区


✂️2022年4月30日更新

下列选项中属于面向对象设计方法主要特征的是( )。
A 继承
B 自顶向下
C 模块化
D 逐步求精

他的回答: C (错误)
正确答案: A
参考答案: 参面向对象基本方法的基本概念有对象、类和实例、消息、继承与多态性,所以选择 A 。

1
总结:概念题,现在清楚了。


方法通常存储在进程中的哪一区()
A 堆区 B 栈区 C 全局区 D 方法区
他的回答: A (错误)
正确答案: D
2

参考题目链接:https://www.nowcoder.com/questionTerminal/e653b41fd6544392ab3302413f4a5b2f?toCommentId=1254393
总结:忘记了,哎,附张图。
jvm


3
总结:这道题太坑了,使用引用null调方法,第一时间想到的的肯定是空指针异常吧,但是它调的是静态方法,调用另一个类的静态方法可以使用类名,也可以使用该类的引用调用,就算这个引用为null也可以调用。


4
总结:this()与super()必须位于构造方法首行,那如果在同一个构造方法能够同时调用this()与super(),不就违背上述原则了。
super来引用父类对象,用this来引用当前对象。
⭐️相同点:

  • 均可以调用构造方法,但是两者不能同时出现在同一构造方法。
  • 调用某构造方法时必须放在另一个构造方法第一行。
  • 都不能放在静态方法中使用。

⭐️不同点:

  • 引用对象不同。
  • super()从子类中调用父类的构造方法,this()调用当前类的构造方法。

5
总结:做这种代码推断题,先看有没有语法错误,再验证代码运行结果对不对,不论是静态方法还是非静态方法,方法里面不能定义静态变量,静态变量是属于类的只能定义在类中,所以你可以称静态变量为类变量,静态成员为类的成员。


6

总结:父类private的成员变量,根据权限修饰符的访问控制范围,只有在类内部才能被访问,就算是他的子类,也不能访问。这里如果将Person p = new Child();改成 Person p = new Person();代码依然无法通过编译,因为子类作用域中访问不到父类的私有变量,无法为其生成正确的字节码。另外,一个Java文件中不能有两个public类。


7
总结:子类构造实例对象时,先需要构造父类部分,这里由于父类的构造方法是含有参数的,因此子类构造方法中没有隐式构造父类部分,需要显示构造父类部分,即需要在子类对象构造方法第一行加上super(s)


8
总结:这道题是有一点歧义的,接口不能被final修饰,因为被final修饰了,接口就不能被继承了,但接口的使命就是继承啊,void不能修饰接口和类。


9
总结:B选项,因为final修饰的类不能被继承,因此不能拥有抽象方法,D项,抽象类的子类也是抽象类的时候,不需要实现父抽象类的所有方法,如果抽象类子类是普通类,则需要实现父类的所有抽象方法。


10
总结:D选项,抽象类的使命确实是被继承,但是不代表说只能被继承,它可以不被继承,可以组合,E选项正确。


11
总结:A是没有问题的,但是它声明的这个mian方法不是程序最开始进入的那个main方法,CD都是对的,B选项不对,因为接口的使命是被继承,如果方法声明私有,就不能被重写了。


12
总结:B选项,它说是“用来”,不是“只用来”,所以B选项没有错,C选项,方法是不可重写或不可覆盖,不能说成不可继承,类与类之间才有继承关系。


13
总结:最终类也叫做密封类,也就是被final关键字修饰的类,所以最终类不能被继承,D选项错误。


14
总结:抽象类中的抽象方法不能被final修饰,被final修饰的方法不能被重写,而抽象类的使命是被继承,继承需要重新抽象类中所有抽象方法,所以B选项是错误的。另外抽象类不能被final修饰,所以A选项错误,抽象类中的抽象方法只能声明,所以C选项错误。


15
总结:double变量也是可以被赋值十六进制的整数的,所以D选项正确,byte变量的范围是0-127,128溢出了,所以E选项错误。


16
总结:代码执行顺序为父类静态代码块,子类静态代码块,父类构造方法,子类构造方法,所以该题选C。


17
17
总结:这道题需要耐心地去做,我做这道题的时候绕了好久,虽然做对了,但是依然值得回味,需要注意的一点是当try语句块和finally语句块均有return时,finally里面的return会覆盖掉try里面的语句块。


18

总结:这道题需要注意一个点,就是静态变量赋值与静态代码快执行的顺序是按照代码的书写顺序进行,静态代码块执行完毕才会执行main方法,因此获取cnt的值时,首先cnt被赋值为6,然后执行第一句静态代码块,cnt此时为15,最后执行第二个静态代码块,cnt的值为5,所以选择A。


✂️2022年5月22日更新

19

总结:被final修饰的变量,进行加法运算时,类型不会发生改变。但是如果没有final修饰,byte类型进行加法运算时,会发生向上转型,转换为int,因此执行b4+b5,类型仍为byte,所以不报错,执行b1+b2得到的类型是int,又b3为byte类型,所以会报错。


20
总结:这道题很明显就是数组越界异常,我怎么点成空指针异常了呢,应该是点错位置了。


21
总结:这种题,去idea翻翻继承关系就知道了,哎,记不住。
图1
根据这张图,可以知道ACD选项错了,我们再来看看CallableStatement接口的继承关系。
图2
现在就非常清楚了,PreparedStatement是CallableStatement的父类。


22
总结:LinkedList没有继承List吗?看一下集合框架最简单的继承图,虽然LinkedList与List确实是有关系,但是List是接口,应该说LinkedList实现了List接口。
集合框架
B说反了,C是对的,HashSet确实继承自AbstractSet,D不知道,看看WeakMap或HashMap的继承图,诶,没查到啊,百度了一下,js里面才有一个叫WeakMap的类。
。。。
什么是WeakMap:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/WeakMap


23

总结:在调用指定容量的ArrayList的构造方法的时候,并没有进行扩容,只是创建了一个大小为指定容量数,扩容需要等到第一次顺序表满后,才会1.5倍进行扩容。


24
总结:接口的方法只能被public abstract修饰,因此选择D。


25
总结:FileNotFoundException为首查异常,其他三个均为非受查异常。
异常可以分为非检查异常和检查异常: 非检查异常主要包括运行时异(RuntimeException极其子类)和错误(Error)。编译器不会进行检查并且不要求必须处理的异常,也就说当程序中出现此类 异常时,即使我们没有try-catch捕获它,也没有使用throws抛出该异常,编译也会正常通过。 检查异常是除了ErrorRuntimeException的其它异常。这是编译器要求必须处理的异常。这样的异常一般是由程序的运行环境导致的。因为程序可能被运行 在各种未知的环境下,而程序员无法干预用户如何使用他编写的程序,所以必须处理这些异常


26

总结:Byte类数据的范围是-128~127++a后,因为计算之前,a=127为Byte最大值,计算后,a溢出,会变成最小值-128,后面b在方法里面进行修改,因为作用域的约束,出了作用域之后,b的值不变,为127
包装类的值是final修饰不可变的,无论是++b还是b++都创建了一个新对象,那么作为参数传递时,形参和实参不会指向一个地址。也就是说,即使add() 方法 中不是 b = b++;这样没有意义的代码,传入参数的值也不会改变。 byte类型取值范围为-128~127,在a变量进行++a运算时,会导致a变为-128,这是因为整数在内存中使用的是补码的形式表示,最高位是符号位,0表示正 数,1表示负数,加一导致补码进位,符号位变为1. 因此,本题正确输出为-128 127,答案选择D


27
总结:修改表结构的语法格式为:

alter table 表名 具体操作
alter table 表名 add 字段名 字段类型//添加
alter table 表名 delete 字段名//删除
alter table 表名 change 旧字段名 新字段名 新字段类型//修改
alter table 表名 modify 字段名 字段类型

所以选择C选项。


28
总结:HAVING子句用来从分组的结果中筛选行,D选项错误。


29
总结:数据库中的记录前后顺序可以颠倒,查询数据时会根据特定的规则或用户查询的规则进行数据的查询结果,所以并不会影响到数据关系,所以选项B正确。


30
总结:两个sql的函数,DATEADD(datepart,number,date),可以将日期date加上number的日期间隔,getdate()获取当前的日期,比如题目中DATEADD(yy,-3,getdate())表示三年前的时间点。


31

总结:
数据定义语言:负责数据的模式定义与数据的物理存取构建;
数据操纵语言:负责数据的操纵,包括查询及增、删、改等操作;
数据控制语言:负责数据完整 性、安全性的定义与检查以及并发控制、故障恢复等功能。


觉得文章写得不错的老铁们,点赞评论关注走一波!谢谢啦!

1-99

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

未见花闻

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值