昨天一外企的面试题目
1。有几种方法计算运行一个方法所需的时间。
2。怎样调用一个类的私有方法。
问题点数:20、回复次数:40Top
1 楼dewdrop(白露)回复于 2006-03-20 12:08:10 得分 10
1。1种方法是在函数调用前new一个Date,返回后再new一个Date,相减可得,当然也可以在函数内部的首句和末句new Date计算(感觉比较傻)
2。可以将此类的private function封装在一个public function中,再调用公用方法
PS:感觉自己想的太简单,还是听高手正解~~Top
2 楼gary_jojo(英雄!哗,大英雄!)回复于 2006-03-20 12:25:50 得分 10
感觉和楼上的一样呀.
计算方法运行的时间应该还可以写一个Thread类型的计时器,进入方法体的时候开启这个线程,结束的时候停止.这样就可以算出运行了多长时间了.
调用一个类的PRIVATE方法的话,继承了那个类也算可以调用它的PRIVATE方法吧.Top
3 楼Paripatetic(逍遥)回复于 2006-03-20 12:26:56 得分 0
1.在调用发前new两个Date,调用后new一个Date,分别为date1,date2,date3
则方法运行时间为:(date3-date2)-(date2-date1)
因为new一个Date也需要时间
2.如果非要在类外部直接通过对对象发消息传递是不可能的,他破坏了面向对象程序的封装性Top
4 楼hamlet3145(蛤蟆乐天)回复于 2006-03-20 12:30:15 得分 0
反射
是静安寺不是道明寺,是源程序不是言承旭;是在静安寺写源程序,不是在流星花园看F4。Top
5 楼ibiswang(神鸟)回复于 2006-03-20 12:37:04 得分 0
1. 方法如下:
(1).通过在方法首先与结束处加上Date来相减; ---上面已提
(2).通过在首行与结束加对另外一个线程来实现; ---上面已提
(3).通过Proxy的方式,即调用时通过proxy来调用,在proxy中加入时间运行算;
(4). 如果你支持AspectJ的话,就更好办了。
2. 调用private方法,我想的到只有一种,就是"反射"。Top
6 楼treeroot(旗鲁特)回复于 2006-03-20 12:48:38 得分 0
真无聊的题目
第一个最简单的方法就是:
执行方法前看一下表,执行完后再看一下表,减一下不就完了!
不是问怎么调用,要问你想怎么调用Top
7 楼believefym(feng)回复于 2006-03-20 13:14:56 得分 0
怎么没人用System.currentTimeMillis(),而要new一个DateTop
8 楼jspren(人民老百姓)回复于 2006-03-20 13:54:28 得分 0
两个问题都有好几种办法,我只能说一种Top
9 楼pigo()回复于 2006-03-20 14:33:44 得分 0
没搞懂计算时间差值为什么不用long,却要用Date???
System.currentTimeMillis();
System.nanoTime(); //jdk1.5
Top
10 楼Albert_1030()回复于 2006-03-20 15:01:59 得分 0
markTop
11 楼lbfhappy(千里冰封)回复于 2006-03-20 15:11:40 得分 0
System.currentTimeMillis();
System.nanoTime();
前面是得出毫秒,后面是得出纳秒,更精确啊,
因为有些代码的执行就在一毫秒之内做完的,那怎么去测它的长度啊
所以用后面那个方法更准确一些。Top
12 楼asd_(CSDN旷代灌水VIP)回复于 2006-03-20 15:14:19 得分 0
a1: //initialize paramter
long a = System.cur....();
//invoke this method
a = System.curr...() - a;
System.out.println(a);
a2:
cannot。Top
13 楼Nowish(看我能忍耐多久)回复于 2006-03-20 15:19:26 得分 0
Mark~Top
14 楼scjpsz1860(友情UP友情接分)(快乐升星!预祝明天更好!:)回复于 2006-03-20 15:45:11 得分 0
Mark2Top
15 楼rickyelf(elf)回复于 2006-03-20 17:14:37 得分 0
2。怎样调用一个类的私有方法。
在自己的CLASS里调调看Top
16 楼chyx413332087()回复于 2006-03-20 17:28:21 得分 0
用System.currentTimeMillis();
好像你多几次执行,出现的结果不是一样的啊Top
17 楼qixiang77(纳兰康)回复于 2006-03-20 18:08:56 得分 0
1)System.currentTimeMillis();最常用的测时间方法,也是优化程序的工具。
2)要想直接调用一个类的私有方法,最好的办法就是用内部类Top
18 楼liyan010(我是大坏蛋)回复于 2006-03-20 19:19:33 得分 0
1)System.currentTimeMillis();最常用的测时间方法,也是优化程序的工具。
2)要想直接调用一个类的私有方法,最好的办法就是用内部类
感觉是好方法:)Top
19 楼fenglibing(流星)回复于 2006-03-20 20:28:26 得分 0
執行的時間不一樣,那是根據當前系統的情況一樣
Arrays.sort();這個排序的性能真的很好
排10000個數和10數所費的時間基本上是一樣的
各位可以試試
差不多都是60nsTop
20 楼humanity(城市边缘的狼)回复于 2006-03-20 20:45:12 得分 0
这两个问题可以找到共同点,那就是 “反射”,
第一个问题用 AOP,
第二个问题可以这样。
import java.lang.reflect.Method;
class A {
private int count;
private int getCount() {
return count;
}
private void setCount(int count) {
this.count = count;
}
public String toString() {
return "Count :" + count;
}
}
/**
* @author Daniel Young
*/
public class B {
public static void main(String[] args) {
A a = new A();
Class clazz = a.getClass();
try {
Method method = clazz.getDeclaredMethod("setCount",
new Class[] { int.class });
method.setAccessible(true);
method.invoke(a, new Object[] { new Integer(5) });
System.out.println("Created & initialized instance :" + a);
} catch (Exception e) {
e.printStackTrace();
}
}
}Top
21 楼mail25(■游荡在北四环■)回复于 2006-03-21 08:40:26 得分 0
楼上的方法比较好Top
22 楼mysohu( 21世纪最重要的就是我!:))回复于 2006-03-21 08:58:34 得分 0
反射.....Top
23 楼cbrooks(陈小)回复于 2006-03-21 10:46:18 得分 0
都是牛人啊!!!Top
24 楼bluelily22(丁丁)回复于 2006-03-21 10:48:00 得分 0
调用某类的私有方法
实例化此类不就可以了,至于那么复杂吗?
Top
25 楼chenhaoqiang(难得糊涂)回复于 2006-03-21 11:42:03 得分 0
问题解决了怎么没人给分阿?Top
26 楼deepass(渴望突破)回复于 2006-03-21 14:13:53 得分 0
java才看了一点点,学习学习Top
27 楼jordan1(班君)回复于 2006-03-21 14:21:09 得分 0
死循环好厉害!Top
28 楼wolaiye3(魔幻之光)回复于 2006-03-21 17:24:31 得分 0
做个记号,回去看
Top
29 楼qingyuan18(zealot_tang)回复于 2006-03-21 20:28:24 得分 0
to:humanity(怪事:WebSphere 5.1进入dump javacore_xx.txt死循环)
Method method = clazz.getDeclaredMethod("setCount",
new Class[] { int.class });
这个方法会抛出异常吧,反射类的私有方法必须要先获得安全注册吧,否则类的封装性岂不被破坏了?Top
30 楼Nowish(看我能忍耐多久)回复于 2006-03-21 21:24:05 得分 0
AOP什么意思啊。。。。。。。。Top
31 楼yuzl32(有酒醉)回复于 2006-03-21 21:27:11 得分 0
treeroot(旗鲁特) ( ) 信誉:106 2006-3-20 12:48:39 得分: 0
... ..
执行方法前看一下表,执行完后再看一下表,减一下不就完了!
... ...
----------------
呵呵,牛!
Top
32 楼54powerman(彗星撞地球)回复于 2006-03-21 22:02:22 得分 0
汗,胡言乱语。Top
33 楼cecoo(小风)回复于 2006-03-22 00:28:13 得分 0
受益非浅Top
34 楼roypayne(工作时候一心工作,学习时候一心学习,玩的时候好好玩!)回复于 2006-03-22 09:44:56 得分 0
@!@#$%!@#$%Top
35 楼lgh2008(ar_guang)回复于 2006-03-22 11:04:08 得分 0
高手真很多Top
36 楼sssss342072(乘凉的狙击手(~@ @~))回复于 2006-03-22 13:07:13 得分 0
学习Top
37 楼upcmill()回复于 2006-03-22 14:45:15 得分 0
第一个,System.currentTimeMillis();
第二个,反射Top
38 楼joe403121(世界任我闯)回复于 2006-03-22 14:58:16 得分 0
晕,这都不会.
1.反射
2.DATA-DATA
3.买块表自己看
4.请能力强一点同事吃饭,请他帮自己搞定
5.以自己感觉估计
6.回道:不知道
.
.
.
.
.
.N种...Top
39 楼joe403121(世界任我闯)回复于 2006-03-22 15:03:43 得分 0
至于调用类中的私用方法,可以用BEAN中SET,GET那样的方法来调用Top
40 楼discolt(枫)回复于 2006-03-22 15:13:48 得分 0
第一个,System.currentTimeMillis();
第二个,反射
正解Top




