没有合适的资源?快使用搜索试试~ 我知道了~
2018中级java工程师面试总结
需积分: 9 10 下载量 60 浏览量
2018-03-30
11:46:01
上传
评论 1
收藏 1.43MB DOCX 举报
温馨提示
试读
64页
2018年武汉java面试总结 内容从java基础数据库,框架几乎都包含进去
资源推荐
资源详情
资源评论
Java 基础
1、try {}里有一个 return 语句,那么紧跟在这个 try 后的
nally {} 里的 code 会不会被执行,什么时候被执行,在
return 前还是后?
可以分两方面理解
执行时机问题。 总会执行(除非是 ),正常情况下在 后执行,抛异
常时在 后面执行
返回值问题。可以认为 (或者 )中的 语句的返回值放入线程栈的顶部:如
果返回值是基本类型则顶部存放的就是值,如果返回值是引用类型,则顶部存放的是引用
中的 语句可以修改引用所对应的对象,无法修改基本类型。但不管是基本类
型还是引用类型,都可以被 返回的“具体值”具体值覆盖
2、jdk1.5 的新特性
1,自动拆装箱
2,泛型
3,可变参数
4,静态导入
5,增强 for 循环
6,互斥锁
7,枚举
3、jdk1.7 的新特性
(1)二进制字面量
(2)数字字面量可以出现下划线
(3)switch 语句可以用字符串
(4)泛型简化,菱形泛型
4、Jdk1.8 新特性
()接口的默认方法和静态方法
允许我们给接口添加一个非抽象的方法实现,只需要使用 关键字即可,这个
特征又叫做扩展方法,示例如下:
interface Formula {
double calculate(int a);
default double sqrt(int a) {
return Math.sqrt(a);
}
}
()表达式
1
2
3
4
5
6
7
// Java 8 之前:
new Thread(new Runnable() {
@Override
public void run() {
System.out.println("Before Java8, too much code for too
little to do");
}
}).start();
1
2
//Java 8 方式:
new Thread( () -> System.out.println("In Java8, Lambda expression
rocks !!") ).start();
()函数式接口
@FunctionalInterface
public interface Runnable {
public abstract void run();
}
()引入 !" 类防止空指针异常
5、Jdk1.9 新特性
()接口方法私有
6、简述 Java 平台 I/O 模型中的 BIO,NIO,AIO 区别
Java 对 BIO、NIO、AIO 的支持:
#$%: 同步并阻塞,服务器实现模式为一个连接一个线程,即客户
端有连接请求时服务器端就需要启动一个线程进行处理,如果这个连接
不做任何事情会造成不必要的线程开销,当然可以通过线程池机制改善。
&$%: 同步非阻塞,服务器实现模式为一个请求一个线程,即客户
端发送的连接请求都会注册到多路复用器上,多路复用器轮询到连接有
$'% 请求时才启动一个线程进行处理。
($%&$%: 异步非阻塞,服务器实现模式为一个有效请求一个线
程,客户端的 $'% 请求都是由 % 先完成了再通知服务器应用去启动线程
进行处理,
BIO、NIO、AIO 适用场景分析:
#$% 方式适用于连接数目比较小且固定的架构,这种方式对服务器资源
要求比较高,并发局限于应用中,)* 以前的唯一选择,但程序直观
简单易理解。
&$% 方式适用于连接数目多且连接比较短(轻操作)的架构,比如聊天
服务器,并发局限于应用中,编程比较复杂,)* 开始支持。
($% 方式使用于连接数目多且连接比较长(重操作)的架构,比如相册
服务器,充分调用 % 参与并发操作,编程比较复杂,)*+ 开始支持。
7、反射中,Class.forName 和 classloader 的区别
, &前者除了将类的 文件加载到 - 中之外,还会对类进行解释,执行类
中的 " 块。
而 只干一件事情,就是将 文件加载到 - 中,不会执行 " 中的内容.只
有在 /$ 才会去执行 " 块。
8、阻塞队列和普通队列的区别
阻塞队列与普通队列的区别在于,当队列是空的时,从队列中获取元素的操作将会被阻塞
或者当队列是满时,往队列里添加元素的操作会被阻塞。试图从空的阻塞队列中获取元素
的线程将会被阻塞,直到其他的线程往空的队列插入新的元素。同样,试图往已满的阻塞
队列中添加新元素的线程同样也会被阻塞,直到其他的线程使队列重新变得空闲起来,如
从队列中移除一个或者多个元素,或者完全清空队列
9、Object 中哪些方法
1.clone 方法
保护方法,实现对象的浅复制,只有实现了 Cloneable 接口才可以调用该方法,
否则抛出 CloneNotSupportedException 异常。
2.getClass 方法
final 方法,获得运行时类型。
3.toString 方法
该方法用得比较多,一般子类都有覆盖。
4.nalize 方法
该方法用于释放资源。因为无法确定该方法什么时候被调用,很少使用。
5.equals 方法
该方法是非常重要的一个方法。一般 equals 和==是不一样的,但是在 Object
中两者是一样的。子类一般都要重写这个方法。
6.hashCode 方法
该方法用于哈希查找,重写了 equals 方法一般都要重写 hashCode 方法。这个
方法在一些具有哈希功能的 Collection 中用到。
一 般 必 须 满 足 obj1.equals(obj2)==true 。 可 以 推 出 obj1.hash-
Code()==obj2.hashCode(),但是 hashCode 相等不一定就满足 equals。不过
为了提高效率,应该尽量使上面两个条件接近等价。
7.wait 方法
wait 方法就是使当前线程等待该对象的锁,当前线程必须是该对象的拥有者,
也 就 是 具 有 该 对 象 的 锁 。 wait() 方 法 一 直 等 待 , 直 到 获 得 锁 或 者 被 中 断 。
wait(long timeout)设定一个超时间隔,如果在规定时间内没有获得锁就返回。
调用该方法后当前线程进入睡眠状态,直到以下事件发生。
(1)其他线程调用了该对象的 notify 方法。
(2)其他线程调用了该对象的 notifyAll 方法。
(3)其他线程调用了 interrupt 中断该线程。
(4)时间间隔到了。
剩余63页未读,继续阅读
资源评论
hzau_itdog
- 粉丝: 98
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功