黑马程序员技术交流社区

标题: JavaEE面试经验分享——西安交大捷普网络科技有限公司 [打印本页]

作者: 就业高冷派    时间: 2018-7-27 10:24
标题: JavaEE面试经验分享——西安交大捷普网络科技有限公司
本帖最后由 逆风TO 于 2018-8-2 15:36 编辑

西安交大捷普网络科技有限公司
公司行业:互联网/电子商务
公司规模:50-150人
公司地址:西安市高新技术产业开发区科技二路72号

笔试题
面试过程:
1: 请问 ArrayList、 HashSet、 HashMap 是线程安全的吗?如果不是我想要线程安全的集合怎么办?
我们都看过上面那些集合的源码(如果没有那就看看吧),每个方法都没有加锁,显然都是线程不安全的。话又说过来如果他们安全了也就没第二问了。
在集合中 Vector 和 HashTable 倒是线程安全的。你打开源码会发现其实就是把各自核心方法添加上了synchronized 关键字。
Collections 工具类提供了相关的 API,可以让上面那 3 个不安全的集合变为安全的。
1. // Collections.synchronizedCollection(c)
2. // Collections.synchronizedList(list)
3. // Collections.synchronizedMap(m)
4. // Collections.synchronizedSet(s)
上面几个函数都有对应的返回值类型,传入什么类型返回什么类型。打开源码其实实现原理非常简单,就是将集合的核心方法添加上了 synchronized 关键字。
2: 阿帕奇提供的StringUtils中 isNotEmpty 和isNotBlank的区别
1)public static boolean isEmpty(String str)  判断某字符串是否为空,为空的标准是str==null或str.length()==0
示例:
StringUtils.isEmpty(null) ==> true
StringUtils.isEmpty("") ==> true
StringUtils.isEmpty(" ") ==> false //注意StringUtils 中空格作非空处理
StringUtils.isEmpty("  ") ==> false
StringUtils.isEmpty("bob") ==> false
StringUtils.isEmpty(" bob ") ==> false

2)public static boolean isNotEmpty(String str)  判断某字符串是否非空,等于!isEmpty(String str)
示例:
StringUtils.isNotEmpty(null) ==> false
StringUtils.isNotEmpty("") ==> false
StringUtils.isNotEmpty(" ") ==> true
StringUtils.isNotEmpty("     ") ==> true
StringUtils.isNotEmpty("bob") ==> true
StringUtils.isNotEmpty(" bob ") ==> true

3)public static boolean isBlank(String str)  判断某字符串是否为空或长度为0或由空白符(whitespace)构成
示例:
StringUtils.isBlank(null) ==> true
StringUtils.isBlank("") ==> true
StringUtils.isBlank(" ") ==> true
StringUtils.isBlank("    ") ==> true
StringUtils.isBlank("\t \n \f \r") ==> true  //对于制表符、换行符、换页符和回车符,均识为空白符
StringUtils.isBlank("\b") ==> false  //"\b"为单词边界符
StringUtils.isBlank("bob") ==> false
StringUtils.isBlank(" bob ") ==> false

4)public static boolean isNotBlank(String str)  判断某字符串是否不为空且长度不为0且不由空白符(whitespace)构成,等于!isBlank(String str)
示例:
StringUtils.isNotBlank(null) ==> false
StringUtils.isNotBlank("") ==> false
StringUtils.isNotBlank(" ") ==> false
StringUtils.isNotBlank("     ") ==> false
StringUtils.isNotBlank("\t \n \f \r") ==> false
StringUtils.isNotBlank("\b") ==> true
StringUtils.isNotBlank("bob") ==> true
StringUtils.isNotBlank(" bob ") ==> true


3: Spring 的通知是什么?有哪几种类型?
page通知是个在方法执行前或执行后要做的动作,实际上是程序执行时要通过 SpringAOP 框架触发的代码段。
Spring 切面可以应用五种类型的通知:
1) before:前置通知,在一个方法执行前被调用。
2) after: 在方法执行之后调用的通知,无论方法执行是否成功。
3) after-returning: 仅当方法成功完成后执行的通知。
4) after-throwing: 在方法抛出异常退出时执行的通知。
5) around: 在方法执行之前和之后调用的通知
4: 简单介绍一下 Shiro 框架 ?
A:栈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 中查找用户及其权限信息。
5: 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。
6: 拦截器和过滤器有哪些区别?
* 拦截器是基于 java 的反射机制的,而过滤器是基于函数回调
* 拦截器不依赖与 servlet 容器,而过滤器依赖与 servlet 容器

