一、java基础知识
- java中==和equals和hashCode的区别
- ==是运算符,基本数据类型比较的是值是否相等,引用数据类型比较的是对象的地址。
- hashCode判断对象是否在一个桶中,产生has冲突时可以通过定址法,拉链法和再哈希法解决冲突,equals方法在对象具有相同的hash值后比较对象的各个值是否相等。
- int和Integer的区别
- Integer是int的包装类,是引用数据类型,可以赋值为null,int是基本数据类型,默认为0,不可以为空。
- Integer的valueOf函数会对-128-127之间的数进行缓存,和int的值是相等的,同样指向常量池(1.7在方法区,1.8在Java堆)。
Integer a=5;
Integer b=new Integer(5);
int c=5;
System.out.println(a==b);false,(不会自动拆箱)new的对象指向堆,非new指向常量池。
System.out.println(a==c);true a自动拆箱,值相等
System.out.println(b==c);true b自动拆箱,值相等
- 抽象类的意义(abstract声明的类为抽象类)
- 为子类提供一个公共的类型。
- 封装子类中重复的内容(成员变量和方法)。
- 定义抽象方法,子类虽然有不同的实现,但该方法的定义是一致的。
- 接口和抽象类的区别
- String、StringBuffer、StringBuilder区别?
- 在执行速度上: StringBuilder > StringBuffer > String .这是在一般情况下的结果
- 在安全性上: String、StringBuilder 线程非安全 || StringBuffer 线程安全
- 泛型中extends和super的区别
- ? 通配符类型
- <? extends T> 表示类型的上界,表示参数化类型的可能是T 或是 T的子类
- <? super T> 表示类型下界(Java Core中叫超类型限定),表示参数化类型是此类型的超类型(父类型),直至Object
- 进程和线程的区别
- 进程是操作系统资源分配的基本单位,而线程是任务调度和执行的基本单位。
- 每个进程都有独立的代码和数据空间(程序上下文),程序之间的切换会有较大的开销;线程可以看做轻量级的进程,同一类线程共享代码和数据空间,每个线程都有自己独立的运行栈和程序计数器(PC),线程之间切换的开销小。
- 在操作系统中能同时运行多个进程(程序);而在同一个进程(程序)中有多个线程同时执行(通过CPU调度,在每个时间片中只有一个线程执行)
- 系统在运行的时候会为每个进程分配不同的内存空间;而对线程而言,除了CPU外,系统不会为线程分配内存(线程所使用的资源来自其所属进程的资源),线程组之间只能共享资源。
- 没有线程的进程可以看做是单线程的,如果一个进程内有多个线程,则执行过程不是一条线的,而是多条线(线程)共同完成的;线程是进程的一部分,所以线程也被称为轻权进程或者轻量级进程。
- final,finally,finalize的区别
finally不会执行的情况:System.exit(),守护线程被终止。https://blog.csdn.net/hj7jay/article/details/68483039
- 序列化的方式
- 成员内部类、静态内部类、局部内部类和匿名内部类的理解,以及项目中的应用
https://blog.csdn.net/github_37130188/article/details/94589808
- 讲一下常见编码方式?
https://blog.csdn.net/lengdetianxia2010/article/details/71125647
- Java的异常体系
- java当中的四种引用
- java深拷贝和浅拷贝的区别是什么?
- 你对String对象的intern()熟悉么?
https://blog.csdn.net/guoxiaolongonly/article/details/80425548
二、多线程
三、集合
四、JVM
五、计算机网络
六、数据库
七、spring
八、消息
九、测试
十、其他
Linux awk统计日志中出现过的IP(或出现次数最多的N个IP)