前言
作为程序员,免不了要经历面试这关,虽然平时工作勤勤恳恳,但是面试上面未必能展示的出来,比如平时都是做增删改查的业务系统,面试官非要问你如何处理高并发大数据,本来是写java代码,非要问你大型网站架构,这些问题防不胜防,本文就自己的面试经验来总结一下,抛砖引玉。
题库
最近阿里集团代码开发规约又一次火爆朋友圈,其实进来了才能体会到开发规约插件的好处,所以这里总结了一下面试官常问的问题,被问到了就大赚,希望大家能来杭州和北京一起工作!
这是本人面试了三年得到的面试题库:
- HashMap 源码解读(TreeMap. LinkedHashMap)
hashmap 允许 空值 和 空key, 非线程安全的,不保证存储顺序
初始容量 和 负载因子(0.75)
结构化改变,增加或者删除必须是同步的, 单纯的改变值不需要同步
获取遍历器的时候,多线程的结构的改变,不是通过遍历器的remove方法的结构改变,都是在遍历器的时候 抛出异常,但是这个不能保证,只能是测试使用
根据hashcode排序,相同comparable的根据comparable排序
treeNode是正常节点的2倍 .
树节点往往是根节点, iterator.remove才可能不是根节点,但是可以根据treenode.root恢复
容量必须是2的倍数,默认为16,最大为2^30
一个桶的元素>=8 就从list 变为 tree,<=6就从tree变为list
桶数量到64的时候里面的桶才会被树形化
4*8的元素在同一个节点的时候,会被重新更新size大小
hashBinNode hashCode是key和value的异或 - heap 和 stac