【面试】Java基础的那些事-Two

news/2023/12/9 20:01:48 标签: java, 面试

前言

面试中对于技术职位,一般分笔试与面谈,如果面试官的一些小问题你可以立马找到对应的知识点扩展开来,那么这就是你的优势,本系列将讲述一些java面试中的事,不会很详细,但是应该比较全面吧。

主要内容

  • package的作用?

多层命名空间,解决命名冲突,提高可维护性、提高开发效率等

  • 面向对象与面向过程的区别?

出发点不同、层次逻辑关系不同、数据处理方式与控制程序方式不同、分析设计与编码转换方式不同

  • 面向对象特征

抽象(过程抽象、数据抽象)、继承、封装、多态

  • 面向对象开发优点

较高开发效率(继承或组合)、保证软件的鲁棒性、保证软件的高可维护性

  • 关于继承?

子类继承仅能继承一个父类与其中非私有(public和protected)的成员变量与方法,存在同名时则进行覆盖

  • 组合与继承的区别

组合是显式的、继承是隐式的。组合中的整体类和继承中的子类对应,组合中的局部类和继承中的父类对应,Cat是Vehicle的一种,是继承关系(is-a)、Car中包含多个Tire,则是一种组合关系(has-a)。

不要轻易使用继承,当父类被修改时,会影响到所有继承自它的子类,从而增加程序的维护难度与成本。采用接口与组合的方式比采用继承的方式具有更好的可扩展性,能使用组合就尽量不要使用继承。

  • 多态的实现机制是什么?

方法的重载(overload)-编译时多态、方法的覆盖(override)-运行时多态

  • 重载和覆盖有什么区别?

很多方面吧,覆盖是子类与父类(垂直关系)(参数列表相同),重载是同一个类(水平关系)(参数列表不同)

  • 抽象类与接口的异同

前者为实体、后者是概念;接口设计理念(has-a)、抽象类设计理念(is-a);接口是一种特殊形式的抽象类,抽象类多用于同类事务中有无法具体描述的方法的场景、接口多用于不同类之间

  • 内部类?

静态内部类、成员内部类、局部内部类、匿名内部类

  • 获取父类的类名

Java提供了获取类名的方法:getClass().getName()

java">class A{}
public class Test extends A {
    public void test(){
        System.out.println(super.getClass().getName());
    }
    public static void main(String[] args){
        new Test().test();
    }
}

以上输出为Test,因为Java中任何类都继承Object类,getClass()方法在Object中被定义为final与native,子类不能覆盖该方法。我们需要使用反射机制,使用getClass().getSuperclass().getName()。

  • break、continue以及return

break(直接跳出当前循环,即终止内层循环,不影响外层循环)、continue(跳过循环体中的一部分语句,中断一次循环)、return(使程序控制返回到调用该方法的地方)

  • final、finally和finalize

final(引用不可变)、finally(在需要释放资源的情况下)、finalize(Object的方法,垃圾回收器准备好释放对象占用的空间,先调用finalize()方法,并且在下一次垃圾回收动作发生时,才会真正回收对象占用的内存)

待续

有帮助的话,可以期待Thr章节


http://www.niftyadmin.cn/n/1494821.html

相关文章

启动浏览器

浏览器驱动下载 下载谷歌(chrome)、火狐(Firefox)、IE浏览器及对应的浏览器驱动 各浏览器驱动下载地址: Firefox浏览器:FirefoxDriver Chrome浏览器:ChromeDriver IE浏览器:Driver E…

String,StringBuffer与StringBuilder的区别??

String 字符串常量StringBuffer 字符串变量(线程安全)StringBuilder 字符串变量(非线程安全)简要的说, String 类型和 StringBuffer 类型的主要性能区别其实在于 String 是不可变的对象, 因此在每次对 String 类型进行…

Javaweb学习笔记3 JSP执行流程

客户端第一次访问 服务端进行如下转化 .jsp-->.java-->.class 将翻译而成的.java&.class放置于tomcat/work/项目名/中 编译成的java其实就是一个servlet,该类继承org.apache.jasper.runtime.HttpJapBase并实现了org.apache.jasper.runtime.JspSourceDe…

集合各实现类的底层实现原理

