恒生一面总结(已凉)

大致问了如下几个问题,面试官问的偏实际应用。

1.数据库的事务隔离等级

答:数据库的事务有四个特性:原子性、一致性、隔离性、持久性。隔离等级有四种,分别为读未提交、读已提交、可重复读、串行化。读未提交未解决并发问题,读已提交解决了数据脏读,可重复读解决了数据脏读和不可重复读、串行化结局了脏读、不可重复读和幻读。

2.Spring的原理

内部核心内容是IOC,动态注入,即依赖倒置,其原理简单来讲就是使得对象的创建不需要new了,而是可以自动的生成,其实就是利用java中的反射。Spring在运行时,利用配置文件来动态的创建对象和调用对象中的方法。

Spring另一个核心内容是AOP,面向切面编程。即通过一种横向抽取机制,将那些与业务无关,但却对多个对象产生影响的公共行为和逻辑,抽取并封装为一个可重用的模块,也就是切面,通过将横切逻辑代码与业务代码分离,在不改变原有代码的基础下,将逻辑增强部分应用到原有业务中,从根本上解耦,避免大量的重复操作,降低了模块间的耦合度,提高了系统的可维护性
Spring是一个容器,只有在该容器里的对象才会有Spring所提供的这些服务和功能。

3.mysql的优化

遵从五个原则:

1.减少数据访问:设置合理的字段类型,启用压缩,通过索引访问等减少磁盘IO
2.返回更少的数据:只返回需要的字段和数据分页处理,减少磁盘io及网络io
3.减少交互次数:批量DML操作,函数存储等减少数据连接次数
4.减少服务器CPU开销:尽量减少数据库排序操作以及全表查询,减少cpu内存占用
5.利用更多资源:使用表分区,可以增加并行操作,更大限度利用cpu资源

集中的三点即:最大化利用索引,尽可能避免全表扫描,减少无效数据的查询

4.线程池

应用场景:秒杀,购票系统。 有并发的地方、任务数量大或小、每个任务执行时间长或短的都可以使用线程池。

线程池的优势有:

1.线程和任务分离,提升线程重用性;
2.控制线程并发数量,降低服务器压力,统一管理所有线程;
3.提升系统响应速度,假如创建线程用的时间为T1,执行任务用的时间为T2,销毁线程用的时间为T3,那么使用线程池就免去了T1和T3的时间;

5.Redis缓存中间件

具体问题记不清了......

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值