- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
Java面试选择题(含答案及解析)
1.关于Java变量初始化,以下说法正确的是()
A.局部变量会默认初始化(如int类型默认0)
B.成员变量未手动初始化时,会有默认值(如String默认null)
C.final修饰的局部变量可以不初始化
D.static变量必须手动初始化
答案:B
解析:局部变量(方法内定义的变量)没有默认值,未手动初始化直接使用会编译报错(排除A);final修饰的变量(无论局部还是成员)必须初始化(排除C);static变量属于类变量,未手动初始化会有默认值(如staticint默认0,排除D)。实际开发中,成员变量依赖默认值初始化是常见场景,比如实体类未赋值的String属性默认是null。
2.下列关于方法重载(Overload)和重写(Override)的说法,错误的是()
A.重载要求方法名相同,参数列表不同(个数/类型/顺序)
B.重写要求方法名、参数列表、返回值类型完全一致(父子类中)
C.重载的方法可以在同一个类中,也可以在父子类中
D.重写的方法可以缩小父类方法的访问权限(如父类public→子类private)
答案:D
解析:重写有“两同两小一大”原则——方法名、参数列表相同;子类返回值类型小于等于父类(兼容)、子类异常小于等于父类;子类访问权限大于等于父类。若父类方法是public,子类重写为private会编译报错(违反访问权限原则)。实际项目中,重写常用在多态场景,比如子类重写父类的toString()方法,必须保持public权限。
3.关于ArrayList和LinkedList的区别,以下描述正确的是()
A.ArrayList底层是双向链表,查询效率低
B.LinkedList底层是动态数组,增删效率低
C.频繁在列表中间插入数据时,LinkedList比ArrayList更高效
D.两者都是线程安全的集合类
答案:C
解析:ArrayList底层是动态数组(基于数组实现),查询时通过索引直接访问,效率高;但增删时需移动数组元素,效率低(排除A)。LinkedList底层是双向链表,查询需遍历节点,效率低;但增删只需修改节点引用,效率高(排除B)。两者都不是线程安全的,线程安全集合需用Vector、ConcurrentHashMap等(排除D)。日常开发中,查询多用电镀ArrayList,增删多(中间操作)用LinkedList。
4.下列关于HashMap的说法,正确的是()
A.HashMap是线程安全的,多线程环境下可直接使用
B.HashMap的key和value都不能为null
C.HashMap的初始容量默认是16,负载因子默认是0.75
D.HashMap存储元素时,会保证元素的插入顺序
答案:C
解析:HashMap是非线程安全的,多线程下使用会有并发问题(如死循环),需用ConcurrentHashMap替代(排除A);HashMap的key和value都可以为null(HashTable才不允许null,排除B);HashMap是无序集合,无法保证插入顺序,要保证顺序需用LinkedHashMap(排除D)。初始容量16和负载因子0.75是HashMap的默认配置,当元素个数超过“容量×负载因子”时,会触发扩容(默认扩为2倍),这是开发中优化HashMap的重要参数。
5.关于Java多线程,下列哪个类是线程安全的()
A.ArrayList
B.HashMap
C.Vector
D.HashSet
答案:C
解析:ArrayList、HashMap、HashSet都是非线程安全的集合类(排除A、B、D)。Vector是ArrayList的线程安全版本,其add()、get()等方法都用synchronized修饰,保证多线程下的数据安全。但Vector效率较低,实际开发中若需线程安全的列表,更推荐用Collections.synchronizedList(newArrayList())或CopyOnWriteArrayList。
6.下列关于synchronized和volatile的区别,说法错误的是()
A.synchronized能保证原子性,volatile不能
B.volatile能保证可见性,synchronized也能
C.synchronized会造成线程阻塞,volatile不会
D.
文档评论(0)