网站地图
RSS订阅
收藏本站
您的位置:网站首页 > 面试技巧

Java面试宝典:用这100个问答搞定面试官

作者:habao 来源:未知 日期:2017-11-25 20:04:35 人气: 标签:java面试视频
导读:【IT168评论】“金三银四”的跳槽季又来临了,程序员如何才能在这个跳槽季把握时机,搞定面试官获得一个身心愉悦的工作呢?一份面试宝典定是必不可少的,所以笔者…

  【IT168 评论】“金三银四”的跳槽季又来临了,程序员如何才能在这个跳槽季把握时机,搞定面试官获得一个身心愉悦的工作呢?一份面试宝典定是必不可少的,所以笔者在这里整理了Java的100道面试题,希望能够对准备跳槽的Java程序员有所帮助。

  Ans:内部类是指在一个外部类的内部再定义一个类,内部类对外部类有访问权限,可以访问类中定义的所有变量和方法。

  子类是从父类(superclass)中继承的类,子类可以访问父类所有public和protected的字段和方法。

  Ans:Java中的访问说明符是放在类名之前,用于定义访问范围的关键字,常见的访问说明符有以下几类:

  封装可以帮助程序员遵循模块化方法进行软件开发,每个对象都有自己的一组方法和变量,并且可以于其他对象来执行其功能。另外,封装也有数据隐藏的目的。

  当语句满足条件时开始进行重复执行,直到语句不再满足条件退出循环。While循环中在执行语句之前先检查是否满足条件。

  Do while 和while循环基本类似,唯一不同的是do while是先执行语句再检查条件,也就是说do while循环至少会执行一次语句。

  Ans:break和continue都是循环中的重要关键词,break语句是结束整个循环过程,continue语句只结束本次循环,而不是终止整个循环的执行。

  Ans:float是单精度浮点数,内存中占用4字节,double是双精度浮点数,内存中占用8字节。

  Ans:final是Java中的关键字,有“无法改变”、“终态”的含义,final类不能被继承,没有子类,final类中的方法默认是final的,且不能被子类的方法覆盖,但可以被继承。final变量表示常量,只能被赋值一次,赋值后值不再改变。final不能用于修饰构造方法。

  Ans:三元运算符,也称为条件运算符,根据布尔值来决定将哪个值分配给变量,它被表示为...?...:...

  Ans:使用Math.random()可以生成0.1到1.0范围内的随机数字,然后通过数学方法实现生成符合要求的随机数。

  Ans:在switch语句中,如果没有case条件匹配,那么它会就会执行deult后面的语句。

  如同文件夹一样,包也采用了树形目录的存储方式。同一个包中的类名字是不同的,不同的包中的类的名字是可以相同的,当同时调用两个不同包中相同类名的类时,应该加上包名加以区别。因此,包可以避免名字冲突。

  Ans:是的,我们可以声明一个抽象类,且不包含任何抽象方法,但是一旦一个类中含有一个抽象方法,那么该类必须声明为抽象。

  Ans:抽象类和接口之间的主要区别在于,抽象类可以拥有任意范围的数据,同时也可以拥有自己的非抽象方法,但是接口方式中,它仅能够有静态、不能修改的数据,同时它所有的方法都必须是抽象的。

  抽象类是对类抽象,而接口是对行为的抽象。抽象类是对整个类整体进行抽象,包括属性、行为,但是接口却是对类局部(行为)进行抽象。

  Ans:与抽象类相比,接口性能较慢。一个类只能扩展一个抽象类,却能实现许多接口,随着接口在类中的实现,也会给开发人员带来额外负担。

  Ans:Java中main方法必须是public,如果是private,那么它虽然在编译时不会出错,但是在运行时会出错。

  Ans:序列化是指把Java对象转换为字节序列的过程,只能将支持 java.io.Serializable 接口的对象写入流中,每个 serializable 对象的类都被编码。

  Ans:try后面往往会跟着catch或finally,try抛出的任何异常都会获在catch中,在代码终止前的要执行的任务放在finally中。

  Ans:当在try中出现异常时,如果存在catch,会先被catch捕获,否则会执行到finally。异常发生时肯定会执行finally,除非在try的末尾有强制中止代码:System.exit(0);

  Ans:是的,一个类可以有多个具有不同参数的构造函数,创建对象的构造函数取决于创建对象时传递的参数。

  Ans:我们不能覆盖静态方法,静态方法属于一个类而不是单个对象,并且在编译时解析(而不是在运行时)。

  Ans:String不是Java的原始数据类型,Java中创建一个string时,实际上是创建了g.String类的对象,这个对象可以使用String类的所有内置方法。

  Ans:Java中,string对象是不可变的,一旦赋值不可更改,如果更改,则会创建一个新对象。

  Ans:数组是对相同原始类型的数据进行组合,本质上是静态的,而矢量本质上是动态的,并且可以容纳不同数据类型的数据。

  Ans:多线程是一个编程概念,可以在单个程序中以并发方式执行多个任务。同一个进程的多个线程堆栈共享,有助于程序的性能改进。

  Ans:Runnable接口在Java中用于实现多线程应用程序,g.Runnable接口由一个支持多线程的类来实现。

  Ans:StringBuffers本质上是动态的,我们可以改变StringBuffer对象的值,而String是不可变的,每次数据更改都会创建一个新的String对象,增加额外开销,所以在数据更改很多的情况下,StringBuffer是一个更好的选择。

  Ans:switch使用break可以在执行完这个语句后中断,如果不使用break,那么它将把所有情况都执行一遍。

  Ans:Java中,对象不被引用时,垃圾回收就会发生,对象会被自动,调用System.gc()方法或Runtime.gc()方法。

  Ans:如果我们要在类加载时,对象创建之前执行语句,可以在类中使用静态代码块,这样即使在main方法中创建对象之前,此静态代码块中的语句都将在加载类时执行一次。

  Ans:如果使用了继承层次结构,那么这个类就可能既是一个类的父类也是另一个类的子类,如下例中的类既是世界类的子类,同时也是国家类的父类。

  Ans:即使类没有定义显式构造函数,对象在创建时也会执行隐式构造函数,且该构造函数没有参数。

  Ans:在多线程中,可以通过使用同步的概念来控制对多个线程之间共享的资源的访问。 使用synchronized关键字,我们可以确保只有一个线程可以一段时间内使用共享资源。

  例如在下面的类中,我们有两个具有相同名称但不同参数的打印方法。 根据参数,将调用适当的参数:

  Ans:使用继承的主要优点是代码的可重用性,因为继承使子类能够重用其父类的代码。 多态性(可扩展性)是另一个好处,允许引入新的功能而不影响现有的派生类。

  Ans:变量和方法的默认访问说明符是protected,即变量和类可用于同一个包中的任何其他类。

  Ans:栈和队列之间的主要区别在于,栈基于“后进先出(LIFO)”原则,而队列基于FIFO(先进先出)原则。

  Ans:想要某些变量不被序列化,那么可以在声明时使用关键字transient。例如,下面的变量trans_var是一个临时变量,不能被序列化:

  Ans:Java提倡“一切皆为对象”,引用数据类型可以实例化为对象,基本数据类型却无法变为对象,针对这一不足,JAVA中设置了包装类,例如,Integer是原始数据类型int的包装类。

  Ans:程序编译时可以捕获被检查的异常,为了成功编译代码,异常会通过try...catch来处理。

  RUNNABLE:这种情况指的是Thread类的对象调用了start()方法,线程处于就绪状态。

  BLOCKED:这种状态指的是处于RUNNING状态的线程,出于某种原因,比如调用了sleep方法、等待用户输入等而让出当前的CPU给其他的线 定义了类的显式构造函数之后,还可以使用默认构造函数吗?

  Ans:应用同步的概念来实现,将数据库相关代码hs synchronized关键字的方法中,以便一次只有一个线程可以访问它。

  Ans:为了处理手动抛出的异常,我们可以使用throw关键字,并在catch中捕获和处理异常。

  Ans:每个对象在创建时都会从堆栈中获取内存空间,被垃圾回收器之后,其空间将被重新分配给其它对象。

  Ans:如果一个类有多个构造函数,那么可以使用this()在一个构造函数中调用另一个构造函数。

  Ans:可以,main()方法是Java应用程序的入口方法,代码总是从特定类的main方法开始。

  Ans:如果我们在Java的特定块中定义一个新类,那么这个类就被称为局部类,它在局部范围内可用,在其定义的块之外不可用。

  Ans:方法的重写要求子类的方法的名称及参数必须和所覆盖的方法相同,返回类型可以不同但必须是所覆盖方法的子类。

  Ans:在继承的情况下,创建派生类的新对象时,首先调用父类的构造函数,然后调用派生类的构造函数。

  推荐:

  

本文网址:
下一篇:没有资料
共有:条评论信息评论信息
发表评论
姓 名:
验证码: