面试--java基础
Java基础
- Java 中的几种基本数据类型了解么?
- 基本类型和包装类型的区别?
- 包装类型的缓存机制了解么?
- 成员变量与局部变量的区别?
- 静态变量有什么作用?
- 静态方法为什么不能调用非静态成员?
- 重载和重写有什么区别?
- 面向对象和面向过程的区别
- 面向对象三大特征
- 接口和抽象类有什么共同点和区别?
- 深拷贝和浅拷贝区别了解吗?什么是引用拷贝?
- == 和 equals() 的区别
- String、StringBuffer、StringBuilder 的区别?
- Exception 和 Error 有什么区别?
- 什么是序列化和反序列化?
- 序列化协议对应于 TCP/IP 4 层模型的哪一层?
- 谈谈反射机制的优缺点
- JDK 动态代理和 CGLIB 动态代理对比
- 静态代理和动态代理的对比
集合
- ArrayList 与 LinkedList 区别?
- 比较 HashSet、LinkedHashSet 和 TreeSet 三者的异同
- HashMap 和 Hashtable 的区别
- HashMap 和 TreeMap 区别
- HashMap 的长度为什么是 2 的幂次方
- ConcurrentHashMap 和 Hashtable 的区别
- JDK 1.7 和 JDK 1.8 的 ConcurrentHashMap 实现有什么不同?
- ConcurrentHashMap 能保证复合操作的原子性吗?
并发/线程
- Java 线程和操作系统的线程有啥区别?
- 程序计数器为什么是私有的?
- 虚拟机栈和本地方法栈为什么是私有的?
- 如何创建线程?
- 说说线程的生命周期和状态?
- 什么是线程上下文切换?
- Thread#sleep() 方法和 Object#wait() 方法对比
- 可以直接调用 Thread 类的 run 方法吗?
- 并发与并行的区别
- volatile如何保证变量的可见性?/防止 JVM 的指令重排序/不能保证对变量的操作是原子性的
- 乐观锁(实现使用版本号机制或 CAS 算法)和悲观锁
- CAS 算法存在哪些问题?/ ABA 问题/循环时间长开销大/只能保证一个共享变量的原子操作
- synchronized 底层原理了解吗?/ synchronized 同步语句块的实现使用的是 monitorenter 和
monitorexit 指令,其中 monitorenter 指令指向同步代码块的开始位置,monitorexit
指令则指明同步代码块的结束位置。synchronized 修饰的方法并没有 monitorenter 指令和 monitorexit
指令,取而代之的是 ACC_SYNCHRONIZED 标识,该标识指明了该方法是一个同步方法。不过两者的本质都是对对象监视器
monitor 的获取。 - 公平锁和非公平锁有什么区别?
- 可中断锁和不可中断锁有什么区别?
- 共享锁和独占锁有什么区别?
- ThreadLocal 原理了解吗?
- ThreadLocal 内存泄露问题是怎么导致的?
- 如何创建线程池?
- 线程池常见参数有哪些?如何解释?
- 为什么不推荐使用内置线程池?/ Executors 返回线程池对象的弊端
- 线程池处理任务的流程了解吗?
- AQS 是什么?/抽象队列同步器AbstractQueuedSynchronizer
- AQS 的原理是什么?
- Semaphore 的原理是什么?
- CountDownLatch 的原理是什么?
IO
- 字节流InputStream(字节输入流)/ OutputStream(字节输出流)
- 字符流Reader(字符输入流)/ Writer(字符输出流)
- 字节缓冲流BufferedInputStream(字节缓冲输入流)/ BufferedOutputStream(字节缓冲输出流)
- 字符缓冲流BufferedReader (字符缓冲输入流)/BufferedWriter(字符缓冲输出流)
- Java IO 设计模式总结/装饰器模式/适配器模式/工厂模式/观察者模式
- Java 中 3 种常见 IO 模型/ BIO (Blocking I/O)/ NIO (同步非阻塞 IO/ I/O 多路复用)/
AIO (Asynchronous I/O) - NIO 核心组件/ Buffer(缓冲区)/ Channel(通道)/ Selector(选择器)
- NIO 零拷贝
JVM
- 线程私有的:程序计数器/虚拟机栈(栈帧:局部变量表、操作数栈、动态链接、方法返回地址)/本地方法栈
- 线程共享的:堆(新生代内存(Young Generation: Eden 区、两个 Survivor 区 S0 和
S1)/老生代(Old Generation)/永久代(Permanent Generation)
Metaspace(元空间))/方法区/直接内存 (非运行时数据区的一部分) - 对象的创建过程
- 对象的内存布局(对象头(Header)、实例数据(Instance Data)和对齐填充(Padding))
- 对象的访问定位(使用句柄、直接指针)
- 死亡对象判断方法(引用计数法/可达性分析算法)
- 引用类型总结(强引用/软引用/弱引用/虚引用)
- 垃圾收集算法(标记-清除算法/复制算法/标记-整理算法/分代收集算法)
- 垃圾收集器(Serial 收集器/ ParNew 收集器/ Parallel Scavenge 收集器/ Serial Old 收集器/
Parallel Old 收集器/ CMS 收集器/ G1 收集器/ ZGC 收集器) - 类的生命周期(加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化(Initialization)、使用(Using)和卸载(Unloading))
- 双亲委派模型
- JVM参数
网络
- OSI 七层模型是什么?每一层的作用是什么?
- TCP/IP 四层模型是什么?每一层的作用是什么?
- 应用层有哪些常见的协议?
- 传输层有哪些常见的协议?
- 网络层有哪些常见的协议?
- 从输入 URL 到页面展示到底发生了什么?
- HTTP 和 HTTPS 有什么区别?
- HTTP 是不保存状态的协议, 如何保存用户状态?
- Cookie 和 Session 有什么区别?
- WebSocket 和 HTTP 有什么区别?
- WebSocket 的工作过程是什么样的?
- TCP 与 UDP 的区别
- TCP 三次握手和四次挥手
操作系统
- 什么是用户态和内核态?
- 为什么要有用户态和内核态?只有一个内核态不行么?
- 用户态切换到内核态的 3 种方式/系统调用/中断/异常
- 系统调用的过程了解吗?
- 什么是进程和线程?
- 进程和线程的区别是什么?
- 线程间的同步的方式有哪些?
- PCB 是什么?包含哪些信息?
- 进程有哪几种状态?
- 进程间的通信方式有哪些?
- 进程的调度算法有哪些?
- 什么是僵尸进程和孤儿进程?
- 什么是死锁?
- 产生死锁的四个必要条件是什么?
- 解决死锁的方法
- 内存管理主要做了什么?
- 什么是内存碎片?
- 常见的内存管理方式有哪些?
- 什么是虚拟内存?有什么用?
- 什么是虚拟地址和物理地址?
- 虚拟地址与物理内存地址是如何映射的?
- 文件系统主要做了什么?
- 常见的磁盘调度算法有哪些?
原文地址:https://blog.csdn.net/secaiyingzi/article/details/142762166
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!