Java 面试知识点3

Math.round(11.5)等於多少? Math.round(-11.5)等於多少?
Math类中提供了三个与取整有关的方法:cell、floor、round,这些方法的作用与它们的英文名称的含义相对应。
ceil的英文意义是天花板,该方法就表示向上取整,所以,Math.ceil(11.3)的结果为12,Math.ceil(-11.3)的结果是-11;
floor的英文意义是地板,该方法就表示向下取整,所以,Math.floor(11.6)的结果为11,Math.floor(-11.6)的结果是-12;
最难掌握的是round方法,它表示“四舍五入”,算法为Math.floor(x+0.5),即将原来的数字加上0.5后再向下取整,所以,Math.round(11.5)的结果为12,Math.round(-11.5)的结果为-11。

short s1 = 1; s1 = s1 + 1;有错吗? short s1 = 1; s1 += 1; 有错吗?
short s1 = 1; s1 = s1 + 1;有错,s1是short型,s1+1是int型,不能显式转化为short型。
可修改为s1 =(short)(s1 + 1) 。short s1 = 1; s1 += 1正确。

sleep() 和 wait() 有什么区别?
sleep()方法是使线程停止一段时间。在sleep 时间间隔期满后,线程不一定立即恢复执行。这是因为在那个时刻,其它线程可能正在运行而且没有被调度为放弃执行,除非(1)”醒来”的线程具有更高的优先级;(2)正在运行的线程因为其它原因而阻塞。
wait()是线程交互时,如果线程对一个同步对象x 发出一个wait()调用,该线程会暂停执行,被调对象进入等待状态,直到被唤醒或等待时间到。

Java中有没有goto?
goto是java中的保留字,现在没有在java中使用。
(根据James Gosling(Java之父)编写的《The Java Programming Language》一书的附录中给出了一个Java关键字列表,其中有goto和const,但是这两个是目前无法使用的关键字,因此有些地方将其称之为保留字,其实保留字这个词应该有更广泛的意义,因为熟悉C语言的程序员都知道,在系统类库中使用过的有特殊意义的单词或单词的组合都被视为保留字)

数组有没有length()这个方法? String有没有length()这个方法?
数组没有length()这个方法,有length的属性。而String有有length()这个方法。

Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?
方法的重写Overriding和重载Overloading是Java多态性的不同表现。
重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被”屏蔽”了。
如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。Overloaded的方法是可以改变返回值的类型。

Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?
Set里的元素是不能重复的,那么用iterator()方法来区分重复与否。equals()方法是判断两个Set是否相等。
equals()和==方法判断引用值地址值)是否指向同一对象;而equals()在String类中被重写,为的是当两个分离的对象的内容和类型相配的话,就返回真值。

谈谈NIO和IO的区别:
参考网址:http://www.jb51.net/article/50621.htm

String和StringBuilder、StringBuffer的区别?
答:Java平台提供了两种类型的字符串:String和StringBuffer/StringBuilder,它们可以储存和操作字符串。其中String是只读字符串,也就意味着String引用的字符串内容是不能被改变的。而StringBuffer/StringBuilder类表示的字符串对象可以直接进行修改。StringBuilder是Java 5中引入的,它和StringBuffer的方法完全相同,区别在于它是在单线程环境下使用的,因为它的所有方面都没有被synchronized( 同步的)修饰,因此它的效率也比StringBuffer要高。

谈谈Statement和 PreparedStatement的区别:
与Statement相比,①PreparedStatement接口代表预编译的语句,它主要的优势在于可以减少SQL的编译错误并增加SQL的安全性(减少SQL注射攻击的可能性);②PreparedStatement中的SQL语句是可以带参数的,避免了用字符串连接拼接SQL语句的麻烦和不安全;③当批量处理SQL或频繁执行相同的查询时,PreparedStatement有明显的性能上的优势,由于数据库可以将编译优化后的SQL语句缓存起来,下次执行相同结构的语句时就会很快(不用再次编译和生成执行计划)。

什么是Cookie?
答:cookie是用来将信息永久或临时保存数据到用户机。在使用的时候要设定有效期和有效路径。如果不设置有效期,这个cookie就是会话性的cookie,会话结束后cookie就被删除。如果不设置有效路径,那么cookie只在当前(创建cookie)路径有效。

Servlet调用方式几种方法?
答:通过JSP提交进行调用,可以通过浏览器地址栏访问调用,可以通过超链接调用。

为什么要序列化?
序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化。可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间。序列化是为了解决对象流读写操作时可能引发的问题(如果不进行序列化可能会存在数据乱序的问题)。 要实现序列化,需要让一个类实现Serializable接口,该接口是一个标识性接口,标注该类对象是可被序列化的,然后使用一个输出流来构造一个对象输出流并通过writeObject(Object)方法就可以将实现对象写出(即保存其状态);如果需要反序列化则可以用一个输入流建立对象输入流,然后通过readObject方法从流中读取对象。序列化除了能够实现对象的持久化之外,还能够用于对象的深度克隆

产生对象由哪些方式?
方法一:new
方法二:使用工厂模式,引入工厂类
方法三:使用反射:Class.forName
方法四:对象克隆
关于JAVA内存模型,一个对象(两个属性,四个方法)实例化100次,现在内存中的存储状态, 几个对象,几个属性,几个方法?
Java新建的对象都放在堆里,如果实例化100次,堆中产生100个对象,一般对象与其属性和方法属于一个整体,但如果属性和方法是静态的,则属性和方法只在内存中存一份。

了解java5、java6、java7、java8的新特性
参考网址:http://blog.csdn.net/samjustin1/article/details/52268004
hashtable,hasgmaq,TreeMap的区别?
参考网址:http://www.zlmind.com/?p=679
ConcurrentMap和HashMap的区别?
参考网址:http://blog.csdn.net/xuefeng0707/article/details/40834595

说一个IO的架构:
参考网址:http://www.cnblogs.com/feifeihu/archive/2012/08/21/2649967.html

猜你喜欢

转载自blog.csdn.net/yuki5233/article/details/70131962