一些Java基础方面问题的总结
最近做面试题,遇到一些问题,整理一下!
1、overloaded的方法是否可以改变返回值的类型?
答案:可以。
overload是重载,overloaded是什么?重载的过去式?我还以为是我没见过的注解,也没有给限定条件,代码测试一下。
1 public class test { 2 public void gettest() { 3 system.out.println("无返回值!"); 4 } 5 6 // public string gettest(){ 7 // return "返回string"; 8 // } 9 10 public string gettest(string str) { 11 return str; 12 } 13 14 // public integer gettest(string str){ 15 // return 0; 16 // } 17 18 public string gettest(string str, integer num) { 19 return "返回string"; 20 } 21 }
注释部分报错,很明显,如果吧这个单词也解释为重载的话,重载的基本定义:类名相同,参数不同,同类。所以我认为答案应该是,在参数不同的情况下,重载与返回值无关。
2、垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么办法可以主动通知虚拟机进行垃圾回收?
这个问题可以延伸到jvm方面的知识,java本身是运行在jvm上的,所以才实现了跨平台,在项目较小的时候,我们基本不用考虑内存管理方面的问题。
谈到jvm,就要了解jvm的内存结构,jvm的内存结构包括五大区域:程序计数器、虚拟机栈、本地方法栈、堆区、方法区。而程序计数器、虚拟机栈、本地方法栈3个区域是根据线程启动而创建和销毁。所以基本不用考虑垃圾回收的问题。
而我们需要关注的就是堆区、方法区的垃圾回收。
具体可以参考:
给出可以参考的答案:垃圾回收器是作为一个单独的低级别的线程运行,在不可知的情况下对内存堆中已死亡的或者长期没有使用的对象回收,但是不能实时的对某一对象或者所有对象进行垃圾回收。所以根据原理,无法马上回收内存。可以使用system.gc()方法通知虚拟机进行垃圾回收。
3、sleep()和wait()有什么区别
区别1:sleep()后,程序并不会不释放同步锁。wait()后,程序会释放同步锁。
区别2:sleep()指定时间唤醒,wait()使用notify()直接唤起。
4、a,b两个人分别在两座岛上。b生病了,a有b所需的药。c有一艘小船和一个可以上锁的箱子。c愿意在a和b之间运东西,但东西只能放在箱子里。只要箱子没被锁上锁,c都会偷走箱子里的东西,不管箱子里是什么。如果a和b各自有一把锁和只能开自己那把锁的钥匙,a应该如何把东西安全的交给b?
想了一下,想到了一个方法。a把药放到箱子里,然后锁上,交给b,b把箱子锁上,交给a,此时箱子有两把锁,a开锁后交给b,这样就完成了运送,在这些过程中,箱子在c的手上始终都有钥匙,所以安全性没有问题。
5、用最有效率的方法算出 2 乘以 8 等于几?
2 << 3
6、 web 运用程序的稳定、安全需要考虑哪些?
web 服务器的性能考虑主要有:并发用户数、事务安全、负载均衡、时段流量、网络带宽 网格安全等。
网络安全方面:
1、关键数据的保护,例如用户数据等
2、功能服务的正常提供。
3、网站的防攻击能力。
4、对异常灾害的恢复能力。
程序性能:
1、响应请求并运行得出结果的时间。
2、错误的检测和拦截。
3、扩展性。