* 拦截器只能对 action 请求起作用,而过滤器则可以对几乎所有的请求起作用
* 拦截器可以访问 action 上下文、值栈里的对象,而过滤器不能
* 在 action 的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一 次 .
7: 简单介绍一下 zookeeper 以及 zookeeper 的原理  ?
session:
ZooKeeper 是一个分布式的,开放源码的分布式应用程序协调服务,是 Google 的 Chubby 一个开源的实现,是 Hadoop 和 Hbase 的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。
ZooKeeper 的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、 功能稳定的系统提供给用户。
ZooKeeper 包含一个简单的原语集, 提供 Java 和 C 的接口。
ZooKeeper 代码版本中,提供了分布式独享锁、选举、队列的接口,代码在 zookeeper-3.4.3\src\recipes。其中分布锁和队列有 Java 和 C 两个版本,选举只有 Java 版本。
原理:
ZooKeeper 是以 Fast Paxos 算法为基础的,Paxos 算法存在活锁的问题,即当有多个 proposer 交错提交时,有可能互相排斥导致没有一个 proposer 能提交成功,而 Fast Paxos 作了一些优化,通过选举产生一个 leader (领导者),只有 leader 才能提交 proposer,具体 算法可见 Fast Paxos。因此,要想弄懂 ZooKeeper 首先得对 Fast
Paxos 有所了解。
ZooKeeper 的基本运转流程:1、选举 Leader。 2、同步数据。 3、选举 Leader 过程中算法有很多,但要达到的选举标准是一致的。 4、 Leader 要具有最高的执行 ID,类似 root 权限。 5、集群中大多数的机器得到响应并 follow 选出的 Leader。


作者: 逆风TO    时间: 2018-7-30 13:49
感谢分享~
作者: 哦嗨呦    时间: 2018-8-27 10:15
顶!!!!!!!!
作者: little_superman    时间: 2018-8-27 17:56
6666666666666666666666666
作者: 殷凯老师    时间: 2018-8-27 18:13
感谢分享!!!!!!!!!!!
作者: 巴拉拉小魔仙    时间: 2018-8-27 18:15
666666666666666666
作者: 疯言峰语    时间: 2018-8-28 13:28
感谢分享!!!!!!!!!!!
作者: 同心筑梦1    时间: 2018-8-28 14:20

作者: 致橡树    时间: 2018-8-28 17:24
66666688888888
作者: ruoquan    时间: 2018-8-28 17:36

作者: 指间    时间: 2018-8-28 18:07
666666666666666666       
作者: xiaoheizi    时间: 2018-8-28 18:11
666666666666666666666666666666666666
作者: SunYan    时间: 2018-8-28 18:23
黑马666666666666666666666666666666666666
作者: 举个栗子    时间: 2018-8-28 18:24
6666666棒棒哒
作者: duanshaobo    时间: 2018-8-28 18:25
人到中年不得已,保温杯里泡枸杞
作者: 黑马程序员啊    时间: 2018-8-28 18:47
感谢分享!!!!!!!!
作者: 1098018910    时间: 2018-8-28 18:48
感谢感谢
作者: 王航    时间: 2018-8-28 19:21
感谢分享!!!!!!!!
作者: 小伙啊    时间: 2018-8-28 19:22

作者: yujq    时间: 2018-8-28 19:25
66666666666666666666666666
作者: py@py    时间: 2018-8-28 19:41
感谢分享
作者: zhaosongzhi    时间: 2018-8-28 20:14
666666666666666666666666的飞起
作者: fujiangbo    时间: 2018-8-28 21:24

感谢分享!!!!!!!!!
作者: 谢先森    时间: 2018-8-28 21:27
6666666666666666666666
作者: zplxwl    时间: 2018-8-29 00:05

