热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

日常Java练习题(每天进步一点点系列)【含通知】

日常Java练习题(每天进步一点点系列)【含通知】-提示:好多小伙伴反映,直接看到答案不太好,那我把答案的颜色设置为透明,答案位置还是在题目后面,需要鼠标选中才能看见(操作如下图)

提示:好多小伙伴反映,直接看到答案不太好,那我把答案的颜色设置为透明,答案位置还是在题目后面,需要鼠标选中才能看见(操作如下图),同时为了手机端的小伙伴(手机端也可以长按选中查看),我还会把所有答案放到文章最下面,希望给每天进步一点点的小伙伴更好的体验。

补充:小伙伴又提建议了,说把样例图放成其它期的,这样就不会暴露第一题的答案了,绝对的细节!

通知:由于日常Java练习题系列很受大家欢迎,CSDN文章也只能一周推送一次,再来又怕打扰大家,所以,我决定把【每天进步一点点系列】的文章放到我得WX公众号上,大家需要的可以扫描关注,也可以VX搜【牛哄哄的柯南】,公众号左下角有【每日十题】,点击即可获取当日的文章推送。让我们一起进步,坚持!

每天进步一点点!

1、关于容器下面说法正确的是? ( )
正确答案:D
A 列表(List)和集合(Set)存放的元素都是可重复的。
B 列表(List)和集合(Set)存放的元素都是不可重复的。
C 映射(Map)中key是可以重复的。
E 映射(Map)中value是可以重复的。

题解:
1、列表(List)的元素是有 序、可重复 的; 集合(Set)的元素是无序、不可重复的。
2、 List底层是数组存储数据的,所以有序,可重复的 Set底层是HashMap,添加元素其实就是调用map的put()方法,添加的元素作为map的key,value是一个Object对象 而Hashmap底层是哈希表,数组+链表的形式,根据key的hashcode()方法获取到的值与它的高16位进行一个异或运算,得到哈希值,再通过计算定位出它在数组中存放的位置,所以说是无序的,如果定位的位置有元素了,那就采用链地址法,就是比较hash值,如果有相同的新的值覆盖掉旧的值,如果没有,jdk1.7是新元素放在头节点,jdk1.8是放在尾节点,当然jdk1.8新增了红黑树,这里就不说了 总之,map的key不可重复,value是可以重复的
3、 list 存放的元素可重复, set 不可以。 map 使用的是键值对存放,可一对多,key不重复,value可重复

2、应用程序的main方法中有以下语句,则输出的结果( ) String s1=new String( ” xyz ” ); String s2=new String( ” xyz ” ); Boolean b1=s1.equals(s2); Boolean b2=(s1==s2); System .out.print(b1+ ” ” +b2);
正确答案:A
A true false
B false true
C true true
D false false

题解:
1、又错了的人来回答一下: String a = “a”; String b = “a”; 这样定义的a和b指向的是字符串常量区变量,地址是一样的,即用equals为true,用==也为true。 但是 String a =new String( “a”); String b = new String( “a”); 这样是定义了两个堆内存对象,只能equals,不能==
2、 String s1=new String( ” xyz ” ); //创建了String类型的内容为xyz的s1对象 String s2=new String( ” xyz ” ); //创建了String类型的内容为xyz的s2对象 Boolean b1=s1.equals(s2); //比较s1对象和s2对象的内容相等,返回true。 Boolean b2=(s1==s2); //比较s1和s2两个对象的存储地址是否相等,明显两者分别存储在不同的地址,所以返回:false。 故答案为:true false

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

题解:
1、 成员变量有默认初始值,可以不用赋值,boolean的默认值为false, 局部变量必须赋值。否则编译错误。

4、下列哪些语句关于内存回收的说明是正确的? ( )
正确答案:B
A 程序员必须创建一个线程来释放内存
B 内存回收程序负责释放无用内存
C 内存回收程序允许程序员直接释放内存
D 内存回收程序可以在指定的时间释放内存对象

题解:
1、选B。 A、JVM一旦启动,就会创建一个守护线程来监测是否需要有对象内存被释放。 C、无法直接释放。 D、不可以指定时间,System.gc(),只是提醒JVM可以进行一次Full GC,但是什么时候真正执行,还是不知道的。
2、 在空闲时间以不定时的方式动态回收无任何引用的对象占据的内存空间
3、 程序 程序员 因缺思听,看混