ArrayList实现原理要点概括参考文献: http://zhangshixi.iteye.com/blog/674856l https://www.cnblogs.com/leesf456/p/5308358.htmlArrayList是List接口的可变数组非同步实现,并允许包括null在内的所有元素。 底层使用数组实现 该集合是可变长度数组&…

Redis与MySQL双写一致性如何保证

Redis与MySQL双写一致性如何保证?这道题其实就是在问缓存和数据库在双写场景下,一致性是如何保证的?本文将跟大家一起来探讨如何回答这个问题。 谈谈一致性 一致性就是数据保持一致,在分布式系统中,可以理解为多个节点…

Task 'assembleXXXDebug' not found in project ':app'.的解决方法

如果项目构建时遇到了 Task assembleXXXDebug not found in project :app.的问题,原因可能如下: 项目gradle配置文件里面设置了 productFlavors,比如改为了YYY,然后对应的debug的assemble应该是assembleYYYDebug,然而对…

python持久化对象

通过shelve模块即可持久化对象 代码 import shelve import numpy as npdef writeObj(name,obj):with shelve.open(object) as db:db[name]objdef readObj(name):try:with shelve.open(object) as db:return db[name]except BaseException:return Noneif __name__ __main__:a…

日历

<!doctype html><html><head><meta charsetutf-8><link relstylesheet href外部的css文件路径 /><title>demo</title><style>/* 整体设置 */*{margin:0px;padding:0px;}/*** 设置日历的大小*/.calendar{width: 240px;height: …

「python」Json

Json 序列化&#xff08;Serialization&#xff09;&#xff1a;将对象的状态信息转换为可以存储或可以通过网络传输的过程&#xff0c;传输的格式可以是JSON、XML等。我们把变量从内存中变成可存储或传输的过程称之为序列化 反序列化&#xff1a;从存储区域&#xff08;JSON&a…

JZOJ 4224. 食物

题目 Description Input Output Sample Input 41 1 714 2 11 2 21 1 1010 10 15 7 25 3 341 4 19 4 25 3 31 3 35 3 23 4 56 7 55 3 81 1 11 2 11 1 1 Sample Output 41412TAT Data Constraint 分析 首先&#xff0c;很显然是两个多重背包 但是我们发现如果裸着跑的话一定会TLE…

vue 中使用 highcharts demo案例

1. 案例效果demo 2. npm 安装 highcharts npm install highcharts --save3. main.js引入 import highcharts from highcharts/highstock; import highcharts3d from highcharts/highcharts-3d import highchartsMore from highcharts/highcharts-more; import highchartsDril…

打包一个python解释器

利用python的exec语句&#xff0c;可以很方便地动态执行python语句。如果一个python代码打包为了exe&#xff0c;其原先的代码就很难更改了。一个好的解决方法就是import相应的库&#xff0c;然后把主程序段放到一个单独的文件中被exec执行。 现在打包一个简单的python解释器&…

【DEBUGGER】浏览器参数追踪获取值,bootstrap-select2反选

曾经很是好奇后台那些花花绿绿的值是如何确定名称的&#xff1f;例如A.B.C.val(???)&#xff0c;老手们是怎么知道下一个点后面数十个提示该选哪一个的&#xff1f; 不懂就要问啊&#xff01; 答曰&#xff1a;debug追踪啊&#xff01; 追问&#xff1a;咋追 再答&#xff1…

【oracle】多版本

并发控制 concurrency control  数据库提供的函数集合&#xff0c;允许多个人同时访问和修改数据。 锁&#xff08;lock&#xff09;是Oracle管理共享数据库资源并发访问并防止并发数据库事务之间“相互干涉”的核心机制之一。 Oracle使用了多种锁&#xff0c;包括&#xff1…

Css实现漂亮的滚动条样式

1. 设置后的效果图 2. html <div class"demo demo-1"><div class"scrollbar"></div> </div>2. css .demo{width : 50px;height : 200px;overflow: auto;float : left;margin : 5px;border : none;}.scrollbar {width : 30…

PyQt5 窗口置顶

引用&#xff1a;PyQt5窗口类型 from PyQt5.QtCore import Qt self.setWindowFlags(Qt.WindowStaysOnTopHint)
最新文章