1.构造函数的特性
答:
-
基础语法特性(名称、无返回值、自动调用)
-
继承体系下的执行顺序(先父后子)
3.不被继承 & 默认无参构造器陷阱
意思就是如果父类手动创建构造函数 子类创建构造函数系统会自动调用super() 这时候找不到上级的无参构造函数就会发成报错
- 一个最容易翻车的点:构造器里调用可重写方法
2.sleep()和wait()的区别
1.sleep()不释放锁wait()释放锁
2.sleep()被中断后锁不释放 wait释放
3.sleep 是 Thread 类的静态方法,wait 是 Object 的实例方法。
4.sleep 哪都能用,wait 必须在 synchronized 里
3.以下哪种是抽象方法
1.pubulic abtract void method()
2.pubulic abtract void method(){}
3.public void method extend abtract
答:第一个
第二个错误原因是抽象方法不能有方法体
第三个完全语法错误
总结:
-
必须用
abstract关键字修饰 -
不能有方法体
{},直接用;结尾 -
只能存在于抽象类或接口中 (接口中默认就是抽象的,可以省略
abstract)
4.抽象类与抽象方法
1.有抽象方法的类必须是抽象类
2.抽象类不一定有抽象方法
3.子类必须实现所有抽象方法(除非子类也是抽象类)
5.以太网传输使用了什么机制
答:以太网使用 CSMA/CD(载波监听多路访问/碰撞检测)机制。其核心逻辑是:先听后说,边听边说,冲突停发,随机重发。
6.以下哪种数组创建成功
1.int\[\] a=new int5
2.int\[\] a=new int5{1,2,3,4,5}
第一个正确
第二个错误原因是:错误原因 :不能同时指定数组长度和初始化列表 。
7.运行时异常有哪些
答:运行时异常(RuntimeException)是 Java 中不需要显式捕获或声明的异常,它们继承自 RuntimeException 类,通常由程序逻辑错误导致,比如数组越界、空指针、类型转换错误等。
1.NullPointerException
2.ArrayIndexOutOfBoundsException
3.ClassCastException
4.ArithmeticException
5.NumberFormatException
6.IllegalArgumentException
8.异常处理try catch可以嵌套吗
答:可以
核心规则:
-
内层抛出的异常优先由内层 catch 处理
-
如果内层没有匹配的 catch,异常会向上冒泡到外层
-
如果外层也没有处理,最终交给 JVM(程序终止)
追加try catch注意点
1.finally 块中不要用 return(会导致异常丢失)
2.finally 中抛出的异常会"淹没"原始异常(加个 try-catch 保护)
3.catch 异常时,要把最具体的异常 写在最前面(顺序错误编译报错)
try-catch 不是"万能药",能不捕获就别捕获
-
对于受检异常(Checked Exception) ,必须处理(捕获或
throws)。 -
对于运行时异常(RuntimeException) ,优先修复代码逻辑 ,而不是用
catch包住。
9.子类与父类之间继承关系和方法使用的注意点
规则 1:子类构造器必须调用父类构造器
-
子类构造器第一行会隐式调用 父类的无参构造器
super() -
如果父类没有 无参构造器(只有有参构造),子类必须显式 用
super(参数)调用
规则 2:子类重写方法的访问权限 不能比父类更严格
规则 3:子类重写方法的返回值 必须是父类返回值的子类型 (协变返回)
规则 4:子类重写方法不能 抛出比父类更宽 的受检异常(重要!)
规则 5:static 方法不能 被重写(只能被隐藏)
规则 6:成员变量没有多态 ,看的是引用类型
10.如果一个二叉树他的前序遍历和后序遍历相反 那么他的形状是?
一棵高度等于节点数、每个节点只有单侧子树的链状树 。
11.

13.子类一定比父类有更多成员方法吗
子类继承父类所有的非 private 成员方法,所以子类可用的方法数量至少等于父类。子类可以增加新方法,使方法数量多于父类,但也可以不加,保持相等。所以"子类一定比父类有更多成员方法"是错误命题。
14.

15.ThreadLocal 为每个线程提供独立的变量副本,避免了线程间竞争,实现了无锁化的线程安全;但需要在使用后调用 remove() 防止内存泄漏,且只适用于隔离变量的场景,不能保证跨变量的业务逻辑原子性。"
16
17.