java企业必问面试题_<精选>Java企业面试题思路,必看(四)

基础

1. ArraList的默认初始容量是多少?在什么情况下ArraList会自动扩容?

答案:

ArrayList的默认初始容量是10。当向ArrayList中添加对象的时候,原对象的数目加1如果大于原底层数组长度的时候ArrayList会进行自动扩容。

分析:

所谓的自动扩容其实是size的一个增加,当现有长度满足不了新数组的长度时所依据java的内部机制进行的扩容。这个过程是新建一个原数组并对原数组进行修改,指定这个新建数组。原数组通过JVM自动进行处理。

拓展:

当新建数组长度大于size所能够自动扩容的最大长度时应当如何处理?

一般在开发中你是如何确定你所要定义的容量的,你一般定义多少呢?

2. hashmap的底层?

答案:

在Java编程语言中,最基本的结构就是两种,一个是数组,另外一个是模拟指针(引用),所有的数据结构都可以用这两个基本结构来构造的,HashMap也不例外。HashMap实际上是一个“链表散列”的数据结构,即数组和链表的结合体。

HashMap底层就是一个数组结构,数组中的每一项又是一个链表。当新建一个HashMap的时候,就会初始化一个数组。

分析:

要对数组、链接的结构特点清晰,数组查询快、增删慢,链表查询慢,增删快

拓展:

可能会问hashMap和hashTable的区别?

答:

HashMap不是线程安全的

HashMap是map接口的子类,是将键映射到值的对象,其中键和值都是对象,并且不能包含重复键,但可以包含重复值。HashMap允许null key和null value,而hashtable不允许。

HashTable是线程安全。

HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key),由于非线程安全,效率上可能高于Hashtable。

3. list的底层?

答案:

List实现Collection接口,它的数据结构是有序可以重复的结合,该结合的体系有索引;它有三个实现类:ArrayList、LinkList、Vector三个实现类

ArrayList:底层数据结构使数组结构,查询速度快,增删改慢,

LinkList:底层使用链表结构,增删速度快,查询稍慢;

Vector:底层是数组结构,线程同步ArrayList是线程不同步;

分析:

对集合的体系结构要清晰,要知道list中的元素是有序、可重复的,对底层的数据结构要掌握

拓展:

可能会问到其他集合中的问题,比如hashMap是怎么保证key唯一的

数据库

1. MySQL数据库的选择函数?

答案:

严格来说数据库中的选择函数这个概念我这里并没有得到一个验证。最后得到的答案也只是decode(用途:加密;比较);case when then else end用于比较和判断。

分析:

数据库一直以来也都是一个重点,但是其中的选择函数本人略为愚钝不得其意。在此引为条件。

应用链接:

这个里面的函数也都是比较常用的,如有所用可以参考借鉴。

框架

1. springmvc的流程?

答案:

1用户发送请求至前端控制器DispatcherServlet

2. DispatcherServlet收到请求调用HandlerMapping处理器映射器。

3. 处理器映射器根据请求url找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。

4. DispatcherServlet通过HandlerAdapter处理器适配器调用处理器

5. 执行处理器(Controller,也叫后端控制器)。

6. Controller执行完成返回ModelAndView

7. HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet

8. DispatcherServlet将ModelAndView传给ViewReslover视图解析器

9. ViewReslover解析后返回具体View

10. DispatcherServlet对View进行渲染视图(即将模型数据填充至视图中)。

11. DispatcherServlet响应用户

分析:

要将前端控制器和springmvc的三大组件处理器映射器、处理器适配器、视图解析器的作用掌握清楚,方便记忆流程

拓展:

可能会问springmvc和struts的区别?

2. springioc的底层?

答案:

IOC中最基本的技术就是“反射(Reflection)”编程,有关反射的概念和用法通俗来讲就是根据给出的类名(字符串方式)来动态地生成对象

我们可以把IOC容器的工作模式看做是工厂模式的升华,可以把IOC容器看作是一个工厂,这个工厂里要生产的对象都在配置文件中给出定义,然后利用编程语言的的反射编程,根据配置文件中给出的类名生成相应的对象。从实现来看,IOC是把以前在工厂方法里写死的对象生成代码,改变为由配置文件来定义,也就是把工厂和对象生成这两者独立分隔开来,目的就是提高灵活性和可维护性。

分析:

解释ioc底层之前,要先介绍出ioc是控制反转,是将对象的创建交给spring,那对象是如何创建的,再讲spring的工厂模式和反射

拓展:

可能也会问springAOP的底层

实际开发

1. zookeeper是什么?dubbo是什么?

答案:

Zookeeper 作为一个分布式的服务框架,主要用来解决分布式集群中应用系统的一致性问题,它能提供基于类似于文件系统的目录节点树方式的数据存储, Zookeeper 作用主要是用来维护和监控存储的数据的状态变化,通过监控这些数据状态的变化,从而达到基于数据的集群管理。

Dubbo是Alibaba开源的分布式服务框架,它最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解耦合(或者最大限度地松耦合)。从服务模型的角度来看,Dubbo采用的是一种非常简单的模型,要么是提供方提供服务,要么是消费方消费服务,所以基于这一点可以抽象出服务提供方(Provider)和服务消费方(Consumer)两个角色

分析:

可以在介绍zookeeper及dubbo的时候,说出来在是如何应用在项目中的

拓展:

可能会问,什么是RPC

2. zookeeper和dubbo你们具体是怎么用的?怎么配置?

答案:

dubbo建议zookeeper作为服务的一个注册中心。目的便是利用了zookeeper的特性做负载均衡资源同步操作。(再具体到那一块在项目中所涉及到资源信息在数据库间进行共享的都可以进行使用)。

分析:

具体的使用大家可以从在业务场景下对于那些问题做了怎样的一个处理,具体的一个配置,在大家使用的过程中具体标签的一个含义就需要大家去记忆和分析了。虽然很多时候我们也都是根据相关文档对其进行处理的,但是固有的一些东西也需要注意。

拓展:

dubbo只是一个架构平台在这个平台上使用怎样的服务需要根据一个实际的业务来进行判断并不是唯一的。zookeeper只是官方推荐的而已,同样的如果需要还可以使用redis、memcached等也都是可以的。

3. 工作流的理解

答案:

为什么要使用工作流呢?

1、提高开发的效率;

2、降低 开发风险;

3、提升对迭代开发的支持;

4、实现对流程的集中统一。

工作流的优点还有很多在这里就不和大家一一列举了。

什么是工作流呢?

所谓工作流便是通过对某一业务程序尽心逻辑设计避免我们重复的来执行前后台的一个操作,而这便是工作流。

分析:

一般工作流系统主要应用于OA系统的开发,但是同样的之于所涉及到的复杂业务能够进行简化时我们何乐而不为呢?

拓展:

时下所常用的工作流一般是JBPM和activity这两种其中activity是继承于JBPM的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值