发布于 

Java常见面试问题汇总(一)

计网

计算机网络基础

  1. OSI七层模型是什么? 每一层的作用是什么?
  2. TCP/IP四层模型是什么? 每一层的作用是什么?
  3. 为什么网络要分层?
  4. 应用层常见的协议有哪些?
  5. 电子邮件的发送过程?
  6. 如何判断邮箱是真正存在的?

TCP和UDP

  1. ⭐ TCP和UDP的区别?
  2. 什么时候用TCP, 什么时候用UDP?
  3. HTTP是基于TCP还是UDP?
  4. 使用TCP的协议有哪些? 使用UDP的协议有哪些?
  5. ⭐⭐ TCP的三次握手和四次挥手(握手和挥手均可由客户端或服务端发起)
    • 为什么建立连接时要三次握手?
    • 第二次握手传回了ACK, 为什么还要回传SYN?
    • 为什么要四次挥手
    • 为什么不能把服务器发送的ACK和FIN合并起来, 变成三次挥手?
    • 如果第二次挥手时服务器的ACK没有送达客户端, 会怎样?
    • 为什么第四次挥手客户端要等待2MSL(报文段最长寿命)后才进入CLOSE状态?
  6. ⭐ TCP如何保证传输可靠性保证.(6)
    • TCP 如何保证数据可靠性?
    • TCP 如何实现流量控制?
    • TCP的拥塞控制是怎么实现的?
    • ARQ协议了解吗?

HTTP

  1. ⭐⭐ 从输入URL到页面展示发生了什么?
  2. HTTP状态码有哪些?
  3. ⭐ HTTP和HTTPS有什么区别?
  4. HTTP 1.0 和 HTTP 1.1 有什么区别?
  5. HTTP是不保存状态的协议, 如何保存用户状态?
  6. URL 和 URI的区别?

ARP

  1. 什么是MAC地址?
  2. ARP协议解决了什么问题, 地位如何?
  3. ARP协议的工作原理? (3) ARP表 / 广播问询 / 单播响应

知识点补充

  1. 网络攻击常见手段?

OS

OS基础

  1. 什么是操作系统?
  2. 什么是系统调用?
  3. 进程和线程的区别? 独立性, 开销.
    3.1 有了进程为什么还需要线程?
    3.2 为什么要使用多线程?
    3.3 线程间同步的方式有哪些?
  4. PCB是什么? 包含哪些信息?
  5. 进程有哪几种状态?
  6. 进程间的通信方式?
    6. 线程间同步的方式?
  7. 进程的调度算法有哪些? (5)
  8. 什么是僵尸进程和孤儿进程?
  9. 什么是死锁?
  10. 死锁的四个必要条件是什么?
  11. 如何解决死锁? (4)

OS内存管理基础

  1. 操作系统内存管理主要是做什么? (6)
  2. 什么是内存碎片? (2)
  3. 内存管理有哪几种方式? (2, 连续 + 非连续(段式, 页式和段页式))
  4. 分别介绍一下分段机制和分页机制? 分页机制和分段机制有哪些共同点和区别呢?
    13.1 什么是页缺失? (2)
    13.2 常见的页面置换算法有哪些? (5)
  5. 介绍一下快表和多级表?
  6. 逻辑地址和物理地址的区别?

虚拟内存

  1. 什么是虚拟内存? 有什么用?
  2. 局部性原理?

文件系统

  1. 文件系统主要做什么? (4)
  2. 硬连接和软连接有什么区别?
  3. 硬链接为什么不能跨文件系统?
  4. 提高文件系统性能的方式有哪些? (5)
  5. 常见的磁盘调度算法有哪些? (6)

Linux 常用命令

Java基础

Java基础与常识

  1. Java语言有哪些特点?
  2. JVM & JDK & JRE
  3. 什么是字节码? 采用字节码的好处是什么?
  4. 为什么不全部使用AOT?
  5. 为什么说Java语言”编译与解释共存”?
  6. Oracle JDK vs OpenJDK
  7. Java 和 C++的区别?

基本语法

  1. java的注释类型有哪些?
  2. 标识符和关键字的区别是什么?

基本数据类型

  1. Java的几种基本数据类型了解吗? (8)
  2. 基本类型和包装类型的区别?
  3. 包装类型的缓存机制了解吗?
  4. 自动装箱与拆箱了解吗? 原理是什么?
  5. 为什么浮点数运算时会有精度丢失的危险?
  6. 如何解决浮点数精度丢失的问题? (BigDecimal)
  7. 超过long整型的数据应该如何表示? (BigInteger)

面向对象基础

  1. 面向对象和面向过程的区别?
  2. 创建一个对象用什么运算符? 对象实体与对象引用有何不同?
  3. 构造方法有哪些特点? 时候可以被override?
  4. 面向对象的三大特征? 封装, 继承, 多态.
  5. 接口和抽象类有什么共同点和区别?
  6. 深拷贝和浅拷贝的区别? 什么是引用拷贝?

Java常见类

  1. Object类的常见方法有哪些?
  2. hashCode()有什么用?
  3. String, StringBuffer, StringBuilder的区别?
  4. 为什么String类型值不能被修改?
  5. 字符串常量池的作用了解吗?
  6. String s1 = new String("abc"); 这句话创建了几个字符串对象?

异常

  1. ExceptionError有什么区别?
  2. Checked ExceptionUnchecked Exception 有什么区别?
  3. Throwable 类常用方法有哪些?
  4. try-catch-finally如何使用?
  5. 如何使用try-with-resources代替try-catch-finally?

泛型

  1. 什么是泛型? 有什么作用?
  2. 泛型的使用方式有哪几种?

反射(?)

注解

SPI

序列化 / 反序列化

  1. 什么是序列化? 反序列化?

I/O

  1. Java IO流了解吗?
  2. IO流为什么要分为字节流和字符流呢?
  3. Java IO中的设计模式有哪些?
  4. BIO, NIO 和 AIO的区别?

语法糖

  1. 什么是语法糖?
  2. Java中有哪些常用的语法糖?

Java集合

集合概述

  1. 说说List, Set, Queue, Map四者的区别?

Collection 之 List

  1. ArrayList和LinkedList有什么区别?
  2. 说说ArrayList的扩容机制吧?

Collection 之 Set

  1. comparable 和 Comparator 的区别?
  2. 比较HashSet, LinkedHashSet, TreeSet 三者的异同.

Collection 之 Queue

  1. Queue和Deque的区别.
  2. ArrayDeque和LinkedList的区别.
  3. 介绍一下 PriorityQueue.

Map接口

  1. HashMap和Hashtable的区别.
  2. HashMap和HashSet的区别.
  3. HashMap和TreeMap的区别.
  4. HashSet如何检查重复?