java面试

来源:互联网 发布:实名认证数据网 编辑:程序博客网 时间:2024/06/07 03:38

面 试 题

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语句块加载配置文件可以只加载一次,采用单例模式也是加载一次,有什么

区别?

 基本没啥区别

 单例创建对象

 推技术是意思,怎么实现的?

 观察者模式

 设计模式大方向分几种?

 创建型

 行为型


  结构型 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是声明处理的异常

 覆盖与重载的区别?

 覆盖

 存在继承关系,并且只能覆盖一次

 方法名,返回值,参数列表相同

 子类中覆盖的方法,不能比父类中更为严格的访问权限

 抛出的异常不能扩大

 重载


  在本类中进行重载,可以重载多次  返回类型,权限没有要求  参数列表,必须不同(数目,类型,顺序)  方法名必须相同  抛出的异常没有限制 静态绑定(编译时绑定)和动态绑定(运行时绑定)?  重载被称为静态绑定  在程序运行中,将调用的成员方法和实际的对象内存做绑定(多态)。 super是指向的父类对象吗?  不是 如果一个方法只是让子类使用,那么如何声明?  声明为 protected 抽象类和接口有什么共同点和差别?  都不能实例化对象,都有抽象方法  一个子类可以只能继承一个抽象类,一个类可以实现多个接口  抽象类中可以有实例方法,有构造方法  接口中有实例方法,没有构造方法  等等。 什么是面向接口(抽象)编程?  面向接口编程,可以解耦合,满足了ocp原则,达到互换,体现了多态 Java虚拟机对内存是怎么划分的,局部变量和线程在什么区域运行,对象在什么区域

创建?

 方法区(字节码,静态变量)

 堆(对象)

 栈(局部变量)

JavaSE-06

 JVM虚拟机默认内存?操作系统内容?

 64M

 Java ClassLoader有那些,Java类是如何加载的?

 启动类

 扩展类加载器

 应用类加载器

 双亲委派

 构造器可以覆盖吗?

 不能

 构造器可以重载吗?

 可以

 ==号和equals的区别?

 比较值

 默认比较地址

 如果要精确计算Java应该采用什么类型?

 BigDecima

 Java中都有那些接口只是声明类型,没有方法实现?


  表示接口  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


0 1
原创粉丝点击