面试遇到的问题
1\ 代理模式,单例模式等 大数据并发,索引(int 索引和string索引)
2\设计模式是应对变化.(20多种模式)
数据经常死机了怎么处理,先看看是不是连接池不够用了.
3\面试的问题四类(1)Java基础知识,(2)多线程(3)大数据并发处理(4)数据库优化.
(1)基础知识:设计模式:目的应对变化.找到合适的场景,并且知道优缺点.
(2)多线程:比如有几个人同时访问数据库,20个人 如何保证20个人同时访问数据,因为Servlet的请求,一般最多是30000个,,servlet的请求就是多线程的,
同时开启了多个线程.假如大于30000的话可以使用负载均衡,将程序部署到多个服务器上去,根据ip地址访问的时候随机转发.或者使用消息队列Messsage Query.进行排队处理.
(3)大数据量的并发处理比如抢票的系统的制作:
改进方法:(a)INO 也就是说当用户登录的时候,其实并不是真正跟系统建立了关联,当用户点击订票的时候才开始与数据库进行关联的.
(b)使用Hibernate设置一级缓存,和二级缓存,假如说用户经常访问的数据,比如之前的项目中有基础数据,这些不经常变动的数据放到缓存中.
如果不从数据库中取数据,比如比较复杂的数据才与数据库交互查询.
(c)增加索引,对经常查询的列建立索引,比如int类型的和string类型的.int类型和string类型有区别,int数字比较的会快一些,
string比较的慢一些,假如比较string的话,可以考虑使用前几位进行比较.index(23).
(d)数据库的SQL优化,比如把一对一的关系改成一对多.
(e)磁盘分区,也就是说,将相同的数据放到不同的数据表中进行存放,然后根据方法判断.应该访问那个数据.比如对过来的请求用模处理,分发过来.相同的表进行切割到不同
的数据当中,用户根据模处理转发请求.
(f)分表字段处理,比如用户80%经常访问一个表中的两个字段,其他的字段并不常访问,可以将表拆开,将这两个字段放到另一个张表中,这样100的人速度都会快起来.
(g)所有的数据的访问一般并发100左右,可以建立连接池,连接池这样不需要频繁的与数据建立连接,释放链接.连接池可以一直连接,用户需要连接数据的话,申请连接池.
用完之后,给下一个请求使用连接池.
(4)数据库的优化,:建立索引,优化SQL,比如1对1改成1对多;
本文来自博客园,作者:aspirant,转载请注明原文链接:https://www.cnblogs.com/aspirant/p/3521467.html