引用部分均是之后学习得出的答案,仅供参考
1.抽象类和接口
这个我都不清楚,居然也敢写熟悉Java
含有abstract修饰符的class即为抽象类,abstract
类不能创建实例对象。含有abstract方法的类必须定义为abstract class,abstract
class类中的方法不必是抽象的。abstract
class类中定义抽象方法必须在具体(Concrete)子类中实现,所以,不能有抽象构造方法或抽象静态方法。如果子类没有实现抽象父类中的所有抽象方法,那么子类也必须定义为abstract类型。
接口(interface)可以说成是抽象类的一种特例,接口中的所有方法都必须是抽象的。接口中的方法定义默认为public
abstract类型,接口中的成员变量类型默认为public static final。 下面比较一下两者的语法区别:
1.抽象类可以有构造方法,接口中不能有构造方法。
2.抽象类中可以有普通成员变量,接口中没有普通成员变量
3.抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的,不能有非抽象的普通方法。
4. 抽象类中的抽象方法的访问类型可以是public,protected和默认类型,但接口中的抽象方法只能是public类型的,并且默认即为public abstract类型。
5. 抽象类中可以包含静态方法,接口中不能包含静态方法
6. 抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,但接口中定义的变量只能是public static final类型,并且默认即为public static final类型。
7. 一个类可以实现多个接口,但只能继承一个抽象类。
2.HashMap和HashSet
HashSet怎样做到不重复:hashset没了解
HashMap的key是不能重复的,而这里HashSet的元素又是作为了map的key,当然也不能重复了。
若要将对象存放到HashSet中并保证对象不重复,应根据实际情况将对象的hashCode方法和equals方法进行重写
HashSet使用数组链表的形式存储。列表称为桶。根据散列值对桶总数求余,得到桶的序号,如果桶没满就加入。如果桶满了就会从链表变成平衡二叉树。
3.多线程
什么时候用多线程:不知道没用过
一、高并发
二、线程后台处理大任务
三、大任务
大任务处理起来比较耗时,这时候可以起到多个线程并行加快处理(例如:分片上传)。
4.spring的ioc和aop原理
5.mybatis相关
优点:
动态sql:没用过
6.介绍项目
7.redis相关
redis为什么快:我回答了它的数据结构和内存
首先,采用了多路复用io阻塞机制
然后,数据结构简单,操作节省时间
最后,运行在内存中,自然速度快
8.git相关
分支:
和 svn区别:“我没用过svn”
git保存的是快照还是不同的地方:快照
如果有很多分支都是文件快照占的地方很大吗:不知道
回退:没用过
add,commit,push的意义:就按日常使用的理解
9.mysql
很多条数据怎么显示:我回答了limit。但被指出limit在数据大到一定程度就不行了,不知道
10.笔试
Q:“你抗拒笔试吗 你对笔试有信心吗”
A:“没有信心”
Q:“如果有信心的话就出一个题写写看 ”
我怕了怕了,最后没写
11.设计模式
没了解过
12.数组和链表的区别
这个很简单
13.restful api
可能是因为我在简历里写了