大数跨境

【面试真题】JAVA开发面试题,最基本的问题你会吗?(六)

【面试真题】JAVA开发面试题,最基本的问题你会吗?(六) 职英产教融合
2023-03-02
2
导读:上期提到JAVA开发最基本的面试问题,大家都知道答案吗?

上期提到JAVA开发最基本的面试问题,大家都知道答案吗?想要成为一名合格的程序员,除了具备专业的技能点之外,面试题的学习和积累也是必不可少的。积累的越多,我们的底气就会越来越足,工作也会越来得心应手。今日依旧给大家带来了五道面试题,准备好了吗?



面试题如下


1、静态变量和实例变量的区别?


2、数据库哪一个比较擅长?Oracle/mysql/sql server的区别?


3、JAVA的8种基本数据类型。


4、重载与重写的区别?


5、说一下MVC设计模式?



上期答案请查收


1、谈谈你对 Spring 的理解。

Spring 是一个开源框架,为简化企业级应用开发而生。Spring 可以是使简单的 JavaBean 实现以前只有 EJB 才能实现的功能。Spring 是一个 IOC 和 AOP 容器框架。
Spring 容器的主要核心是:
控制反转(IOC),传统的 java 开发模式中,当需要一个对象时,我们会自己使用 new 或者 getInstance 等直接或者间接调用构造方法创建一个对象。而在 spring 开发模式中,spring 容器使用了工厂模式为我们创建了所需要的对象,不需要我们自己创建了,直接调用 spring 提供的对象就可以了,这是控制反转的思想。
依赖注入(DI),spring 使用 javaBean 对象的 set 方法或者带参数的构造方法为我们在创建所需对象时将其属性自动设置所需要的值的过程,就是依赖注入的思想。
面向切面编程(AOP),在面向对象编程(oop)思想中,我们将事物纵向抽成一个个的对象。而在面向切面编程中,我们将一个个的对象某些类似的方面横向抽成一个切面,对这个切面进行一些如权限控制、事物管理,记录日志等公用操作处理的过程就是面向切面编程的思想。AOP 底层是动态代理,如果是接口采用 JDK 动态代理,如果是类采用CGLIB 方式实现动态代理。

2、简单介绍一下 Spring bean 的生命周期。

bean 定义:在配置文件里面用<bean></bean>来进行定义。

bean 初始化:有两种方式初始化:

1.在配置文件中通过指定 init-method 属性来完成

2.实现 org.springframwork.beans.factory.InitializingBean 接口

bean 调用:有三种方式可以得到 bean 实例,并进行调用

bean 销毁:销毁有两种方式

1.使用配置文件指定的 destroy-method 属性

2.实现 org.springframwork.bean.factory.DisposeableBean 接口


3、Spring 的通知是什么?有哪几种类型?

通知是个在方法执行前或执行后要做的动作,实际上是程序执行时要通过 SpringAOP 框架触发的代码段。

Spring 切面可以应用五种类型的通知:

1)before:前置通知,在一个方法执行前被调用。

2)after: 在方法执行之后调用的通知,无论方法执行是否成功。

3)after-returning: 仅当方法成功完成后执行的通知。

4)after-throwing: 在方法抛出异常退出时执行的通知。

5)around: 在方法执行之前和之后调用的通知。


4、Mybatis 中一级缓存与二级缓存?

1. 一级缓存: 基于 PerpetualCache 的 HashMap 本地缓存,其存储作用域为 Session,当 Session flush 或close 之后,该 Session 中的所有 Cache 就将清空。

2. 二级缓存与一级缓存其机制相同,默认也是采用 PerpetualCache,HashMap 存储,不同在于其存储作用域为Mapper(Namespace),并且可自定义存储源,如 Ehcache。作用域为 namespance 是指对该 namespance 对应的配置文件中所有的 select 操作结果都缓存,这样不同线程之间就可以共用二级缓存。启动二级缓存:在 mapper 配置文件中:<cache />。

二级缓存可以设置返回的缓存对象策略:<cache readOnly="true">。当 readOnly="true"时,表示二级缓存返回给所有调用者同一个缓存对象实例,调用者可以 update 获取的缓存实例,但是这样可能会造成其他调用者出现数据不一致的情况(因为所有调用者调用的是同一个实例)。当 readOnly="false"时,返回给调用者的是二级缓存总缓存对象的拷贝,即不同调用者获取的是缓存对象不同的实例,这样调用者对各自的缓存对象的修改不会影响到其他的调用者,即是安全的,所以默认是 readOnly="false";

3. 对于缓存数据更新机制,当某一个作用域(一级缓存 Session/二级缓存 Namespaces)的进行了 C/U/D 操作后,默认该作用域下所有 select 中的缓存将被 clear。


5、简单介绍一下 Shiro 框架。

Apache Shiro 是 Java 的一个安全框架。使用 shiro 可以非常容易的开发出足够好的应用,其不仅可以用在 JavaSE环境,也可以用在 JavaEE 环境。Shiro 可以帮助我们完成:认证、授权、加密、会话管理、与 Web 集成、缓存等。
三个核心组件:Subject, SecurityManager 和 Realms.
Subject:即“当前操作用户”。但是,在 Shiro 中,Subject 这一概念并不仅仅指人,也可以是第三方进程、后台帐户(Daemon Account)或其他类似事物。它仅仅意味着“当前跟软件交互的东西”。但考虑到大多数目的和用途,你可以把它认为是 Shiro 的“用户”概念。
Subject 代表了当前用户的安全操作,SecurityManager 则管理所有用户的安全操作。
SecurityManager:它是 Shiro 框架的核心,典型的 Facade 模式,Shiro 通过 SecurityManager 来管理内部组件实例,并通过它来提供安全管理的各种服务。
Realm:Realm 充当了 Shiro 与应用安全数据间的“桥梁”或者“连接器”。也就是说,当对用户执行认证(登录)和授权(访问控制)验证时,Shiro 会从应用配置的 Realm 中查找用户及其权限信息。


—— 春季招生已经全面启动 ——

欢迎各位同学、家长咨询报名

李老师:13007633571


郑州校区、商丘校区、新乡校区同步招生中


扫描下方二维码,立即报名

👇

【声明】内容源于网络
0
0
职英产教融合
1234
内容 496
粉丝 0
职英产教融合 1234
总阅读17
粉丝0
内容496