感谢分享!!!!!!!!
作者: huochao    时间: 2018-8-29 01:49
66666666666666666666666666
作者: huochao    时间: 2018-8-29 01:50
666666666666666
作者: 18629541359    时间: 2018-8-29 08:03
很不错,谢谢分享!
作者: JavaEE风清扬    时间: 2018-8-29 09:16
666666666666666666666
作者: 零度☆黎明    时间: 2018-8-29 11:43
棒棒哒 .....................
作者: 耙丫丫    时间: 2018-8-29 12:15

作者: py@py    时间: 2018-8-29 14:38
写的不错yoyoyo
作者: 小黑马王子abc    时间: 2018-8-29 15:19

6666666666666666666
作者: zhuyanting    时间: 2018-8-29 15:20

作者: 小航子    时间: 2018-8-29 15:22
感谢分享!!!
作者: 影@子~    时间: 2018-8-29 15:37
感谢分享
作者: 温柔一刀!喵!    时间: 2018-8-29 15:46

作者: 温柔一刀!喵!    时间: 2018-8-29 15:53
辛苦辛苦!
作者: superbaby    时间: 2018-8-29 16:21
666666666666666666666
作者: 多喝点热水~    时间: 2018-8-29 17:27
                                    
作者: 小航子    时间: 2018-8-29 17:35
感谢分享!!!
作者: py@py    时间: 2018-8-29 17:49
写的不错yoyoyo
作者: 从容微笑    时间: 2018-8-29 18:34
楼主辛苦啦~
作者: #风萧萧#    时间: 2018-8-29 18:40
感谢分享!!!!!!!!!!!
作者: 760486198    时间: 2018-8-29 18:54
作者棒棒哒
作者: wangxue123456    时间: 2018-8-29 19:02
思想的速度一被放开,就连光也跑得没有它快;但是阅读与书籍就像一个最完美的黑洞,总能把思维引向它,在它里面积蓄着,准备一次最壮丽的爆发。八千里路的云与月,全部在阅读中走进了我心灵的深处。
作者: yy1134787753    时间: 2018-8-29 19:42
感谢分享
作者: ouweina    时间: 2018-8-29 20:17
感谢分享!!!
作者: 淡写薰衣草的香    时间: 2018-8-29 20:43

作者: 兮兮哈哈    时间: 2018-8-29 20:43
6666666666666666666
作者: json0314    时间: 2018-8-29 21:48
加油!!!
作者: mydorling11    时间: 2018-8-29 23:01

顶!!!!!!!!!
作者: yangyifen    时间: 2018-8-30 09:35

作者: hello!!!    时间: 2018-8-30 10:02
感谢分享。。。。。。。。。
作者: 小公举    时间: 2018-8-30 10:04
棒棒哒    感谢分享   会努力的
作者: 小西西哦    时间: 2018-8-30 10:11
666666666666666666666666666666666
作者: zhanghua342    时间: 2018-8-30 12:09
感谢分享
作者: hongping    时间: 2018-8-30 12:28

作者: dajiahao    时间: 2018-8-30 12:35
666666666666666666
作者: 18309299426    时间: 2018-8-30 12:40
受用  666666666

作者: 仙人掌Sandy1    时间: 2018-8-30 16:51

作者: 凯凯小王子    时间: 2018-8-30 20:51
棒棒的,6666666666666
作者: 你不爱我    时间: 2018-8-30 21:55
66666666666666666666
作者: 小丹子    时间: 2018-8-30 22:18
顶!!!!!!!
作者: 疯子小花花    时间: 2018-8-31 09:51

作者: SharkSSB    时间: 2018-8-31 09:53

黑马666666666666666666666666666666666666
作者: 专找bug    时间: 2018-8-31 10:07
谢谢
作者: 专找bug    时间: 2018-8-31 10:08
666666666
作者: 专找bug    时间: 2018-8-31 10:11

作者: kdhdjdj    时间: 2018-8-31 10:31
66666666666666666
作者: 就业高冷派    时间: 2018-9-6 10:19
逆风TO 发表于 2018-7-30 13:49
感谢分享~


作者: 就业高冷派    时间: 2018-9-6 10:19
哦嗨呦 发表于 2018-8-27 10:15
顶!!!!!!!!


