【面试题】Java面试题汇总(无解答)
此内容会持续补充。。。
基础
- short s1 = 1; s1 = s1 + 1;有错吗? short s1 = 1; s1 += 1; 有错吗?
- String str=”aaa”,与 String str=new String(“aaa”)一样吗?
- String 和 StringBuilder、StringBuffer 的区别?
- Sring最大能存多大内容?
- 重载和重写的区别
- 构造方法能不能重写?能不能重载?
- 数组实例化有几种方式?
- Java 中各种数据默认值
- Object 类常用方法有那些?
- java 中是值传递还是引用传递?
- 形参与实参区别
- 内部类与静态内部类的区别?
- Static 关键字有什么作用?
- final 在 java 中的作用,有哪些用法?
- Char 类型能不能转成 int 类型?能不能转化成 string 类型,能不能转成 double 类型
- 讲下 java 中的 math 类有那些常用方法?
- 什么是拆装箱?
- 一个 java 类中包含那些内容?
- 针对浮点型数据运算出现的误差的问题,你怎么解决?
- 面向对象的特征有哪些方面?
- 普通类与抽象类有什么区别?
- 什么是接口?接口有什么特点?为什么需要接口?
- 抽象类和接口的区别?
- 接口是否可继承(extends)接口?抽象类是否可实现(implements)接口?抽象类是否可继承具体类(concreteclass)?
- 访问修饰符 public,private,protected,以及不写(默认friendly) 时的区别?
- Hashcode 的作用
- 深拷贝和浅拷贝的区别是什么?
- JDBC 操作的步骤
- 什么时候用 assert
- 数组有没有 length()这个方法? String 有没有 length()这个方法
- 用最有效率的方法算出 2 乘以 8 等于几?
- 一个".java"源文件中是否可以包含多个类(不是内部类)?有什么限制?
集合
- ArrayList 和 linkedList 的区别
- HashMap 排序
- Collection 包结构,与 Collections 的区别
- 说说 List,Set,Map 三者的区别
- 并发集合和普通集合如何区别?
- Map 有什么特点
- 集合类存放于 Java.util 包中, 主要有几 种接口
- 什么是 list 接口
- 说说 ArrayList(数组)
- Vector( 数组实现、 线程同步)
- 说说 LinkList(链表)
- 什么 Set 集合
- HashSet( Hash 表)
- 什么是 TreeSet(二叉树)
- List 和 Map、Set 的区别?
- 数组和链表分别比较适合用于什么场景,为什么?
- 说说 ConcurrentHashMap
- Java 中 ArrayList 和 LinkedList 区别?
- TreeMap(可排序)
- 请用两个队列模拟堆栈结构?
- Map 中的 key 和 value 可以为 null?
- 数据结构基础之双向链表
- HashMap 的底层实现
- ConcurrentHashMap 和 Hashtable 的区别
- 说出 ArrayList,Vector,LinkedList 的存储性能和特性
- 你所知道的集合类都有哪些?主要方法?
- HashMap 原理,java8 做了什么改变
- poll()方法和 remove()方法的区别?
- 写一段代码在遍历 ArrayList 时移除一个元素
异常
- Java 中异常分为哪两种?
- 异常的处理机制有几种?
- 如何自定义一个异常
- try catch fifinally,try 里有 return,finally 还执行么?
- Excption 与 Error 包结构及区别
- Thow 与 thorws 区别
- final、finally、finalize 的区别?
- 说出最常见的 5 个 RuntimeException?
- 在 Java 异常处理的过程中,你遵循的那些最好的实践是什么?
- 你遇到过 OutOfMemoryError 错误嘛?你是怎么搞定的?
IO
- Java 中 IO 流?
- 字节流如何转为字符流?
- 常用 io 类有那些
- IO模型有哪些
- 阻塞 IO 模型
a. 读取数据时一直等待数据准备完毕 - 字节流和字符流的区别?
- 多路复用 IO 模型
- 如何实现对象克隆?
- 异步 IO 模型
- 什么是 java 序列化,如何实现 java 序列化?
- NIO 的缓冲区
- 面向 Stream 和面向 Buffer
- Channel
- NIO 和 IO 对应用的设计有何影响
- Selector
- Java IO 与 NIO 的区别
- 字节流与字符流的区别
- 非阻塞 IO 模型
- 信号驱动 IO 模型
- NIO 的非阻塞
- Buffer
反射
- 什么是反射?
- Java 反射创建对象效率高还是通过 new 创建对象的效率高?
- 哪里会用到反射机制?
- 反射机制的优缺点?
- 实现 Java 反射的类:
- 动态代理是什么?有哪些应用?
- Java 反射 API
- 获取 Class 对象有几种方法
- 反射的实现方式
- 反射使用步骤(获取 Class 对象、调用对象方法)
序列化
- 什么是 java 序列化?
- Serializable 实现序列化
- 如何实现 java 序列化?
- 哪些变量不会被序列化?
- 序列化作用
- 序列化场景
注解
- 4 种标准元注解是哪四种?
- 什么是注解?他们的典型用例是什么?
- 从标准库中描述一些有用的注解。
- 注解原理
- 可以从注解方法声明返回哪些对象类型?
- 哪些程序元素可以注解?
- 什么是重复注解?
- 怎么能检索注解?这与保留政策有何关系?
- 是否可以扩展注解?
并发
- 什么是线程?
- 继承 Thread 类
- 如何在 java 中实现线程
- ExecutorService、 Callable、 Future 有返回值线程
- 实现多线程 Thread 和 Runnable 区别?
- 4 种线程池:单线程,计划线程,固定线程,可缓存线程
- 解释 java 中的 volatile 变量:直接操作内存,数据立刻展示
- notify()和 notifyAll()有什么区别?:通知一个线程,通知全部全程
- sleep()和 wait() 有什么区别?:睡眠一定实践自动唤醒;等待需要其他线程通知唤醒。
- volatile 是什么?可以保证有序性吗?只保证可见性,不保证有序性
- Thread 类中的 start() 和 run() 方法有什么区别?开始进入准备实践,运行即刻执行。
- 为什么 wait, notify 和 notifyAll 这些方法不在 thread 类里面?
- 共享锁和独占锁
- Java 中 interrupted 和 isInterruptedd 方法的区别?
- Java 中 synchronized 和 ReentrantLock 有什么不同?
- 有三个线程 T1,T2,T3,如何保证顺序执行?
- SynchronizedMap 和 ConcurrentHashMap 有什么区别?
- 什么是线程安全
- 重量级锁(Mutex Lock)
- Java 线程池中 submit() 和 execute()方法有什么区别?
- 偏向锁
- 说说自己是怎么使用 synchronized 关键字,在项目中用到了吗 synchronized 关键字最主要的三种使用方式
- 什么是线程安全?Vector 是一个线程安全类吗?
- Java 中实现多线程有几种方法
- 实现 Runnable 接口。
- 如何停止一个正在运行的线程
- 线程基本方法
- 线程让步(yield)
- 线程唤醒(notify)
锁
- 锁有哪些分类
- Java 中 synchronized 和 ReentrantLock 有什么不同?
- 共享锁和独占锁
- 自旋锁和自适应自旋
- 偏向锁 轻量级锁 重量级锁(Mutex Lock)
JVM
- JVM 运行时内存模型
- 64 位 JVM 中,int 的长度是多数?
- 新生代、老年代、永久代
- 32 位和 64 位的 JVM,int 类型变量的长度是多数?
- JAVA8 与元数据
- 分代收集算法
- 怎样通过 Java 程序来判断 JVM 是 32 位 还是 64 位?
- 分代收集算法
- JRE、JDK、JVM 及 JIT 之间有什么不同?
- 解释 Java 堆空间及 GC?
- JVM 内存区域
- JAVA 强引用、软引用、弱引用、虚引用
- 虚拟机栈(线程私有)
- 分代收集算法
- 你能保证 GC 执行吗?
- 怎么获取 Java 程序使用的内存?堆使用的百分比?
- 在老年代-标记整理算法
- 描述一下 JVM 加载 class 文件的原理机制
- Serial Old 收集器(单线程标记整理算法)
- 堆(Heap-线程共享) -运行时数据区
- G1 收集器
- JVM 类加载机制
- 堆和栈的区别
- 什么是 Java 虚拟机?为什么 Java 被称作是“平台无关的编程语言”?
- Parallel Old 收集器(多线程标记整理算法)
- 垃圾收集算法
- Minor GC 与 Full GC 分别在什么时候发生?
- 你知道哪些 JVM 性能调优
- 说一下 JVM 的主要组成部分及其作用?
- 队列和栈是什么?有什么区别?
网络
- HTTP 响应码 301 和 302 代表的是什么?有什么区别?
- 简单说一下http协议?
- HTTP与HTTPS的区别?
- HTTP协议下客户端请求报文是什么?
- HTTP协议服务器响应报文有哪些?
- HTTP协议中的请求方法有哪些?
- 常见的HTTP状态码有哪些?
- forward 和 redirect 的区别?
- 简述 tcp 和 udp的区别?
- TCP 为什么要三次握手,两次不行吗?为什么?
- 说一下 TCP 粘包是怎么产生的?
- OSI 的七层模型都有哪些?
- GET和POST的区别?
- 如何实现跨域?
- 什么是WebSocket?
- WebSocket与HTTP的关系
- WebSocket与Socket的关系
- WebSocket示例