本文转载自公众号  码农翻身

上周发了一篇文章《漫画:什么是HashMap?》,引起了不少人的讨论,有一个人的留言引发了我的思考:“作为一个程序员, 真的有必要学习这些底层原理吗? 我会用了不就行了吗? 为什么面试者喜欢问这么细节的东西呢?”

是啊,在日常的工作中,如果只是做应用层面的业务开发,大多数都是直接把HashMap new 出来,调用put方法,放入key,value 就完了。

很少人会用到像public HashMap(int initialCapacity, float loadFactor)这样的构造函数,更不会去调整那个loadFactor,也不会关心HashMap的容量为什么是2的幂。

HashMap 提供了一个绝佳的范例,展示了编程中对于数据结构/算法的应用,例如位运算,Hash,数组,链表,红黑树等。我一直强调数据结构对于程序员逻辑思维能力的训练,学习下HashMap的实现原理,绝对是有好处的,但是这个好处显得比较“”,有没有更现实一点的意义?

我在码农翻身QQ群里做了一个调查:为什么要学习HashMap的底层原理? 除了面试以外,有什么用处?

各位同学的回答五花八门,比如内功派:

石头:为啥要学?练武功,不要内功,能成为高手么?

AT:不是合理运用底层原理才能写出好的吗?

HQT:就喜欢扒光底层原理的快感.

艺术人生: 越是底层的东西,对于想成为高级程序员越显得重要,必须得学

年年:学过了你会知道“哇靠,原来是这样”、“这个太妙了”,之后在别的问题上,这些奇妙的点可能会给你很大的启发

也有鄙视面试者的:

漠北 :感觉那个面试的人也是不知道问什么问题。

老王: 问那个问题的人学历一定不高。

有和实际工作密切相关的:

hugo : hashmap这种数据结构在开发中是很常用的, 在高并发的情况下,如果不注意这些数据结构的特性很容易出现各种问题而不知道怎么排查。

Tosh : 我感觉 完全不考虑性能问题 不考虑优化 跟搬砖就真的没区别了

代帧:对于只想拿死工资的人来说不用学习,对于想提升自己,拿到更高offer的人来说,必须要掌握。

其中“老金”和“年年”的回复和我的观点不谋而合、深得我心:

老金: 如果你能坚持看底层原理,至少可以证明是静得下心学习的人, (学会原理)证明了你和其他面试者不一样。

年年:你学了这个一是能够证明你对编程的兴趣不是停留在表面、二是证明你比较有学习的能力。最重要的一点是企业通过这个筛选招聘,你不会就不能进入好的公司,参与大的工程,难以提升自己的水平。

确实是这样,现在软件和互联网很火爆,很多人转行“入坑”,造成一个现象就是初级程序员过剩,那企业在挑选的时候怎么办呢? 他们怎么筛选呢?

对于一些技术驱动型公司来讲,他们肯定要挑选那些基础更扎实的人,因为在工作中这些基础知识会被直接使用。

对于业务驱动型公司(在国内估计是占大多数),面对大量的候选人,他们要看一个人是不是只是浮在表面, 有没有兴趣、有没有能力挖掘底层,虽然这些底层的原理在工作中并不会直接去使用! 很明显,这样的程序员成长的空间更大,也更能发挥价值。

这里边有个潜台词就是: 你把这么底层的原理都搞定了,应用层那点破事儿还不是手到擒来?!

“面试造航母,工作拧螺丝” 不无道理,听起来有点无奈和残酷。

我回想了我多年前经历的几次面试,Java这一块儿好像没有人问过我HashMap原理这样细节的问题,也许我们那个时代的先进技术在现在看来非常落伍,还在折腾MVC, AJAX这些东西, 远远比不上现在的同学们了。大家现在要学的东西,掌握的东西已经不可同日耳语了,门槛提高了!

技术的发展,知识的积累就是这样,一代更比一代强。

接下来的一个问题就是,如果大家都掌握了这些原理怎么办?

我估计门槛会再度提高, 没办法,程序员就是这么苦逼, 不过好处就是:也许你成为面试官了......

PS:你觉得为什么要学习HashMap的底层原理?除了面试之外有什么实际用处? 欢迎留言!

—————END—————

喜欢本文的朋友们,欢迎长按下图关注订阅号程序员小灰,收看更多精彩内容

