今天,接了一个电话面试,对于还是初学者的我来说,紧张了半天。
面试的问题分了层次,对于一类问题,由简到难。自己觉得回答不好的地方作了一下总结:
在谈到集合类的时候,举几个常用的集合类,想都没想,直接说了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. 求职安全:由于文件标签提到了安全,因此可能包含识别招聘骗局、保护个人隐私、网络安全意识等与求职过程中可能遇到的风险相关...
【阿里前端面试经历总结】 在面试阿里巴巴前端职位的过程中,求职者需要做好充分的准备,以展示自己的专业能力和个人特质。以下是一些常见的面试问题及应对策略: 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个...
在软件测试面试中,常见的问题包括为什么要在一个团队中开展软件测试工作、曾经从事过哪些测试工作、熟悉的软件测试类型、测试用例设计的关键是什么等。 软件测试是一个非常重要的过程,它可以帮助我们发现软件中的...
总结来说,电话预约面试的技巧主要包括:礼貌的开场,明确的职位推荐,合理的说服策略,详尽的面试信息提供,以及及时的后续跟进。这些步骤都需要以平和、专业和尊重的态度进行,以提高候选人的参与度和面试的成功率...