黑马程序员技术交流社区

标题: JavaEE面试经验分享——陕西众创空间 [打印本页]

作者: 就业高冷派    时间: 2018-7-27 09:24
标题: JavaEE面试经验分享——陕西众创空间
陕西众创空间
公司行业:互联网/电子商务
公司规模:50-150人
公司地址:丈八沟街道丈八五路10号

笔试题
面试总结:
1: 在 java 中 wait 和 sleep 方法的不同? :
最大的不同是在等待时 wait 会释放锁,而 sleep 一直持有锁。 wait 通常被用于线程间交互, sleep 通常被用于暂停执行。
2: synchronized 和 volatile 关键字的作用 ?
一旦一个共享变量(类的成员变量、类的静态成员变量)被 volatile 修饰之后,那么就具备了两层语义:
1)保证了不同线程对这个变量进行操作时的可见性,即一个线程修改了某个变量的值,这新值对其他线程来说是立即可见的。
2)禁止进行指令重排序。
volatile 本质是在告诉 jvm 当前变量在寄存器(工作内存)中的值是不确定的,需要从主存中读取;
synchronized 则是锁定当前变量,只有当前线程可以访问该变量,其他线程被阻塞住。
1.volatile 仅能使用在变量级别;synchronized 则可以使用在变量、方法、和类级别的
2.volatile 仅能实现变量的修改可见性,并不能保证原子性;synchronized 则可以保证变量的修改可见性和原子性
3.volatile 不会造成线程的阻塞; synchronized 可能会造成线程的阻塞。
4.volatile 标记的变量不会被编译器优化;synchronized 标记的变量可以被编译器优化
3: 什么是线程池,如何使用?
线程池就是事先将多个线程对象放到一个容器中,当使用的时候就不用 new 线程而是直接去池中拿线程即可,节省了开辟子线程的时间,提高的代码执行效率。
JDK 的 java.util.concurrent.Executors 中提供了生成多种线程池的静态方法。
1. ExecutorService newCachedThreadPool = Executors.newCachedThreadPool();
2. ExecutorService newFixedThreadPool = Executors.newFixedThreadPool(4);
3. ScheduledExecutorService newScheduledThreadPool = Executors.newScheduledThreadPool(4);
4. ExecutorService newSingleThreadExecutor = Executors.newSingleThreadExecutor();
然后调用他们的 execute 方法即可 。
newSingleThreadExecutor:创建一个单线程的线程池,此线程池保证所有任务的执行顺序按照任务的提交顺序执行。
newFixedThreadPool:创建固定大小的线程池,每次提交一个任务就创建一个线程,直到线程达到线程池的最大大小。
newCachedThreadPool:创建一个可缓存的线程池,此线程池不会对线程池大小做限制,线程池大小完全依赖于操作系统(或者说 JVM)能够创建的最大线程大小。
newScheduledThreadPool:创建一个大小无限的线程池,此线程池支持定时以及周期性执行任务的需求。
newSingleThreadExecutor:创建一个单线程的线程池。此线程池支持定时以及周期性执行任务的需求。
4: 存储过程和存储函数的特点和区别?
特点:
1) 、一般来说,存储过程实现的功能要复杂一点,而函数的实现的功能针对性比较强。
2) 、对于存储过程来说可以返回参数,而函数只能返回值或者表对象。
3) 、存储过程一般是作为一个独立的部分来执行,而函数可以作为查询语句的一个部分来调用,由于函数可以返回一个表对象,因此它可以在查询语句中位于 FROM 关键字的后面。
区别:
1)、函数必须有返回值,而过程没有.
2)、函数可以单独执行.而过程必须通过 execute 执行.
3)、函数可以嵌入到 SQL 语句中执行.而过程不行.
其实我们可以将比较复杂的查询写成函数.然后到存储过程中去调用这些函数.
5: 在千万级的数据库查询中,如何提高效率?
1)数据库设计方面
a. 对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。
b. 应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,
如: select id from t where num is null 可以在 num 上设置默认值 0,确保表中 num 列没有 null 值,然后这样查询: select id from t where num=0
c. 并不是所有索引对查询都有效, SQL 是根据表中数据来进行查询优化的,当索引列有大量数据重复时,查询可能不会去利用索引,如一表中有字段 sex, male、 female 几乎各一半,那么即使在 sex 上建了索引也对查询效率起不了作用。
d. 索引并不是越多越好,索引固然可以提高相应的 select 的效率,但同时也降低了 insert 及 update 的效率,因为 insert 或 update 时有可能会重建索引,所以怎样建索引需要慎重考虑,视具体情况而定。一个表的索引数最好不要超过 6 个,若太多则应考虑一些不常使用到的列上建的索引是否有必要。
e. 应尽可能的避免更新索引数据列,因为索引数据列的顺序就是表记录的物理存储顺序,一旦该列值改变将导致整个表记录的顺序的调整,会耗费相当大的资源。若应用系统需要频繁更新索引数据列,那么需要考虑是否应将该索引建为索引。
f. 尽量使用数字型字段,若只含数值信息的字段尽量不要设计为字符型,这会降低查询和连接的性能,并会增加存储开销。这是因为引擎在处理查询和连接时会逐个比较字符串中每一个字符,而对于数字型而言只需要比较一次就够了。
g. 尽可能的使用 varchar/nvarchar 代替 char/nchar ,因为首先变长字段存储空间小,可以节省存储空间,其次对于查询来说,在一个相对较小的字段内搜索效率显然要高些。
h. 尽量使用表变量来代替临时表。如果表变量包含大量数据,请注意索引非常有限(只有主键索引)。
i. 避免频繁创建和删除临时表,以减少系统表资源的消耗。
j. 临时表并不是不可使用,适当地使用它们可以使某些例程更有效,例如,当需要重复引用大型表或常用表中的某个数据集时。但是,对于一次性事件,最好使用导出表。
k. 在新建临时表时,如果一次性插入数据量很大,那么可以使用 select into 代替 create table,避免造成 大量 log ,以提高速度;如果数据量不大,为了缓和系统表的资源,应先 create table,然后 insert 。
6: SpringMVC 的工作原理 ?
a. 用户向服务器发送请求,请求被 springMVC 前端控制器 DispatchServlet 捕获;
b. DispatcherServle 对请求 URL 进行解析,得到请求资源标识符(URL),然后根据该 URL 调用 HandlerMapping将请求映射到处理器 HandlerExcutionChain;
c. DispatchServlet 根据获得 Handler 选择一个合适的 HandlerAdapter 适配器处理;
d. Handler 对数据处理完成以后将返回一个 ModelAndView()对象给 DisPatchServlet;
e. Handler 返回的 ModelAndView()只是一个逻辑视图并不是一个正式的视图, DispatcherSevlet 通过ViewResolver 试图解析器将逻辑视图转化为真正的视图 View;
h. DispatcherServle 通过 model 解析出 ModelAndView()中的参数进行解析最终展现出完整的 view 并返回给客户端。
7: 谈谈你对 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 方式实现动态代理。


