java面试
准备问项目经理的问题:
(1) 某个项目大概运行模式怎样
(2) 项目的后续规划怎样
(3) 某个产品的某个问题如何解决
(4) 选择某项技术的标准
(5) 对某项技术感兴趣,后续有机会深入了解吗
1. 基础
1. 操作符:
(1) 赋值(=) 最后计算(=)右边的从左到右加载值依次压入操作数栈
(2)** 实际先算哪个,看运算符优先级**
自增、自减操作都是直接修改变量的值,不经过操作数栈
2. Singleton
定义:
java中 的单例设计模式之一( 即 某个类在整个系统中只能有一个实例对象被获取和使用的代码模式)
举例: JVM 运行环境 中的Runtime 类
要点:
一 是某个类只能有一个实例;
构造器私有化
二 是它必须自行创建这个实例;
含有一个该类的静态变量来保存这个唯一的实例
三 是它必须自行向整个系统提供这个实例;
对外提供获取该实例对象的方式:
(1)直接暴露(2)用静态变量的get方法获取
3. == 和 equals()
定义:
== 对比的是栈中的值,基本数据类型是 变量值;
引用类型是堆中内存对象的地址;
要点:
String 类中 被复写的equals () 方法比较的是两个字符串的内容。
举例:
总结:
4. final
定义:
(1)
修饰类: 表示类不可被继承
修饰方法: 方法不可被子类覆盖,但是可以重载
修饰变量: 变量被赋值后,不可以再修改值
要点:
举例:
总结:
5. String StringBuffer StringBuilder
定义:
String 是 final 修饰的,不可变,每次操作都会产生新的String对象。
StringBuffer 在原对象上进行操作,是线程安全的。是synchronized 修饰的。
StringBuilder 在原对象上操作,线程不安全。
要点:
性能:
StringBuilder > StringBuffer >String
需要 改变 字符串内容时,使用StringBuffer, StringBuilder.
优先使用 StringBuilder ,
多线程使用共享变量使用StringBuffer .
举例:
总结:
6. 重载和重写
定义:
重载: 发生在同一个类中,方法名必须相同,
参数个数,类型,顺序不同,
方法返回值和访问修饰符不同, 发生在编译时.
重写:
发生在父子类中,
方法名,参数类型必须相同,
参数个数,类型,顺序不同,
返回值范围,抛出的异常范围 小于等于父类,
访问修饰符范围 大于等于父类
父类访问修饰符为private,则子类不能重写方法.
7.接口和抽象类
定义:
(1) 抽象类 可以存在普通成员函数,接口只能存在 public abstract 方法
抽象类 成员变量是各种类型,接口中的成员变量 只能是 public static final
抽象类只能继承一个,接口可以实现多个
接口: 类的行为约束,接口 表达的是 like a,
bird like a aircraft ( 鸟像飞行器一样可以飞),
抽象类:为了代码复用(先有子类,后有父类),
抽象类 不允许 实例化,表达的是 oppo is mobile ( oppo 是手机),
使用场景:
关注本质,使用抽象类
关注操作,用接口
举例:
总结:
8 .list 和set
定义:
List : 有序,可重复,按对象进入的顺序保存对象,允许多个null 元素对象,
使用iterator(迭代器) 取出所有元素,逐一遍历,
使用get(int index ) 获取指定下标的元素(随机访问)
Set :无需,不可重复,只允许一个null元素,
只能使用iterator接口 取出所有元素,再逐一遍历
9.hashCode 和equals
定义:
2.线程
(1) 如何实现IOC 容器
配置文件,配置包扫描路径
递归包路径,获取.class 文件
反射,确定需要交给IOC 管理的类
对需要注入的类进行依赖注入
(2) 字节码
编译器:
机器 和编译程序 加入抽象的虚拟机器,
解释器: