10 2009

几道智力面试题

  1. 有两根不均匀分布的香,香烧完的时间是一个小时,你能用什么方法来确定一段45分钟的时间?
  2. 一个工人打工7天,工资一天一结,有一根金条是这七天的总工资,问只能掰两次,而且工资天天发,怎么掰?
  3. 一个经理有三个女儿,三个女儿的年龄加起来等于13,三个女儿的年龄乘起来等于经理自己的年龄,有一个下属已知道经理的年龄,但仍不能确定经理三个女儿的年龄,这时经理说只有一个女儿的头发是黑的,然后这个下属就知道了经理三个女儿的年龄。请问三个女儿的年龄分别是多少?为什么?
  4. 有27个学生运动后,感觉口很渴,打算去买汽水喝,正好小店有个促销活动,就是三个空汽水瓶换一瓶汽水,请问要是他们每人都能喝到一瓶汽水的话,最少需要买几瓶汽水?
  5. Whats greater than god,More evil than the devil,Rich people want it,Poor people have it,And if you eat it you die?

Continue reading


30 2009

[转]面试常见问题

1.“请你自我介绍一下”

在 无数的面试宝典里,似乎这个问题都被划入了必考范围内,但根据本刊此次的调查了解到,许多企业在招聘时,已经很少询问这种问题。但这个问题却偶尔会被当成 是即兴或者应变能力考察的问题提出。采访中一位全球连锁酒店人力资源总监就表示,在自己面试的经历中,这个问题曾经“放倒”过许多人。由此可见,在准备阶 段,给自己做一份个人简介,绝不是做无用功。

2.“你最近都在读什么书?为什么会选择会读它?”

很多人认为,这个表面上看起来很随和的一个问题,但如果从这个问题与这份工作之间的关系来考虑,你就会发现它却恰恰饱含“杀机”:

a.面试官想了解你当下的心态状况,如果浮躁,肯定不会静下心来读书;

b.是想知道你在这个阶段是否还会去了解专业领域的最新发展状况,这是对学习能力的考察;

c.从阅读的习惯看,多少也能够了解一个人的性格和学识水平。

3.“你为什么会选择来我们公司?”

平常时期,这样的问题不过是在给你提供一个阐述自己对这份工作的热情的机会。但放在这个时侯,就显得多少有些刁钻。

看过了你的简历,多少了解了你的背景之后,面试官首先是想了解求职者对公司的了解程度,以判断求职的目的性,所以前文让你花时间了解企业信息绝不是无意义的。除此之外,更重要的目的是想了解你的诚实度,所以过于冠冕堂皇的话还是少说为妙。

4.“我们企业最不吸引你的是什么?”

估计放在平时,也很少有HR会问这样的问题,对于应聘者而言,完全可以看成是一个应变能力的测试,事实上,这个问题确实不好答。

因为没有在该企业中真正工作过,往往最不吸引自己的地方是基本上无法回答的,提这个问题的HR总监告诉本刊记者,其实对于这个问题,他并没有期待应聘者能够有什么很好的回答,只要实话实说即可。

5.“请你自我评价一下优缺点”

面试官原本想测试一下求职者个人对自我认识的能力,但放在当今企业面临的大环境下,这又成为了测试“自信心”的问题。

不 用想,谁都不可能说自己没有缺点,也没人有这个胆量这样说,而许多人此时最容易犯的一个错误在于过分谦虚。经济不景气的情况下,企业招人往往十分谨慎,同 时因为选择的余地又很大,对能力的期望就比以往要高,如果此时你对自己的缺点陈述过多,很可能就会被认为是没有能力的表现。企业需要的是一来就能干活的, 而不是去招一个新手来培训。

6.你的简历显示你的能力超出了这个工作的要求,你是如何认为的?

这 是一个与现实情况关系度很高的问题。因为裁员,大批有能力的职场人进入到了求职市场中,在职位的竞争上,委身的情形几乎随处可见。可在HR 们看来,此时招人大多出于一个长期的战略目的,希望招聘来的人能够长期效力于企业,而能力超出职位要求的求职者就要非常好地把握HR们心态——想招到素质 能力尽可能高,又要能够长期安心留在企业中的人才,对HR来说,如果不能安心留在企业中,肯定不会录用你——因为你眼下愿意就职,是因为环境的因素,经济 一旦好转,你肯定会离开。

7.“你长期的目标是什么?”