为什么要学习HashMap的底层原理?相关推荐

  1. HashMap 的底层原理

    HashMap 的底层原理 1. HashMap的数据结构 数据结构中有数组和链表来实现对数据的存储,但这两者基本上是两个极端. 数组 数组存储区间是连续的,占用内存严重,故空间复杂的很大.但数组的二 ...

  2. 为什么使用HashMap需要重写hashcode和equals方法_最通俗易懂搞定HashMap的底层原理...

    HashMap的底层原理面试必考题. 为什么面试官如此青睐这道题? HashMap里面涉及了很多的知识点,可以比较全面考察面试者的基本功,想要拿到一个好offer,这是一个迈不过的坎,接下来我用最通俗 ...

  3. hashMap和hashTable的区别以及HashMap的底层原理?

    hashMap和hashTable的区别? 1.继承的父类不同 HashTable继承Dictionary类,而hashMap继承了AbstractMap类,但是二者都实现了map接口. 2.线程安全 ...

  4. HashMap的底层原理你真的知道?

    HashMap的底层实现原理是面试中出现频率非常高的一道面试题,本文将对HashMap的底层实现原理做一个简要的概况和总结,便于复习. 一.对于Map集合存储结构的理解 首先介绍以HashMap为典型 ...

  5. HashMap的底层原理 cr:csdn:zhangshixi

    1.    HashMap概述: HashMap是基于哈希表的Map接口的非同步实现.此实现提供所有可选的映射操作,并允许使用null值和null键.此类不保证映射的顺序,特别是它不保证该顺序恒久不变 ...

  6. HashMap的底层原理

    一:HashMap的节点:HashMap是一个集合,键值对的集合,源码中每个节点用Node<K,V>表示 static class Node<K,V> implements M ...

  7. 深入浅出~HashMap的底层原理透析

    创作宗旨:化繁为简,绝不冗余,点到为止 直接开门见山,就事论事! 什么是 HashMap? HashMap类继承了父类AbstractMap<K,V>,实现了接口Map<K,V> ...

  8. HashMap面试底层原理(原作者很厉害)

    一个HashMap跟面试官扯了半个小时 前言 HashMap应该算是Java后端工程师面试的必问题,因为其中的知识点太多,很适合用来考察面试者的Java基础. 开场 面试官: 你先自我介绍一下吧! 安 ...

  9. Java-Map从入门到性能分析2【HashMap的底层原理、构造方法优化、常用方法】

    [视频网址]:慕课网--Map从入门到性能分析 简介:Map是开发中,使用频率最高的知识点之一,Map家族也有很多成员,例如HashMap,LinkedMap等, 怎样更好地使用Map家族的这些成员, ...

最新文章

  1. pg数据库生成随机时间_postgresql 时区与时间函数-阿里云开发者社区
  2. java温度计的实现_echart 之实现温度计
  3. 2013.09.14 不能继续,就应该趁早放弃
  4. ubuntu server修改系统时区和系统时间
  5. Tensorflow源码解析3 -- TensorFlow核心对象 - Graph 1
  6. centos mysql-5.5.20_mysql-5.5.20+CentOS 6.2 编译安装全过程详解(2)
  7. [JAVA] TicTacToe实现Socket通信(一)
  8. 异常:由于代码已经过优化或者本机框架位于调用堆栈之上,无法计算表达式的值。...
  9. opencv车牌分割_OpenVINO车牌识别网络详解
  10. 《算法竞赛 入门经典》
  11. 小米笔记本电脑启动失败
  12. 视频怎么制作动图?教你一招视频gif制作的方法
  13. Error executing DDL
  14. 讯飞离线语音合成(离线资源包)
  15. Unity内置Shader解读2——Bumped Specular
  16. C++ SuperLU 混合编程
  17. 论文笔记:HIE-SQL:History Information Enhanced Network for Context-Dependent Text-to-SQL Semantic Parsing
  18. js逆向之有道词js加密解析
  19. html5图片中加入文字,HTML肿么在图片上添加文字,也就是图片作为背景,代码和图像显示如下...
  20. 【电脑版微信文件存储在什么位置】

热门文章

  1. 【动手学习pytorch笔记】28.机器翻译数据集
  2. 字符串前面添加u,r,b的含义
  3. matlab rloess,比较ggplot loess拟合和loess拟合函数
  4. Linux部署KVM虚拟化平台
  5. JSP实现文件下载功能
  6. 电磁波的达朗贝尔方程 工程电磁场P25
  7. 数学表达式基础——1 基本符号与术语
  8. WINVER 和 _WIN32_WINNT
  9. IDempiere介绍
  10. SDRAM学习(五)——串口传图