黑马程序员技术交流社区

标题: java面试题总结 [打印本页]

作者: 新晋猿工    时间: 2016-6-15 22:04
标题: java面试题总结
day02
        1、下面的程序有问题吗,如果有,在哪里呢?
                        byte b1 = 3;
                        byte b2 = 4;
                        byte b3 = b1 + b2;
                        byte b4 = 3 + 4;
                输出b3会出现"可能损失精度",因为byte类型的b1加上byte类型的b2,会自动转换为int类型,用byte接收是不行的,要用int接收或者long啊这些的。

day03
        2、 short s1 = 1;
                s1 = s1 + 1;
               
                short s2 = 1;
                s2 += 1;
        请问上面的代码哪个有问题?
                第一个有问题,md还是一样的道理,可能损失精度,需要注意的是s2之所以可以执行,是因为他隐含了自动强制转换哦。
               
day04
        3、switch语句的表达式可以是byte吗?可以是long吗?可以是String吗?
                可以
                不可以
                JDK7以后可以
               
day08
        4、 A:Override和Overload的区别?Overload是否可以改变返回值类型?
                        override是重写的意思,方法重写也称方法覆盖,是指方法名和参数个数以及类型(包括返回值类型)都相同,子类继承自父类可以重写方法,也可以不重写。
                        overload是重载的意思,方法重载是指方法名相同,但具有不同的参数个数和参数类型(还有返回值类型),体现了多态性;
                B:this和super的区别和各自的作用?
                        this是指当前类的对象,而super是指当前类的父类的对象。
                       
day09
        5、A:局部变量
                        a:基本类型 值不能发生改变
                        b:引用类型 地址值不能发生改变,但是对象的内容是可以改变的
                B:初始化时机
                        a:只能初始化一次。
                        b:常见的给值
                                定义的时候。(推荐)
                                构造方法中。
                               
day10
        6、填空
                class Outer {
                        public int num = 10;
                       
                        class Inner {
                                public int num = 20;
                               
                                public viod show() {
                                        int num  = 30;
                                       
                                        System.out.println(num);
                                        System.out.println(this.num);
                                        System.out.println(Outer.this.num);
                                }
                        }
                }
        //30                 //20            //10
       
        7、不齐代码
        匿名内部类的面试题(补齐代码)
                interface Inter {
                        void show();
                }
               
                class Outer {
                        //补齐代码
                        public static Inter method() {
                                return new Inter() {
                                        public void show() {
                                                System.out.println("HelloWorld");
                                        }       
                                };
                        }
                }
               
                class OuterDemo {
                        public static void main(String[] args) {
                                Outer.method().show(); //"HelloWorld"
                        }
                }
               
day11
        8、==和equals()的区别?
                A:==
                        基本类型:比较的是值是否相同
                        引用类型:比较的是地址值是否相同
                B:equals()
                        只能比较引用类型。默认情况下,比较的是地址值是否相同。
                        但是,我们可以根据自己的需要重写该方法。
       
day12
        9、字符串的面试题(看程序写结果)
                A:==和equals()
                        String s1 = new String("hello");
                        String s2 = new String("hello");
                        System.out.println(s1 == s2);
                        // false
                        System.out.println(s1.equals(s2));
                        // true,String类已经重写了equals()方法

                        String s3 = new String("hello");
                        String s4 = "hello";
                        System.out.println(s3 == s4);
                        // false
                        System.out.println(s3.equals(s4));
                        // true

                        String s5 = "hello";
                        String s6 = "hello";
                        System.out.println(s5 == s6);
                        // true
                        System.out.println(s5.equals(s6));
                        // true
                B:字符串的拼接
                        String s1 = "hello";
                        String s2 = "world";
                        String s3 = "helloworld";
                        System.out.println(s3 == s1 + s2);
                        // false
                        System.out.println(s3.equals((s1 + s2)));
                        // true

                        System.out.println(s3 == "hello" + "world");
                        // false 这个我们错了,应该是true
                        //字符串直接赋值的方式是先到字符串常量池里面去找,如果有就返回,没有,就创建并返回
                        System.out.println(s3.equals("hello" + "world"));
                        // true
                       
day13
        10、A:String,StringBuffer,StringBuilder的区别?
                        String长度是不可变的,StringBuffer和StringBuilder的长度是可变的
                        StringBuffer:同步的,数据安全,效率低。
                        StringBuilder:不同步的,数据不安全,效率高。
                B:StringBuffer和数组的区别?
                        数组String的长度是不可变的,而StringBuffer的长度是可变的。
day14
        11、-128到127之间的数据缓冲池问题
        public class IntegerDemo {
        public static void main(String[] args) {
                Integer i1 = new Integer(127);
                Integer i2 = new Integer(127);
                System.out.println(i1 == i2);
                //false
                System.out.println(i1.equals(i2));
                //true
                System.out.println("-----------");

                Integer i3 = new Integer(128);
                Integer i4 = new Integer(128);
                System.out.println(i3 == i4);
                //false
                System.out.println(i3.equals(i4));
                //true
                System.out.println("-----------");

                Integer i5 = 128;
                Integer i6 = 128;
                System.out.println(i5 == i6);
                //false
                System.out.println(i5.equals(i6));
                //true
                System.out.println("-----------");

                Integer i7 = 127;
                Integer i8 = 127;
                System.out.println(i7 == i8);
                //true
                System.out.println(i7.equals(i8));
                //true

                // 通过查看源码,我们就知道了,针对-128到127之间的数据,做了一个数据缓冲池,如果数据是该范围内的,每次并不创建新的空间
                // Integer ii = Integer.valueOf(127);
        }
}
               
day19
        12、A:编译期异常和运行期异常的区别?
                        编译期异常 必须要处理的,否则编译不通过
                        运行期异常 可以不处理,也可以处理
                B:throw和throws是的区别
                        throw:
                                在方法体中,后面跟的是异常对象名,并且只能是一个
                                throw抛出的是一个异常对象,说明这里肯定有一个异常产生了
                        throws:
                                在方法声明上,后面跟的是异常的类名,可以是多个
                                throws是声明方法有异常,是一种可能性,这个异常并不一定会产生
       
        13、A:final,finally,finalize的区别?
                        final -> 修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作 为父类被继承。
                 因此一个类不能既被声明为 abstract的,又被声明为final的。将变量或方法声明为 final,可以保证它们在使用中不被改变。
                 被声明为final的变量必须在声明时给定初值,而在以后的引 用中只能读取,不可修改。被声明为final的方法也同样只能使用,不能重载

                        finally -> 再异常处理时提供 finally 块来执行任何清除操作。如果抛出一个异常,那么相匹配 的 catch 子句就会执行,
                 然后控制就会进入 finally 块(如果有的话)。
                 
                        finalize -> 方法名。Java 技术允许使用 finalize() 方法在垃圾收集器将对象从内存中清除出去 之前做必要的清理工作。
                 这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它 是在 Object 类中定义的,因此所有的类都继承了它。
                 子类覆盖 finalize() 方法以整理系统资源或者 执行其他清理工作。finalize() 方法是在垃圾收集器删除对象之前对这个对象调用的。
                 
                B:如果在catch里面有return,请问finally还执行吗?如果执行,在return前还是后
                        会;前。
作者: chengxiankun    时间: 2016-6-15 22:07
不错的总结,谢谢分享!!
作者: wrui    时间: 2016-6-15 22:57
嗯嗯,还是不错的,,
作者: lonely    时间: 2016-6-15 23:39
不错的总结,谢谢分享!!
作者: TCK8888    时间: 2016-6-15 23:47
谢谢分享,温故知新
作者: tianzhu2725    时间: 2016-6-16 20:57
太有用了明天我就要参加面试了
作者: Sbbbbbbbbbb    时间: 2016-6-16 22:15
学习楼主的经验了,谢谢咯
作者: lionc123    时间: 2016-6-17 01:02
干货啊,谢谢
作者: jiazhuoxiao    时间: 2016-6-17 09:20
收藏了 谢谢
作者: 18394182405    时间: 2016-6-17 10:58
有人知道黑马就业班考试大概是什么样的么
作者: shengdong521    时间: 2016-6-17 11:13
已收藏啦!谢谢分享呢
作者: haizi004    时间: 2016-6-17 16:17
已收藏,谢谢分享。
作者: 精彩    时间: 2016-6-17 17:06
谢谢分享
作者: 一个很瘦的胖子    时间: 2016-6-17 17:15
感谢楼主!   收藏了

作者: gjtdxjd    时间: 2016-6-17 17:44
很不错的总结,收藏了用来复习!
作者: qq6505520    时间: 2016-6-17 23:14
感谢分享!!!!!!!!!
作者: YC1992    时间: 2016-6-18 00:06
很好,总结的不错
作者: 孟小垚    时间: 2016-6-18 08:22
谢谢分享!
作者: 2016ly    时间: 2016-6-22 23:09
谢谢分享!!!!
作者: 读书||养猪    时间: 2016-6-22 23:54
不错,我们这里也快点招了 谢谢分享
作者: 1051587947    时间: 2016-6-23 00:22
可以的 写的真好




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2