Java学习:java面试,java学习面试
Java学习:java面试,java学习面试
面 试 题
JavaSE
JavaSE-01
ArrayList、LinkedList、HashMap在实际应用中如何选择?
ArrayList的底层是数组,查询效率高
LinkList的底层是双向链表,增加删除快
HashMap的底层是散列表,删除,查询都比较快 Vector、HashTable的共同点和缺点?
都是线程安全的
速度慢
String、StringBuffer和Stringbuilder如何选择?
都是字符串
String底层是一个final修饰的不可变得char[]
StringBuffer和StringBuilder可变的字符串
前者是线程安全 速度慢
后者线程不安全 速度快
数组
数组是如何实现的?
在内存中一块连续的存储空间
有什么优点和缺点?
索引查询速度快
删除,增加比较慢
数组根据下标检索为什么速度非常快?
算法,地址查询,不需要遍历
数组根据值检索采用什么方式,会带来更好的效果?
内存地址减去首地址,再乘以4 直接定位位置
ArrayList
ArrayList是如何实现的?
数组
ArrayList默认初始化多大,如何优化?
10,根据业务的不同,去设置初始大小
ArrayList默认每次增容多少?
乘三除二加一
ArrayList优点和缺点?
查询速度快
增删速度慢
JavaSE-02
Vector
Vector为什么使用的很少?
线程安全的,相对速度慢
Vector被哪个集合取代了?
ArrayList
Vector默认初始化多大?
10
Vector每次增容多少?
两倍
链表(LinkedList)
链表有什么优点和缺点?
增删速度快
查询速度慢
散列表
散列表是如何实现的?
基于数组,和单向链表
散列表的优点和缺点?
检索快
放进去和取出来顺序不一样
HashMap默认初始容量是多少?默认加载因子是多少?
16个
0.75
HashSet与HashMap有什么关系?
HashSet的底层是HashMap实现的
如何保证散列表中的数据不会重复?
重写Object里面的 hashcode 和equals方法
散列表中如果放入重复的对象是覆盖掉以前的数据,还是不改变集合中的数据?
覆盖掉
String及相关包装类的特点?在相关集合中,为什么可以排序?
都实现了compartable,序列化serializable 接口
冲了了里面的compareTo方法
JavaSE-03
将自定义对象放到List或其他集合中如何排序?
可以实现Comparable接口,覆盖里面的CompareTo方法
也可以实现Comparator接口,覆盖里面的Compate方法
Comparable和Comparator的差别? Comparator体现了哪个设计模式?
后者好更加灵活
体现了策略模式
栈的特点?队列的特点?
先进后出
先进先出
面向对象的特征?
继承封装多态
你怎么理解面向对象的(面向对象有什么好处)?
现实生活中的东西,就是面向对象的,与java无关,这种思考方式更加符合人们,
可以让分工明确,使复杂的问题简单化,并且是可以使对象的复用率变得很高 你是怎么理解多态的(多态有什么好处)?
一种对象的多种形态,使架构更加灵活,可以互换
ArrayList是否是线程安全的?如果不是如何得到一个线程安全的ArrayList?
不是
Collections里面有个方法synchroniizedList(List<T> list)
如果把全国10亿人放到一个集合中,实现最快速的查询,应该选择哪个集合?
使用HashMap ,或者treeMap,因为不需要比较,就像数组一样,乘加就可以得到
了
如果想得到一个可排序的集合,并且不重复,该选择哪个结合?
TreeSet
集合中为什么有迭代器Iterator方法?有什么作用?是什么设计模式?
是我们访问的集合有了更加统一的方法
屏蔽了我们寻找的过程
体现了迭代模式
Java集合部分主要体现的那些主要的设计模式?
迭代模式
策略模式
Java IO部分主要体现了那些设计模式?
装饰者模式
适配器模式
JavaSE-04
如果A继承B,谁的构造器先执行?
子类的构造器调用父类的无参的构造器
静态变量或静态语句块在什么时候初始化?new一个类和采用Class.forName(“”)初始
化一个类有什么区别?
类加载的时候
后者会加载静态代码块
谈谈final,finally,finalize之间的区别?
final访问修饰符,修饰类不可继承;方法不能重写;属性是常量
finally的修饰符,与try catch 连用 ,是必须要执行的代码
finalize是垃圾回收器的一个方法
如何才能写出一个Singleton模式?
懒汉式
恶汉式
Singleton设计模式优点、缺点、适用场景?
只创建一次
不能继承多态等等
一般在读取配置文件的时候,缓存时候
采用static语句块加载配置文件可以只加载一次,采用单例模式也是加载一次,有什么
区别?
基本没啥区别
单例创建对象
推技术是意思,怎么实现的?
观察者模式
设计模式大方向分几种?
创建型
行为型
在本类中进行重载,可以重载多次 返回类型,权限没有要求 参数列表,必须不同(数目,类型,顺序) 方法名必须相同 抛出的异常没有限制 静态绑定(编译时绑定)和动态绑定(运行时绑定)? 重载被称为静态绑定 在程序运行中,将调用的成员方法和实际的对象内存做绑定(多态)。 super是指向的父类对象吗? 不是 如果一个方法只是让子类使用,那么如何声明? 声明为 protected 抽象类和接口有什么共同点和差别? 都不能实例化对象,都有抽象方法 一个子类可以只能继承一个抽象类,一个类可以实现多个接口 抽象类中可以有实例方法,有构造方法 接口中有实例方法,没有构造方法 等等。 什么是面向接口(抽象)编程? 面向接口编程,可以解耦合,满足了ocp原则,达到互换,体现了多态 Java虚拟机对内存是怎么划分的,局部变量和线程在什么区域运行,对象在什么区域
创建?
方法区(字节码,静态变量)
堆(对象)
栈(局部变量)
JavaSE-06
JVM虚拟机默认内存?操作系统内容?
64M
Java ClassLoader有那些,Java类是如何加载的?
启动类
扩展类加载器
应用类加载器
双亲委派
构造器可以覆盖吗?
不能
构造器可以重载吗?
可以
==号和equals的区别?
比较值
默认比较地址
如果要精确计算Java应该采用什么类型?
BigDecima
Java中都有那些接口只是声明类型,没有方法实现?
结构型 Object类有一个hasCode方法,方法的返回值的类型是什么? Int类型 Object类中还有什么方法? clone() hashcode() equals() getClass() notify() notifyAll() toString() wait(),及重载 finalize() native和transient关键字是什么意思? 本地调用JNI/JNA 动态链接库 不进行序列化 synchronized关键字同步的是什么,锁的是什么?
线程同步
对象锁
JavaSE-05
String s = "a"和String s = new String("a")有什么区别;
前者 一个对象
后者连个对象
接口中的变量和普通类中的变量有何区别?
接口中的变量 是 用 public static final
什么是Java的序列化,如何来实现Java的序列化。
把一个对象写入到文件或者网络的过程叫做序列化
流的方式 并且实现了序列化接口
如何拷贝一个对象?
序列化
clone
除了new还有那些方法创建一个对象
反射
throw 跟 throws的区别
throw是抛出异常
throws是声明处理的异常
覆盖与重载的区别?
覆盖
存在继承关系,并且只能覆盖一次
方法名,返回值,参数列表相同
子类中覆盖的方法,不能比父类中更为严格的访问权限
抛出的异常不能扩大
重载
表示接口 cloneable serializable Type(反射) sleep有什么作用?(线程如何调度?) 让当前正在执行的线程睡眠 sleep和wait有什么区别? sleep是Thread的静态方法 wait是Object sleep在哪个类中?wait和notify在哪个类中? Thread Object 什么是守护线程,守护线程有什么特点? 所有的线程结束了,守护线程才会结束,只要有用户守护线程,守护线程就不会结束 如何创建一个线程?
Thread
Runnable
JavaSE-07
如何正确的退出一个线程?
通过标识位
你看到JDK源代码中,哪些类有serialVersionUID属性,该属性起到什么作用? GC是什么,如何让GC快速来收集垃圾?
垃圾回收器
system.gc
JDK是什么?JRE是什么?
java开发包
java运行环境
Java有几种基本数据类型?
8种
byte short int long char boolean float double
线程的四种状态?
就绪 运行 阻塞 结束
反射都有哪些类?
Constructor
Filed
Method
等等
给你一个类的方法字符串,采用反射如何调用该方法?
method.invoke()
如何写一个冒泡或选择排序?
爱咋咋写
递归是什么?如何递归实现阶乘或递归读取文件?
循环
爱咋咋写
Java免费学习资料直播公开课群:175161984相关文章
- 暂无相关文章
用户点评