java面试总结2
2.20
java 创建对象的几种方式
采用new
通过反射
采用clone
通过序列化机制
42)怎么获取 Java 程序使用的内存?堆使用的百分比?
可以通过 java.lang.Runtime 类中与内存相关方法来获取剩余的内存,总内存及最大堆内存。通过这些方法你也可以获取到堆使用的百分比及堆内存的剩余空间。Runtime.freeMemory() 方法返回剩余空间的字节数,Runtime.totalMemory() 方法总内存的字节数,Runtime.maxMemory() 返回最大内存的字节数。
2.25
git:
初始化
在根目录保存版本信息
将文件保存为二进制对象
更新索引
使用gitadd简化前两部操作
设置用户名和邮件地址完成提交
git commit简化提交操作
提交目录和结构并生成快照
2.26
整个Servlet的生命周期过程中,创建Servlet实例、调用实例的init()和destroy()方法都只进行一次,当初始化完成后,Servlet容器会将该实例保存在内存中,通过调用它的service()方法,为接收到的请求服务。
servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于servlet。
araylist和vecter数组方式存储数据,索引快,插入删除慢
linkedlist以双向链表存储,插入删除快,索引需要从前往后和从后往前操作,比较慢。
collection 是集合类的上层接口set和list都是继承自它。collections是集合类的帮助类。
它可以实现集合的索引 排序和 线程安全等操作
//交换集合中指定元素的位置
Collections.swap(list2, 0, 3);
//对集合进行排序
Collections.sort(list);
//对集合进行随机排序
Collections.shuffle(list);
按位与 和 逻辑与:
逻辑与判断真假(true or false 1、0)
按位与:二进制运算
15&127为什么等于15啊?
15二进制: (0000 1111)
127二进制: (1111 1111)
按位与自然就是(0000 1111)=15
finalize:垃圾回收期准备释放对象的存储空间,不一定会被回收,当程序的存储空间
濒临用完时,GC才会执行回收。
final 声明属性、方法和类,代表属性不可变,方法不可覆盖,类不可以继承。
finally是异常处理时使用的,finally包含的代码是不论程序发生什么异常都要执行的一段代码
sleep和wait:
sleep是Thread类的方法,代表线程暂停指定的时间,给其他线程执行的机会,并监控,到时会自动恢复。但是不会释放对象锁
wait是Object类的方法,本线程放弃对象锁,再次执行时需要重新获取对象锁。
静态内部类:static inner class
今天内部类不依赖于外部类,通常内部类需要外部类实例化后才能实例化
动态包含和静态包含的区别:
动态INCLUDE用jsp:include动作实现<jsp:include page = “included.jsp” flush = "true"/>它总会检查所含文件中的变化,适用于动态页面并且可以带参数。
静态INCLUDE用include伪码实现,不会检查所含文件的变化,适用于包含静态页面<%@include file=included.html%>
Math.round 参数加1/2后求其floor
常见的运行时错误:
ClassCastException
NullPointerException
NoSuchElementException
IlligleArgumentException
IndexOutOfBoundException
Spring Bean的生命周期:
定义Bean:<Bean></Bean>进行定义
初始化:1.配置文件中初始化 init-method
2.调用springframework.bean.InitializingBean
Bean调用:3种方式 使用构造器实例化 静态工厂方法实例化 使用实例化工厂方法实例化
销毁Bean:1.配置文件中 destroy-method进行销毁
2.springframework.bean.DisposeableBean
事务的传播行为?