- hashMap实现原理:hashMap是基于hash算法实现的,通过put(key,value)存储,get(key)来获取。当传入key时,hashMap会根据key.hashCode计算哈希值,根据hash值将value存入bucket里面。当计算出的hash值相同时(即出现hash冲突),hashMap采用链表和红黑树存储相同hash值的value,当hash冲突个数比较少时,使用链表否则使用红黑树。
- Vector是线程安全使用了Synchronized实现线程同步,在扩容方面其每次都会增加一倍,而ArrayList只会增加50%
- Queue中poll()和remove()区别:相同点:都是返回第一个元素,并将相应元素进行删除 不同点:若没有元素,poll()会返回null,remove()会报NoSuchElementException异常
- Iteartoe和ListIterator区别:Iterator内部实现了Collection的所有遍历接口,可以对list和set进行单向遍历;ListIterator只能遍历list集合,它是对Iterator接口的继承,可以实现双向遍历,同时可以添加,替换某个元素等。
-
Collections.unmodifiableCollection(list)创建一个不能被修改的list,如果对其进行修改,则会报unsupportedOperationException异常
- 反射即可以通过一个类获取到该类的属性和方法,并且可以直接通过类来调用类中的方法和属性。
- java序列化作用是保存各种对象在内存中的状态,并且可以从内存当中在读取出来。用到序列化情况:1.需要将内存中的文件保存到文件或数据库当中 2.使用套接字在网上传递对象时 3.通过RMI传视对象时
- 动态代理:动态代理是运行时动态生成代理类,实现动态代理方式有两种:1.JDK原生动态代理 ,是基于接口实现的 2.cglib动态代理,是基于继承当前类的子类实现的 ( proxy类,invoked()方法进行执行 )
- 并发与并行:并发是指多个处理器或多核处理器同时处理多个任务 并行:多个任务在同一个CPU核上,按照细分时间片轮流交替执行,在逻辑上看是一块执行
- 守护线程是在后台执行的一种程序,独立于运行周期之外并且周期性执行某种任务或等待处理某些发生事件。如java的垃圾回收机制
- 线程状态变化:
-
execute():执行Runable()类型任务 submit():可以执行Runable和callable类型任务
-
黑盒测试:不需要写代码,给入输入值,看程序是否能够输出预期的值
-
白盒测试:需要写代码,关注程序具体执行路程。
-
注解使用范围:编译器;程序解析使用
-
mysql删除表:delete from 表名 where 条件 ;truncate table 表名(truncate是先删除后创建了一个表)
-
mysql语法:select 字段列表 From 表名 where 查询条件 group by 分组字段 having 分组之后条件 order by 排序 limit 分页限定
-
mysql中where 和 having 区别:where 是在分组之前对数据进行限定,并且where之后不能跟聚合函数;having 是在分组之后对数据进行限定,在having后面可以使用聚合函数
-
数据库备份:mysqldump -u 用户名 -p 密码 数据库名称 > 保存路径;使用数据库连接工具
-
数据库事务控制指当一个操作当中包含多个业务操作时,要么这些操作同时成功,要么同时失败
-
JDBC:jdbc是官方定义的一套操作所有关系型数据库的规则(接口),各个数据库去实现这些接口,提供数据库驱动jar包,根据这套接口规则,执行驱动中jar包中的实现类
-
JDBC连接:1.导入jar包 2.注册驱动 3.创建连接 4.书写sql语句 5.执行sql语句 6.关闭连接