面试来源: Java面试宝典V9.0.pdf

面向对象的特征(了解)

  • 封装、继承、多态

    Java 的基本数据类型有哪些(了解)

  • int 、long 、byte、shrot、boolean 、float、char、double

    JDK JRE JVM 的区别 (必会)

  • jdk是Java的开发工具包

  • jre是Java的运行环境
  • jvm是Java的虚拟机

    重载和重写的区别(必会)

  • 重写:方法名相同、参数相同

  • 重载:方法名不同,参数不同

    Java 中==和 equals 的区别(必会)

  • ==比较的是值是否相等

  • equals是比较内容地址是否相等

    String、StringBuffer、StringBuilder 三者之间的区别(必会)

  • string是字符串常量

  • stringBuffer是线程安全的
  • stringBuilder是线程不安全的,可以对字符串进行操作

    接口和抽象类的区别是什么?(必会)

  • 接口的实现类implements,抽象类的子类用extends来继承

  • 抽象类有构造函数、接口不能
  • 类可以实现多个接口,但是抽象类只能继承一个

    string 常用的方法有哪些?(了解)

  • replaceAll()替换

  • substring()截取
  • length()长度
  • split()分割
  • tostring()转化为字符串方法

    什么是单例模式?有几种?(必会)


  • 懒汉式
  • 饿汉式

    反射(了解)

  • 通过class去获取类的对象、私有方法的属性

    jdk1.8 的新特性(高薪常问)

  • 函数式接口

  • stream流
  • 时间类型

    Java 的异常(必会)

  • erro与Exception

    BIO、NIO、AIO 有什么区别?(高薪常问)


  • Threadloal 的原理(高薪常问)


  • 同步锁、死锁、乐观锁、悲观锁 (高薪常问)

  • 同步锁是在同一时间的锁住

  • 死锁是在2个线程在争取一个资源
  • 乐观锁是很乐观的态度,不会出现并发的情况synchronized ()
  • 悲观锁是很悲惨的态度,假设每个地方都可以发生并发用version来判断每个方法都加了一个锁synchronized ()

    说一下 synchronized 底层实现原理?(高薪常问)


  • synchronized 和 volatile 的区别是什么?(高薪常问)


  • synchronized 和 Lock 有什么区别? (高薪常问)


  • 手写冒泡排序?(必会)

    1. for (int i = 0; i < arr.length; i++) {
    2. for (int j = 0; j < arr.length - 1 - i; j++) {
    3. if (arr[j] > arr[j + 1]) {
    4. int temp = arr[j];
    5. arr[j] = arr[j + 1];
    6. arr[j + 1] = temp;
    7. }
    8. }

    集合(必会)

  • 集合有2大类collection与map

  • collection是list、set —-list存储重复的数据、可以用for运行遍历—-arraylist是底层数组实现—原因有下标来查询比较快,增删慢—-LinkedList底层是双向链表实现—原因链表的特性增删比较快,查询比较慢—-set存储不重复的数据、不能for—hashset存无序的、底层hashmap实现—-treeset用于排序底层是treemap实现

    常见的数据结构(了解)
  • 数组、栈、堆、树、图、链表

    集合和数组的区别(了解)
  • 数组固定长度、集合长度可变

    List 和 Map、Set 的区别(必会)
  • map存储键值对

  • set存储无序的、不能重复
  • list存储有序的、可以重复

    List 和 Map、Set 的实现类(必会)
  • list 有序,可重复—-arraylist底层是数组、查询快,增删慢

  • linkedlist底层链表、查询慢、增删快
  • Vector 线程安全,已经弃用
  • set 无序,唯一—-hashset底层哈希表 —linkedhashset链表和哈希表
  • —treeset底层红黑树 用于排序
  • map实现类—-hashmap底层map接口实现、非线程安全支持存null和null建
  • hashtable线程安全、不支持null和null建
  • treemap线程不安全,用于根据键排序

    Hashmap 的底层原理(高薪常问)
  • hashmap在jdk1.8以前是数组+链表但是在 JDK1.8 后对 HashMap 进行了底层优化,改为了由 数组+链表或者数值+红黑树实现,主要的目的是提高查找效率

    Hashmap 和 hashtable ConcurrentHashMap 区别(高薪常问)
  • hashmap线程安全的

  • hashtable线程不安全的
  • ConcurrentHashMap 是juc并发包下的,解决多线程下并发问题,线程不安全的

    多线程(必会)

    什么是线程?线程和进程的区别?(了解)
  • 进程是线程的最小单元

  • 线程是一个程序执行的任务

    创建线程有几种方式(必会)
  • 继承Thread

  • 实现Callable
  • 实现Runnable
  • 通过实现线程池来实现多线程()Executor方法

    Runnable 和 Callable 的区别?(必会)

  • 如何启动一个新线程、调用 start 和 run 方法的区别?(必会)

  • 线程有哪几种状态以及各种状态之间的转换?(必会)
  • 线程开始-线程等待-线程苏醒-线程销毁

    线程相关的基本方法?(必会)
  • start()

  • run()
  • sleep()

    wait()和 sleep()的区别?(必会)
  • 线程等待

  • 线程睡眠

    线程池

    为什么需要线程池(了解)
  • 提高的程序的效率,并行执行

    线程池的分类(高薪常问)

  • 核心参数(高薪常问)

  • 线程池的原理(高薪常问)

  • 拒绝策略(了解)

  • 线程池的关闭(了解)

  • Jvm

    JDK1.8 JVM 运行时内存(高薪)

  • JDK1.8 堆内存结构(高薪常问)

  • Gc 垃圾回收(高薪常问)

  • JVM 调优参数(了解)

  • Web

    网络通讯部分

    TCP 与 UDP 区别? (了解)
  • tcp是三次握手、四次挥手实现网络通信、网络可靠不会出现数据丢失问题

  • udp是出现数据丢失问题

    什么是 HTTP 协议?

  • TCP 的三次握手

    HTTP 中重定向和请求转发的区别?
  • 重定向是

  • 请求转发

    Get 和 Post 的区别?
  • get路径传输

  • post请求体传输

    cookie 和 session 的区别?(必会)
  • cookie是服务端会话存储

  • seesion是浏览器会话存储

    Jsp 和 Servlet(了解)
  • jsp是后端就是写页面

  • servlet是Java的web

    Ajax 的介绍(必会)
  • 通过ajax可以发送请求