面试总结。。。。待续写
来源:互联网 发布:莫知我哀 莫的意思 编辑:程序博客网 时间:2024/05/22 04:37
面试的基础问题:
1.HashMap的实现原理,怎么扩容。扩容的内部机制是什么?
这里贴一下在java开发里的一些公约:
关于hashCode方法,一致的约定是:
重写了euqls方法的对象必须同时重写hashCode()方法。
如果2个对象通过equals调用后返回是true,那么这个2个对象的hashCode方法也必须返回同样的int型散列码
如果2个对象通过equals返回false,他们的hashCode返回的值允许相同。(然而,程序员必须意识到,hashCode返回独一无二的散列码,会让存储这个对象的hashtables更好地工作。)
这里有一个更正式版的:翻译于google
第一:在某个运行时期间,只要对象的(字段的)变化不会影响equals方法的决策结果,那么,在这个期间,无论调用多少次hashCode,都必须返回同一个散列码。
第二:通过equals调用返回true 的2个对象的hashCode一定一样。
第三:通过equasl返回false 的2个对象的散列码不需要不同,也就是他们的hashCode方法的返回值允许出现相同的情况。
总结一句话:等价的(调用equals返回true)对象必须产生相同的散列码。不等价的对象,不要求产生的散列码不相同。
hashMap 工作流程:
调用hashMap 的hashcode方法 计算该对象的hashcode值,,根据该hashcode值,决定该对象在hashMap中的存储位置,
如果两个元素通过equals返回时true,但他们的hashcode值不同,则会存储在不同的地方。
如果两个元素的hashcode值相同,equals不同,则会造成冲突。(这样不好,会在该位置做一个链表,用尾插法插入新元素)
取值:根据get() 根据指定的key值。返回对应的value 此方法调用了getEntry(Object key)得到相应的entry.然后返回entry.getValue();
哈希表的阈值 一开始等于16,此时table表为空{},当里面装填了数据以后,阈值为16*loadSize(16*3/4) =12.这里的阈值是用来判断,如果装填数据的数量大于它,那么可以开始扩容,为原来表长的两倍。扩容需要复制当前数据,会增加很大的开销。
2.常用设计模式工厂模式,简单说下它的基本情况
工厂方法模式:
一个抽象产品类,可以派生出多个具体产品类。
一个抽象工厂类,可以派生出多个具体工厂类。
每个具体工厂类只能创建一个具体产品类的实例。
抽象工厂模式:
多个抽象产品类,每个抽象产品类可以派生出多个具体产品类。
一个抽象工厂类,可以派生出多个具体工厂类。
每个具体工厂类可以创建多个具体产品类的实例。
区别:
工厂方法模式只有一个抽象产品类,而抽象工厂模式有多个。
工厂方法模式的具体工厂类只能创建一个具体产品类的实例,而抽象工厂模式可以创建多个。
两者皆可。
观察者模式。
3.Wait 和sleep的区别。
答:wait 是object类下的方法,sleep是线程里的,占着cpu在睡觉,没有出让出cpu资源 ,没有释放锁,而wait释放了锁。在明确多少时间后肯定会继续运行,而wait是cpu阻塞了,不一定会运行。
sleep必须捕获异常,而wait,notify和notifyAll不需要捕获异常。sleep可以在任何地方使用,wait,notify,notifyAll只能在同步代码块,或者同步控制方法里进行。
4.算法题单链表的逆序。
- 面试总结。。。。待续写
- java面试--java基础知识总结(待续)
- 总结【待续】
- 首写标记 待续
- 绝对干货——2016面试总结篇(未完待续)
- 某搜索公司面试 待续
- 演奏乐器总结(待续...)
- web项目总结 >> 待续
- ExtJs 总结 待续
- 项目总结(待续.....)
- DP总结..未完待续
- linux常用命令总结(待续)
- Linux命令总结【待续】
- 线程问题总结 待续
- java学习总结(待续)
- 排序学习总结(待续)
- fedora9安装总结(待续)
- 12月总结(待续)
- 关于电脑安装多个版本JDK后使用时的切换
- oracle使用数据导出与导入
- quartz定时任务调度
- Javascript: 关于移动端与pc的点击事件的探讨
- Java关于中文乱码问题
- 面试总结。。。。待续写
- HDU 1198 Farm Irrigation(DFS)
- oracle中exp命令row=y和full=y,ignore=y的意思
- IOS开发第三天-内存管理
- spring <context:component-scan>使用说明
- 【JAVA秒会技术之Linux】Linux系统中安装中文字体方法(微软雅黑或宋体)
- 搭建 Apache Http Server 服务器
- 使用okhttp进行图片下载,上传,get,post网络请求
- 【LeetCode】max-points-on-a-line一条线上最多点