面试试题汇总(2)

 

1、索引算法b-tree与hash的区别
b-tree索引是最常用的mysql数据库索引算法,可以用在=、>=、>、<、<=、between这些比较操作符上,还可以用于不以通配符%开头的like操作符上。
hash只能用于对等比较,仅仅能用于=、in查询,在键值唯一的情况下,检索效率远高于b-tree
hash不能用于范围查询。
联合索引中,hash索引不支持最左匹配原则
hash索引无法利用索引完成排序,不支持不以通配符%开头的like操作

2、分布式系统中主键生成策略
可参考:https://www.cnblogs.com/haoxinyue/p/5208136.html
①、数据库自增长序列
②、UUID
③、redis生成ID
④、Twitter的snowflake算法

3、多对多关系的表如何处理
建立中间关系表进行维护

4、mysql的分页实现
可参考:https://www.cnblogs.com/youyoui/p/7851007.html
一般情况下,客户端通过传递pageNo页码、pageSize页数两个参数去分页查询数据库中的数据
数据量较少时(百、千级别)时使用mysql自带的limit来处理:
select * from table limit (pageNo-1)*pageSize,pageSize

5、spring创建出来的bean都是单例吗
spring将对象的创建交由IOC来管理,默认生成的bean是单例的,这与scope的配置有关,默认是singltion,即单例模式
scope还可以设置成prototype、request、session
prototype,每一次请求,都会产生一个新的bean实例,即多例模式
request,针对每一次HTTP请求都会产生一个新的bean,该bean仅在当前HTTP request内有效
session,针对每一次HTTP请求都会产生一个新的bean,该bean仅在当前HTTP session内有效

6、springmvc的实现流程
①、客户端发送http请求至前端控制器DispatchServlet
②、DispatherServlet收到请求后调用处理器映射器HandlerMapping
③、HandlerMapping根据请求的Url找到具体的处理器,生成处理器对象Hander以及处理器拦截器HandlerIntercepter,一并返回给DispatcherServlet
④、DispatchServlet通过处理器适配器HandlerAdapter条用处理器Controller
⑤、执行处理器其中的业务逻辑,执行完后返回ModelAndView
⑥、HandlerAdapter将ModelAndView返回给DispatchServlet
⑦、DispatchServlet将ModelAndView传给视图解析器ViewResolver
⑧、ViewResolver解析后返回具体的视图View
⑨、DispatchServlet对视图View进行渲染视图,返回给客户端

7、支付如何防止多次支付,对账是如何处理的

8、jvm优化实践

9、maven命令

10、什么叫hash碰撞
两个不同的原始值经过hash运算后得到相同的结果,着就叫做hash碰撞
一般使用开放定址法、链地址法解决hash碰撞

11、java中对象都分配在堆中吗
https://blog.csdn.net/rickiyeat/article/details/76802085?locationNum=4&fps=1
https://blog.csdn.net/moakun/article/details/80380220

猜你喜欢

转载自www.cnblogs.com/conswin/p/9392974.html