对于HR们来说,最后拍板 决定是否留用某一个候选者的首要条件就是评估求职者求职是否是一个长期行为。因为金融危机,企业在招聘费用上的预算显然比以往要少,出于成本的考虑,HR 不可能进行“走马灯式”的招聘。所以在目标的阐述上,求职者最好结合自己的职业发展来阐述来该企业的原因。

8.“你平时都有什么爱好,最近一段时间你在做些什么?”

这种问题前半句一般说来都完全属于例行公事的范畴,如果读书和从事活动这两个问题都被先后问到的话,你可要留神了,如果不是实事求是,就很容易前后不一致,也就很容易证明你其实是个“演员”;

除去通过运动、爱好了解求职者个人的性格之外,其实与第一个问题“最近读什么书有着相同目的”,从另外一个角度验证你第一个问题回答得是否诚实。

9.你如何看待你的前任老板?

按 照原来的情形,正确的回答只有一种:说好话。面对现“抢饭碗”的形式,求职者也肯定会按照标准来来回答,这个“傻子”也知道。但对于老江湖的“考官大人们 ”而言,他有着更强的“反思索”能力,这样回答反倒会适得其反,会给他们留下一个“境遇世故”的印象。所以,最好的方式就是,实话实说,把前任领导的工作 做一个简单分析,以褒为主,适当贬抑一下,有一点请切记,评价前任老板时,不要过多涉及个人的东西,就是对事论事。

10. “关于家庭情况”

严格讲,了解过多的家庭情况确实涉及到了个人隐私,但HR选择这样一个问题就是想了解求职者是否符合自己招聘的要求,比如结婚并有房贷、车贷,这就意味着当事人对工作的稳定性要求比较高,不会轻易跳槽,此时求职者也别无选择,可以适当地介绍一下自己的家庭情况。

11.“如果公司决定录用你,你什么时候能够到岗”

听 到这个问题,求职者先不要急于高兴,在人选众多的情况下,HR或许只是想从侧面了解一下,求职者是否还会有其他的面试安排。因为此时企业招聘的流程和效率 必然要比以往低一些,借用这样一个问题来了解求职者短期是否有流失的可能性。要知道如今企业在一定的时间段内,往往只是把候选人放入“人才漏斗”,然后才 精挑细选。此时,求职者最好是回答一些棱模两可的话。

了解了这些,并不意味着你就具备真正能够和面试官们PK的能力,这些面试技巧虽然有用,但在各种人力资源专业测试工具面前,绝大多数人还是会原形毕露,所以在使用时,还需要求职者自己拿捏分寸。

转自:http://teaker.spaces.live.com/blog/cns!9D2F58F433263D88!14013.entry


18 2009

[转]Java面试题目1.0版本

1、作用域public,private,protected,以及不写时的区别?
答:区别如下:
作用域  当前类 同一packag 子孙类 其他package
public √ √ √ √
protected √ √ √ ×
friendly √ √ × ×
private √ × × ×
不写时默认为friendly

2、char型变量中能不能存贮一个中文汉字?为什么?
答:是能够定义成为一个中文的,因为java中以unicode编码,一个char占16个字节,所以放一个中文字符是没问题的。

3、Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)?
答:匿名的内部类是没有名字的内部类,不能extends(继承) 其它类,但一个内部类可以作为一个接口,由另一个内部类实现。

4、Static Nested Class 和Inner Class的不同?
答:Nested Class (一般是C++的说法),Inner Class (一般是JAVA的说法)。Java内部类与C++嵌套类最大的不同就在于是否有指向外部的引用上。注: 静态内部类(Inner Class)意味着1创建一个static内部类的对象,不需要一个外部类对象,2不能从一个static内部类的一个对象访问一个外部类对象。

5、&和&&的区别?
答:&是位运算符,表示按位与运算,&&是逻辑运算符,表示逻辑与(and)。

6、Collection 和Collections的区别?
答:Collection是集合类的上级接口,继承与他的接口主要有Set 和List。
Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。

Continue reading


13 2009

[转]进程与线程的区别

一个形象的解释:

一个系统运行着很多进程,可以比喻为一条马路上有很多马车
不同的进程可以理解为不同的马车
而同一辆马车可以有很多匹马来拉—-这些马就是线程
假设道路的宽度恰好可以通过一辆马车
道路可以认为是临界资源
那么马车成为分配资源的最小单位(进程)
而同一个马车被很多匹马驱动(线程)—-即最小的运行单位
每辆马车马匹数>=1
所以马匹数=1的时候进程和线程没有严格界限,只存在一个概念上的区分度
马匹数>1的时候才可以严格区分进程和线程

