基础面试题

https://github.com/Snailclimb/JavaGuide/blob/master/docs/java/Java%E5%9F%BA%E7%A1%80%E7%9F%A5%E8%AF%86.md#2-java-%E8%AF%AD%E8%A8%80%E6%9C%89%E5%93%AA%E4%BA%9B%E7%89%B9%E7%82%B9

  • 由于自己要面试找工作、很多基础的东西自己都忘了且以前很多东西都没有理解、仅仅只会用、所以放假自己在家里好好总结总结、希望找工作顺便把。**
1. 面向对象与面向过程:
	面向对象: 强调的是人、谁来做这个事情
	面向过程: 强调的是过程
	举例: 狗吃屎、吃狗屎
3. Java 语言有哪些特点?
	 跨平台、安全可靠、简单易用、支持多线程、面向对象。
4. 关于 JVM JDK 和 JRE 最详细通俗的解答

在这里插入图片描述

	jvm:运行java字节码的虚拟机,在不同的操作系统都有特定的实现、目的就是为了使用相同的字节码。跨平台 
	jdk包含jre所有的功能、jre包含了jvm、jdk包含了javac
5. Java和C++的区别?
相同点:
		
		面向对象
不同点:

		多继承、自己回收内存
6. 什么是 Java 程序的主类 应用程序和小程序的主类有何不同?
 	主类: 程序的入口点
 	小程序的主类必须继承已有的类,而且必须是public修饰
5. 字符型常量和字符串常量的区别?
	字符型: 单字节	
	字符串: 双字节	

在这里插入图片描述

6. instanceof运算符
	它的作用是测试它左边的对象是否是它右边的类的实例,返回boolean类型的数据
7. Java 面向对象编程三大特性: 封装 继承 多态:
	封装: 属性是私有,提供共有的方法使用。 把东西封装起来、不让人胡乱改变
	继承: A extend B, 那么A是子类、B是父类,is a的关系,是实现多态的一种方式。
	多态: 多种形态、同一个方法有不同的表现方式。A extend B,C extend B

> B b = new A(); 
> B b2 = new C();

	父类对象的引用指向了不同的子类。
	实现多态:
		1 要有继承
		2父类对象引用子类对象
		3 要有方法的重写
  1. 自动类型转换与强制类型转换
    在这里插入图片描述
    在这里插入图片描述
9. 自动装箱与拆箱
	装箱: int - > Integer
	拆箱: Integer - > int

在这里插入图片描述

10. 在一个静态方法内调用一个非静态成员为什么是非法的?
		不能通过对象new 
11. import java和javax有什么区别?
	   没什么大的驱动、都是jdk里的包、只不过javax是后来当扩展api来用的、移动到java里太麻烦了。

在这里插入图片描述

12. 接口和抽象类的区别是什么?
		接口:  属性final修饰、 方法abstract修饰、不能有方法的实现、接口是抽象类中的抽象类。
		设计上来: 抽象类是对类的一种规范,而接口是对行为的抽象。

在这里插入图片描述

13. 成员变量与局部变量的区别有那些?
	成为变量: 属于类、可以被public、static修饰、随着类的创建而创建。

在这里插入图片描述

14. 构造方法有哪些特性?
 名字与类名相同。	
没有返回值,但不能用void声明构造函数。
生成类的对象时自动执行,无需调用。
15. 静态方法和实例方法有何不同

在这里插入图片描述

	静态: 类名.方法名、只能访问静态成为变量
16. 对象的相等与指向他们的引用相等,两者有什么不同?
	对象相等: 内存中的值
	引用相等: 指向的内存地址是否相等。
18. 堆栈

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

栈是栈(stack): 存放局部变量,先进后出、后进先出
堆是堆(heap):存放对象、数组、静态变量、字符串常量(也是对象),jvm回收内存
19. static

在这里插入图片描述

	this代表的是当前对象、而不是类、所以this不能写在静态方法中、因为静态方法属于类。
	所以也不能在普通方法中使用this与调用静态方法。
20. String
		final类,不可继承
		为什么不可变?
		String 类本身是final的,不可以被继承
		String类内部通过private final char value[]实现,从而保证了引用的不可变和对外的不可见
		String内部通过良好的封装,不去改变value数组的值
21. 为什么Java中只有值传递?
		Java程序设计语言总是采用按值调用,Java中只有值传递这一种方式,只不过对于引用类型来说,传递的参数是对象的引用罢了。
		形参:方法中的参数。
		实参: 调用方法的参数。
		值传递:  值传递是指在调用函数时将实际参数复制一份传递给形参,这样在函数中对形参的修改将不会影响到实际参数的值。
		引用传递: 地址传递。
23. Java 中的异常处理

在这里插入图片描述

Error: 一般来说是虚拟机错误
Excption: 程序进行处理的错误。
运行异常: 虚拟机处理
一般异常: IO、sqlException异常。  需要try catch final
可以通过继承的方式重写异常。
运行异常: nullPointException,classCastException、ArithmeticException(算术异常)、ArrayIndexOfBoundsException(数组越	界异常)、classNotFoundException,

一般异常: IllegalArgumentException(非法参数异常)、FileNotFoundException
在这里插入图片描述

24. Java序列化中如果有些字段不想进行序列化,怎么办?
		transient进行修饰
25. Java 序列化:

所有需要保存到磁盘的java对象或者需要在网络上传输的对象都必须是可序列化的

	将java对象保存为二进制字节码的过程。		
	Java反序列化是指把二进制码重新转换成Java对象的过程。
	什么时候需要序列化:
		1.持久化的时候、保存到电脑上
		2.需要网络进行传输的时候、因为网络传输只认二进制。
	
	serialVersionUID的作用:
		保证每一个类的唯一性、如果不写、那么会有默认的值、同时在反序列化的时候需要去验证serialVersionUID是否一致。
		假如没写、而又改了类的属性值、那么serialVersionUID就不一样了、反序列化就会失败。
26. 泛型

“泛型”简单的意思就是泛指的类型(参数化类型),可以设定不同的类型来进行使用。
可分为泛型类、泛型接口、泛型方法
好处:省去了强制转换,可以在编译时候检查类型安全,代码很灵活很高。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值