面试准备(1)

1 .error和exception区别

error 表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处理这样的情况。

exception 表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况。

这是面试题目的专业回答。

2.#{ } 和 ${ } 的区别

#{ }表示一个占位符号,通过#{ }可以实现 preparedStatement 向占位符中设置值,自动进行java 类型和 jdbc 类型转换,#{ } 可以有效防止sql注入。#{ } 可以接收简单类型值或 pojo 属性值(通过 OGNL 读取对象中的值,属性.属性.属性..方式获取对象属性值)。 如果 parameterType 传输单个简单类型值,#{ }括号中可以是 value 或其它名称。

${ } 表示拼接 sql 串,通过${ }可以将 parameterType 传入的内容拼接在 sql 中且不进行 jdbc 类型转换, ${ }可以接收简单类型值或 pojo 属性值((通过 OGNL 读取对象中的值,属性.属性.属性..方式获取对象属性值)),如果 parameterType 传输单个简单类型值,${}括号中只能是 value。

3.链表和数组的关系?

数组是将元素在内存中连续存放,由于每个元素占用内存相同,可以通过下标迅速访问数组中任何元素。但是如果要在数组中增加一个元素,需要移动大量元素,在内存中空出一个元素的空间,然后将要增加的元素放在其中。同样的道理,如果想删除一个元素,同样需要移动大量元素去填掉被移动的元素。如果应用需要快速访问数据,很少或不插入和删除元素,就应该用数组

链表恰好相反,链表中的元素在内存中不是顺序存储的,而是通过存在元素中的指针联系到一起。比如:上一个元素有个指针指到下一个元素,以此类推,直到最后一个元素。如果要访问链表中一个元素,需要从第一个元素开始,一直找到需要的元素位置。但是增加和删除一个元素对于链表数据结构就非常简单了,只要修改元素中的指针就可以了。如果应用需要经常插入和删除元素你就需要用链表数据结构了。

(1) 从逻辑结构角度来看

a, 数组必须事先定义固定的长度(元素个数),不能适应数据动态地增减的情况。当数据增加时,可能超出原先定义的元素个数;当数据减少时,造成内存浪费。

b,链表动态地进行存储分配,可以适应数据动态地增减的情况,且可以方便地插入、删除数据项。(数组中插入、删除数据项时,需要移动其它数据项)

(2)从内存存储角度来看

a,(静态)数组从栈中分配空间, 对于程序员方便快速,但自由度小。

b, 链表从堆中分配空间, 自由度大但申请管理比较麻烦.

4 .ArrayList和LinkedList的大致区别:

    1>.ArrayList是实现了基于动态数组的数据结构。

 2>.LinkedList基于双向链表的数据结构。

    3>.对于随机访问get和set,ArrayList优,因为LinkedList要移动指针。

    4>.对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。

   5>链表是一系列的节点组成的,这些点不需要在内存中相连

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 在一个方法内部定义的变量都存储在栈中,当这个函数运行结束后,其对应的栈就会被回收,此时,在其方法体中定义的变量将不...
    Y了个J阅读 4,436评论 1 14
  • Java8张图 11、字符串不变性 12、equals()方法、hashCode()方法的区别 13、...
    Miley_MOJIE阅读 3,728评论 0 11
  • 可遇不可求的事 后海有树的院子 夏代有工的玉 此时此刻的云 而立之年的你 陪伴是最长情的告白,但我也明白生活总是有...
    单纯等阅读 195评论 0 0
  • 一起旅游 给你拍很多的照片
    秭粢趑阅读 166评论 0 0
  • 老崔摆脱地下情节,不知又是捆绑了什么精神?蓝色骨头,如此标志的电影起名,也只能看好了。。。如今国产电影打死不分级却...
    Alsyone阅读 197评论 0 0