Java编程基础
语言基础
基础语法
- 为什么重写 equals 还要重写 hashcode?
hashMap中如果key使用自定义类型,要重写hashcode和equals - == 和 equals 比较的区别?
- 对于==,比较的是值是否相等 (其实==比较的不管是基本数据类型,还是引用数据类型的变量,比较的都是值,只是引用类型变量存的值是对象的地址)
- 如果作用于基本数据类型的变量,则直接比较其存储的 值是否相等,
- 如果作用于引用类型的变量,则比较的是所指向的对象的地址是否相等。
- 对于equals方法,比较的是是否是同一个对象
- equals()方法不能作用于基本数据类型的变量,
- equals()方法存在于Object类中,而Object类是所有类的直接或间接父类,所以说所有类中的equals()方法都继承自Object类,在没有重写equals()方法的类中,调用equals()方法其实和使用==的效果一样,也是比较的是引用类型的变量所指向的对象的地址,不过,Java提供的类中,有些类都重写了equals()方法,重写后的equals()方法一般都是比较两个对象的值,比如String类。
- 为啥有时会出现 4.0 - 3.6 = 0.40000001 这种现象?
在二进制系统中无法精确地表示分数1/10,这就好像十进制无法精确地表示分数1/3一样。 - final 关键字的作用
final作用 - 介绍 Java 的集合类
java中的集合 - ArrayList 和 LinkedList 的区别
区别
面向对象
接口
容器
异常
泛型
反射
反射三种方式
- 通过类的对象来进行获取:Student stu = new Student(); Class clazz = stu.getClass();
- 通过类名来进行获取:Class clazz = Student.class;
- 通过类的相对路径来进行获取:Class clazz = Class.forName(“com.jdbc.mysql.Driver”);
注解
I/O
Java8
- java 8 有哪些新特性?
- 谈谈你理解的 HashMap,讲讲其中的 get put 过程。HashMap详解
- 有没有线程安全的并发容器?
并发容器JUC(java.util.concurrent)
并发容器里面提供的线程安全的集合和map。
ArrayList—>CopyOnWriteArrayList
HashSet—>CopyOnWriteArraySet
TreeSet—>ConcurrentSkipListSet
HashMap(线程不安全)—>ConcurrentHashMap
TreeMap—>ConcurrentSkipListMap - ConcurrentHashMap 是如何实现的?(目前还不理解)
ConcurrentHashMap - HashMap 为什么不用跳表替换红黑树呢?理解
- java中实现多线程的方式解释
SpringBoot
Spring
算法与数据结构
操作系统
计算机网络
- 计算机网络各层有哪些协议?解释
- TCP 和 UDP 协议的区别?解释
- TCP 为什么需要三次握手和四次挥手?解释
- HTTP 和 HTTPS 协议的区别?解释
- get和post的区别?解释
- cookie和session的区别?解释
MySQL
- MySQL 索引的最左原则解释
- InnoDB 和 MyIsam 引擎的区别?解释
- 有哪些优化数据库性能的方法?解释1 解释2
- 如何定位慢查询?解释
- MySQL 支持行锁还是表锁?分别有哪些优缺点?解释
- mysql事务隔离级别 换读 脏读 解释1 解释2
Redis
- redis中的数据类型
包括String,List,Set,Zset,Hash - 题目总结
Linux
- 如何查看某个进程的运行状态?
- 如何在 Linux 上查看 2 G 的大文件?
- Linux 软链接和硬链接的区别
- 查看进程PID以及进程详细信息?
Linux在启动一个进程时,系统会在/proc下创建一个以PID命名的文件夹,在该文件夹下会有我们的进程的信息,其中包括一个名为exe的文件即记录了绝对路径,通过ll或ls –l命令即可查看。 - linux中查看进程的命令 解释
ll /proc/PID
cwd符号链接的是进程运行目录
exe符号连接就是执行程序的绝对路径
cmdline就是程序运行时输入的命令行命令
environ记录了进程运行时的环境变量
fd目录下是进程打开或使用的文件的符号连接