湖北推广联盟

Hi, 请登录

为什么所有Java面试都会问到List、Set、Map?

Map:我不是集合,却总要和List一起出现

“Map是不是集合?它和List有什么区别?”

相信绝大多数Java程序员都见过上面这道面试题,可以说,Map和Collection下的List、Set这两个接口已经成了util包中当之无愧的面试必考三剑客。

不知从何时开始,Map这个本和Collection没什么交集的接口,成了程序之外的“Collection”家族的John Snow。

为什么Map总是要和List等一起被问到?

似乎从来没人思考过。就好像这个问题天生具有迷惑性,可以让面试者猝不及防地将Map与集合混淆,从而漏出破绽!然后可以被面试官冷冷得讽刺一句:“哼!辣鸡!”。

集合,这不是高中的知识吗?

Java中的集合概念来源于数学,在高中的时候就已经学过:

“把一些能够确定的不同的对象看成一个整体,就说这个整体是由这些对象的全体构成的集合。”

一个大括号,一些零零散散的元素就构成了一个集合:

{1, 3, 5, 7, 9}

集合中会有我们需要用到的元素,它们都是一个一个独立的个体,不可分割。

Collection接口就是数学中这种多个元素的整体的一个抽象,从而衍生出允许元素重复的List与不能重复的Set。

而Map呢?虽然可以维护一对一对的 k-v映射,看似好像是一堆元素组织在了一起网络营销面试问题,但由于key和value本身就不存在什么共同的特征,因此和集合的概念还是有很大区别的。

面试造火箭,工作拧螺丝

好了,现在的面试官好像已经看出面试者渐渐变得聪明了,于是他们开始不那么执著地问Map出身的问题了,他们希望更加刁难苦逼的求职者:

“请问Map的工作原理是怎样的?”

“List的实现原理是怎样的?”

“你在工作中有木有分析过Map和Set的共通之处?”

小白表示,我在工作的时候用到的最多的就是list.add()和forEach呀!

面试造火箭,工作拧螺丝的戏码在无数的Java求职过程中可谓比比皆是。很多就算是进了BAT等一线大厂依然只是默默地进行着重复性的机械工作,就好像流水线上拧螺丝的钳工,可以随时被取代。

那么,为什么这些容器接口如此重要,重要到就算工作中几乎用不到解释原理,面试官也要问出个一二三?

很多写业务的程序员,和这些小白们一样,用的最多的就是add 和 for循环,仿佛所有的集合都可以通过这些简单的几个方法就能搞定所有的业务场景。

数组、表、红黑树、哈希,这些实现层的重要概念是计算机相关领域最最重要的知识内容——数据结构与算法。

为什么List、Set、Map被这么多的面试问到,就是因为它们考验了一个程序员对一些计算机相关知识的综合掌握程度,甚至可以洞悉一个求职者的知识参悟性。换句话说,“一千个哈姆雷特,可以出自一千个读者”,层次的不同对源码的解读也会不尽相同,工资也会有所不同。

这些重要的能力考量不仅可以体现一个程序员的技术水平,同时可以得知这些程序员理解业务的速度以及准确度,他们看待问题的角度以及一定的语言表达能力。

一个小小的HashMap,虽然用法简单,但在特定的场景也会有不同的使用变化,比如扩容问题,比如并发问题,线程安全问题等等。延伸而得的无数小问题也是可以考察一名程序员的知识广度和全面性。

所以,至今为止,三剑客都是面试环节JDK的一道重要主菜。

随着如今Java生态的越发成熟,很多优秀的框架喷涌而出,Spring、Spring Boot、JPA、Mybatis、Redis等等。这些解决各种Java应用场景的框架慢慢地加重了Jav

试看结束,如继续查看请付费↓↓↓↓
打赏0.5元才能查看本内容,立即打赏

来源【全网营销】自媒体,更多内容/合作请关注「辉声辉语」公众号,送10G营销资料!

相关推荐

二维码
评论