今天,接了一个电话面试,对于还是初学者的我来说,紧张了半天。
面试的问题分了层次,对于一类问题,由简到难。自己觉得回答不好的地方作了一下总结:
在谈到集合类的时候,举几个常用的集合类,想都没想,直接说了list,map。
然后对list和map分别举几个类型:
list方面:ArrayList,LinkedList。在谈到他们的区别时,愣住了。就说了LinkedList是按照顺序存储的,ArrayList则是随机的。
后来翻了一下书:两者的不同之处不仅在于执行某些类型的操作时的性能,而且LinkedList包含的操作也多于ArrayList。
ArrayList:擅长于随机访问元素,但是在List的中间插入和移除元素较慢。
LinkedList:通过较低的代价在List中间进行元素的插入和删除操作,提供了优化的顺序访问。但是在随机访问方面相对比较慢,特性集较ArrayList更大。
它们都是具有相同接口和外部行为的简单的序列,但是它们对某些操作所花费的代价却有天壤之别。在ArrayList中,随机访问元素是一个花费固定时间的操作;但是,对LinkedList来说,随机选取元素需要在列表中移动,这种代价是高昂的,访问越靠近表尾的元素,花费的时间越长。而另一方面,如果想在序列中间插入一个元素,LinkedList的开销却比ArrayList要小。
map方面:举了hashmap,treemap,linkedhashmap。
谈到hashmap的时候,我对它只有“它是最快获得元素的方式”这个概念。然后被问到了hashcode,怎么产生hashcode的。我知道它和equals都可以用来比较两个对象是否相等,而且都可以重写。一般equals相等的两个对象,hashcode也基本相等。hashcode相等的,equals可能相等,可能不相等。但是hashcode是怎么产生的还真不知道。
回头查了一下,原来,hashcode是一个本地方法。在Object类中的代码是:
public native int hashCode();
如果不对它进行重写,那么两个地址不同的对象,hashcode是不会相同的。但是我们往往要比较的是两个对象的内容,那么就要对hashcode进行重写。举个例子:
public int hashCode() { int h = hash; if (h == 0 && value.length > 0) { char val[] = value; for (int i = 0; i < value.length; i++) { h = 31 * h + val[i]; } hash = h; } return h; }
这是String重写后的hashcode。那么就可以用它来比较两个String的内容是否相同了。
public class TestEqualAndHash { public static void main(String[] args) { String a = "abc"; String b = "abc"; System.out.println(a==b); System.out.println(a.hashCode()==b.hashCode()); User u1 = new User(); User u2 = new User(); System.out.println(u1==u2); System.out.println(u1.hashCode()==u2.hashCode()); } } class User{ } Output: true true false false
可以看出,String经过重写,a,b相等;但是User没有重写过equals和hashcode,所以不相等。
相关推荐
### 阿里电话面试一面总结 #### 自我介绍(研究方向、项目经历) 在面试开始阶段,面试官通常会让候选人进行自我介绍。这一环节非常重要,因为它不仅可以让面试官了解你的背景,还能展现你的沟通能力和表达能力。...
6. **电话面试的准备**:电话面试往往更加突然,因此需要时刻准备好自我介绍和关键信息的传达。可以通过模拟电话面试来提升通话技巧,注意语调、节奏以及信息的清晰度。电话旁放置简历和其他相关信息可以帮助快速...
总结来说,电话面试结构化指导书模板提供了一个系统化的面试流程,帮助HR专业、有序地进行面试,有效地筛选出符合公司需求的候选人。通过这样的结构化方式,可以减少主观偏见,提高面试的公平性和准确性。在实施过程...
除开知识点,一定要准备好以下套路:个人介绍,需要准备一个1分钟的介绍,包括学习经历、工作经历、项目经历、个人优势、一句话总结。一定要自己背得滚瓜烂熟,张口就来抽象概念,当面试官问你是如何理解多线程的...
5. 面试后的跟进:面试结束后,如何通过邮件或电话的方式表达感谢并询问面试结果。 6. 求职安全:由于文件标签提到了安全,因此可能包含识别招聘骗局、保护个人隐私、网络安全意识等与求职过程中可能遇到的风险相关...
通过BAT面试后总结的【高级Java后台开发面试指南】,消灭干货无废话,针对高频面试点本项目是本人参加BAT等其他公司电话、现场面试之后总结出来的针对Java面试的知识点或真题,每个问题或都是在面试中被问过的。...
【阿里前端面试经历总结】 在面试阿里巴巴前端职位的过程中,求职者需要做好充分的准备,以展示自己的专业能力和个人特质。以下是一些常见的面试问题及应对策略: 1. **离职原因**: - 在回答离职原因时,应确保...
C#面试笔试题目总结 本资源收录了30页的C#面试笔试题目,涵盖了抽象类和接口、数据绑定、内存管理、委托、序列化、ADO.NET、面向对象编程等多方面的知识点。 1. abstract class 和 interface 的区别 abstract ...
### CC++电话面试知识点解析 #### 1. 数组与指针的区别? - **定义**: - **数组**:是一系列相同类型的数据元素的集合,这些数据元素在内存中是连续存储的。 - **指针**:是指向一个变量或其他数据结构的地址的...
### Android面试总结:Java基础知识详解 #### Java Object 类方法 在深入探讨面试中涉及的关键Java概念之前,我们先从Java中最基本的类——`Object`类开始。`Object`类是所有Java类的父类,提供了几个核心方法,...
Java面试资料总结是针对求职者,尤其是那些寻求Java开发岗位的人士所精心整理的资源集合。这份资料旨在帮助应聘者更好地准备面试,提高获得理想职位的机会。以下是对这两个文件名中涉及的Java面试知识点的详细解析:...
在个人求职过程中,面试是至关重要的环节,它不仅考察了应聘者的专业知识,还评估了沟通技巧、思维方式和问题解决...记住,每一次面试都是一个学习和成长的机会,不要害怕失败,持续提升自己,终会找到属于自己的舞台。
电话面试往往是没有预知的,因此,如果电话在不合适的时间响起,例如在喧嚣的场所或容易分心的环境中,最佳做法是礼貌地告知面试官你将稍后回拨,并寻找一个安静的地方继续通话。这样的做法不仅显示出你的专业素养,...
01-多角度的面试提问清单(共8页)-素材.docx 02-招聘面试25问-素材.doc 03 群面技巧、案例、面试官角度解析 ...【面试】一次本不该失败的面试经历-素材.doc 【面试】如何才能100%面试成功等等。。。。。。。
- **电话面试**: 在电话面试中,面试官对面试者的简历提出了多个疑问,包括简历的专业信息缺失、工作经验的时间线错误等。这些问题反映了产品经理职位对于简历内容准确性的重视。 #### 二、电话面试中的挑战与反思 ...
总结来说,电话面试是求职过程中的一个重要环节,需要求职者展现出良好的沟通技巧、扎实的专业知识以及对面试流程的熟悉。通过充分的准备,你将能够以积极的态度和专业的表现,顺利通过电话面试,为自己赢得进一步...
电话面试是求职过程中常见的一种筛选方式...总之,电话面试是求职过程中的一个重要环节,求职者需要具备良好的沟通技巧,保持专业态度,同时对自我有清晰的认识。通过不断学习和实践,才能在竞争激烈的职场中脱颖而出。
总结来说,这份“面试集锦”集合了丰富的资源和深入的见解,涵盖了从技术到沟通的方方面面,旨在帮助求职者全面准备面试,无论是在口试、笔试还是电话面试中,都能够应对自如。通过使用这份集锦,求职者将对面试过程...
**适用范围**:Bloom Filter是一种空间效率极高的概率型数据结构,主要用于判断一个元素是否在一个集合中。它适用于数据字典的实现、数据判重、以及集合之间的交集求解。 **基本原理及要点**: - **位数组 + K个...