【Java】几道常见的秋招面试题 (4)

提供一系列的依赖包来把其它一些工作做成开箱即用其内置一个’Starter POM’,对项目构建进行了高度封装,最大化简化项目构建的配置。

三、嵌入式Tomcat,Jetty容器,无需部署WAR包

七、G1和CMS

G1收集器的设计目标是取代CMS收集器,它同CMS相比,在以下方面表现的更出色:

G1是一个有整理内存过程的垃圾收集器,不会产生很多内存碎片

CMS采用的是标记清除垃圾回收算法,可能会产生不少的内存碎片

G1的Stop The World(STW)更可控,G1在停顿时间上添加了预测机制,用户可以指定期望停顿时间

拓展阅读:

G1 垃圾收集器介绍:https://javadoop.com/post/g1

八、海量数据解决方案

海量数据的处理也是一个经常考的知识点,无论在面试还是在笔试中都是比较常见的。有幸读了下面的文章,摘录了一些解决海量数据的思路:

Bloom filter布隆过滤器

适用范围:可以用来实现数据字典,进行数据的判重,或者集合求交集

Hashing

适用范围:快速查找,删除的基本数据结构,通常需要总数据量可以放入内存

bit-map

适用范围:可进行数据的快速查找,判重,删除,一般来说数据范围是int的10倍以下

适用范围:海量数据前n大,并且n比较小,堆可以放入内存

双层桶划分----其实本质上就是【分而治之】的思想,重在“分”的技巧上!

适用范围:第k大,中位数,不重复或重复的数字

数据库索引

适用范围:大数据量的增删改查

倒排索引(Inverted index)

适用范围:搜索引擎,关键字查询

外排序

适用范围:大数据的排序,去重

trie树

适用范围:数据量大,重复多,但是数据种类小可以放入内存

分布式处理 mapreduce

适用范围:数据量大,但是数据种类小可以放入内存

详细可参考原文:

十道海量数据处理面试题与十个方法大总结:https://blog.csdn.net/v_JULY_v/article/details/6279498

九、幂等性 9.1HTTP幂等性

昨天去做了一套笔试题,经典的HTTP中get/post的区别。今天回来搜了一下,发现跟之前的理解有点出入

如果一个人一开始就做Web开发,很可能把HTML对HTTP协议的使用方式,当成HTTP协议的唯一的合理使用方式。从而犯了以偏概全的错误

单纯以HTTP协议规范来说,可能我们之前总结出的GET/POST区别就没用了。(但通读完整篇文章,我个人认为:如果面试中有GET/POST区别,还是默认以Web开发场景下来回答较好,这也许是面试官想要的答案)

参考资料:

GET和POST有什么区别?及为什么网上的多数答案都是错的。

其中也学习到了幂等性这么一个概念,于是也做做笔记吧~~~

Methods can also have the property of “idempotence” in that (aside from error or expiration issues) the side-effects of N > 0 identical requests is the same as for a single request.

从定义上看,HTTP方法的幂等性是指一次和多次请求某一个资源应该具有同样的副作用

这里简单说一下“副作用”的意思:指当你发送完一个请求以后,网站上的资源状态没有发生修改,即认为这个请求是无副作用的

HTTP的GET/POST/DELETE/PUT方法幂等的情况:

GET是幂等的,无副作用

比如我想要获得订单ID为2的订单:,使用GET多次获取,这个ID为2的订单(资源)是不会发生变化的!

DELETE/PUT是幂等的,有副作用

比如我想要删除或者更新ID为2的订单:,使用PUT/DELETE多次请求,这个ID为2的订单(资源)只会发生一次变化(是有副作用的)!但继续多次刷新请求,订单ID为2的最终状态都是一致的

POST是非幂等的,有副作用的

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zywpgs.html