Java基础面试题

前言

面渣逆袭 Java 基础篇

原文戳链接

Java概述

1. 什么是Java

C++(--):吸收了C++的优点,并且抛弃了指针、多继承等概念

是一门面向对象语言

2. Java特点

面向对象(封装、继承、多态)

跨平台

3. JVM、JRE、JDK有什么区别

关系是 JDK>JRE>JVM

JVM:Java虚拟机,用于解释Class文件成为机器码

JRE:Java运行时环境,包含JVM和核心类库(lang、util...)

JDK:Java开发环境,在JRE基础上多了javac、jdb、javadoc等命令

4.说说什么是跨平台性,原理是什么

指java代码一次编译,到处运行

因为java代码跑在虚拟机上,每个操作系统对应不同平台的虚拟机,他们可以解释同一份class文件

5. 什么是字节码?采用字节码的好处是什么

是java编译之后的文件,能够被虚拟机识别

实现跨平台性

6. 为什么说 Java 语⾔编译与解释并存

要先编译再解释

基础语法

7. Java有哪些数据类型

。。。

8. ⾃动类型转换、强制类型转换、看看这⼏⾏代码

小范围 --> 大范围:隐式转换

大范围 --> 小范围:强制转换

float f=3.4;  //编译错误,3.4是double类型, 赋值给float时要强制转换或者加上f/F让编译器识别初始化
short s1 = 1; s1 = s1 + 1; // s1+1的结果是int类型,需要强转,错误
short s1 = 1; s1 += 1; // +=自动转换类型, 正确

9. 什么是⾃动拆箱/封箱

例如Integer

使用的是integer.valueOf 和 intValue实现的

10. &&&有什么区别

&&如果左边的表达式为flase不再执行右边的表达式,&还会执行

|| 左边为true不再执行右边,|还会执行

11. switch 是否能作⽤在 byte/long/String

1.7开始支持的类型包括:byte、short、int、char、enum、string

到现在都不支持的有:long、float、double

12. break ,continue ,return 的区别及作⽤

。。。

13. ⽤最有效率的⽅法计算 2 乘以 8

位运算:2 <<< 3 无符号左移3位相当于*2^3

14. 说说⾃增⾃减运算?看下这⼏个代码运⾏结果

int i = 1 ;
i = i + + ;
System . out . println ( i) ; // 结果为1 因为i++返回的是自增前的结果

 

面向对象

15. ⾯向对象和⾯向过程的区别

对象:将步骤定义在各个对象内,成为一个个的对象方法,把这些方法组装起来就是逻辑

过程:把逻辑定义在具体的过程中

16. ⾯向对象有哪些特性

封装:把许多个属性和方法封装在一个对象内,属性是私有的,只提供方法

继承:把公共部分抽离出来,通过继承的方式得到对应的属性

多态:利用继承和接口接收不确定返回的子类,如果要使用子类的方法,需要强转为子类

17. 重载和重写

。。。

18. 访问修饰符 publicprivateprotected、以及不写(默认)时的区别

private和protected不能修饰类

19. this 关键字有什么作⽤

用于表示指向自身的一个指针,可以调用自身的方法

用于区分成员变量和局部变量

20. 抽象类(abstract class)和接⼜(interface)有什么区别

参考另一篇文章

21. 成员变量与局部变量的区别有哪些

成:定义在类中,存储在堆中(static和final除外),可以被修饰符修饰,随对象的创建而存在,有默认值

局:定义在方法中,基本(栈中)引用(也是栈中存放地址),不可被修饰符修饰,随方法的调用创建,无默认值

22. 静态变量和实例变量的区别?静态⽅法、实例⽅法呢

1)静态变量存储在方法区中,方法区的位置参考这篇文章,静态变量属于类,多个实例只有一个副本。实例变量有多个副本存储在堆

2)静态方法用Class.调用, 实例方法用实例.

23. final 关键字有什么作⽤

。。。

24. finalfinallyfinalize

finalize() 会在垃圾回收器回收对象之前被调用,用于允许开发者清理对象所持有的非 Java 堆内存资源

每个对象的 finalize() 方法最多被调用一次

25. ==equals 的区别

。。。

26. .hashCode 与 equals

为什么重写 equals 时必须重写 hashCode ⽅法?

hashcode默认是基于地址生成的,重写hashcode让他基于对象内容生成。

关系是:hashcode相同不一定equals相同(hash碰撞),equals相同hashcode一定需要相同

如果hashmap中两个对象AB的key相同,但是没有重写hashcode就会导致hashmap中存储相同key的对象,因为hashcode不同

总结

  • 保证两个相等的对象具有相同的哈希码
  • 不重写 hashCode() 会导致哈希表无法正确存储和查找对象

27. Java 是值传递,还是引⽤传递

28. 深拷贝和浅拷贝

跳转链接

29. Java创建对象有哪些方式

new

clone

序列化

反射

 

String

30. String是 Java 基本数据类型吗?可以被继承吗

。。。

31. StringStringBuilderStringBuffer

string:每次对string的修改都会new一个新的string

buffer:提供了对string类型修改的方法,线程安全

builder:线程不安全,性能高

32. String str1 = new String("abc")和 String str2 = "abc"和 区别

1)创建了两个对象

都会去字符串常量池z

33. String不是不可变类吗?字符串拼接是如何实现的?

JDK8之后使用+拼接其实是利用了stringbuilder的append方法

所以+和stringbuilder效率一样

不能在循环中使用+因为会生成多个builder对象

34. intern ⽅法有什么作⽤

将string对象放到串池中,如果已存在则返回原来的引用

 

Integer

35. Integer a= 127 Integer b = 127 Integer c= 128 Integer d=128相等吗

integer缓存范围 -128~127

36. String 怎么转成 Integer 的 原理

利用ascll
 

Object

37. Object类公用的方法

 

异常

38. Java 中异常处理体系

39. 异常的处理⽅式

40. 三道经典异常处理代码题

 

I/O

41. Java中 IO 流分为⼏种

inputstream:file、bytearray、buffered、Object...

outputstream:。。。

reader:file、chararray、buffered、inputstreamReader

writer:。。。

42. 既然有了字节流,为什么还要有字符流

自动处理字符编码问题

43. BIONIOAIO

跳转链接

 

序列化

44. 什么是序列化?什么是反序列化

序列化:java对象 --> 二进制流

反:二进制流 --> java对象

serialVersionUID 又有什么⽤:标识一个对象有没有被修改,自定义防止修改结构之后无法反序列化(编译器会自动生成)

哪些不会被序列化:transient、static(属于类不能被实例对象序列化)、父类没有实现Serializable接口的字段

45. 常见的序列化方式

实现Serializable接口利用ObjectoutputStream.writeObject()

jackson:JSON.xxx()

 

泛型

46. Java 泛型了解么?什么是类型擦除?介绍⼀下常⽤的通配符

编译时期的检测机制,其实都是object类型

 

注解

47. 说⼀下你对注解的理解

一种标记,没了

 

反射

48. 什么是反射?应⽤?原理

。。。

 

JDK1.8新特性

49. JDK1.8 都有哪些新特性

接口默认方法default

lambda ()-> {}

stream

optional

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