Java基础面试题库(java基础面试题)
你们好,最近小时发现有诸多的小伙伴们对于Java基础面试题库,java基础面试题这个问题都颇为感兴趣的,今天小活为大家梳理了下,一起往下看看吧。
1、 一:面向对象的三个特点,如何理解多态性?
2、 面向对象的三个基本特征是封装、继承和多态。从字面上看,有很多种形式,也就是同一对象可以有很多种不同的形式。在面向对象的语言中,实现接口的许多不同方式都是多态。简单来说,
3、 总之,允许将子类类型的指针赋给父类类型的指针。
4、 二:接口和抽象类有什么区别?
5、 l抽象类和接口都不能直接实例化。如果要实例化,抽象类变量必须指向实现所有抽象方法的子类,接口变量必须指向实现所有接口方法的类对象。
6、 l抽象类应该由子类继承,接口应该由类实现。
7、 l接口只能用于方法声明,抽象类可以用于方法声明和方法实现。
8、 L接口中定义的变量只能是公共静态常量,抽象类中的变量是普通变量。
9、 抽象类中的抽象方法必须全部由子类实现。如果子类不能全部实现父类的抽象方法,那么子类只能是一个抽象类。同样,在实现一个接口的时候,如果不能实现所有的接口方法,那么这个类就只能是一个抽象类。
10、 l抽象方法只能声明,不能实现。接口是设计的结果,抽象类是重构的结果。
11、 l抽象类中不能有抽象方法。
12、 l如果一个类中有抽象方法,那么这个类只能是抽象的。
13、 l抽象方法必须实现,所以它们不能是静态的或私有的。
14、 l接口可以继承接口,可以继承多个接口,但是类只能从单个根继承。
15、 静态方法可以被覆盖吗?为什么?
16、 l静态方法不能被重写。
17、 l在子类中,可以定义与父类同名的静态方法,但不存在“多态性”。严格来说,方法之间没有多态性就不能称为“覆盖”。因此,子类的静态方法不会覆盖父类的方法。
18、 The difference between string, stringbuffer area and string generator.
19、 StringBuffer和StringBuilder的底层实现是通过字节数据加数组复制来实现的。
20、 字符串缓冲区字符串
21、 l2 .String (StringBuffer,StringBuilder)的原因
22、 LString:字符串常量
23、 LStringBuffer:角色创建变量
24、 LStringBuilder:角色创建变量
25、 l3。 StringBuilder and String Buffer
26、 LStringBuilder:线程不安全。
27、 LStringBuffer:线程安全
28、 l总结:1。如果您想要操作少量数据,请使用=String。
29、 L2。单线程操作stringbuffer区域操作大量数据=StringBuilder。
30、 L3。多线程操作stringbuffer区域操作大量数据=StringBuffer。
31、 常见的序列化协议及其优缺点
32、 1、XML
33、 (1)定义:
34、 XML(可扩展标记语言)是一种常用的序列化和反序列化协议。它有着悠久的历史,从1998年的1.0版本开始就被广泛使用。
35、 (2)优势
36、 良好的人机可读性
37、 您可以指定元素或属性的名称。
38、 (3)缺点
39、 序列化数据只包含数据本身和类的结构,不包含类型标识和程序集信息。
40、 类必须有一个将由XmlSerializer序列化的默认构造函数。
41、 只有公共属性和字段可以序列化。
42、 无法序列化方法。
43、 文件庞大,文件格式复杂,传输占用带宽。
44、 (4)使用场景
45、 将数据存储为配置文件
46、 实时数据转换
47、 2、JSON
48、 (1)定义:
49、 JSON (JavaScript Object Notation)是一种轻量级的数据交换格式。它基于ECMAScript(W3C制定的js规范)的子集,
50、 JSON使用了一种独立于编程语言的文本格式,但也使用了类似C语言(包括C、C、C#、Java、javascript、Perl、Python等)的习惯。).
51、 简单清晰的层次结构使JSON成为理想的数据交换语言。
52、 (2)优势
53、 前后兼容性高。
54、 数据格式相对简单,易于读写。
55、 序列化数据小,具有良好的可扩展性和兼容性。
56、 与XML相比,它的协议更简单,解析速度更快。
57、 (3)缺点
58、 数据不如XML具有描述性。
59、 不适合性能要求为ms级别的情况
60、 额外空间开销比较大
61、 (4)适用场景(可替代)
62、 跨防火墙访问
63、 可调式性要求高的情况
64、 基于Web browser的Ajax请求
65、 传输数据量相对小,实时性要求相对低(例如秒级别)的服务
66、 3、Fastjson
67、 (1)定义
68、 Fastjson是一个Java语言编写的高性能功能完善的JSON库。它采用一种“假定有序快速匹配”的算法,把JSON Parse的性能提升到极致。
69、 (2)优点
70、 接口简单易用
71、 目前java语言中最快的json库
72、 (3)缺点
73、 过于注重快,而偏离了“标准”及功能性
74、 代码质量不高,文档不全
75、 (4)适用场景
76、 协议交互
77、 Web输出
78、 Android客户端
79、 创建线程的方式,有什么区别?
80、 采用继承Thread类方式:(1)优点:编写简单,如果需要访问当前线程,无需使用Thread.currentThread()方法,直接使用this,即可获得当前线程。
81、 (2)缺点:因为线程类已经继承了Thread类,所以不能再继承其他的父类。采用实现Runnable接口方式:(1)优点:线程类只是实现了Runable接口,还可以继承其他的类。在这种方式下,
82、 可以多个线程共享同一个目标对象,所以非常适合多个相
83、 同线程来处理同一份资源的情况,从而可以将CPU代码和数据分开,形成清晰的模型,较好地体现了面向对象的思想。(2)缺点:编程稍微复杂,如果需要访问当前线程,
84、 必须使用Thread.currentThread()方法。
85、 阻塞、非阻塞、同步、异步区别
86、 同步:一个服务的完成需要依赖其他服务时,只有等待被依赖的服务完成后,才算完成,这是一种可靠的服务序列。要么成功都成功,失败都失败,服务的状态可以保持一致
87、 异步:一个服务的完成需要依赖其他服务时,只通知其他依赖服务开始执行,而不需要等待被依赖的服务完成,此时该服务就算完成了。被依赖的服务是否最终完成无法确定,一次它是一个不可靠的服务序列。
88、 阻塞:阻塞调用是指调用结果返回之前,当前线程会被挂起,一直处于等待消息通知,不能够执行其他业务,函数只有在得到结果之后才会返回。
89、 非阻塞:非阻塞和阻塞的概念相对应,指在不能立刻得到结果之前,该函数不会阻塞当前线程,而会立刻返回。
90、 线程池,说说其理解,线程池的参数问题?几种不同线程池的比较,阻塞队列的使用,拒绝策略
91、 原理:线程池流程如下:先启动若干数量的线程,并让这些线程都处于睡眠状态,当客户端有一个新请求时,就会唤醒线程池当中的某一个睡眠线程,让他来处理客户端的这个请求,当处理完这个请求后,线程又处于睡眠状态.
92、 为什么用线程池:减少了创建和销毁线程的次数,每个工作线程都可以被重复利用,可执行多个任务,也可根据系统的承受能力,调整线程池中工作线程的数目,防止因为消耗过多的内存,而把服务器累趴;
93、 参数:
94、 corePoolSize:核心池的大小;默认情况下,在创建了线程池后,线程池中的线程数为0,当有任务来之后,就会创建一个线程去执行任务,当线程池中的线程数目达到corePoolSize后,
95、 就会把到达的任务放到缓存队列当中;
96、 maximumPoolSize:线程池最大线程数,表示在线程中最多能创建多少个线程;
97、 keepAliveTime:表示线程没有任务执行时最多保持多久时间会终止;
98、 unit:参数keepAliveTime的时间单位;
99、 workQueue:一个阻塞队列,用来存储等待执行的任务,会对线程池的运行过程产生重大影响;
100、 threadFactory:线程工厂,主要用来创建线程
101、 handler:表示当拒绝处理任务时的策略;
102、 不同线程池的比较:
103、 一;newCachedThreadPool
104、 (1)缓存型池子,先查看池中有没有以前建立的线程,如果有,就reuse,如果没有,就建立一个新的线程加入池中
105、 (2)通常用于执行一些生存周期很短的异步型任务,因此一些面向连接的daemon型server中用的不多
106、 (3)能reuse的线程,必须是timeoutIDLE内的池中线程,缺省timeout是60s,超过这个IDLE时长,线程实例将被终止及移出池
107、 (4)放入CachedThreadPool的线程不必担心其结束,超过timeout不活动,会自动被终止;
108、 二:newFixedThreadPool
109、 (1)newFixedThreadPool和CachedThreadPool差不多,也是能reuse就用,但不能随时建新的线程;
110、 (2)任何时间点,最多只能有固定数目的活动线程存在,此时如果有新的线程要建立,只能放在另外的队列中等待,知道当前线程中某个线程终止直接被移出池子
111、 (3)没有IDLE机制,多数针对一些很稳定很固定的正规并发线程,多用于服务器
112、 (4)从方法的源代码看,cache池和fixed 池调用的是同一个底层池,只不过参数不同: fixed池线程数固定,
113、 并且是0秒IDLE(无IDLE) cache池线程数支持0-Integer.MAX_VALUE(显然完全没考虑主机的资源承受能力),60秒IDLE
114、 三:ScheduledThreadPool
115、 (1)调度型线程池
116、 (2)池子里的线程可以按schedule依次delay执行,或周期执行
117、 四:SingleThreadExecutor
118、 (1)单例线程,任意时间中只能有一个线程
119、 用的是和cache池和fixed池相同的底层池,但线程数目是1-1,0秒IDLE
120、 拒绝策略:handler
121、 Future和ListenableFuture 异步回调相关ListenableFuture
122、 该接口扩展了Future接口,增加了addListener方法,该方法在给定的excutor上注册一个监听器,当计算完成时会马上调用该监听器。不能够确保监听器执行的顺序,
123、 但可以在计算完成时确保马上被调用。
124、 Java 四种引用,代表的含义,有什么区别?
125、 1. 强引用(StrongReference)
126、 强引用是使用最普遍的引用。如果一个对象具有强引用,那垃圾回收器绝不会回收它。当内存空间不足,Java虚拟机宁愿抛出OutOfMemoryError错误,使程序异常终止,
127、 也不会靠随意回收具有强引用的对象来解决内存不足的问题。
128、 2. 软引用(SoftReference)
129、 如果一个对象只具有软引用,则内存空间足够,垃圾回收器就不会回收它;如果内存空间不足了,就会回收这些对象的内存。只要垃圾回收器没有回收它,该对象就可以被程序使用。软引用可用来实现内存敏感的高速缓存。
130、 软引用可以和一个引用队列(ReferenceQueue)联合使用,如果软引用所引用的对象被垃圾回收器回收,Java虚拟机就会把这个软引用加入到与之关联的引用队列中。
131、 3. 弱引用(WeakReference)
132、 弱引用与软引用的区别在于:只具有弱引用的对象拥有更短暂的生命周期。在垃圾回收器线程扫描它所管辖的内存区域的过程中,一旦发现了只具有弱引用的对象,不管当前内存空间足够与否,都会回收它的内存。不过,
133、 由于垃圾回收器是一个优先级很低的线程,因此不一定会很快发现那些只具有弱引用的对象。
134、 弱引用可以和一个引用队列(ReferenceQueue)联合使用,如果弱引用所引用的对象被垃圾回收,Java虚拟机就会把这个弱引用加入到与之关联的引用队列中。
135、 4. 虚引用(PhantomReference)
136、 '虚引用'顾名思义,就是形同虚设,与其他几种引用都不同,虚引用并不会决定对象的生命周期。如果一个对象仅持有虚引用,那么它就和没有任何引用一样,在任何时候都可能被垃圾回收器回收。
137、 虚引用主要用来跟踪对象被垃圾回收器回收的活动。虚引用与软引用和弱引用的一个区别在于:虚引用必须和引用队列(ReferenceQueue)联合使用。当垃圾回收器准备回收一个对象时,如果发现它还有虚引用,
138、 就会在回收对象的内存之前,把这个虚引用加入到与之关联的引用队列中。
以上就是java基础面试题这篇文章的一些介绍,希望对大家有所帮助。
免责声明:本文由用户上传,与本网站立场无关。财经信息仅供读者参考,并不构成投资建议。投资者据此操作,风险自担。 如有侵权请联系删除!
-
宝子们,杭州 房子装修完成啦!这次要给大家分享几家设计超赞的装修公司哦。它们各具特色,从空间规划到风格...浏览全文>>
-
欲筑室者,先治其基。在上海,装修房子对于每个业主而言,都是极为关键的一步,然而,如何挑选一家值得信赖的...浏览全文>>
-
2025年以来,联通支付严格贯彻落实国家战略部署,以数字和科技为驱动,做好金融五篇大文章,履行支付为民社会...浏览全文>>
-
良工巧匠,方能筑就华居;精雕细琢,方可打造美家。当我们谈论装修公司时,选择一家靠谱可靠的公司是至关重要...浏览全文>>
-
在当今社会,随着城市化进程的高速推进,建筑垃圾的产生量与日俱增。据权威数据显示,我国每年建筑垃圾产生量超 ...浏览全文>>
-
家人们,在上海要装修,选对公司那可太重要了!古语有云:"安得广厦千万间,大庇天下寒士俱欢颜。"一个温馨的...浏览全文>>
-
近年来,新能源汽车市场发展迅猛,各大品牌纷纷推出各具特色的车型以满足消费者多样化的需求。作为国内新能源...浏览全文>>
-
近年来,随着汽车市场的不断变化和消费者需求的升级,安徽滁州地区的宝来2025新款车型在市场上引起了广泛关注...浏览全文>>
-
随着汽车市场的不断变化,滁州地区的消费者对高尔夫车型的关注度持续上升。作为大众品牌旗下的经典车型,高尔...浏览全文>>
-
在2023年,大众探影以其时尚的设计和出色的性能赢得了众多消费者的青睐。作为一款小型SUV,探影凭借其紧凑的车...浏览全文>>
- 安徽滁州途安L新车报价2022款,最低售价16.68万起,入手正当时
- 小鹏G7试驾,新手必知的详细步骤
- 别克GL8预约试驾,4S店的贴心服务与流程
- 安徽阜阳ID.4 CROZZ落地价全解,买车必看的省钱秘籍
- 淮北探岳多少钱 2025款落地价,最低售价17.69万起现在该入手吗?
- 安徽淮南大众CC新款价格2025款多少钱能落地?
- 淮北长安启源C798价格,最低售价12.98万起现在该入手吗?
- 安徽淮南途锐价格,各配置车型售价全解析
- 蒙迪欧试驾预约,4S店体验全攻略
- 沃尔沃XC40试驾需要注意什么
- 滁州ID.4 X新车报价2025款,各车型售价大公开,性价比爆棚
- 试驾思域,快速操作,轻松体验驾驶乐趣
- 试驾长安CS35PLUS,一键搞定,开启豪华驾驶之旅
- 天津滨海ID.6 X落地价限时特惠,最低售价25.9888万起,错过不再有
- 天津滨海凌渡多少钱?看完这篇购车攻略再做决定
- 安徽池州长安猎手K50落地价,买车前的全方位指南
- 山东济南ID.6 CROZZ 2024新款价格,最低售价19.59万起,现车充足
- 试驾海狮05EV,新手必知的详细步骤
- 生活家PHEV多少钱 2025款落地价走势,近一个月最低售价63.98万起,性价比凸显
- 奇瑞风云A9试驾,新手必知的详细步骤