5、关于 Socket 通信编程,以下描述错误的是:( )
正确答案:D
A 服务器端通过new ServerSocket()创建TCP连接对象
B 服务器端通过TCP连接对象调用accept()方法创建通信的Socket对象
C 客户端通过new Socket()方法创建通信的Socket对象
D 客户端通过new ServerSocket()创建TCP连接对象

题解:
1、Socket套接字 就是源Ip地址,目标IP地址,源端口号和目标端口号的组合 服务器端:ServerSocket提供的实例 ServerSocket server= new ServerSocket(端口号) 客户端:Socket提供的实例 Socket soc=new Socket(ip地址,端口号)

6、JVM内存不包含如下哪个部分( )
正确答案:D
A Stacks
B PC寄存器
C Heap
D Heap Frame

题解:
1、JVM内存五大区域:
2、 PC寄存器即程序计数器

7、下面有关servlet service描述错误的是?
正确答案:B
A 不管是post还是get方法提交过来的连接,都会在service中处理
B doGet/doPost 则是在 javax.servlet.GenericServlet 中实现的
C service()是在javax.servlet.Servlet接口中定义的
D service判断请求类型,决定是调用doGet还是doPost方法

题解:
1、 doget/dopost与Http协议有关,是在 javax.servlet.http.HttpServlet 中实现的
2、 GenericServlet 抽象类 给出了设计 servlet 的一些骨架,定义了 servlet 生命周期,还有一些得到名字、配置、初始化参数的方法,其设计的是和应用层协议无关的

8、下面哪些具体实现类可以用于存储键,值对,并且方法调用提供了基本的多线程安全支持:( )
正确答案:AE
A java.util.ConcurrentHashMap
B java.util.Map
C java.util.TreeMap
D java.util.SortMap
E java.util.Hashtable
F java.util.HashMap

题解:
1、线程安全的类有hashtable concurrentHashMap synchronizedMap
2、 java.util.concurrent.ConcurrentHashMap 线程安全 java.util.Map 接口 java.util.TreeMap java.util.SortedMap 接口 java.util.Hashtable 线程安全 java.util.HashMap
3、 ConcurrentHashMap 键值对不可以为空,线程安全 java.util.Map是一个接口 java.util.TreeMap 键值对不可以为空,非线程安全 java.util.SortedMap 这是个接口并且扩展了Map接口,它确保条目按升序键维护。 java.util.Hashtable 键值对不可以为空,线程安全 java.util.HashMap键值对可以为空,非线程安全

