九鼎烹吧 关注:11贴子:645

2015java笔试机试面试题

只看楼主收藏回复

1. 下面哪些是Thread类的方法()
A start() B run() C exit() D getPriority()
答案:ABD
解析:看Java API docs吧:http://docs.oracle.com/javase/7/docs/api/,exit()是System类的方法,如System.exit(0)。


IP属地:北京1楼2015-03-18 09:13回复
    3. 下面程序的运行结果是()
    String str1 = "hello";String str2 = "he" + new String("llo");System.err.println(str1 == str2);
    答案:false
    解析:因为str2中的llo是新申请的内存块,而==判断的是对象的地址而非值,所以不一样。如果是String str2 = str1,那么就是true了。


    IP属地:北京2楼2015-03-18 09:14
    回复
      4. 下列说法正确的有()
      A. class中的constructor不可省略
      B. constructor必须与class同名,但方法不能与class同名
      C. constructor在一个对象被new时执行
      D.一个class只能定义一个constructor
      答案:C
      解析:这里可能会有误区,其实普通的类方法是可以和类名同名的,和构造方法唯一的区分就是,构造方法没有返回值。


      IP属地:北京3楼2015-03-18 09:15
      回复
        Thread类中start()和run()方法的区别了。start()用来启动一个线程,当调用start方法后,系统才会开启一个新的线程,进而调用run()方法来执行任务,而单独的调用run()就跟调用普通方法是一样的,已经失去线程的特性了。因此在启动一个线程的时候一定要使用start()而不是run()。


        IP属地:北京4楼2015-03-18 09:16
        回复
          7. 下列属于关系型数据库的是()
          A. Oracle B MySql C IMS D MongoDB
          答案:AB
          解答:IMS(Information Management System )数据库是IBM公司开发的两种数据库类型之一;
          一种是关系数据库,典型代表产品:DB2;
          另一种则是层次数据库,代表产品:IMS层次数据库。
          非关系型数据库有MongoDB、memcachedb、Redis等。


          IP属地:北京5楼2015-03-18 09:17
          回复
            8. GC线程是否为守护线程?()
            答案:是
            解析:线程分为守护线程和非守护线程(即用户线程)。
            只要当前JVM实例中尚存在任何一个非守护线程没有结束,守护线程就全部工作;只有当最后一个非守护线程结束时,守护线程随着JVM一同结束工作。守护线程最典型的应用就是 GC (垃圾回收器)


            IP属地:北京6楼2015-03-18 09:18
            回复
              10. 下列说法正确的是()
              A LinkedList继承自List
              B AbstractSet继承自Set
              C HashSet继承自AbstractSet
              D WeakMap继承自HashMap
              答案:AC
              解析:下面是一张下载的Java中的集合类型的继承关系图,一目了然。


              IP属地:北京7楼2015-03-18 09:20
              回复
                11. 存在使i + 1 < i的数吗()
                答案:存在
                解析:如果i为int型,那么当i为int能表示的最大整数时,i+1就溢出变成负数了,此时不就<i了吗。


                IP属地:北京8楼2015-03-18 09:21
                回复
                  Java
                  语言有
                  51
                  个保留关键字,其中
                  const

                  goto
                  虽然被保留但未被使用。你不能使用保留
                  关键字来命名类、方法或变量。
                  一、保留关键字
                  数据类型:
                  Boolean
                  int
                  long
                  short
                  byte
                  float
                  double
                  char
                  class
                  interface
                  流程控制:
                  if
                  else
                  do
                  while
                  for
                  switch
                  case
                  default
                  break
                  continue
                  return
                  try
                  catch
                  finally
                  修饰符:
                  public
                  protected
                  private
                  final
                  void
                  static
                  strictfp
                  abstract
                  transient
                  synchronized
                  volatile
                  native
                  动作:
                  package
                  import
                  throw
                  throws
                  extends
                  implements
                  this
                  Super
                  instanceof
                  new
                  保留字:
                  true
                  false
                  null
                  goto
                  const


                  IP属地:北京9楼2015-03-18 09:24
                  回复
                    13. 下面哪个流类属于面向字符的输入流( )
                    A BufferedWriter B FileInputStream C ObjectInputStream D InputStreamReader
                    答案:D
                    解析:Java的IO操作中有面向字节(Byte)和面向字符(Character)两种方式。
                    面向字节的操作为以8位为单位对二进制的数据进行操作,对数据不进行转换,这些类都是InputStream和OutputStream的子类。
                    面向字符的操作为以字符为单位对数据进行操作,在读的时候将二进制数据转为字符,在写的时候将字符转为二进制数据,这些类都是Reader和Writer的子类。
                    总结:以InputStream(输入)/OutputStream(输出)为后缀的是字节流;
                    以Reader(输入)/Writer(输出)为后缀的是字符流。
                    扩展:Java流类图结构,一目了然,解决大部分选择题:


                    IP属地:北京10楼2015-03-18 09:27
                    回复
                      14. Java接口的修饰符可以为()
                      A private B protected C final D abstract
                      答案:CD
                      解析:接口很重要,为了说明情况,这里稍微啰嗦点:
                      (1)接口用于描述系统对外提供的所有服务,因此接口中的成员常量和方法都必须是公开(public)类型的,确保外部使用者能访问它们;
                      (2)接口仅仅描述系统能做什么,但不指明如何去做,所以接口中的方法都是抽象(abstract)方法;
                      (3)接口不涉及和任何具体实例相关的细节,因此接口没有构造方法,不能被实例化,没有实例变量,只有静态(static)变量;
                      (4)接口的中的变量是所有实现类共有的,既然共有,肯定是不变的东西,因为变化的东西也不能够算共有。所以变量是不可变(final)类型,也就是常量了。
                      所以:
                      接口的方法默认是public abstract;
                      接口中不可以定义变量即只能定义常量(加上final修饰就会变成常量)。所以接口的属性默认是public static final 常量,且必须赋初值。
                      注意:final和abstract不能同时出现。


                      IP属地:北京11楼2015-03-18 09:30
                      回复
                        15. 不通过构造函数也能创建对象吗()
                        A 是 B 否
                        答案:A
                        解析:Java创建对象的几种方式(重要):
                        (1) 用new语句创建对象,这是最常见的创建对象的方法。
                        (2) 运用反射手段,调用java.lang.Class或者java.lang.reflect.Constructor类的newInstance()实例方法。
                        (3) 调用对象的clone()方法。
                        (4) 运用反序列化手段,调用java.io.ObjectInputStream对象的 readObject()方法。
                        (1)和(2)都会明确的显式的调用构造函数 ;(3)是在内存上对已有对象的影印,所以不会调用构造函数 ;(4)是从文件中还原类的对象,也不会调用构造函数。


                        IP属地:北京12楼2015-03-18 09:31
                        回复
                          16. ArrayList list = new ArrayList(20);中的list扩充几次()
                          A 0 B 1 C 2 D 3
                          答案:A
                          解析:这里有点迷惑人,大家都知道默认ArrayList的长度是10个,所以如果你要往list里添加20个元素肯定要扩充一次(扩充为原来的1.5倍),但是这里显示指明了需要多少空间,所以就一次性为你分配这么多空间,也就是不需要扩充了。


                          IP属地:北京13楼2015-03-18 09:32
                          回复
                            19. 下面程序能正常运行吗()
                            public class NULL { public static void haha(){ System.out.println("haha"); } public static void main(String[] args) { ((NULL)null).haha(); }}
                            答案:能正常运行
                            解析:输出为haha,因为null值可以强制转换为任何java类类型,(String)null也是合法的。但null强制转换后是无效对象,其返回值还是为null,而static方法的调用是和类名绑定的,不借助对象进行访问所以能正确输出。反过来,没有static修饰就只能用对象进行访问,使用null调用对象肯定会报空指针错了。


                            IP属地:北京14楼2015-03-18 09:39
                            回复
                              20. 下面程序的运行结果是什么()
                              class HelloA { public HelloA() { System.out.println("HelloA"); } { System.out.println("I'm A class"); } static { System.out.println("static A"); }}public class HelloB extends HelloA { public HelloB() { System.out.println("HelloB"); } { System.out.println("I'm B class"); } static { System.out.println("static B"); } public static void main(String[] args) {      new HelloB();    }}
                              答案:
                              static Astatic BI'm A classHelloAI'm B classHelloB
                              解析:说实话我觉得这题很好,考查静态语句块、构造语句块(就是只有大括号的那块)以及构造函数的执行顺序。
                              对象的初始化顺序:(1)类加载之后,按从上到下(从父类到子类)执行被static修饰的语句;(2)当static语句执行完之后,再执行main方法;(3)如果有语句new了自身的对象,将从上到下执行构造代码块、构造器(两者可以说绑定在一起)


                              IP属地:北京15楼2015-03-18 09:43
                              回复