java面试题及参考答案

Posted xjz729827161

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java面试题及参考答案相关的知识,希望对你有一定的参考价值。

本文整理了的问题来源于开源项目 .
https://github.com/AweiLoveAndroid/CommonDevKnowledge/blob/master/interview/summary.md
写了一部分答案,需要自己慢慢的补充和完善,把这当做一个大纲来了解

java基础

  1. java中==和equals和hashCode的区别
    ==是运算符号,比较的对应的地址里面的内容。如果是基本类型就是比较的真实的大小,如果是引用用类型就比较是引用所对应的地址。
    equals是用来比较对象的,需要进行比较的对象自行实现,默认比较地址
    hashcode对象的hash值,如果两个对象相等其hashcode一定相等,hashcode相等对象不一定相等,默认是地址
  2. int、char、long各占多少字节数
    int 4 char 3 long 8
  3. int与integer的区别
    int基本数据类型 integer整数对象
  4. 探探对java多态的理解
    通过继承 接口 重写 重载实现多态
  5. String、StringBuffer、StringBuilder区别
    String 不可变类型。 StringBuffer线程安全,StringBuilder非线程安全
  6. 什么是内部类?内部类的作用
    类的里面定义的类。 内部类间接的实现了多继承,也间接让接口可以有实现内容,通过内部类实现回调,解 决父类和接口方法重名时的设计冲突。
  7. 抽象类和接口区别 抽象类的意义
    抽象类是某一类功能,同时其中也可以实现一部分通用的方法 从设计的角度来抽象类是某一类事物的抽象,接口是某一个功能的抽象,抽象类具有更好的功能性,但是更加的复杂和难以把控
    接口则是抽象方法的集合,可以用于多继承
  8. 抽象类与接口的应用场景
    模版方法,抽象类
  9. 抽象类是否可以没有方法和属性?
    可以
  10. 接口的意义
    多继承
  11. 泛型中extends和super的区别
    extends T以及T的子类
    supter T以及T的超类
  12. 父类的静态方法能否被子类重写
    不能
  13. 进程和线程的区别
    进程是cpu资源分配的最小单位,线程是cpu调度的最小单位。线程也叫轻量级线程
  14. final,finally,finalize的区别
  15. 序列化的方式
    serializable
  16. Serializable 和Parcelable 的区别
  17. 静态属性和静态方法是否可以被继承?是否可以被重写?以及原因?
  18. 静态内部类的设计意图
    放置内存泄露
  19. 成员内部类、静态内部类、局部内部类和匿名内部类的理解,以及项目中的应用
  20. string 转换成 integer的方式及原理
    result * = radiox
    result - = digit

java深入源码

  1. 哪些情况下的对象会被垃圾回收机制处理掉?
    从跟节点无法引用到的情况下
  2. 讲一下常见编码方式?
    utf-8 gbk
  3. utf-8编码中的中文占几个字节;int型几个字节?
    utf-8b编码是变长的编码,中文2 3 4都有可能, Int四个字节

  4. 静态代理和动态代理的区别,什么场景使用?
    静态代理是确定的代理关系,比较单一
    动态代理是需要代理的比较多

  5. Java的异常体系
    责任链, throwable 有两个error exception,异常有捕获异常和未捕获异常之分

  6. 谈谈你对解析与分派的认识。
    解析是将符号引用替换为直接引用
    其中重载属于静态分派,而重写则是动态分派的过程。

  7. 修改对象A的equals方法的签名,那么使用HashMap存放这个对象实例的时候,会调用哪个equals方法?

  8. Java中实现多态的机制是什么?

  9. 如何将一个Java对象序列化到文件里?

  10. 说说你对Java反射的理解

  11. 说说你对Java注解的理解

  12. 说说你对依赖注入的理解
    对象的实例化并不是直接产生的,而是外部生成的。一般会有一个控制注入的中心,完成了类之间的耦合,把直接的依赖关系调整为对控制中心的依赖,变成了一个类似中心模式。 其中就有个关键概念IOC(控制反转)

  13. 说一下泛型原理,并举例说明
    编译器的安全,

  14. Java中String的了解
    不可变类型。

  15. String为什么要设计成不可变的?

  16. Object类的equal和hashCode方法重写,为什么?

