MDA/MDD/TDD/DDD/DDDDDDD
posts - 536, comments - 111, trackbacks - 0, articles - 0
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

java基础题

Posted on 2008-06-12 01:19 leekiang 阅读(624) 评论(0)  编辑  收藏 所属分类: java
1,两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对?
 不对,hash code相同
2,当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法?
 某答案: 应该不可以,synchronized用在方法上就是把这个对象锁死了,在它退出之前别的线程是无法访问这个对象的,就更不用提它的方法了,
如果是这样写
class A {
  String a = "a";
  public void test1(){
    synchronized(a){
    ...
    }
  }
  public void test2(){

  }
}
一个线程访问test1的时候另一个线程是可以访问test2的

3  当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的
    结果,那么这里到底是值传递还是引用传递?
http://saturn.javaeye.com/blog/82123
传的是对象的内存地址(String特殊)
一个对象包含四个方面:reference的内存地址、reference的内存内容、对象值的内存地址、对象值的内存内容。
reference指向对象的含义:reference的内存内容即对象值的内存地址。
当对象作为参数被传送给方法时,传的不是reference本身,而是reference的内存内容,即对象值的内存地址,方法被调用时,复制一份新的reference,指向传入的对象值。如果在方法内改变了对象值,那么方法外的对象也即改变了;如果在方法内将方法参数的reference指向新的对象,方法外的reference仍是指向原来的对象,并没有指向方法内的那个新对象,这时此方法内外参数已经完全失去联系。
至于是值传递还是引用传递,就看这两个词怎么定义了。

4、冒泡排序
 1. 比较相邻的两个数;
 2. 如果左边的数大,则交换两个数;
 3. 右移一位,转1;
 4. 当碰到最近一个排定的数后,返回队列左端重新开始下一趟排序。直到所以数都排定。
5、选择排序
   1. 扫描全部数据一趟,将最小值与第0个位置上的数据交换;
   2. 扫描除第0个位置外的剩下数据,将最小值与第1个位置上的数据交换;
   3. 依此类推,直至全部数据排列有序。
 
6、插入排序
    从数组下标为1的数据开始,依次将其与自身左边的全部或部分数据(部分有序序列)进
     行比较,并插入到适当的位置,使得插入后的序列依然保持部分有序。直至操作完最后一个数
 据为止

7,Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们
    有何区别?
8,写程序用pop3收取gmail的邮件
  做一个线程,每15分钟检查一次邮箱,收取邮箱的邮件,并解码后将标题显示出来
9,一个公司,开始只有3名员工,开始员工年薪2万,以后每下一年年初新招2名,初始工资同上。此公司员工工资年递增10%,  员工工资达到5万后,工资涨幅全部统一为8%.    
问题:  统计公司二十年内每年支付给所有员工的工资额度. 
http://blueocean.javaeye.com/blog/101456
10,如果要设计一个图形系统,请你设计基本的图形元件(Point,Line,Rectangle,Triangle)的简单实现
http://www.blogjava.net/bibi/archive/2006/07/18/58701.html

11,有一栋十层楼的楼,在每个电梯门口放上一颗钻石,这些钻石的大小不同,一人坐电梯从一楼,电梯每到一层楼都开一次门,而且这个人能准确的分辨钻石的大小,请问怎么样能拿到最大的钻石,只有一次机会(就是出了电梯门就进不来了)

12,请估计广州中信大厦是否坚固,写出推理过程。 
   或请估计香港东方明珠电视塔的质量。

13,
  String str1 = "abc";
  String str2 = "abc";
  System.out.println(str1==str2); //true ,此时"abc"放在栈中
 
  String str3 =new String ("abc");
  String str4 =new String ("abc");
  System.out.println(str3==str4); // false ,此时"abe"放在堆中
  java中堆和栈的区别见http://www.blogjava.net/fullfocus/archive/2007/10/28/156485.html

14,线程池  jdk5自带

http://blog.csdn.net/imicro/archive/2007/08/29/1763955.aspx

当一个Web服务器接受到大量短小线程的请求时,使用线程池技术是非常合适的,它可以大大减少线程的创建和销毁次数,提高服务器的工作效率。但如果线程要 求的运行时间比较长,此时线程的运行时间比创建时间要长得多,单靠减少创建时间对系统效率的提高不明显,此时就不适合应用线程池技术,需要借助其它的技术 来提高服务器的服务效率。



只有注册用户登录后才能发表评论。


网站导航: