哇塞码农面试题解笔记 之 Java基础知识

更新于2024-11-05 08:00:005 分钟2 千字88271400
摘要

1、基本概念

1.1、Java语言有什么优点

  1. 纯面向对象:Everything is object
  2. 平台无关性:通过使用虚拟机(JVM)来实现跨平台性,Write Once,Run Anywhere

1.2、Java与其他语言有什么异同

待补充……

Java C++ Python Go Rust
运行过程 解释型语言 编译型语言
面向对象 纯面向对象 面向对象、面向过程
指针 没有,更安全
多重继承 不支持 支持
接口概念 无接口
运算符重载 不支持 支持
平台无关
内存分配 垃圾回收器 手动分配与释放
goto 不支持 支持

1.3、Java程序初始化的顺序是怎样的

  1. 静态对象/变量优于非静态对象/变量,并且静态对象/变量仅初始化一次
  2. 父类优先于子类进行初始化
  3. 成员变量按照定义顺序进行初始化

1.4、作用域关键字与可见性问题

关键字 当前类 当前包 子类 其他包
public ☑️ ☑️ ☑️ ☑️
protected ☑️ ☑️ ☑️
default ☑️ ☑️
private ☑️

1.5、为什么Java有些接口没有任何方法

这种借接口通常称为标识接口,在项目中经常会用instance of判断一个实例对象的类型是否实现了某个标识接口。

比如常见的Cloneable、Serializable,都是标识接口。

1.6、深拷贝、浅拷贝

Java取消了指针的概念,但实质上每隔new语句返回的都是一个指针的引用。

Java在处理基本数据类型时,是按值传递;此外,为引用传递。

浅拷贝:被复制对象的所有变量都含有与原来对象相同的值,而所有对其他对象的引用仍然指向原来的对象。

深拷贝:把复制对象所引用的对象也复制了一遍。

怎么实现深拷贝呢?

可以通过实现Cloneable标识接口,并重写Object类的clone方法,在方法内部把非基本类型的属性也clone一遍。

1.7、反射机制

概念的名字多少有些奇怪,但其实用起来还是比较简单的。

说白了,就是可以拿到一个对象所属的类、获取一个类的所有成员变量和方法、在运行时创建对象、在运行时调用对象的方法。

1.8、抽象类和接口有什么异同

1.9、内部类

2、关键字

2.1、static

2.2、volatile

2.3、transient

3、基本类型与运算

3.1、基本数据类型及其封装类

3.2、不可变类

3.3、值传递和引用传递

4、字符串与数组

4.1、字符串池、常量池

4.2、==、equals和hasCode

4.3、String、StringBuffer、StringBuilder

4.4、length和length()

5、内存管理

5.1、垃圾回收

5.2、堆栈

6、容器

6.1、ArrayList、Vector、LinkedList

6.2、HashMap、Hashtable、TreeMap、WeakHashMap

7、多线程

7.1、如何实现Java多线程

7.2、多线程同步

7.3、sleep和wait的区别

7.4、synchronized和Lock

评论区

你认为这篇文章怎么样?
  • great
    0
  • happy
    0
  • doubt
    0
  • boring
    0
  • bad
    0

0/2048