此刻是晚上11点了,昆山软件开发,学校屠猪馆的自习室因为太晚要封锁了。勤奋且疲劳的小鲁班也从屠猪馆出来了,正筹备回宿舍洗洗睡,由于自习室位置较量荒僻所以是吸收不得手机网络信号的,因此小鲁班从兜里掏脱手机的时候,信息可真是炸了呀。小鲁班心想,微信群平时都没什么人谈天,今晚必定是产生了什么大事。仔细一看,才发明本来是小鲁班的室友达摩(秃顶)拿到了阿里巴巴 Java 开拓实习生的 Offer,此时小鲁班真替他室友感想兴奋的同时,心里也不免会发生一丝丝的失落感,那是因为本身投了许多份简历,别说拿不拿获得 Offer,就连给口试邀的公司也都凤毛麟角。小鲁班这会可真是受到了一万点真实暴击。不外小鲁班照旧很乐观的,很快调解了心态,带上耳机,逐步的走回了宿舍,正规划筹备向他那神室友达摩取取经。
半晌后~
小鲁班:666,传闻你拿到了阿里的 Offer,能透露一下口试内容和能力吗?
达摩:嘿嘿嘿,没问题鸭,啼声爸爸我就汇报你。
小鲁班:耙耙(外貌笑嘻嘻,心里MMP)
达摩:其实我也不是很记得了(请继承装),但我照旧记得那么一些。假如你是面的 Java,首先虽然是JAVA的基本常识:数据布局(Map / List / Set等)、设计模式、算法、线程相关、IO/NIO、序列化等等。其次是高级特征:反射机制,并发与锁,JVM(GC计策,类加载机制,内存模子)等等。
小鲁班:问这么多内容,那岂不是一小我私家都口试好久吗?
达摩:不是的,口试官一般城市用连环炮的方法提问的。
小鲁班:你说的连环炮是什么意思鸭?
达摩:那我举个例子:
无穷无尽深入,直到你答复不出来可能口试官认为问题到底了。
小鲁班捏了一把汗,我去……这是妖怪吧,那我们来试试呗(因为小鲁班方才在自习室才看了这章的常识,想乘隙装一波逼,究竟方才叫了声爸爸~~)
于是达摩 and 小鲁班就开始了对决:
1、为什么用HashMap?
2、HashMap 的事情道理是什么?
我们利用 put(key, value) 存储工具到 HashMap 中,利用 get(key) 从 HashMap 中获取工具。当我们给 put() 要领通报键和值时,我们先对键挪用 hashCode() 要领,计较并返回的 hashCode 是用于找到 Map 数组的 bucket 位置来储存 Node 工具。
这里要害点在于指出,HashMap 是在 bucket 中储存键工具和值工具,作为Map.Node 。
简化的模仿数据布局:
Node[] table = new Node[16]; // 散列桶初始化,table class Node { hash; //hash值 key; //键 value; //值 node next; //用于指向链表的下一层(发生斗嘴,用拉链法) }
思量非凡环境:假如两个键的 hashcode 沟通,你如何获取值工具?