A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Sj改变 中级黑马   /  2016-5-13 14:38  /  18948 人查看  /  122 人回复  /   39 人收藏 转载请遵从CC协议 禁止商业使用本文

        之前已经分享过一次我面试的时候做过的笔试题。接下来就跟大家交流一下我面试技术问答环节。我不会像有些人一道题发一个帖子,因为我也是从面试前过来的,看到那样的帖子就感觉污染了整个论坛的气氛,我感觉黑马建立这个论坛的目的是为了大家的学术生活交流,而不是为了一味的刷分,希望黑马论坛也能成为像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到反射都会问到。平时这些小的知识点很少会有人注意。可能大家跟我一样都只会敲代码,但是不会讲这些东西。技术问答这一关就是要大家形成这样的能力,什么叫明白,理解了知识?这让我想起来一句古话-------------什么时候我才能成为大牛?答:等你教会你媳妇编程的时候。哈哈,开个小玩笑。总之,这篇干货希望大家干了~也希望大家多多留言支持。多给小的点技术分。
     一同过了面试的小伙伴,希望咱们课堂上见,没有过的小伙伴看了这篇文章你也会过的,过了以后不要忘了回来感谢我。
=============================================================================================
                                                                                                                                                                          说道做到,这就是我的忍道
                                                                                                                                                                                                          -------漩涡名人


本帖被以下淘专辑推荐:

122 个回复

正序浏览
煮酒论英雄 来自手机 中级黑马 2017-6-3 20:00:01
122#
我想问下,黑马币是怎么兑换技术分的?几个黑马币能兑换一个技术分?
回复 使用道具 举报
煮酒论英雄 来自手机 中级黑马 2017-6-3 19:58:59
121#
66666666666
回复 使用道具 举报
楼主厉害了,正在准备成为一名黑马,要向你学习
来自宇宙超级黑马专属安卓客户端来自宇宙超级黑马专属安卓客户端
回复 使用道具 举报
回复 使用道具 举报
好贴 顶一个
回复 使用道具 举报
不错,继续努力
回复 使用道具 举报
回复 使用道具 举报
感谢楼主分享!很有用!
来自宇宙超级黑马专属安卓客户端来自宇宙超级黑马专属安卓客户端
回复 使用道具 举报
很好的分享
回复 使用道具 举报
回复 使用道具 举报
可以`````````
回复 使用道具 举报
我看了问题,大部分都不懂,感觉基础好差
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
回复 使用道具 举报
“Default在所有case都满足的情况下执行”这句话是都不满足的情况下执行吧!!!!!
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
太详细了   谢谢分享
回复 使用道具 举报
很厉害哦我的哥,总结的很好很有用。很强势,我很喜欢
回复 使用道具 举报
UZI 中级黑马 2016-10-25 04:53:15
106#
确实很有用,给个赞~
来自宇宙超级黑马专属安卓客户端来自宇宙超级黑马专属安卓客户端
回复 使用道具 举报
我记得list集合遍历方式有五种呢  还有集合转数组 Arrays工具类中的aslist方法  只是转完的数组不能进行增删的操作  还有一个get方法  好像是list集合所特有的  不知道我记错了还是
回复 使用道具 举报
要是早看到   我也能过了 可惜了  现在才看到  
回复 使用道具 举报
好东西啊,感谢分享
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马