Java经典面试题整理及答案详解(七)

简介: Java经典面试题第七弹来啦!本节小编整理了一些理论基础相关的面试题,当面试官提问时,这些可一定得回答上~

了解更多:
Java经典面试题整理及答案详解(一)
Java经典面试题整理及答案详解(二)
Java经典面试题整理及答案详解(三)
Java经典面试题整理及答案详解(四)
Java经典面试题整理及答案详解(五)
Java经典面试题整理及答案详解(六)

Java经典面试题第七弹来啦!本节小编整理了一些理论基础相关的面试题,当面试官提问时,这些可一定得回答上~

1.缓存流与内存流的区别

内存流的本质就是将所有的数据在内存之中进行完整的处理操作。核心的概念在于内存流可以进行整体的数据处理。
从实现的角度来讲,两者是可以部分互通的,从实用角度来讲,缓存流更多的是一个暂时的操作,缓存操作流更多的情况下是有一个间隔的,这个间隔往往不会保存过多的内容。
在缓存流的操作概念里面重点只有一个核心因素:处理中文(BufferedReader),这种操作本身只适合于字符串的操作,本身没有验证处理,所以会使用Scanner完成。

2.基本类型与包装类型选择

基本类型与包装类型最大的区别有亮点:
(1)包装类是以对象的形式运行,而且JDK1.5之后对于包装类又提供自动的装箱与拆箱处理机制;
(2)包装类可以进行null的描述。(这个描述的操作要追溯到Hibernate盛行的时期,因为对于一些设置的字段,如果使用了基本类型,不设置内容就是对应数据类型默认值,如果说现在年龄使用了int,则不设置年龄表示0,而如果使用了包装类年龄表示的就是null。)
对于现在的开发,基本都是在数据层上的保存对象内容类(VO类)使用包装类,这样对null的控制比较方便。

3.基本数据类型与引用传递

在Java里面数据类型一共分为两种:基本、引用,对于引用可以发生引用传递,而基本类型只是一个值拷贝,引用类型传入到某一个方法之中,修改之后会影响原始对象中的内容,而基本数据类型不会。
不过从后续的开发开始,为了方便用户的使用专门提供有一个包装类的概念,利用包装类可以方便的实现基本数据类型与引用数据类型的操作,最为重要的是包装类里面提供有一个null的概念,这对于一些开发框架,例如:MyBatis、Hibernate等都有非常重要的意义。

4.集合信息取得

如果说现在有一个List集合,想要取得里面某一个索引的数据,这种情况下一定要考虑使用get()方法(要清楚ArrayList、LinkedList区别所在),可以轻松地进行元素的定位,get()方法是其主要扩充的方法,也是List和Set最大区别所在。例如:FileUpload、MyBatis里面获得的数据都是通过List中的get()方法取得。
而对于集合的输出操作有两种做法:
(1)使用for循环,在集合里面存在有size()方法,而且List有get()方法,很明显可以使用循环。如果你使用的是LinkedList子类,那么会出现时间复杂度攀升的问题;如果使用的是ArrayList,由于其时间复杂度为1,所以可以快速查找;
(2)对于集合而言,为了避免这些时间复杂度过高问题,有了迭代的输出接口,使用Iterator。

5.接口标准

所谓的标准指的是所有类都要奉行的法则,因为普通类的继承关系里面是不存在有这样的硬性的子类定义法则(强制性覆写),所以才会衍生出抽象类与接口的概念,对于接口本身而言,它只是一个方法视图。
就好比你使用一款空调遥控器,都一定可以找到开关键,如果不开空调无法制冷,而如果太冷一定要关,这些就是标准,如下图,遥控器的标准在设计里面就像是接口,没有关联的层要想捆绑在一起,就要使用接口。

image.png

6.链表为什么要用内部类?

内部类的特点:
(1)内部类可以方便的与外部类之间进行私有属性的访问;
(2)一个内部类如果使用了private声明,那么外部将无法直接使用它。
为什么不将链表的实现变为如下形式:

image.png

之所以没有将Link与Node分开,而直接使用了一个内部类的形式完成,目的是:
(1) Node类如果没有Link类负责整体的协调操作,那么Node类上的方法根本没有任何用处;
(2) 方便引用传递。
如果你想知道为什么要合并为一个类,那就将内部类拿到外部类来,会发现在进行数据删除的时候,需要进行外部类与内部类之间非常繁琐的引用传递。

更多专业知识,面试技巧就在面试一点通,持续更新中……
感谢浏览~
本内容来源于阿里云大学-Java面试技巧

相关文章
|
11天前
|
安全 架构师 Java
Java大厂面试高频:Collection 和 Collections 到底咋回答?
Java中的`Collection`和`Collections`是两个容易混淆的概念。`Collection`是集合框架的根接口,定义了集合的基本操作方法,如添加、删除等;而`Collections`是一个工具类,提供了操作集合的静态方法,如排序、查找、同步化等。简单来说,`Collection`关注数据结构,`Collections`则提供功能增强。通过小王的面试经历,我们可以更好地理解这两者的区别及其在实际开发中的应用。希望这篇文章能帮助你掌握这个经典面试题。
30 4
|
2月前
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
110 2
|
11天前
|
监控 Dubbo Java
Java Dubbo 面试题
Java Dubbo相关基础面试题
|
11天前
|
SQL Java 数据库连接
Java MyBatis 面试题
Java MyBatis相关基础面试题
|
11天前
|
存储 监控 算法
Java JVM 面试题
Java JVM(虚拟机)相关基础面试题
|
11天前
|
SQL 监控 druid
Java Druid 面试题
Java Druid 连接池相关基础面试题
|
11天前
|
缓存 安全 算法
Java 多线程 面试题
Java 多线程 相关基础面试题
|
1月前
|
Java
Java社招面试题:& 和 && 的区别,HR的套路险些让我翻车!
今日分享的主题是如何区分&和&&的区别,提高自身面试的能力。主要分为以下四部分。 1、自我面试经历 2、&amp和&amp&amp的不同之处 3、&对&&的不同用回答逻辑解释 4、彩蛋
|
2月前
|
Java 程序员
Java社招面试题:& 和 && 的区别,HR的套路险些让我翻车!
小米,29岁程序员,分享了一次面试经历,详细解析了Java中&和&&的区别及应用场景,展示了扎实的基础知识和良好的应变能力,最终成功获得Offer。
95 14
|
2月前
|
存储 缓存 算法
面试官:单核 CPU 支持 Java 多线程吗?为什么?被问懵了!
本文介绍了多线程环境下的几个关键概念,包括时间片、超线程、上下文切换及其影响因素,以及线程调度的两种方式——抢占式调度和协同式调度。文章还讨论了减少上下文切换次数以提高多线程程序效率的方法,如无锁并发编程、使用CAS算法等,并提出了合理的线程数量配置策略,以平衡CPU利用率和线程切换开销。
面试官:单核 CPU 支持 Java 多线程吗?为什么?被问懵了!