Java_面试基本知识

基本知识

一、基本概念

0、面向对象和面向过程的区别,介绍一下面向函数编程。

  • 面向对象:是对数据和行为进行抽象,不关注细节。特点包括抽象、封装、多态、集成。 开发效率高、鲁棒性强、较高可维护性。
  • 面向过程: 以事件为中心的开发方法,按照功能划分模块,
  • 函数式编程:关心数据的映射。特点:并发编程中不需要考虑线程安全问题,只依赖输入不依赖于上下文, 使得每个函数都是一个高度独立的单元, 便于进行单元测试和除错。
  • 命令式编程:关心解决问题的步骤。

1、组合的定义、多态实现机制。

组合是在新类中创建已有类的对象,利用已有类的功能。
多态实现靠重载(overload)和(override,也叫覆盖)。
重载:
在同一个类中实现。重载的不同是根据参数来判断,比如参数的顺序不同、类型不同、个数不同。
重写:(三同一大一小原则)
指父类与子类的关系,子类重写父类的方法。三同指方法名相同、参数的类型和个数相同、返回值相同。
一大指子类的修饰类型要≥父类修饰类型,一小原则指子类抛出的异常类型要≤父类的异常类型。

2、Java 优点,Java 和C++异同。

Java 优点:平台无关性,纯面向对象编程语言、提供了内置库类,对web应用开发的支持,有较好的安全性和健壮性、去除了C++中难以理解的特性。
相同:面向对象思想、可重用性好(继承、组合)

不同 Java c++
语言 解释性语言,编译成字节码,由JVM解释执行 编译性语言,经编译和链接形成可运行的二进制代码
跨平台 可以 不可以
指针 没有
内存分配 gc 程序员自身管理
强制转换 支持 不支持

3、public static void main(String[] args)介绍,如何在main前输出消息。

Java程序的入口,public static 可以交换顺序,main前可以用final 、abstract、synchronized修饰。而且一个类中可以有多个main方法,但是只能有一个和类名相同且是public的main方法。在main前输出消息可以用static静态块。

4、Java初始化顺序

父类优先于子类
静态对象(变量)优先于非静态对象(变量)
成员变量定义顺序进行初始化
静态变量 —> 静态代码块 —>非静态代码块—> 构造函数

5、Java作用域

作用域是由{}决定的。

当前类 同一package 子类 其他package
public
protected ×
default × ×
private × × ×

6、构造函数

  • 在对象实例化之前初始化对象的成员变量。
  • 与类同名,不能有返回值,不能被继承(子类只能调用super显示调用父类构造函数)、不能被覆盖。
  • 可以有多个构造函数,参数大于等于0个。
  • 伴随new一起调用,由程序调用。 没有写构造函数,系统会默认生成一个。

7、深复制(clone)、浅复制

因为new 是返回的一个指针的引用,“=”在基本数据类型是采用值传递而在其他类型中是引用传递。深复制一般包括3步:1)继承cloneable标识接口(没有任何方法声明的接口);2)重写clone()方法并在方法内写super.clone();3)浅复制的引用指向原型对象新的克隆体。

  • 深复制:复制值,连指向也一起复制。
  • 浅复制:复制值,指向不复制。

8、反射机制

允许程序在运行过程中自我检查,对其内部成员进行操作。在运行时动态的创建类的对象。
如何获取到类:
1)Class.forName();
2)类名.class
3)实例.getClass()

9、Package

避免命名冲突,可以按功能分类。

10、抽象类、接口

在这里插入图片描述

11、创建对象方式

1)new 2)Clone 3)反序列化4)反射

12、获取父类名称

getClass().getName();

13、内部类有哪些

静态内部类、成员内部类、局部内部类(类->函数->内部类)、匿名内部类(不使用关键字class、extends、implements修饰,只能继承or实现其他接口)。


二、关键字

1、命名规则

由字母、数字、下划线_和$组成去,且数字不能开头。区分大小写。

2、break、continue、return区别

break 跳出当前循环不在执行;continue跳出当前循环继续执行;return 直接从一个方法中返回。

3、final、finally、finalize区别

  • final可以修饰类名、方法、变量,声明后引用不可变。类是不能继承和覆盖。
  • finally是放在try catch语句中最后执行的,这里的return语句会覆盖掉其他的。进入try之前出现异常或者try中强制退出,也不会执行finally。
  • finalize是gc中的,在垃圾回收时会提前调用。

4、assert

用于测试,用的少,不过多的介绍。

5、static

声明某个对象或者方法不是和对象绑定在一起。
为特定的对象分配单一的存储空间。
声明静态块
被static声明的方法不能用this,super
用于创建单例模式

6、switch

分支多的时候建议用这个switch,少的话还是if else.Java7之后String 支持char类型的。实现原理用了hashCode

7、instanceof

判断一个引用类型的变量指向的对象是不是一个类的实例。

8、Stricfp

精确浮点数


三、基本类型和运算

1、基本数据类型

byte 、short、char、int、long、float、double。
boolean(和谁都无法转换)

2、 强制转换

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值