9、Consider the following code: Integer s=new Integer(9);
Integer t=new Integer(9);
Long u=new Long(9); Which test would return true?
正确答案:CDE
A (s==u)
B (s==t)
C (s.equals(t))
D (s.equals(9))
E (s.equals(new Integer(9))

题解:
1、 int和int之间,用==比较,肯定为true。基本数据类型没有equals方法 int和Integer比较,Integer会自动拆箱,==和 equals都肯定为true int和new Integer比较,Integer会自动拆箱,调用intValue方法
2、 所以 == 和 equals都肯定为true Integer和Integer比较的时候,由于直接赋值的话会进行自动的装箱。所以当值在-128
3、127中的时候,由于值缓存在IntegerCache中,那么当赋值在这个区间的时候,不会创建新的Integer对象,而是直接从缓存中获取已经创建好的Integer对象。而当大于这个区间的时候,会直接new Integer。 当Integer和Integer进行==比较的时候,在-128
4、127区间的时候,为true。不在这个区间,则为false 当Integer和Integer进行equals比较的时候,由于Integer的equals方法进行了重写,比较的是内容,所以为true Integer和new Integer : new Integer会创建对象,存储在堆中。而Integer在-128

10、下面几个关于Java里queue的说法哪些是正确的()?
正确答案:AC
A LinkedBlockingQueue是一个可选有界队列,不允许null值
B PriorityQueue,LinkedBlockingQueue都是线程不安全的
C PriorityQueue是一个无界队列,不允许null值,入队和出队的时间复杂度是O(log(n))
D PriorityQueue,ConcurrentLinkedQueue都遵循FIFO原则

题解:
1、正确答案 AC 答案解析 A、LinkedBlockingQueue是一个基于节点链接的可选是否有界的阻塞队列,不允许null值。 B、LinkedBlockingQueue是一个线程安全的阻塞队列,实现了先进先出等特性。 C、PriorityQueue是一个队列,不允许null值,入队和出队的时间复杂度是O(log(n))。 D、PriorityQueue是不同于先进先出队列的另一种队列。每次从队列中取出的是具有最高优先权的元素。ConcurrentLinkedQueue是一个基于链接节点的线程安全队列,该队列的元素遵循FIFO原则。

答案汇总:
1、正确答案:D
2、正确答案:A
3、正确答案:B
4、正确答案:B
5、正确答案:D
6、正确答案:D
7、正确答案:B
8、正确答案:AE
9、正确答案:CDE
10、正确答案:AC

以上部分题解来自牛客评论区,感谢评论区大佬的解释。

每天进步一点点!
不进则退!

版权声明:
原创博主:牛哄哄的柯南
博主原文链接:https://keafmd.blog.csdn.net/

看完如果对你有帮助,感谢点击下面的一键三连支持!
[哈哈][抱拳]


加油!

共同努力!

Keafmd


推荐阅读
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • 如何查询zone下的表的信息
    本文介绍了如何通过TcaplusDB知识库查询zone下的表的信息。包括请求地址、GET请求参数说明、返回参数说明等内容。通过curl方法发起请求,并提供了请求示例。 ... [详细]
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 本文介绍了C#中生成随机数的三种方法,并分析了其中存在的问题。首先介绍了使用Random类生成随机数的默认方法,但在高并发情况下可能会出现重复的情况。接着通过循环生成了一系列随机数,进一步突显了这个问题。文章指出,随机数生成在任何编程语言中都是必备的功能,但Random类生成的随机数并不可靠。最后,提出了需要寻找其他可靠的随机数生成方法的建议。 ... [详细]
  • C# 7.0 新特性:基于Tuple的“多”返回值方法
    本文介绍了C# 7.0中基于Tuple的“多”返回值方法的使用。通过对C# 6.0及更早版本的做法进行回顾,提出了问题:如何使一个方法可返回多个返回值。然后详细介绍了C# 7.0中使用Tuple的写法,并给出了示例代码。最后,总结了该新特性的优点。 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • 个人学习使用:谨慎参考1Client类importcom.thoughtworks.gauge.Step;importcom.thoughtworks.gauge.T ... [详细]
  • 开发笔记:Java是如何读取和写入浏览器Cookies的
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Java是如何读取和写入浏览器Cookies的相关的知识,希望对你有一定的参考价值。首先我 ... [详细]
  • 本文介绍了一个适用于PHP应用快速接入TRX和TRC20数字资产的开发包,该开发包支持使用自有Tron区块链节点的应用场景,也支持基于Tron官方公共API服务的轻量级部署场景。提供的功能包括生成地址、验证地址、查询余额、交易转账、查询最新区块和查询交易信息等。详细信息可参考tron-php的Github地址:https://github.com/Fenguoz/tron-php。 ... [详细]
  • 本文讨论了微软的STL容器类是否线程安全。根据MSDN的回答,STL容器类包括vector、deque、list、queue、stack、priority_queue、valarray、map、hash_map、multimap、hash_multimap、set、hash_set、multiset、hash_multiset、basic_string和bitset。对于单个对象来说,多个线程同时读取是安全的。但如果一个线程正在写入一个对象,那么所有的读写操作都需要进行同步。 ... [详细]
  • Java和JavaScript是什么关系?java跟javaScript都是编程语言,只是java跟javaScript没有什么太大关系,一个是脚本语言(前端语言),一个是面向对象 ... [详细]
  • 本文整理了Java面试中常见的问题及相关概念的解析,包括HashMap中为什么重写equals还要重写hashcode、map的分类和常见情况、final关键字的用法、Synchronized和lock的区别、volatile的介绍、Syncronized锁的作用、构造函数和构造函数重载的概念、方法覆盖和方法重载的区别、反射获取和设置对象私有字段的值的方法、通过反射创建对象的方式以及内部类的详解。 ... [详细]
  • 单页面应用 VS 多页面应用的区别和适用场景
    本文主要介绍了单页面应用(SPA)和多页面应用(MPA)的区别和适用场景。单页面应用只有一个主页面,所有内容都包含在主页面中,页面切换快但需要做相关的调优;多页面应用有多个独立的页面,每个页面都要加载相关资源,页面切换慢但适用于对SEO要求较高的应用。文章还提到了两者在资源加载、过渡动画、路由模式和数据传递方面的差异。 ... [详细]
author-avatar
AIHFKYH_986
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有