程序员面试_Java基础技术

 

目录

Java内存分配... 1

静态区(方法区)1

栈:... 1

堆:... 1

Java Object类的常用方法... 1

LinkedList和ArrayList的优缺点... 2

CRUD的各自的表现... 2

HashSet的contains的判断方法... 2

 

 

Java内存分配

静态区(方法区)

  所有的class和static变量、方法名称、访问权限、字段信息等静态数据部分

 

栈:保存局部变量的值,包括:

 a.用来保存基本数据类型的值;

b.保存类的实例,即堆区对象的引用(指针)。也可以用来保存加载方法时的帧。

堆:用来存放动态产生的数据,比如new出来的对象。注意创建出来的对象只包含属于各自的成员变量,并不包括成员方法。因为同一个类的对象拥有各自的成员变量,存储在各自的堆中,但是他们共享该类的方法,并不是每创建一个对象就把成员方法复制一次。

 

Java Object类的常用方法

1.1  clone():克隆方法  (5)

1.2  equals(Object obj): 判断相等与否  (1)

1.3  finalize(): 对象回收              (3)

1.4  getClass(): 得到运行时的class对象  (4)

1.5  hashCode(): 返回hashcode()值     (2)

1.6  notify():唤醒wait的线程

1.7  notifyAll():唤醒所有wait的线程

1.8  toString(): 对象字符串化   (6)  

1.9  wait(): 拿到锁后等待

1.10  wait(longtimeout): 拿到锁后的wait timeout。

1.11  wait(long timeout,int nanos):加上纳秒的wait timeout

关于wait,notify等多线程的详解:

    http://pan.baidu.com/s/1pJJrcqJ#path=%252F%25E5%25A4%25A9%25E4%25BA%25AE%25E6%2595%2599%25E8%2582%25B2%252FJavaSe%25E6%25A0%25B8%25E5%25BF%2583%25E5%259F%25BA%25E7%25A1%2580

 

LinkedList和ArrayList的优缺点

 CRUD的各自的表现

   Create:  linkedlist没有空间浪费,如果指定初始化ArrayList的空间大小,则一开始就有空间浪费了。

  Retrieve: 按索引下标查的话,Arraylist快。如果是按对象值来查呢,其性能是一样的。

  Update: 取决于你的retrieve查找方式,与其雷同

  Delete/Add::因为ArrayList的增加或删除,要伴随数组空间的copy,所以Arraylist一般性能要低。

HashSet的contains的判断方法

   见demo: TestHashSetContains.java

判断某对象是不是在hashset集合中,首先判断hashcode()值是否在hashset当中,如果在则比较在该对象的equals方法。如果不在,则直接加入集合中,即该对象不在集合中。

你可能感兴趣的:(java,java基础,技术,程序员,面试)