没有合适的资源?快使用搜索试试~ 我知道了~
首页电商网站Java面试题.doc
电商网站Java面试题.doc
需积分: 49 9 下载量 77 浏览量
更新于2023-03-16
评论
收藏 640KB DOC 举报
电商网站的面试题,从基础到深入系列,收集的其它同仁的,高级开发,架构级别,实用性强
资源详情
资源评论
资源推荐
某电商网站 Java 面试题-2(高级开发,架构级别)
出自:
一、Java 线程池的具体实现,用过哪些 Java 多线程并发控制框架?
答 : ( ) 引 用 来 源 :
参考源码
!" 源码类:#$$%$&'()$
源码类:$$$&*&%$&'
源码类:$#$&*&%$&'
% 源码类:$$&%$&'()$
( + ) 几 种 线 程 池 的 实 现 算 法 分 析 , 引 用 来 源 :
二、多线程的锁是加在哪里的,synchronized 与 static synchronized 的区别?
答:(引用来源:$+++)
() 中每个对象都有一个内置锁
当程序运行到非静态的 $& 同步方法上时,自动获得与正在执行代码
类的当前实例( 实例)有关的锁。获得一个对象的锁也称为获取锁、锁定
对象、在对象上锁定或在对象上同步。
,-,-当程序运行到 $& 同步方法或代码块时才该对象锁才起作用。
,-,-一个对象只有一个锁。所以,如果一个线程获得该锁,就没有其他线程可以
获得锁,直到第一个线程释放(或返回)锁。这也意味着任何其他线程都不能
进入该对象上的 $& 方法或代码块,直到该锁被释放。
(+)$& 与 -$&-的区别
,-,-,-$& 是对类的当前实例进行加锁,防止其他线程同时访问该类的
该实例的所有 $& . / -块,注意这里是 类的当前实例 , 类的两个不同实
例就没有这种约束了。那么 -$& 恰好就是要控制类的所有实例
的访问了,-$& 是限制线程同时访问 # 中该类的所有实例同
-时访问对应的代码快。实际上,在类中某方法或某代码块中有 $&,
那么在生成一个该类实例后,改类也就有一个监视快,放置线程并发访问改实
例 $& 保护快,而 -$& 则是所有该类的实例公用一个
监 视 快 了 , 也 也 就 是 两 个 的 区 别 了 0 也 就 是 $& 相 当 于
$&,而
-$& 相当于 1$&
,-,-,-一个日本作者结成浩的《# 多线程设计模式》有这样的一个例子:
2
!
"!
!
"!
!
,-,那么,加入有 1 类的两个实例 与 ,那么下列组方法何以被 个
以上线程同时访问呢
,-,-,-)1345与 )1645,
,-,-,-)1345与 1345
,-,-,-)1345与 1645
,-,&-,-)1345与 11345
,-,-这里,很清楚的可以判断:
,-,,都是对同一个实例的 $& 域访问,因此不能被同时访问
,-,,是针对不同实例的,因此可以同时被访问
,-,,因为是 -$&,所以不同实例之间仍然会被限制0相当于
11345 -与 ,-11645了,因此不能被同时访问。
,- ,那 么 , 第 & 呢 2 -, 书 上 的 答 案 是 可 以 被 同 时 访 问 的 , 答 案 理 由 是
$& 的是实例方法与 $& 的类方法由于锁定(7)不同的
原因。
,-,个人分析也就是 $&-与 -$&-相当于两帮派,各自管
各自,相互之间就无约束了,可以被同时访问。目前还不是分清楚 # 内部设
计 $& 是怎么样实现的。
,-,-结论:3-$&- 是某个类的范围,$&--189
-防止多个线程同时访问这个 ,-,类中的 $&--方法。它可以对类的
所有对象实例起作用。
,-,-,-,-,-,-,-,6-$&-是某实例的范围,$&-14589防止多个
线程同时访问这个实例中的 $&-方法。
,-,-,+$& 方法与 $& 代码快的区别
,-,-,-$&-&4589-与 $&()89之间没有什么区别,只
-是 $&-&4589-便于阅读理解,而 $&()89可以更
精确的控制冲突限制访问区域,有时候表现更高效率。
,$& 关键字是不能继承的
,-,-,这个在 $&$$&$+ 一文中看到的,
我想 这 一点也是很值 得 注意的,继 承 时子类的覆盖 方 法必须显示 定 义成
$&。
三、Spring 加载类的注解有哪几种?
答:():3$&
:3$& 可以对成员变量、方法和构造函数进行标注,来完成自动装配的
工作。以上两种不同实现方式中,:3$& 的标注位置不同,它们都会在
1$ 在初始化 $;$< 这个 时,自动装配 $! 这个属性,
区别是:第一种实现中,1$ 会直接将 =$! 类型的唯一一个 赋值
给 $! 这个成员变量;第二种实现中,1$ -会调用 =$! 方法来
将 =$! 类型的唯一一个 装配到 $! 这个属性。
要使:3$& 能够工作,还需要在配置文件中加入以下代码
2
#$%&'()&&'&& ( "**%
(+):>$( 1>+? 标准注解,推荐使用它来代替 1$ 专有的:3$& 注解),
1$-不但支持自己定义的:3$& 注解,还支持几个由 1>+? 规范定
义的注解,它们分别是:>$、:'@$ 以及:'$!$。,
:>$ 的作用相当于:3$&,只不过:3$& 按 % 自动注
入,而:>$ -默认按 A 自动注入罢了。:>$ 有两个属性是
比较重要的,分别是 和 ,1$ 将:>$ 注解的 属性解
析为 的名字,而 属性则解析为 的类型。所以如果使用 属
性,则使用 A 的自动注入策略,而使用 属性时则使用 % 自动
注入策略。如果既不指定 也不指定 属性,这时将通过反射机制使用
A 自动注入策略。,
:>$ 装配顺序,
如果同时指定了 和 ,则从 1$ 上下文中找到唯一匹配的 进
行装配,找不到则抛出异常
如果指定了 ,则从上下文中查找名称(&)匹配的 进行装配,找不
到则抛出异常
如果指定了 ,则从上下文中找到类型匹配的唯一 进行装配,找不到
或者找到多个,都会抛出异常
如果既没有指定 ,又没有指定 ,则自动按照 A 方式进行装配
(见 +);如果没有匹配,则回退为一个原始类型(=$!)进行匹配,如
果匹配则自动装配,。
:@(不推荐使用)、:>$、:1$、:@$$,
,-,- 只需要在对应的类上加上一个:@ 注解,就将该类定义为一个
6 了:
2
+,
-./01.-.
&&&
!
使用:@ 注解定义的 6,默认的名称(&)是小写开头的非限定
类名。如这里定义的 6 名称就是 $!<。你也可以指定 6 的名称:
,
:@4B$!B5,
:@ 是所有受 1$ 管理组件的通用形式,1$ 还提供了更加细
化的注解形式::>$ -、 :1$、:@$$,它们分别对应存储
层 6,业务层 6,和展示层 6。目前版本(+?)中,这些注解与
:@ 的语义是一样的,完全通用,在 1$ 以后的版本中可能会给
它 们 追 加 更 多 的 语 义 。 所 以 , 我 们 推 荐 使 用 :>$ 、
:1$、:@$$ 来替代:@。
四、详细说明 Spring 的事务传播特性
答:
我们都知道事务的概念,那么事务的传播特性是什么呢?4此处着重介绍传播特
性的概念,关于传播特性的相关配置就不介绍了,可以查看 $ 的官方文档5,
在我们用 11C 开发项目的时候,我们一般都是将事务设置在 1$ -层 那么当
我们调用 1$ 层的一个方法的时候它能够保证我们的这个方法中执行的所
有的对数据库的更新操作保持在一个事务中,在事务层里面调用的这些方法要
么全部成功,要么全部失败。那么事务的传播特性也是从这里说起的。,
如果你在你的 1$ 层的这个方法中,除了调用了 ! 层的方法之外,还调
用了本类的其他的 1$ -方法,那么在调用其他的 1$ 方法的时候,这个
事务是怎么规定的呢,我必须保证我在我方法里掉用的这个方法与我本身的方
法处在同一个事务中,否则如果保证事物的一致性。事务的传播特性就是解决
. /这个问题的, 事务是会传播的 在 1$ 中有针对传播特性的多种配置我们大
多数情况下只用其中的一种'>D'E3%<DAF>(*=<>(!:这个配置项的意思
是说当我调用 $ 层的方法的时候开启一个事务4具体调用那一层的方法开
始创建事务,要看你的 的配置50那么在调用这个 $ 层里面的其他的方
法的时候0如果当前方法产生了事务就用当前方法产生的事务,否则就创建一个
新的事务。这个工作使由 1$ 来帮助我们完成的。,
以前没有 1$ 帮助我们完成事务的时候我们必须自己手动的控制事务,例如
当我们项目中仅仅使用 $ -,而没有集成进 $ 的时候,我们在一个
$ 层中调用 其他的 业务逻 辑方法,为了 保证事物 必须也要 把当前的
$- 传递到下一个方法中,或者采用 %$&G 的方法,将
-传递给下一个方法,其实都是一个目的。现在这个工作由 $ 来帮
助我们完成,就可以让我们更加的专注于我们的业务逻辑。而不用去关心事务
的问题。,
默认情况下当发生 >() 的情况下,事务才会回滚,所以要注意一
-下 如果你在程序发生错误的情况下,有自己的异常处理机制定义自己的
(),必须从 >() -类继承 这样事务才会回滚!
1$ 事务传播特性总结:
只要定义为 $ 的 就可以对里面的方法使用:%$ 注解。,
+1$ 的事务传播是 1$ 特有的。不是对底层 #& 的代理。
使用 $ 声明式事务,$ 使用 3D' 来支持声明式事务,会根据事务属
性,自动在H方法调用之前决定是否开启一个事务I,并在H方法执行之后I决定事
务提交或回滚事务。,
1$ 支 持 的 '>D'3E3%<DAFA(1%(! - 与
'>D'3E3%<DAF>(*=<>(1FA(J 的区别
'>D'3E3%<DAF>(*=<>(1FA(J:二个事务没有信赖关系,不会存在 3 事
务的成功取决于 6 事务的情况。有可能存在 3 提交 6 失败。3 失败(比如执行
到 &1%6 的时候抛出异常)6 提交,36 都提交,36 都失败的可能。
'>D'3E3%<DAFA(1%(!:与 '>D'3E3%<DAF>(*=<>(1FA(J 不同的是
内嵌事务 6 会信赖 3。即存在 3 失败 6 失败。3 成功,6 失败。3 成功,6 成功。
而不存在 3 失败,6 成功。
剩余44页未读,继续阅读
小小志秩
- 粉丝: 43
- 资源: 73
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
- SPC统计方法基础知识.pptx
- MW全能培训汽轮机调节保安系统PPT教学课件.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0