高薪直通车丨JavaEE面试经验分享(新**建)

面试经历:

1.技术面

谈技术,做过些什么项目,根据你说的项目,面试官选一个他觉得比较有代表性的(根据鄙人经验来说,这块最好说,但也最不好说,说不好就思密达了),问有什么功能,有哪些模块,你负责该项目的什么模块,用了什么技术。

2.人事面

和人力资源的聊天,比如:为什么选我们公司,你有什么优势,你有什么缺点,

这个不好说,主要是看你的人品、性格之类的。

好了,直接发车,快上车上车

1. 说一下AOP与IOC的概念(即spring的核心)

a) IOC:Spring是开源框架,使用框架可以使我们减少工作量,提高工作效率并且它是分层结构,即相对应的层处理对应的业务逻辑,减少代码的耦合度。而spring的核心是IOC控制反转和AOP面向切面编程。IOC控制反转主要强调的是程序之间的关系是由容器控制的,容器控制对象,控制了对外部资源的获取。而反转即为,在传统的编程中都是由我们创建对象获取依赖对象,而在IOC中是容器帮我们创建对象并注入依赖对象,正是容器帮我们查找和注入对象,对象是被获取,所以叫反转。

Spring支持三种依赖注入方式,分别是属性(Setter方法)注入,构造注入和接口注入。

在Spring中,那些组成应用的主体及由Spring IOC容器所管理的对象被称之为Bean。

Spring的IOC容器通过反射的机制实例化Bean并建立Bean之间的依赖关系。

简单地讲,Bean就是由Spring IOC容器初始化、装配及被管理的对象。

获取Bean对象的过程,首先通过Resource加载配置文件并启动IOC容器,然后通过getBean方法获取bean对象,就可以调用他的方法。

Spring Bean的作用域:

Singleton:Spring IOC容器中只有一个共享的Bean实例,一般都是Singleton作用域。

Prototype:每一个请求,会产生一个新的Bean实例。

Request:每一次http请求会产生一个新的Bean实例。

b) AOP:面向切面编程,主要是管理系统层的业务,比如日志,权限,事物等。AOP是将封装好的对象剖开,找出其中对多个对象产生影响的公共行为,并将其封装为一个可重用的模块,这个模块被命名为切面(aspect),切面将那些与业务逻辑无关,却被业务模块共同调用的逻辑提取并封装起来,减少了系统中的重复代码,降低了模块间的耦合度,同时提高了系统的可维护性。

2. 描述一下对象的创建过程

1)装载:将Java二进制代码导入jvm中,生成Class文件。

2)连接:

a)校验:检查载入Class文件数据的正确性

b)准备:给类的静态变量分配存储空间

c)解析:将符号引用转成直接引用

3):初始化:对类的静态变量,静态方法和静态代码块执行初始化工作。

3. Redis数据结构

1)String—字符串(key-value 类型)

2)Hash—字典(hashmap) Redis的哈希结构可以使你像在数据库中更新一个属性一样只修改某一项属性值

3)List—列表 实现消息队列

4)Set—集合 利用唯一性

5)Sorted Set—有序集合 可以进行排序 可以实现数据持久化

4. 简述一下MySql数据库索引,并且说一下什么时候使用索引

Mysql的索引是一个数据结构,旨在使数据库高效的查找数据。

常用的数据结构是B+Tree,每个叶子节点不但存放了索引键的相关信息还增加了指向相邻叶子节点的指针,这样就形成了带有顺序访问指针的B+Tree,做这个优化的目的是提高不同区间访问的性能。

什么时候使用索引:

1)经常出现在groupby,order by和distinc关键字后面的字段

2)经常与其他表进行连接的表,在连接字段上应该建立索引

3)经常出现在Where子句中的字段

4)经常出现用作查询选择的字段

5. SpringMVC运行原理

1)客户端请求提交到DispatcherServlet

2)由DispatcherServlet控制器查询HandlerMapping,找到并分发到指定的Controller中。

3)Controller调用业务逻辑处理后,返回ModelAndView

4)DispatcherServlet查询一个或多个ViewResoler视图解析器,找到ModelAndView指定的视图

5)视图负责将结果显示到客户端

6. 分布式Session框架

1)配置服务器,Zookeeper集群管理服务器可以统一管理所有服务器的配置文件

2)共享这些Session存储在一个分布式缓存中,可以随时写入和读取,而且性能要很好,如Memcache,Tair。

3)封装一个类继承自HttpSession,将Session存入到这个类中然后再存入分布式缓存中

4)由于Cookie不能跨域访问,要实现Session同步,要同步SessionID写到不同域名下。

相关文章