之前已经分享过一次我面试的时候做过的笔试题。接下来就跟大家交流一下我面试技术问答环节。我不会像有些人一道题发一个帖子,因为我也是从面试前过来的,看到那样的帖子就感觉污染了整个论坛的气氛,我感觉黑马建立这个论坛的目的是为了大家的学术生活交流,而不是为了一味的刷分,希望黑马论坛也能成为像CSDN那样的论坛而努力。 个人感觉,相比于面试过程中的编程题,面试的基础知识问答环节更加值得多加准备。个人第一次就跪在这个方面。希望后来的小伙伴多加注意。
接下来是我在面试的时候被问到的一些技术问题:
i++和++i的区别?
答:单独使用的时候,在前在后都一样。参与运算的时候,在前是先自加,然后再用这个结果参与运算。在后是先参与运算,再进行自加
逻辑或 " | " 和 短路或 " || "有什么区别?
答:|不管前面的结果是真是假后面的都会运算,||前面为真后面的不参与运算。但是结果是一样的。
switch语句的表达式可以放什么?
答:byte、short、int、char。JDK1.5以后可以使用枚举,1.7之后可以使用String。
switch中break可以省略吗?省略了会发生什么现象?default可以什么时候执行吗?
答:break在最后一个可以省略,其他的不要省略,省略了会继续执行下面的语句,这种现象叫case穿透现象。Default在所有case都满足的情况下执行。
局部变量和成员变量的区别:
(1)定义位置不同:成员变量定义在类中方法外,局部变量定义在方法内。
(2)作用范围不同:成员变量在整个类中有效,局部变量在所在的方法有效。
(3)内存位置不同:成员变量随着对象的创建存放在堆内存(都是new出来的)中,局部变量存放在栈内存中。
(4)初始化值不同:成员变量是有默认的初始化的值的;局部变量不赋值不能用。
(5)生命周期不同:成员变量随着对象的存在而存在,随着对象的消失而消失;局部变量随着方法的调用而存在,方法调用完毕而消失。
子类都不可以继承到父类的什么?java可以多继承么?
答:父类中被private修饰的成员不可以被继承到,java不支持多继承,支持多层继承。
this关键字实现了什么功能?
答:(1)区别局部变量和成员变量(2)代表本类对象的引用(3)也可以用于构造方法的调用
final修饰的变量、方法、和类有什么特点?
(1)final修饰的变量只能赋值一次,不能发生改变,如果修饰的基本类型,是其值不能发生改变,如果修饰的引用数据类型,是地址值不能发生改变;
(2)final修饰的方法不能被重写;
(3)final修饰的类不能被继承,也称最终类。
接口中的成员的特点?
答:都是常量,public static final ;方法都是抽象方法,public abstract;没有构造方法。
接口和抽象类的区别?
(1)成员的特点:抽象类可以有变量、常量、构造方法、一般方法、抽象方法;接口有且只能有常量和抽象方法。
(2)关系特点:类与类支持单继承,不能多继承,但是能够多层次继承,类与接口是实现关系,一个类能实现多个接口,一个类继承 一个类的同时能实现多个接口;接口与接口之间能单继承,也能多继承;
==和equals的区别?
答:“==”是比较运算符,既能比较基本数据类型,又能比较引用数据类型。基本数据类型比较的是数值,引用数据类型比较的是地址值。
equals是一个方法,只能比较引用数据类型。所有的类都会继承Object的equals方法。重写equals方法比较的是对象的内容,如果没有重写将调用Object的equals方法,比较的是地址值。
String 和int直接的转换?
答:将int类型转为String类型的方法:(1)基本数据类型+“”(2)Integer.toString(int num)(3)String.valueOf(int i)
将String转为int:Integer.parseInt(String s)
HashSet怎么保证元素唯一的?先比较equals还是HashCode?
答:同过存入元素的HashCode和equals方法。先比较Hash值。
List取出元素的方法?Set取出元素的方法?Map取出元素的方法?
(1)list取出元素的方法:普通for,高级for,迭代器
(2)Set取出元素的方法: 高级for,迭代器。
(3)Map取出元素的方法,entrySet,keySet,通过keySet取出Value的方法value = get(key);
throw和throws的区别?
答:throws是在方法声明后面,用来声明异常,后面跟的异常类名;可以跟多个异常类名,用逗号隔开;表示抛出异常,需要由调用者处理。
Throw定义在方法体内,跟的异常对象名;只能跟一个异常对象。
子父类间异常的注意事项?
答:(1)子类继承父类时,父类方法抛出了异常,子类重写该方法时只能抛出相同的异常或者该异常的子类。
(2)如果父类抛出了多个异常,子类在重写方法时只能抛出相同的异常或者他的子集,不能抛出父类没有的异常。
(3)如果父类没有抛出异常,子类重写该方法时不能抛出异常。如果子类出现了异常,只能进行try处理,不能抛出。
在try{}catch{}finally{}的那一部分关闭流,为什么?
答:在finally中,因为finally一定会执行。
线程的两种实现 方式的区别?
答:
(1)继承Thread类:好处是:因为是继承,代码简单,能够直接使用Thread类的方法。确定是:扩展性比较差,因为继承了Thread类,不能再继承其他的类。
(2)实现Runnable接口:好处是扩展性比较强。缺点时:代码比较冗余,因为不是继承Thread类,无法直接使用thread中的方法。
继承Thread类如何实现数据共享?
(1)定义共享数据为类变量:static修饰;
(2)定义在同步代码块中,或者同步函数中。
sleep和wait的区别?
(1)sleep是让线程睡眠,必须给相应的睡眠时间,不需要唤醒,时间到了会自动醒来,休眠时不放弃Cpu的执行权。是Thread的方法
(2)wait的是让线程等待,可以传参也可以不传参,传参是在指定的时间后等待,需要被唤醒。等待的时候放弃cpu的执行权。是Object的方法
如何通过反射获取类的私有方法?使用前应该注意什么?
(1)getDeclaredMethod方法获取私有方法
(2)在使用前应该setAccessable(true)
我天,总结下来发现自己真的很牛,半个小时回答了这么多问题,通过这半个小时的斗智斗勇,我也充分的认识到,这份程序员的饭碗不是谁都能吃到的。不用在在论坛上找面试会问什么问题了,这里已经够全面了的了,基本上同API到反射都会问到。平时这些小的知识点很少会有人注意。可能大家跟我一样都只会敲代码,但是不会讲这些东西。技术问答这一关就是要大家形成这样的能力,什么叫明白,理解了知识?这让我想起来一句古话-------------什么时候我才能成为大牛?答:等你教会你媳妇编程的时候。哈哈,开个小玩笑。总之,这篇干货希望大家干了~也希望大家多多留言支持。多给小的点技术分。
一同过了面试的小伙伴,希望咱们课堂上见,没有过的小伙伴看了这篇文章你也会过的,过了以后不要忘了回来感谢我。
=============================================================================================
说道做到,这就是我的忍道
-------漩涡名人 |
|