作者: 就业高冷派    时间: 2018-9-6 10:19
little_superman 发表于 2018-8-27 17:56
6666666666666666666666666


作者: 就业高冷派    时间: 2018-9-6 10:19
殷凯老师 发表于 2018-8-27 18:13
感谢分享!!!!!!!!!!!


作者: 就业高冷派    时间: 2018-9-6 10:20
巴拉拉小魔仙 发表于 2018-8-27 18:15
666666666666666666


作者: 就业高冷派    时间: 2018-9-6 10:21
同心筑梦1 发表于 2018-8-28 14:20


作者: 就业高冷派    时间: 2018-9-6 10:21
致橡树 发表于 2018-8-28 17:24
66666688888888


作者: 就业高冷派    时间: 2018-9-6 10:21
ruoquan 发表于 2018-8-28 17:36


作者: 就业高冷派    时间: 2018-9-6 10:21
指间 发表于 2018-8-28 18:07
666666666666666666


作者: 就业高冷派    时间: 2018-9-6 10:22
xiaoheizi 发表于 2018-8-28 18:11
666666666666666666666666666666666666


作者: 就业高冷派    时间: 2018-9-6 10:22
xiaoheizi 发表于 2018-8-28 18:11
666666666666666666666666666666666666


作者: 就业高冷派    时间: 2018-9-6 10:22
SunYan 发表于 2018-8-28 18:23
黑马666666666666666666666666666666666666


作者: 就业高冷派    时间: 2018-9-6 10:22
举个栗子 发表于 2018-8-28 18:24
6666666棒棒哒


作者: 就业高冷派    时间: 2018-9-6 10:22
duanshaobo 发表于 2018-8-28 18:25
人到中年不得已,保温杯里泡枸杞


作者: 就业高冷派    时间: 2018-9-6 10:23
黑马程序员啊 发表于 2018-8-28 18:47
感谢分享!!!!!!!!


作者: 就业高冷派    时间: 2018-9-6 10:23
1098018910 发表于 2018-8-28 18:48
感谢感谢


作者: 就业高冷派    时间: 2018-9-6 10:23
王航 发表于 2018-8-28 19:21
感谢分享!!!!!!!!


作者: 就业高冷派    时间: 2018-9-6 10:23
yujq 发表于 2018-8-28 19:25
66666666666666666666666666


作者: 就业高冷派    时间: 2018-9-6 10:25
py@py 发表于 2018-8-28 19:41
感谢分享


作者: 就业高冷派    时间: 2018-9-6 10:25
zhaosongzhi 发表于 2018-8-28 20:14
666666666666666666666666的飞起

努力奋斗!
作者: 就业高冷派    时间: 2018-9-6 10:25
fujiangbo 发表于 2018-8-28 21:24
感谢分享!!!!!!!!!


作者: 就业高冷派    时间: 2018-9-6 10:25
谢先森 发表于 2018-8-28 21:27
6666666666666666666666


作者: 就业高冷派    时间: 2018-9-6 10:26
18629541359 发表于 2018-8-29 08:03
很不错,谢谢分享!


作者: 就业高冷派    时间: 2018-9-6 10:26
18629541359 发表于 2018-8-29 08:03
很不错,谢谢分享!


作者: 就业高冷派    时间: 2018-9-6 10:26
JavaEE风清扬 发表于 2018-8-29 09:16
666666666666666666666

努力奋斗!
作者: 就业高冷派    时间: 2018-9-6 10:26
零度☆黎明 发表于 2018-8-29 11:43
棒棒哒 .....................

努力奋斗!
作者: 就业高冷派    时间: 2018-9-6 10:26
耙丫丫 发表于 2018-8-29 12:15


作者: 就业高冷派    时间: 2018-9-6 10:27
小黑马王子abc 发表于 2018-8-29 15:19
6666666666666666666


作者: 就业高冷派    时间: 2018-9-6 10:27
zhuyanting 发表于 2018-8-29 15:20

努力奋斗!
作者: 就业高冷派    时间: 2018-9-6 10:27
小航子 发表于 2018-8-29 15:22
感谢分享!!!

努力奋斗!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2