简而言之,一个程序至少有一个进程,一个进程至少有一个线程.
线程的划分尺度小于进程,使得多线程程序的并发性高。另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。
线程在执行过程中与进程还是有区别的。每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。
从逻辑角度来看,多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。但操作系统并没有将多个线程看做多个独立的应用,来实现进程的调度和管理以及资源分配。这就是进程和线程的重要区别。
进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位.
线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源.
一个线程可以创建和撤销另一个线程;同一个进程中的多个线程之间可以并发执行.

转自:http://www.cnblogs.com/powersun/archive/2007/08/12/852948.html


十二 3 2008

[转]JAVA程序员面试32问!

第一,谈谈final, finally, finalize的区别。

第二,Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)?

第三,Static Nested Class 和 Inner Class的不同,说得越多越好(面试题有的很笼统)。

第四,&和&&的区别。

第五,HashMap和Hashtable的区别。

第六,Collection 和 Collections的区别。

第七,什么时候用assert。

第八,GC是什么? 为什么要有GC?

第九,String s = new String(“xyz”);创建了几个String Object?

第十,Math.round(11.5)等於多少? Math.round(-11.5)等於多少?

第十一,short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?

第十二,sleep() 和 wait() 有什么区别?

第十三,Java有没有goto?

第十四,数组有没有length()这个方法? String有没有length()这个方法?

第十五,Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?

第十六,Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?

第十七,给我一个你最常见到的runtime exception。

第十八,error和exception有什么区别?

第十九,List, Set, Map是否继承自Collection接口?

第二十,abstract class和interface有什么区别?

第二十一,abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized?

第二十二,接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类(concrete class)?

第二十三,启动一个线程是用run()还是start()?

第二十四,构造器Constructor是否可被override?

第二十五,是否可以继承String类?

第二十六,当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法?

第二十七,try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?

第二十八,编程题: 用最有效率的方法算出2乘以8等於几?

第二十九,两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对?

第三十,当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?

第三十一,swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?

第三十二,编程题: 写一个Singleton出来。

转自:http://topic.csdn.net/u/20081201/22/b80cbb0a-b30e-46db-b30a-d73e8e037966.html(答案从这里寻找)


17 2008

[转]java知识片段

在面试中,经常要评估面试者的java基础知识和其他知识的掌握情况,包括public/private/protected/默认修饰符、static/final修饰符、集合、字符串操作、对象比较、异常、设计模式和面试者经常使用的框架等,整理一下自己经常使用的评估方法,:),抛砖中,希望能看到一些好的建议,让大家更好的学习java知识,同时也更好的判断人才,挖出真正的“金子”。
在面试中我更喜欢用一些实际的题目来看面试者对于知识的真正掌握情况,而不是直接问理论,理论的话很多时候都是背出来的,只有在真正的实战中能结合这些理论,那么才是真正的掌握了。
1、public/private/protected/默认修饰符
   有如下一段程序:
   package a.b.c;
   public class Test{
       String name=”BlueDavy”;
       protected String desc=”blog.bluedavy.cn”;
   }
   package a.b.c;
   public class TestA{
       private String name;
       private String desc;
       public TestA(){
           Test test=new Test();
           name=test.name;
           desc=test.desc;
       }
   }
   package a.b.c.d;
   public class TestB{
        private String name;
        private String desc;
        public TestB(){
           Test test=new Test();
           name=test.name;
           desc=test.desc;
        }
   }
   package a.b.c.d;
   import a.b.c.Test;
   public class TestC extends Test{
        private String cname;
        private String cdesc;
        public TestC(){
           cname=name;
           cdesc=desc;
        }
   }
   请问以上TestA、TestB、TestC能编译过吗,如编译不过,原因是什么?
2、static/final修饰符
   有如下一段程序:
   package a.b.c;
   public class Test{
       private static int i=0;
       public int getNext(){
          return i++;
       }
   }
   package a.b.c;
   public class TestB{
       public static void main(String[] args){
           Test test=new Test();
           System.out.println(test.getNext());
           Test testObject=new Test();
           System.out.println(testObject.getNext());
           System.out.println(test.getNext());
       }
   }
   请问最后打印出来的是什么,为什么?(这里其实还潜在的考察了i++和++i的不同)   
3、集合
   有这样一段程序:
   package a.b.c;
   public class Test{
       public static void main(String[] args){
           List list=new ArrayList();
           list.add(“a”);
           list.add(“b”);
           list.add(“a”);
           Set set=new HashSet();
           set.add(“a”);
           set.add(“b”);
           set.add(“a”);
           System.out.println(list.size());
           System.out.println(set.size());
       } 
   }
   请问运行上面的程序后会打印出的是什么,为什么?