作者: 就业高冷派    时间: 2018-7-27 09:45
腻害 加油~
作者: 哦嗨呦    时间: 2018-8-27 10:16
顶!!!!!!!
作者: little_superman    时间: 2018-8-27 17:44
6666666666666666666666666
作者: 殷凯老师    时间: 2018-8-27 18:13
感谢分享!!!!!!!!!!!
作者: 巴拉拉小魔仙    时间: 2018-8-27 18:15
6666666666666
作者: 疯言峰语    时间: 2018-8-28 13:29
感谢分享!!!!!!!!!!!
作者: 同心筑梦1    时间: 2018-8-28 14:22

作者: 致橡树    时间: 2018-8-28 17:25
66666688888888
作者: ruoquan    时间: 2018-8-28 17:48
厉害了,6666
作者: 指间    时间: 2018-8-28 18:07
666666666666666666       
作者: xiaoheizi    时间: 2018-8-28 18:12

作者: SunYan    时间: 2018-8-28 18:24
黑马6666666666666666666666666
作者: 举个栗子    时间: 2018-8-28 18:25
6666666棒棒哒
作者: duanshaobo    时间: 2018-8-28 18:26
人到中年不得已,保温杯里泡枸杞
作者: 半个程序员    时间: 2018-8-28 18:42
为API生,为框架死,为debug奋斗一辈子,吃符号亏,上大小写的当,最后死在产品上。
作者: 黑马程序员啊    时间: 2018-8-28 18:48
感谢分享!!!!!!!!
作者: 1098018910    时间: 2018-8-28 18:50
感谢感谢
作者: 半个程序员    时间: 2018-8-28 19:06
HBuilder.9.0.6.windows.zip
VSCodeSetup-x64-1.24.0.exe
WebStorm
作者: 小伙啊    时间: 2018-8-28 19:21

