JAVA面试基础知识
Java的特点
属性 | 特点 |
---|---|
跨平台 | jvm虚拟机,一次编译,随处运行 |
安全性 | 支持多线程 |
Java的版本
版本 | 内容 |
---|---|
Jdk | 包括Jre,jvm,javac一些列的命令 |
面向对象
编程思想 | 概述 |
---|---|
OOP | 构成问题的事务,分解成若干个对象。用于描述某个事务在解决问题中的行为特征。封装、继承、多态是基本思想。性能低,可以构建低耦合的系统。 |
“==” 的问题?
内容相同哈希码值一定相同,哈希码值不同,内容有可能相同。
浅拷贝和深拷贝
浅拷贝直接复制目标对象的引用。
深拷贝把对象的引用和(对应的实例)都复制,产生了一个新的对象。
集合框架体系接口
Map、Collection、Iterator三大顶级接口
常用的ArrayList、LinkedList、HashSet、HashMap、HashTable。
ArrayList: 元素重复,存储地址连续。
Vector: 线程安全,ArrayList反之。
LinkedList: 无序存储。
HashSet: 元素唯一,底层基于哈希表存储。
HashMap: 线程不安全,key和value都可以为null。
HashTable: 线程安全,key和value不可为null。
Object常用的Method?
wait(): 配合syncronized使用,释放资源。
notify(),notifyAll()唤醒某个对象等待队列找中的线程。
equlas(): 比较对象的地址是否相等。
String常用的方法?
charAt(),toUpperCase(),toLowerCase(),Length(),substring(),toString(),valueOf(),getBytes(),trim(),replace(),indexOf()
Java反射和序列化
反射是指在运行中动态获取类的属性,方法,实例对象。
序列化: 将对象转换成字节序列的过程。
序列化是一种机制,将对象转换成字节序列后,可以读写,网络中传输。
多线程的创建方式
继承thread类,实现Runnable接口。
Run方法只有一条执行路径,start()方法才是启动路径。
线程的生命周期: 新建->就绪->运行->阻塞->死亡
线程、程序、进程的区别
程序: 是包含指令和数据的文件,是静态代码。
进程: 系统运行程序的基本单位,是动态的,程序的一次执行过程。一个进程就是一个执行的程序,进程是独立的,会占用系统资源,例如Cpu时间,内存空间。
线程: 是比进程更小的执行单位,进程在执行过程中会产生多个线程,多个线程共用同一块内存空间和一组系统资源。