4、字符串操作
   有这么一段程序:
           String a=new String(“a”);
           String b=”b”;
           String c=a+b;
           StringBuffer strBuf=new StringBuffer();
           strBuf.append(“a”);
           strBuf.append(“b”);
           String d=strBuf.toString();
           StringBuilder strBuilder=new StringBuilder();
           strBuilder.append(“a”);
           strBuilder.append(“b”);
           String e=strBuilder.toString();
   请问以上程序片段中c、d、e的字符串的创建各有什么不同?
5、对象比较
   有这么一段程序:
   package a.b.c;
   public class Test{
       public String name=”BlueDavy”;
   }
   package a.b.c;
   public class TestA{
       public static void main(String[] args){
           Test test=new Test();
           Test testB=new Test();
           System.out.println(test.equals(testB));
           System.out.println(test.name.equals(testB.name));
       }
   }
   请问以上程序执行的结果是,为什么?
   潜在问题,如要test.equals(testB)为true,需要怎么做?
6、异常
   有这样一段程序:
   package a.b.c;
   public class TestException extends Exception{ 
       public TestException(String message){
           super(message);
       }
   };
   package a.b.c;
   public class Test{
       public void call(int state) throws IllegalStateException{
           if(state==0)
              throws new IllegalStateException(“state is 0″);
       }
       public void invoke(int state) throws TestException{
           if(state==0)
              throws new TestException(“state is 0″);
       }
   }
   package a.b.c;
   public class TestA{
       public static void main(String[] args){
            Test test=new Test();
            test.call(0);
            test.invoke(0);
       }
   }
   请问以上的TestA有问题吗,如没问题执行的结果是?
以上的这些题目更多的是从基础层面去考虑,而且也只是考察了相应知识点的片面的部分,当面试者能正确的过掉这个基础关后,完全可以更加深入的交流这些基础知识,例如可以拿实际程序的题目来继续问集合中HashMap和Hashtable的不同(甚至还可以引入并发场景)、JVM是如何存储HashMap的key和value的、当存储的内容超过了HashMap的容量时,jvm会怎么做等问题。
除了这些基础知识外,还可以进一步评估对于java io、java thread、java concurrent、java net、java NIO等package的掌握程度。
更进一步,可以继续评估面试者对于JMX、JNDI、JTA、RMI、Java classloader、反射、动态代理、GC、JVM内存分配等更为深入的领域的掌握程度,当然,问的问题需要根据所需招的岗位的知识体系来定。
而设计模式也是在面试时经常会考察的一点:
例如单态模式,可以请面试者直接手写一段单态模式的代码,然后针对代码可以问些不同的问题,例如有用同步方式写的,可以问如何减少getInstance的锁竞争等问题。
进而可以评估面试者对于更复杂的组合模式以及相关实现技术的掌握程度,例如MVC模式,可以请面试者说出假设不用任何开源的MVC框架,而是自己写,那么这个时候提交的request的整个处理流程是怎么样的,如果面试者答的不错的话,可以继续问这其中涉及的例如配置文件解析、反射等等问题,另外还可以评估下面试者自己的想法,同样还有像事件机制如何实现、提供出3个spring bean xml,在没有spring的情况下怎么将xml中定义的bean初始化并且将所有的依赖注入等等问题。
在和面试者交流了这些后,可以交流下面试者在其熟悉的框架上的掌握程度。
还有一点最需要评估的是面试者对于技术的兴趣程度,在面试过程中要注意察言观色,再结合一些技术兴趣方面的问题,基本就可以判断出来了,例如对于技术感兴趣的很多会研究一些冷门的技术、对于所感兴趣的技术会有比较多的了解、或用技术做一些好玩的东西等等。
以上所有的问题更多的是面试官根据企业的需求来进行主动的提问,在最后应该问问面试者是否有未问到的,但面试者自己认为比较熟悉的领域,如果有的话,也应进行交流,以能够更加准确的评估面试者,但毕竟面试的时间通常不会太长,问的问题必然会出现片面性,这个时候面试就存在了一定的运气成分,因此要很准确的评估是很难做到的,多数的面试方法都是通过多轮面试的方法,以尽量更加准确的进行评估,:)。

转自:http://www.blogjava.net/BlueDavy/archive/2008/10/16/234764.html