感谢分享!!!!!!!!!!!
作者: yujq    时间: 2018-8-28 19:26
很受用!!!!!!!!!!!!!!!!!
作者: 王航    时间: 2018-8-28 19:27

感谢分享!!!!!!!!
作者: zhaosongzhi    时间: 2018-8-28 20:15
66666666666666666666666的飞起
作者: fujiangbo    时间: 2018-8-28 21:24

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

感谢分享!!!!!!!!
作者: huochao    时间: 2018-8-29 01:51
66666666666666666666
作者: 18629541359    时间: 2018-8-29 08:04
很不错,谢谢分享!
作者: JavaEE风清扬    时间: 2018-8-29 09:16
不错不错加油.............
作者: 零度☆黎明    时间: 2018-8-29 11:44
棒棒哒 .....................
作者: 耙丫丫    时间: 2018-8-29 12:06

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

感谢分享!!!!!!!!
感谢分享!!!!!!!!
作者: 小航子    时间: 2018-8-29 15:26
感谢分享!!!
作者: 影@子~    时间: 2018-8-29 15:39
感谢分享
作者: superbaby    时间: 2018-8-29 16:21
八千里路的云与月,全部在阅读中走进了我心灵的深处
作者: 温柔一刀!喵!    时间: 2018-8-29 17:27
写的很详细呀!
作者: 多喝点热水~    时间: 2018-8-29 17:28
                        
作者: 小航子    时间: 2018-8-29 17:34
感谢分享!!!!!!!!!!!
作者: py@py    时间: 2018-8-29 17:49
写的不错yoyoyo
作者: 760486198    时间: 2018-8-29 18:06
我觉得还可以啦
作者: 从容微笑    时间: 2018-8-29 18:35
感谢分享
作者: #风萧萧#    时间: 2018-8-29 18:40
6666666666666666666666666
作者: wangxue123456    时间: 2018-8-29 19:04
走心了                     
作者: yy1134787753    时间: 2018-8-29 19:43
感谢分享
作者: py@py    时间: 2018-8-29 19:50
作者棒棒哒
作者: ouweina    时间: 2018-8-29 20:17
感谢分享!!!!!!!
作者: 淡写薰衣草的香    时间: 2018-8-29 20:43

作者: 兮兮哈哈    时间: 2018-8-29 20:44
666666666666666
作者: json0314    时间: 2018-8-29 21:48
加油!!!
作者: mydorling11    时间: 2018-8-29 23:05

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

作者: hello!!!    时间: 2018-8-30 10:02
666666666666666666666666
作者: 小公举    时间: 2018-8-30 10:05
感谢分享    谢谢啦    会努力的啦   
作者: zhanghua342    时间: 2018-8-30 12:10
感谢分享!!!!!!!!!!!!!!!!!!!!!!!!!!
作者: hongping    时间: 2018-8-30 12:30

作者: 18309299426    时间: 2018-8-30 12:40
不错  很感谢

作者: 仙人掌Sandy1    时间: 2018-8-30 16:52
为API生,为框架死,为debug奋斗一辈子,吃符号亏,上大小写的当,最后死在产品上。

作者: 凯凯小王子    时间: 2018-8-30 20:52
棒棒的,6666666666666
作者: 你不爱我    时间: 2018-8-30 21:56
6666666666666
作者: 小丹子    时间: 2018-8-30 22:19
很详细了,大哥!
作者: 疯子小花花    时间: 2018-8-31 09:50

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

黑马666666666666666666666666666666666666
作者: 专找bug    时间: 2018-8-31 10:05


感谢分享!!!!!!!!!!!
作者: 专找bug    时间: 2018-8-31 10:06
感谢分享!!!!!!!!!!!
作者: 专找bug    时间: 2018-8-31 10:07
66666
作者: kdhdjdj    时间: 2018-8-31 10:31

作者: 就业高冷派    时间: 2018-9-6 09:47
就业高冷派 发表于 2018-7-27 09:45
腻害 加油~


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

努力奋斗!
作者: 就业高冷派    时间: 2018-9-6 09:48
little_superman 发表于 2018-8-27 17:44
6666666666666666666666666

努力奋斗!
作者: 就业高冷派    时间: 2018-9-6 09:48
殷凯老师 发表于 2018-8-27 18:13
感谢分享!!!!!!!!!!!

努力奋斗!
作者: 就业高冷派    时间: 2018-9-6 09:48
殷凯老师 发表于 2018-8-27 18:13
感谢分享!!!!!!!!!!!

努力奋斗!
作者: 就业高冷派    时间: 2018-9-6 09:48
巴拉拉小魔仙 发表于 2018-8-27 18:15
6666666666666

努力奋斗!
作者: 就业高冷派    时间: 2018-9-6 09:49
疯言峰语 发表于 2018-8-28 13:29
感谢分享!!!!!!!!!!!

努力奋斗!
作者: 就业高冷派    时间: 2018-9-6 09:49
致橡树 发表于 2018-8-28 17:25
66666688888888

努力奋斗!
作者: 就业高冷派    时间: 2018-9-6 09:49
同心筑梦1 发表于 2018-8-28 14:22

努力奋斗!
作者: 就业高冷派    时间: 2018-9-6 09:50
致橡树 发表于 2018-8-28 17:25
66666688888888


作者: 就业高冷派    时间: 2018-9-6 09:50
ruoquan 发表于 2018-8-28 17:48
厉害了,6666

努力奋斗!
作者: 就业高冷派    时间: 2018-9-6 09:50
xiaoheizi 发表于 2018-8-28 18:12

努力奋斗!
作者: 就业高冷派    时间: 2018-9-6 09:50
SunYan 发表于 2018-8-28 18:24
黑马6666666666666666666666666

努力奋斗!
作者: 就业高冷派    时间: 2018-9-6 09:50
举个栗子 发表于 2018-8-28 18:25
6666666棒棒哒

努力奋斗!
作者: 就业高冷派    时间: 2018-9-6 09:50
duanshaobo 发表于 2018-8-28 18:26
人到中年不得已,保温杯里泡枸杞

努力奋斗!
作者: 就业高冷派    时间: 2018-9-6 09:51
半个程序员 发表于 2018-8-28 18:42
为API生,为框架死,为debug奋斗一辈子,吃符号亏,上大小写的当,最后死在产品上。 ...

努力奋斗!
作者: 就业高冷派    时间: 2018-9-6 09:51
黑马程序员啊 发表于 2018-8-28 18:48
感谢分享!!!!!!!!

努力奋斗!
作者: 就业高冷派    时间: 2018-9-6 09:51
1098018910 发表于 2018-8-28 18:50
感谢感谢

努力奋斗!
作者: 就业高冷派    时间: 2018-9-6 09:51
半个程序员 发表于 2018-8-28 19:06
HBuilder.9.0.6.windows.zip
VSCodeSetup-x64-1.24.0.exe
WebStorm

努力奋斗!
作者: 就业高冷派    时间: 2018-9-6 09:51
小伙啊 发表于 2018-8-28 19:21
感谢分享!!!!!!!!!!!

努力奋斗!
作者: 就业高冷派    时间: 2018-9-6 09:52
yujq 发表于 2018-8-28 19:26
很受用!!!!!!!!!!!!!!!!!

努力奋斗!
作者: 就业高冷派    时间: 2018-9-6 09:52
王航 发表于 2018-8-28 19:27
感谢分享!!!!!!!!

努力奋斗!
作者: 就业高冷派    时间: 2018-9-6 09:52
zhaosongzhi 发表于 2018-8-28 20:15
66666666666666666666666的飞起

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

努力奋斗!
作者: 就业高冷派    时间: 2018-9-6 09:52
谢先森 发表于 2018-8-28 21:28
6666666666666666666666666

努力奋斗!
作者: 就业高冷派    时间: 2018-9-6 09:52
zplxwl 发表于 2018-8-29 00:04
感谢分享!!!!!!!!

努力奋斗!
作者: 就业高冷派    时间: 2018-9-6 09:52
huochao 发表于 2018-8-29 01:51
66666666666666666666


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


作者: 就业高冷派    时间: 2018-9-6 09:53
JavaEE风清扬 发表于 2018-8-29 09:16
不错不错加油.............


作者: 就业高冷派    时间: 2018-9-6 09:53
零度☆黎明 发表于 2018-8-29 11:44
棒棒哒 .....................

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

努力奋斗!
作者: 就业高冷派    时间: 2018-9-6 09:53
py@py 发表于 2018-8-29 14:39
写的不错yoyoyo

努力奋斗!
作者: 就业高冷派    时间: 2018-9-6 09:54
小黑马王子abc 发表于 2018-8-29 15:20
感谢分享!!!!!!!!
感谢分享!!!!!!!!

努力奋斗!




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