后端开发常见面试题目

Java编程基础

语言基础

基础语法

  1. 为什么重写 equals 还要重写 hashcode?
    hashMap中如果key使用自定义类型,要重写hashcode和equals
  2. == 和 equals 比较的区别?
  • 对于==,比较的是值是否相等 (其实==比较的不管是基本数据类型,还是引用数据类型的变量,比较的都是值,只是引用类型变量存的值是对象的地址)
    • 如果作用于基本数据类型的变量,则直接比较其存储的 值是否相等,
    • 如果作用于引用类型的变量,则比较的是所指向的对象的地址是否相等。
  • 对于equals方法,比较的是是否是同一个对象
    • equals()方法不能作用于基本数据类型的变量,
    • equals()方法存在于Object类中,而Object类是所有类的直接或间接父类,所以说所有类中的equals()方法都继承自Object类,在没有重写equals()方法的类中,调用equals()方法其实和使用==的效果一样,也是比较的是引用类型的变量所指向的对象的地址,不过,Java提供的类中,有些类都重写了equals()方法,重写后的equals()方法一般都是比较两个对象的值,比如String类。
  1. 为啥有时会出现 4.0 - 3.6 = 0.40000001 这种现象?
    在二进制系统中无法精确地表示分数1/10,这就好像十进制无法精确地表示分数1/3一样。
  2. final 关键字的作用
    final作用
  3. 介绍 Java 的集合类
    java中的集合
  4. ArrayList 和 LinkedList 的区别
    区别

面向对象

封装、继承、多态

接口

容器

异常

泛型

反射

反射三种方式

  • 通过类的对象来进行获取:Student stu = new Student(); Class clazz = stu.getClass();
  • 通过类名来进行获取:Class clazz = Student.class;
  • 通过类的相对路径来进行获取:Class clazz = Class.forName(“com.jdbc.mysql.Driver”);

注解

I/O

  1. 协程
    讲解一
    讲解二
  2. Java编程的逻辑

Java8

  1. java 8 有哪些新特性?
    后端开发常见面试题目_第1张图片
  2. 谈谈你理解的 HashMap,讲讲其中的 get put 过程。HashMap详解
  3. 有没有线程安全的并发容器?
    并发容器JUC(java.util.concurrent)
    并发容器里面提供的线程安全的集合和map。
    ArrayList—>CopyOnWriteArrayList
    HashSet—>CopyOnWriteArraySet
    TreeSet—>ConcurrentSkipListSet
    HashMap(线程不安全)—>ConcurrentHashMap
    TreeMap—>ConcurrentSkipListMap
  4. ConcurrentHashMap 是如何实现的?(目前还不理解)
    ConcurrentHashMap
  5. HashMap 为什么不用跳表替换红黑树呢?理解
  6. java中实现多线程的方式解释

SpringBoot

  1. springboot中异步操作是怎么实现的?解释
  2. springboot中的常见注解

Spring

常见问题

算法与数据结构

  1. leetcode100题目
  2. leetcode初级算法书籍

操作系统

  1. 什么是死锁?死锁产生的条件?解释
  2. 线程有哪几种状态?解释
  3. 有哪些进程调度算法?解释
    进程调度算法
  4. 什么是缓冲区溢出?解释

计算机网络

  1. 计算机网络各层有哪些协议?解释
  2. TCP 和 UDP 协议的区别?解释
  3. TCP 为什么需要三次握手和四次挥手?解释
  4. HTTP 和 HTTPS 协议的区别?解释
  5. get和post的区别?解释
  6. cookie和session的区别?解释

MySQL

  1. MySQL 索引的最左原则解释
  2. InnoDB 和 MyIsam 引擎的区别?解释
  3. 有哪些优化数据库性能的方法?解释1 解释2
  4. 如何定位慢查询?解释
  5. MySQL 支持行锁还是表锁?分别有哪些优缺点?解释
  6. mysql事务隔离级别 换读 脏读 解释1 解释2

Redis

  1. redis中的数据类型
    包括String,List,Set,Zset,Hash
  2. 题目总结

Linux

  1. 如何查看某个进程的运行状态?
  2. 如何在 Linux 上查看 2 G 的大文件?
  3. Linux 软链接和硬链接的区别
  4. 查看进程PID以及进程详细信息?
    Linux在启动一个进程时,系统会在/proc下创建一个以PID命名的文件夹,在该文件夹下会有我们的进程的信息,其中包括一个名为exe的文件即记录了绝对路径,通过ll或ls –l命令即可查看。
  5. linux中查看进程的命令 解释
ll /proc/PID

后端开发常见面试题目_第2张图片
cwd符号链接的是进程运行目录
exe符号连接就是执行程序的绝对路径
cmdline就是程序运行时输入的命令行命令
environ记录了进程运行时的环境变量
fd目录下是进程打开或使用的文件的符号连接

介绍常见的设计模式

设计模式代码讲解

项目经历

你可能感兴趣的:(后端面试,java,面试,后端,java)