`
yeshaoting
  • 浏览: 684301 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

百度终面结构设计题(实现HashMap)

 
阅读更多


根据自己的想法实现HashMap


我的思路:

1. 设置一个长度为26的数组,数组每个元素都指向一个单链表(现在认为,如果26改成26*2+10可能会更合理)

2. 哈希函数的选择:根据关键字的第一个字符,通过计算(mod 26的操作返回的值),找到数组对应的存储数据单链表

3. 单链表存储的数据的结构

typedef struct item
{
	char* key;
	char* value;
	struct item *next;
}node;

 

 

4. 主要操作

put操作: 根据key找到对应的单链表,遍历该单链表,其中数据的key字段值与当前key相同,则更新该数据的value字段值.

get操作: 根据key找到对应的单链表,遍历该单链表,其中数据的key字段值与当前key相同,则找到,返回value字段值.

 

没想到我的想法是对的~~

 

以下摘自: http://zhangshixi.javaeye.com/blog/672697

HashMap的数据结构:
   
java编程语言中,最基本的结构就是两种,一个是数组,另外一个是模拟指针(引用),所有的数据结构都可以用这两个基本结构来构造的,HashMap也不例外。HashMap实际上是一个链表散列的数据结构,即数组和链表的结合体。



从上图中可以看出,HashMap底层就是一个数组结构,数组中的每一项又是一个链表。当新建一个HashMap的时候,就会初始化一个数组。

 

  • 大小: 13.6 KB
分享到:
评论
3 楼 yeshaoting 2011-12-01  
zuoyetian 写道
当时没问到碰撞吗?

才看到有评论.你说的碰撞是同义词发生冲突的情况怎么解决吗?
2 楼 zuoyetian 2011-11-10  
当时没问到碰撞吗?
1 楼 zuoyetian 2011-11-10  
very nice!

相关推荐

    百度、谷歌、腾讯、微软数据结构算法面试题

    2. 散列表(HashMap):散列表是一种常用的数据结构,用于存储键值对,它提供了快速的查找、插入和删除操作。题目中提到的可能是指如何设计一个散列函数,使得数据均匀分布,避免冲突,以提高效率。这通常需要考虑...

    百度最全笔试题

    【数据结构与算法】:在Java笔试题中,常见数据结构如数组、链表、栈、队列、树、图等,以及排序(如冒泡排序、快速排序、归并排序)和查找(如二分查找、哈希查找)算法的实现和应用是重点考察内容。对于复杂度分析...

    08百度笔试题(北京)

    第三部分是系统设计题,关注的是百度搜索引擎中的拼音提示功能的实现和优化。 【编程题解析】: 1. 题目要求找出短时间内频繁访问的IP(即攻击IP)。首先,需要读取IP访问信息,数据包括IP地址和访问时间,且数据已...

    大厂数据结构算法真题.zip

    综上所述,"大厂数据结构算法真题.zip"中的内容将涵盖广泛的编程基础知识,包括但不限于数据结构的选择和实现、算法的设计和优化、以及在Java语言中的具体应用。通过系统学习和练习这些真题,不仅可以提升技术能力,...

    百度Java笔试题

    题目可能要求设计简单的类结构,实现继承或接口,或者解释多态的原理。 3. **数据结构与算法**:常见的数据结构如数组、链表、栈、队列、树、图,以及排序和查找算法(如冒泡排序、快速排序、二分查找等)可能会...

    阿里百度美团面试题合集

    HashMap 中的 get()方法是如何实现的? . HashMap 可以用在哪些场景? . JVM,垃圾回收机制,内存划分等 . SQL 优化,常用的索引? . 还有什么问题需要问的。 多线程状态图,状态如何流转? . 死锁,死锁原因 . 页...

    尚硅谷大厂面试题第二季周阳主讲整理笔记

    - **HashMap**:HashMap是最常用的Map实现,它提供了高效的查找和插入操作,但不是线程安全的。允许存储null键和值。 - **LinkedHashMap**:与HashMap相比,LinkedHashMap维护了一个插入顺序或访问顺序的双向链表,...

    2014年腾讯,百度,微软,阿里巴巴(北京站)校园招聘笔试题(涉及C,C++,JAVA,数据结构)

    笔试题可能涵盖模板、异常处理、STL(标准模板库)的使用,以及如何设计高效的数据结构和算法。考生需要理解C++的内存模型,尤其是堆和栈的区别。 Java则是一种跨平台的面向对象编程语言,强调“一次编写,到处运行...

    百度历年笔试面试150题.docx

    【Java面试经验】这篇文档包含了多个技术面试题,主要涉及C语言编程、算法、操作系统、数据结构和网络等领域的知识。下面将逐一解析这些题目所涵盖的Java面试知识点。 1. **C语言实现字符串倒序**:这道题虽然不是...

    百度面试题1

    【标题】:“百度面试题1” 【描述】:这部分内容主要涵盖了Java编程语言中的关键概念,包括抽象类、接口、基本数据类型、数组操作、HashMap的实现原理、接口与抽象类的区别、面向对象的四大特性(抽象、封装、继承...

    2020 java经典面试题总汇.zip

    这份"2020 Java经典面试题总汇"很可能包含了各种难度层次的问题,旨在测试候选人在核心概念、数据结构、算法、多线程、集合框架、JVM、网络编程以及设计模式等多个方面的掌握程度。 1. **核心概念** - Java的基础...

    计算机笔试题c/c++,java,百度,腾讯

    10. **设计模式**:单例模式、工厂模式、装饰器模式等常见设计模式的实现和应用。 **C#知识点** C#作为.NET平台的主要语言,其笔试题涵盖: 1. **基础语法**:C#的变量、类型、表达式和语句,命名空间,属性和...

    百度测试工程师

    【百度测试工程师】笔试题目主要涵盖三个方面:简答题、编程题和设计题,这些题目旨在考察应聘者的基础知识掌握、编程能力和系统设计能力。 一、简答题 1. extern "C" { } 是C++中用来处理C语言库的一个关键语法。...

    百度Java笔试面试题.zip_面试资料下载

    这份"百度Java笔试面试题.zip"包含了丰富的面试资源,旨在帮助求职者更好地理解和应对Java相关的技术问题。以下是一些核心Java知识点的详细阐述: 1. **基础语法**:熟悉Java的基础语法是面试的第一步,包括变量、...

    最新Java面试题视频网盘,Java面试题84集、java面试专属及面试必问课程

    面试题包含了不同技术层面的面试问题,同时也能对一些没有面试开发经验的小白给予不可估量的包装, 让你的薪水绝对翻倍, 本人亲试有效.Java面试题84集、java面试专属及面试必问课程,所有的面试题有视屏讲解, 解答方案....

    自考 java 历年真题

    历年真题中会有大量的案例分析题,要求考生能够设计并实现简单的类结构,或者分析已有的代码片段,这有助于考生提升实际编程能力。 再者,异常处理是Java程序健壮性的重要保证。考生需要熟悉try-catch-finally语句...

    java语言程序设计 基础篇+进阶篇课后习题

    总之,"JAVA语言程序设计基础篇课后编程题答案"这份资源是Java学习者宝贵的参考资料,它鼓励我们通过实践来巩固理论知识,不断提升编程技巧,为成为一个合格的Java开发者打下坚实的基础。无论是为了求职还是个人兴趣...

    百度java开发面试题总结18-20年

    总的来说,百度Java开发面试题涉及了Java语言基础、并发编程、数据库、框架、网络通信、设计模式和系统架构等多个方面,全面考察候选人的综合能力。准备面试时,候选人需要深入理解这些知识点,并能结合实际项目经验...

    google百度北电华为腾讯试题及面试

    3. **集合框架**:List、Set、Map接口及其实现类如ArrayList、LinkedList、HashSet、HashMap等的使用和底层原理。 4. **异常处理**:理解异常的分类,如何抛出、捕获和处理异常,以及try-catch-finally语句块的运用...

    java面试题视频百度云分享java面试题视频百度云分享

    - **HashMap与HashSet原理**:深入探讨HashMap和HashSet的内部实现机制,包括哈希码计算、负载因子等核心概念。 #### 四、异常处理 - **异常体系结构**:掌握Java异常处理机制的基本结构(Throwable、Exception、...

Global site tag (gtag.js) - Google Analytics