数据结构

  1. 常用数据结构简介
  2. 并发集合了解哪些?
  3. 列举java的集合以及集合之间的继承关系
  4. 集合类以及集合框架
  5. 容器类介绍以及之间的区别(容器类估计很多人没听这个词,Java容器主要可以划分为4个部分:List列表、Set集合、Map映射、工具类(Iterator迭代器、Enumeration枚举类、Arrays和Collections),具体的可以看看这篇博文 Java容器类)
  6. List,Set,Map的区别
  7. List和Map的实现方式以及存储方式
  8. HashMap的实现原理
  9. HashMap数据结构?
  10. HashMap源码理解
  11. HashMap如何put数据(从HashMap源码角度讲解)?
  12. HashMap怎么手写实现?
  13. ConcurrentHashMap的实现原理
  14. ArrayMap和HashMap的对比
  15. HashTable实现原理
  16. TreeMap具体实现
  17. HashMap和HashTable的区别
  18. HashMap与HashSet的区别
  19. HashSet与HashMap怎么判断集合元素重复?
  20. 集合Set实现Hash怎么防止碰撞
  21. ArrayList和LinkedList的区别,以及应用场景
  22. 数组和链表的区别
  23. 二叉树的深度优先遍历和广度优先遍历的具体实现
  24. 堆的结构
  25. 堆和树的区别
  26. 堆和栈在内存中的区别是什么(解答提示:可以从数据结构方面以及实际实现方面两个方面去回答)?
  27. 什么是深拷贝和浅拷贝
  28. 手写链表逆序代码
  29. 讲一下对树,B+树的理解
  30. 讲一下对图的理解
  31. 判断单链表成环与否?
  32. 链表翻转(即:翻转一个单项链表)
  33. 合并多个单有序链表(假设都是递增的)

线程多线程

  1. 开启线程的三种方式?
  2. 线程和进程的区别?
    进程是cpu资源分配的最小单位,线程是cpu调度的最小单位
  3. 为什么要有线程,而不是仅仅用进程?
  4. run()和start()方法区别
  5. 如何控制某个方法允许并发访问线程的个数?
    信号量Semphera
  6. 在Java中wait和sleep方法的不同;
  7. wait会释放锁,sleep不会
  8. 谈谈wait/notify关键字的理解
  9. 什么导致线程阻塞?
    io 锁 wait
  10. 线程如何关闭?
    变量控制,或者响应中断
  11. 讲一下java中的同步的方法
    synchronized volatile
  12. 数据一致性如何保证
  13. 如何保证线程安全?
  14. 如何实现线程同步?
  15. 两个进程同时要求写或者读,能不能实现?如何防止进程的同步?
  16. 线程间操作List
  17. Java中对象的生命周期
  18. Synchronized用法
  19. synchronize的原理
  20. 谈谈对Synchronized关键字,类锁,方法锁,重入锁的理解
  21. static synchronized 方法的多线程访问和作用
  22. 同一个类里面两个synchronized方法,两个线程同时访问的问题
  23. volatile的原理
  24. 谈谈volatile关键字的用法
  25. 谈谈volatile关键字的作用
  26. 谈谈NIO的理解
  27. synchronized 和volatile 关键字的区别
  28. synchronized与Lock的区别
  29. ReentrantLock 、synchronized和volatile比较
  30. ReentrantLock的内部实现
  31. lock原理
    cas volatile
  32. 死锁的四个必要条件?
  33. 怎么避免死锁?
  34. 对象锁和类锁是否会互相影响?
  35. 什么是线程池,如何使用?
  36. Java的并发、多线程、线程模型
  37. 谈谈对多线程的理解
  38. 多线程有什么要注意的问题?
  39. 谈谈你对并发编程的理解并举例说明
  40. 谈谈你对多线程同步机制的理解?
  41. 如何保证多线程读写文件的安全?
  42. 多线程断点续传原理
  43. 断点续传的实现

以上是关于java面试题及参考答案的主要内容,如果未能解决你的问题,请参考以下文章

java面试题及答案2020 java最新面试题及答案2020 一

java面试题及参考答案

Java面试题,Java面试题及答案,2021最新的,都整理好了

Java实用面试题及参考答案分享

阿里巴巴Java面试题及答案(2020年6月份)

史上最全Java多线程面试题及答案