Java面试题之九
四十六、Math.round(11.5)等於多少? Math.round(-11.5)等於多少?
对于这个题,只要弄清楚Math提供的三个与取整相关的方法就OK了。
1.ceil,英文含义是天花板,该方法就表示向上取整,Math.ceil(11.3)的结果为12,Math.ceil(-11.6)的结果为-11。
2.floor,英文含义是地板,该方法就表示向下取整,Math.floor(11.6)的结果是11,Math.floor(-11.4)的结果-12。
3.round,表示“四舍五入”,算法为Math.floor(x+0.5),即将原来的数字加上0.5后再向下取整,Math.round(11.5)的结果是12,Math.round(-11.5)的结果为-11。
四十七、Java 有没有goto?
java中的保留字,现在没有在java中使用。与此类似的还有个叫const。
四十八、接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类(concrete class)?
接口可以继承接口,用来拓展接口。抽象类也可以实现接口。抽象类也可以继承实体类,只要该实体类有明确的构造方法。其实,任何抽象类最终都是Object的子类。
四十九、abstract 的method是否可同时是static,是否可同时是native,是否可同时是synchronized?
都不行。理由:
1.static修饰的方法是不能被重写的,而abstract修饰的方法是没有给出实现的,必须要求子类去实现。很明显,它们是矛盾的。
2.native修饰的方法是要移交给本地操作系统,由其他语言来实现,而abstract 是交给子类实现,两者矛盾。
3.synchronized表示同步,是对具体操作进行同步,而abstract 修饰的方法没有给出具体操作的实现,所以两者矛盾。但是在子类重写后可以添加同步。
五十、数组有没有length()这个方法? String 有没有length()这个方法?
数组是没有length()这个方法的,但有length这个属性。String有length()这个方法。
五十一、两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对?
根据API描述:If two objects are equal according to the equals(Object) method, then calling the hashCode method on each of the two objects must produce the same integer result. 翻译成中文意思是:如果根据 equals(Object) 方法,两个对象是相等的,那么对这两个对象中的每个对象调用 hashCode 方法都必须生成相同的整数结果。
所以,对于Object类来说:如果equals比较结果相等,必然有相同的hash code。
但是这是针对Object类,Object类的equals就是根据==来比较的,即比较是否为同一个对象。
这是符合hashCode的常规协定的:
Whenever it is invoked on the same object more than once during an execution of a Java application, the hashCode method must consistently return the same integer, provided no information used in equals comparisons on the object is modified. This integer need not remain consistent from one execution of an application to another execution of the same application. 翻译成中文:在 Java 应用程序执行期间,在对同一对象多次调用 hashCode方法时,必须一致地返回相同的整数,前提是将对象进行 equals 比较时所用的信息没有被修改。从某一应用程序的一次执行到同一应用程序的另一次执行,该整数无需保持一致。
至于如果子类重写了equals和hashCode,是否依然有equals相等则hashCode相等的结论,这是没法确定的。我测试过自定义类,该结论是否成立要依赖于equals和hashCode的具体实现。另外,我测试过String类,该结论依然是成立的。
五十二、垃圾回收的优点和原理。并考虑2 种回收机制。
关于垃圾回收前面已介绍过很多。
回收机制有:分代复制垃圾回收和标记垃圾回收,增量垃圾回收。
五十三、描述一下JVM加载class文件的原理机制?
(1)Java中的所有类,必须被装载到JVM中才能运行,这个装载工作是由JVM中的类装载器完成的,类装载器所做的工作实质是把类文件从硬盘读取到内存中。
(2)java中的类大致分为三种:
1.系统类 2.扩展类 3.由程序员自定义的类
(3)类装载方式:
1.隐式装载, 程序在运行过程中当碰到通过new 等方式生成对象时,隐式调用类装载器加载对应的类到JVM中,
2.显式装载, 通过class.forname()等方法,显式加载需要的类 。
(4)java类装载器:
1. Bootstrap Loader - 负责加载系统类
2. ExtClassLoader - 负责加载扩展类
3.AppClassLoader - 负责加载应用类
(5)步骤:装载、链接和初始化,其中链接又可以分成校验、准备、解析
装载:查找和导入类或接口的二进制数据;
链接:执行下面的校验、准备和解析步骤,其中解析步骤是可以选择的;
校验:检查导入类或接口的二进制数据的正确性;
准备:给类的静态变量分配并初始化存储空间;
解析:将符号引用转成直接引用;
初始化:激活类的静态变量,初始化Java代码和静态Java代码块
五十四、char型变量中能不能存贮一个中文汉字?为什么?
能够定义成为一个中文的,因为java中以unicode编码,一个char 占2个字节,16位,所以放一个中文是没问题的。
五十五、同步和异步有和异同,在什么情况下分别使用他们?举例说明。
我觉得描述它们的区别是针对多线程而言的。
如果只有一个主线程就只能是同步,上一段代码没有完成,下一段必须等到上一段代码完成后才可以执行。如买票排队。
对于异步,比如说,你在主线程中new Thread,开启一个子线程,就属于异步操作。上一段代码没有完成,下一段不必等到上一段代码完成就可以执行。如手机发送短信。
对于方法或块加了synchronized叫做同步块和同步方法,是为了保证数据的安全性。当一个块或方法的内容没执行完毕,其他线程是不能访问的。但同步也意味着效率低。
Java面试题之九的更多相关文章
- 金九银十,史上最强 Java 面试题整理。
以下会重新整理所有 Java 系列面试题答案.及各大互联网公司的面试经验,会从以下几个方面汇总,本文会长期更新. Java 面试篇 史上最全 Java 面试题,带全部答案 史上最全 69 道 Spri ...
- 大公司的Java面试题集
找工作要面试,有面试就有对付面试的办法.以下一些题目来自我和我朋友痛苦的面试经历,提这些问题的公司包括IBM, E*Trade, Siebel, Motorola, SUN, 以及其它大小公司. 面试 ...
- Java笔试题解答和部分面试题
面试类 银行类的问题 问题一:在多线程环境中使用HashMap会有什么问题?在什么情况下使用get()方法会产生无限循环? HashMap本身没有什么问题,有没有问题取决于你是如何使用它的.比如,你 ...
- 来自投资银行的20个Java面试题
问题一:在多线程环境中使用HashMap会有什么问题?在什么情况下使用get()方法会产生无限循环? HashMap本身没有什么问题,有没有问题取决于你是如何使用它的.比如,你在一个线程里初始化了一个 ...
- 尚学堂Java面试题整理
博客分类: 经典分享 1. super()与this()的差别? - 6 - 2. 作用域public,protected,private,以及不写时的差别? - 6 - 3. 编程输出例如以 ...
- java面试题—精选30道Java笔试题解答(二)
摘要: java面试题-精选30道Java笔试题解答(二) 19. 下面程序能正常运行吗() public class NULL { public static void haha(){ System ...
- JAVA面试题二
JAVA 综合面试题 2007-08-12 目录 Java面试题整理 9 Java面向对象 9 1. super()与this()的区别? 9 2. 作用域public,protected,priva ...
- 【面试必备】常见Java面试题大综合
一.Java基础 1.Arrays.sort实现原理和Collections.sort实现原理答:Collections.sort方法底层会调用Arrays.sort方法,底层实现都是TimeSort ...
- Java面试题阶段汇总
初级面试题 Java面试题-基础篇一 Java面试题-基础篇二 Java面试题-集合框架篇三 Java面试题-基础篇四 Java面试题-基础篇五 Java面试题-javaweb篇六 Java面试题 ...
随机推荐
- 一起来学canvas (前言)
codeyy - 一依丫丫 一起来学canvas (前言)
- jQuery 局部div刷新和全局刷新方法
div的局部刷新 $(".dl").load(location.href+".dl"); 全页面的刷新方法 window.location.reload( ) ...
- cocos2dx lua 学习笔记(二)
安装开发环境 sublime - http://www.sublimetext.com/2 package control - http://packagecontrol.io/installatio ...
- 利用Python完成一个小游戏:随机挑选一个单词,并对其进行乱序,玩家要猜出原始单词
一 Python的概述以及游戏的内容 Python是一种功能强大且易于使用的编程语言,更接近人类语言,以至于人们都说它是“以思考的速度编程”:Python具备现代编程语言所应具备的一切功能:Pytho ...
- IOS拷贝文件到沙盒
- (void)copyFileFromResourceTOSandbox { //文件类型 NSString * docPath = [[NSBundle mainBundle] pathForRe ...
- HBase--DependentColumnFilter(参考例过滤器 )详解
DependentColumnFilter是一种允许用户指定一个参考列或引用列来过滤其他列的过滤器,过滤的原则是基于参考列的时间戳来进行筛选 . 官方说明: 大意:此过滤器提供两个参数--列族和列限定 ...
- Android 官方文档:(二)应用清单 —— 2.26 <uses-permission>标签
syntax: <uses-permission android:name="string" android:maxSdkVersion="inte ...
- 单调队列-hdu-3415-Max Sum of Max-K-sub-sequence
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=3415 题目大意: 给n个数凑成环状,求某一区间,使得该区间长度不超过k,且总和最大. 解题思路: 区 ...
- mysql命令具体解释
首先创建一个简单的user表 CREATE TABLE `user` ( `id` int NOT NULL AUTO_INCREMENT , `name` varchar(255) NULL , ...
- Android 4.4 Kitkat Phone工作流程浅析(六)__InCallActivity显示更新流程
本文来自http://blog.csdn.net/yihongyuelan 转载请务必注明出处 本文代码以MTK平台Android 4.4为分析对象,与Google原生AOSP有些许差异,请读者知悉. ...