java面试题收集

近期在试水,也想了解自己当前水平处于哪个阶段。

收集了一些面试提到的题目,可能部分存在个人的理解有所偏差。一点一点的补上去吧

 

1.线程获取输出的值

对需要输出的对象 实现 接口Callable 进行返回指定值并且使用线程池executorService线程池返回指定值,submit方法可触发

返回Future 就可以获取到返回值

 

2.spring maybatis 的配置

dataSource引入,开启sqlSessionFactory

扫描mapper的xml,事务注解,需要切面

插件pagehelper实现分页配置

 

3.spring mybatis  的缓存机制如何使用

需要在mybatis的配置文件中开启cacheEnable的状态为true,因为默认是false,开启cache

最后在crud的时候进行缓存的刷新flushCache 为true 这个是关键点,因为没配置的话,会引起读取脏数据

默认是有一级缓存的,开启二级缓存则需要开启,当某些方法不需要用到缓存的时候,则注入对应的查询业务方法设置useCache

也可以对缓存进行定时的刷新,避免数据的更新不及时。用到eviction为LRU 默认的,配置interVal是1000个,刷新时间自定义。这个就看业务是否有必要这样操作了。因为缓存的机制无非就是为了更好的使用数据的可读性

为false即可。

一二级缓存是SQlSession对象存储数据的。因为存在session有多个。因此在跨session查询缓存的时候则需要用到二级缓存

参考:https://www.cnblogs.com/DoubleEggs/p/6243223.html

 

4.spring 的常用事务 

回滚事务,TransActionManager在配置文件中适配,使用annotation 驱动注入事务。

然后可在相应的需要处理的业务逻辑上进行动态配置事务处理也就是transActional的注入配置,必须用于公有public的配置才能生效,即可做到小事务的处理。因为大事务的处理就会出现数据的一致性处于较为弱的反馈,更有可能出现锁死并且锁库的情况风险

 

5.实现线程的方式有哪些

实例化Thread ,实现runnable 方法。

这里需要拓展到线程池,executorService的使用,记得配置好线程池的数量使用,一般是以服务器的cpu核数+1.一定要按照服务器的配置进行评估,不然会出现把整个线程搞垮。。一般会提示内存溢出。。

 

6.string stringBuffer stringBuilder的区别

String是一个对象 一般操作少量且是不需要拼接的字符串推荐使用这个 最慢

StringBuffer 是一个字符串变量 线程安全 多线程使用 效率上是适中因为有线程锁

StringBuilder 是一个字符串变量 线程不安全的 单线程使用 效率上是最好的

 

7.spring 注入的原理

也就是IOC 注入

可以有两种配置方式,一种是通过的配置文件进行配置,一种是通过代码动态配置,两者都可用。

原理为载入,解析,注册、

载入就是创建bean 然后创建单例的Bean实例化,最后是初始化Bean到系统

简单来说,我们一般在启动spring加载时,可用用application上下文进行对bean进行注入加载。实现的原理也是简单的封装上下文的环境,进而可用拿到注入的bean实例化

 

8.Spring常用的配置注入有哪些

bean,service,autowired,Transactional,reqyestMapping,Configuration

 

9.newRelic监控的作用

监控业务逻辑存在异常的问题。

 

10.IONIO的区别

IO是流,并且是阻塞的,一般是用于读写文件用到,运用到InputStreamOuputStream 读写,适用于单线程操作

Nio是缓存是非阻塞的一般可适用于网络文件的传输,当出现断开的时候,则可以重新发起链接。

11.字符编码UTF8是多少字节

1-4个字节,此类需要区分数字,英文,特殊符号,汉字等。

 

猜你喜欢

转载自www.cnblogs.com/jimw/p/9221065.html