HashMap和HashTable的区别:
二者都实现了Map接口,是将惟一键映射到特定的值上;主要区别在于:
HashMap和HashTable的底层实现数据结构:
HashMap和Hashtable的底层实现都是数组+链表结构实现的
HashMap何时扩容:
当向容器添加元素的时候,会判断当前容器的元素个数,如果大于等于阈值---即当前数组的长度乘以加载因子的值的时候,就要自动扩容
扩容的算法是什么:
扩容(resize)就是重新计算容量,向HashMap对象里不停的添加元素,而HashMap对象内部的数组无法装载更多的元素时,对象就需要扩大数组的长度,以便能装入更多的元素。当然Java里的数组是无法自动扩容的,方法是使用一个新的数组代替已有的容量小的数组
Java把内存划分成两种:一种是栈内存,一种是堆内存。两者的区别是:
异常整体分类:
第一范式1NF(域的原子性)
如果数据库表中的所有字段值都是不可分解的原子值,就说明该数据库表满足了第一范式
第二范式2NF(表中除主键外的字段都完全依赖主键)
第二范式是在第一范式基础上建立的。第二范式有两个重点:(1)表中必须有主键;(2)其他非主属性必须完全依赖主键,不能只依赖主键的一部分(主要针对联合主键而言)。
第三范式3NF(表中除主键外的字段都完全直接依赖,不能是传递依赖)
不能是传递依赖,即不能存在:非主键列A依赖于非主键列B,非主键列B依赖于主键的情况。第二范式和第三范式区分的关键点:2NF:非主键列是否完全依赖于主键,还是依赖于主键的一部分;3NF:非主键列是直接依赖于主键,还是直接依赖于非主键列。
Java四种线程池
第一种:newCachedThreadPool
创建一个可根据需要创建新线程的线程池,但是在以前构造的线程可用时将重用它们。
第二种:newFixedThreadPool
创建一个指定工作线程数量的线程池
第三种:newScheduledThreadPool
创建一个线程池,它可安排在给定延迟后运行命令或者定期地执行。
第四种:newSingleThreadExecutor
创建一个使用单个worker线程的Executor,以无界队列方式来运行该线程。
volatile和synchronized简介:
在Java中,为了保证多线程读写数据时保证数据的一致性,可以采用两种方式:
两者的区别:
(1)方便解耦,简化开发
通过Spring提供的IoC容器,我们可以将对象之间的依赖关系交由Spring进行控制,避免硬编码所造成的过度程序耦合。
(2)AOP编程的支持
通过Spring提供的AOP功能,方便进行面向切面的编程。
(3)声明事物的支持
在Spring中,我们可以从单调烦闷的事务管理代码中解脱出来,通过声明式方式灵活地进行事务的管理,提高开发效率和质量。
(4)方便程序的测试
可以用非容器依赖的编程方式进行几乎所有的测试工作。例如:Spring对Junit4支持,可以通过注解方便的测试Spring程序。
(5)方便集成各种优秀框架
Spring不排斥各种优秀的开源框架,相反,Spring可以降低各种框架的使用难度,Spring提供了对各种优秀框架(如Struts,Hibernate、Hessian、Quartz)等的直接支持。
(6)降低JavaEEAPI的使用难度
Spring对很多难用的JavaEEAPI(如JDBC,JavaMail,远程调用等)提供了一个薄薄的封装层,通过Spring的简易封装,这些JavaEEAPI的使用难度大为降低。
AOP用来封装横切关注点,具体可以在下面的场景中使用
以上就是动力节点java培训机构的小编针对“大型互联网企业精选Java笔试题目及答案”的内容进行的回答,希望对大家有所帮助,如有疑问,请在线咨询,有专业老师随时为你服务。
你适合学Java吗?4大专业测评方法
代码逻辑 吸收能力 技术学习能力 综合素质
先测评确定适合在学习