`
jd2bs
  • 浏览: 13166 次
文章分类
社区版块
存档分类
最新评论

Programmer Competency Matrix I

 
阅读更多
I 数据结构
Q1 数组和链表的差异

A1: 
1)数组在内存中是逐个存放的,也就是说倘若数组的第一个元素在地址A,则数组第二个元素就在地址A+1。

而链表则不是,链表每个节点没有相对固定的位置关系。某个节点在地址A其后的节点不一定是A+1,而在内存的其他空闲区域,呈现一种随机的状态。

2)数组一旦显式的被申明后,其大小就固定了,不能动态进行扩充。而链表则可以,可以动态生成节点并且添加到已有的链表后面。

3)链表灵活,但是空间和时间额外耗费较大;数组大小固定,元素位置固定,但是操作不灵活,且容易浪费空间,但是时间耗费较小,尤其是元素变化不大的时候效率很高。双向链表比单向的更灵活,但是空间耗费也更大

。。。。。

链表的特性是在中间任意位置添加删除元素的都非常的快,不需要移动其它的元素。 
链表顾名思义,要把各个元素链接起来才算撒。   
  通常链表每一个元素都要保存一个指向下一个元素的指针(单链表)。   
  双链表的化每个元素即要保存到下一个元素的指针,还要保存一个上一个元素的指针。   
  循环链表则把最后一个元素中保存下一个元素指针指向第一个元素。   
数组是一组具有相同类型和名称的变量的集合。这些变量称为数组的元素,每个数组元素都有一个编号,
这个编号叫做下标,我们可以通过下标来区别这些元素。数组元素的个数有时也称之为数组的长度。



Q2 字典的特性

A2 
字典 ( Dictionary) 定义为“键- 值对” (Key-Value Pair) 的集合.最基本的操作包括:find( 查找 ) 、 add( 插入 ) 、 remove( 删除 ) ,分别用来从字典中检索数据、插入数据和删除数据。
系统数据字典可分为三个层次:

第一:平台层--->指系统依赖的底层平台级数据字典,如:标准字段类型;这个层次只能在开发平台阶段修改,其余不允许修改。

第二:应用层--->指系统应用逻辑涉及的数据字典,如上述的用户状态类型;这个只能在开发系统的时候修改,客户无权修改。

第三:表现层---->指最终客户自己定义的数字典,如国家分类;这个客户可随时动态添加

这个三个层次都得做控制。所以在数据字典表中得定数据字典平台标志字段,通过这个字段可控制。

当然数据字典还分生命周期,这个在上面也体现了。
生命周期又分为:开发,测试,维护。这些阶段数据字典的操作规则都不同的。
java中数据字典的应用: http://hbiao68.iteye.com/blog/1513200




Q3 简述哈希表的实现和如何处理冲突

Q4 简述优先队列及其实现

Q5 简述B树,B+树,斐波那契堆,红黑树特性和使用场景
http://www.kongch.com/2011/09/why-b-tree/
http://blog.csdn.net/v_JULY_v/article/details/6530142

总结
通过以上介绍,大致将B树,B+树,B*树总结如下:

B树:有序数组+平衡多叉树;数据存在于非叶子节点上

B+树:有序数组链表+平衡多叉树;数据只存在于叶子上。

B*树:一棵丰满的B+树。

走进搜索引擎的作者梁斌老师针对B树、B+树给出了他的意见:

“B+树还有一个最大的好处,方便扫库,B树必须用中序遍历的方法按序扫库,而B+树直接从叶子结点挨个扫一遍就完了,B+树支持range-query非常方便,而B树不支持。这是数据库选用B+树的最主要原因。

比如要查 5-10之间的,B+树一把到5这个标记,再一把到10,然后串起来就行了,B树就非常麻烦。B树的好处,就是成功查询特别有利,因为树的高度总体要比B+树矮。不成功的情况下,B树也比B+树稍稍占一点点便宜。    B树比如你的例子中查,17的话,一把就得到结果了。
有很多基于频率的搜索是选用B树,越频繁query的结点越往根上走,前提是需要对query做统计,而且要对key做一些变化。    另外B树也好B+树也好,根或者上面几层因为被反复query,所以这几块基本都在内存中,不会出现读磁盘IO,一般已启动的时候,就会主动换入内存。”


TreeMap:  http://www.ibm.com/developerworks/cn/java/j-lo-tree/
对于 TreeMap 而言,由于它底层采用一棵“红黑树”来保存集合中的 Entry,这意味这 TreeMap 添加元素、取出元素的性能都比 HashMap 低:当 TreeMap 添加元素时,需要通过循环找到新增 Entry 的插入位置,因此比较耗性能;当从 TreeMap 中取出元素时,需要通过循环才能找到合适的 Entry,也比较耗性能。但 TreeMap、TreeSet 比 HashMap、HashSet 的优势在于:TreeMap 中的所有 Entry 总是按 key 根据指定排序规则保持有序状态,TreeSet 中所有元素总是根据指定排序规则保持有序状态。

红黑树
红黑树是一种自平衡排序二叉树,树中每个节点的值,都大于或等于在它的左子树中的所有节点的值,并且小于或等于在它的右子树中的所有节点的值,这确保红黑树运行时可以快速地在树中查找和定位的所需节点。
分享到:
评论

相关推荐

    [译文]程序员能力矩阵 Programmer Competency Matrix.htm

    [译文]程序员能力矩阵 Programmer Competency Matrix.htm

    程序员能力矩阵Programmer competency matrix

    程序员能力矩阵 Programmer Competency Matrix 注意:每个层次的知识都是渐增的,位于层次n,也蕴涵了你需了解所有低于层次n的知识。

    程序员需要经常刷题吗-programmer-competency-matrix:程序员能力矩阵

    需要程序员经常刷题吗程序员能力矩阵 31 个问题,1-4 个选项。 等级范围:31-124 A. 计算机科学 1级 2 ...能够在实际编程任务中解释和使用数组、链表、字典等 了解基本数据结构、数组与链表的空间和时间权衡,能够解释...

    CH341Programmer_ch341programmer_

    这个芯片能够模拟多种常见的编程接口,如SPI、I2C、JTAG等,使得它可以对使用这些接口的微控制器进行编程。在卫星接收器和电视中,可能会有各种各样的微控制器负责不同的功能,例如解码信号、处理图像、控制用户界面...

    SmartRF Flash Programmer V1.12.8

    《SmartRF Flash Programmer V1.12.8:掌握低功耗射频MCU的闪存编程技术》 在物联网和无线通信领域,高效的设备编程工具是开发过程中的关键环节。其中,SmartRF Flash Programmer V1.12.8是由德州仪器(Texas ...

    pickit3烧录软件PICkit3 Programmer

    《全面解析:PICkit3 Programmer及其在微芯片编程中的应用》 在电子工程领域,编程设备扮演着至关重要的角色,其中PICkit3 Programmer是Microchip公司推出的一款高效、易用的编程工具,专为微控制器(MCU)的烧录而...

    Pickit 3 Programmer 烧写程序工具

    Pickit 3 Programmer是一款由Microchip Technology公司推出的用于编程微控制器的硬件设备。这款工具主要用于对PIC系列微控制器进行烧写、调试和测试,是开发基于Microchip PIC微控制器项目的重要辅助工具。以下是对...

    Renesas Flash Programmer Package

    Renesas Flash Programmer Package

    CX-Programmer7.1

    6. **I/O监控**:实时查看输入/输出状态,方便故障排查和系统优化。 提供的压缩文件CXP711_SCHI.part1.rar至part5.rar,可能是CX-Programmer 7.1 安装包的分卷文件,需要全部下载并按照正确的顺序解压,才能完整...

    ST Visual Programmer.zip

    ST Visual Programmer是一款由意法半导体(STMicroelectronics)开发的专业编程工具,主要用于ST Link设备的固件升级和STM8、STM32微控制器的编程与调试。这款软件提供了直观的图形用户界面,使得用户能够方便地对...

    FUJITSU FLASH MCU Programmer

    富士通的MB90F系列便是这类产品的代表,其特性包括高速处理能力、丰富的I/O端口以及内置的闪存(FLASH)存储器,使得它们在嵌入式开发领域具有很高的灵活性和可扩展性。 FUJITSU FLASH MCU Programmer作为烧录工具...

    CX-Programmer7.1.rar

    CX-Programmer7.1rar,CX-Programmer7.1

    SmartRF_Flash_Programmer安装包.rar

    《SmartRF Flash Programmer在蓝牙BLE开发中的应用详解》 SmartRF Flash Programmer是一款强大的软件工具,主要应用于无线通信设备,特别是针对蓝牙低功耗(BLE)技术的开发与调试。这款安装包提供了完整的程序,帮助...

    SmartRF Flash Programmer 1.9.0.rar

    《SmartRF Flash Programmer 1.9.0:高效微控制器编程工具详解》 在嵌入式系统开发领域,固件的编程与更新是一项至关重要的任务。SmartRF Flash Programmer 1.9.0 是德州仪器(TI)推出的一款专门用于编程微控制器...

    SmartRF Flash Programmer

    "SmartRF Flash Programmer"是一款由德州仪器(TI)开发的专业级无线微控制器编程工具,主要用于对CC2430等微处理器的闪存进行编程。这个工具是IT行业内进行嵌入式系统开发的重要辅助软件,它允许用户方便地烧录HEX...

    OCA Java SE 8 Programmer I Exam Guide (Exams 1Z0-808) 高清完整azw3版

    OCA Java SE 8 Programmer I Exam Guide (Exams 1Z0-808) (Certification & Career - OMG) by Kathy Sierra English | 12 May 2017 | ASIN: B06Y3T3QCN | 437 Pages | AZW3 | 47.44 MB Up-to-date coverage of ...

    OCDemon flash memory programmer 3.0.9破解版

    edge memory programmer

    Java SE 8 Programmer I Study Guide: Exam 1Z0-808

    Title: OCA: Oracle Certified Associate Java SE 8 Programmer I Study Guide: Exam 1Z0-808 Author: Jeanne Boyarsky, Scott Selikoff Length: 432 pages Edition: 1 Language: English Publisher: Sybex ...

    OMRON PLC编程软件 CX-Programmer 9.4和 9.5版本.zip

    OMRON PLC编程软件CX-Programmer是欧姆龙公司推出的一款强大的可编程控制器(PLC)编程工具,专为设计、模拟、调试和维护欧姆龙系列PLC程序而设计。CX-Programmer 9.4和9.5版本是该软件的两个不同更新版本,提供了更...

    CX-Programmer 用户手册

    ### CX-Programmer 用户手册知识点概述 #### 一、CX-Programmer简介及注意事项 - **产品概述**:CX-Programmer是一款专为OMRON的SYSMAC CS、CV及C系列PLC设计的编程软件。它能够支持这些PLC系统的编程任务,但并未...

Global site tag (gtag.js) - Google Analytics