• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

Java初学问题实录

发布: 2007-7-04 13:34 | 作者: admin | 来源:  网友评论 | 查看: 21次 | 进入软件测试论坛讨论

领测软件测试网
1. 问:在JAVA与JSP中要调用一个LINUX上的脚本程序,或WINDOWS上的脚本程序,该怎么写?
答:System.getRuntime().exec("bash < aaa.sh");

2. 问:java中用什么表示双引号
答:"""

3. 问:如何在JSP程序里另起一个线程?
答:
JSP本身就是独立线程运行而不象CGI都是独立进程.
一般:
Thread t = new Thread("你的对象\");
t.start();就可以了.
要求你这个对象要实现runnable接口或继承thread.

4. 问:jsp如何获得客户端的IP地址?
答:
request.getRemoteAddr()
看看各个webserver的API文档说明,一般都有自带的,resin和tomcat都有

5. 问:程序终止与输出终止
答:
程序中止:return;
输出中止:out.close();这一句相当于ASP的response.end

6. 问:jsp中如何得到上页的URL?
答:request.getHeader("referer");

7. 问:提交网页的网页过期功能是怎么做的?
答:response.setHader("Expires","0");

8. 问:在JSP网页中如何知道自已打开的页面的名称
答:
request.getRequestURI() ;//文件名
request.getRequestURL() ;//全部URL

9. 问:提交表单后验证没有通过,返回提交页面,如何使原提交页面中的数据保留?
答:javascript的go(-1)可以把上页的表单内容重新显示出来,但password域没有

10. 问:如何取得http的头信息?
答:request.getHader(headerName);

11. 问:&&和&的区别?
答:
&&是短路的与操作,也就是当地一个条件是false的时候,第二个条件不用执行
&相反,两个条件总是执行。

12. 问:将*以正弦曲线的一个周期显示出来
答:
public void paint(Graphics g)
{
for(int i=0;i<200;i++)
g.drawString("*",i,(int)(Math.sin(i)*20)+50);
}
}

13. 问:浮点数相乘后结果不精确如100.0 * 0.6 结果等于 60.0004
答:
这不叫错误,float和double是这样实现的.如果要精确计算,java提供了一个
strictfp,它的计算遵循IEEE 754标准.而普通的float和double是由地平台浮点格式或
硬件提
供的额外精度或表示范围。

14. 问:如何获得当前用的cursors的位置?
答:
int row = rs.getRow()就是当前指针行数,还有
isFrist();isBeforeFist();isLast();isAfterLast();可以测试是不是在方法名所说的
位置

15. 问:表单成功提交了,点后退显示网页过期
答:
在里面加以下代码



或者
在表单页中加上


16. 问:接口的简单理解
答:接口为了规范,比如我在接口中定义了一个方法:
getData()
这是用来从不同的数据库中取数据的,就是JDBC的实现
对于用户,我不要知道每种数据库是如何做的,但我知道如何它们要实现这个接口就一定
有这个方法可以供我调
用.这样SUN就把这个接口给各个数据库开发商,让他们自己实现.
但为什么不用继承而用接口哩,因为继承只能从一个你类继承,而接口可以实现多个,就
是说我实现的子类有多
个规定好的接口中的功能.
这只是简单的理解,等你深入理解抽象的时候就知道抽象到抽象类时为什么还要再抽象
到接口.

17. 问:怎样编写一个取消按钮(怎样返回上一个页面,象工具栏的后退按钮)?
答:
javascript把每次浏览过的location都压到了一个栈中,这个栈就是
history,然后你如果要回到第几个页面它就做几次POP操作,把最后POP出来的那个LOCA
TION给你.
这就是JAVASCRIPT在实现history.go(-x)的原理.

18. 问:什么是回调?
答:
简单说,回调用不是让你去监听谁做完了什么事,而是谁做完了什么事就报告给你.
这就是回调用的思想.例子太多了,AWT的事件,SWING事件模型都是这样有.
还有多线程中,如果要控制线程数,不能总是查询每个线程是否结束,要在每个线程结束
时让线程自己告诉主线
程我结束了,你可以开新的线程了.

19. 问:简要介绍一下compareTo方法
答:
compareTo方法是Comparable 接口必需实现的方法,只要实现Comparable 就可以用Arr
ays.srot()排序就象实
现Runnable接口的run就能Thread()一样.

20. 问:如何可以从别的Web服务器检索页, 然后把检索到的网页的HTML代码储存在一个变
量中返回过来
答:这是一个简单的WEB ROBOT实现,用URL类实现从网页中抓内容,然后自己写一个分析
程序从中找出新的URL,不断递归下去就行了.

张彬 2005-11-21 17:56
(二)
21. 问:applet中如何获得键盘的输入
答:application的System.in是当前系统的标准输入,applet因为安全的原因不可能读
取当前系统(客户端)的标准输入,只能从它的ROOT组件的事件中,比如键盘事件中取得键值.

22. 问:怎样计算代码执行所花费的时间?
答:
代码开始取时间,结束后取时间,相减
long t1 = System.currentTimeMillis();
///////////////// your code
long t2 = System.currentTimeMillis() ;
long time = t2-t1;

23. 问:如何获在程序中获得一个文件的ContentType?
答:
URL u = new URL("file:///aaa.txt");
URLConnection uc = u.openConnection();
String s = uc.getContentType();

24. 问:连接池的使用是建立很多连接池,还是一个连接池里用多个连接?
答:
只有在对象源不同的情况下才会发生多个池化,如果你只连一结一个数据源,永远不要用
多个连结池.
所以连结池的初始化一定要做成静态的,而且应该在构造对象之前,也就是只有在类LOA
D的时候,别的时候不应该有任何生成新的连结池的时候。

25. 问:JavaMail要怎么安装?
答:下载两个包,一个是javamail包,另一个是jaf包。下载完直接把这两个包不解压
加到CLASSPATH。

26. 问:怎样把地址栏里的地址锁定?
答:把你的服务器的可访问目录索引选项关闭就行了,任何服务器都有一个conf文件,里
面都有这个选项。

27. 问:在JAVA中怎么取得环境变量啊。比如: TEMP = C:TEMP ?
答:String sss = System.getProperty(key)。

28. 问:怎样实现四舍五入,保留小数点后两位小数?
答:
import java.text.*;
...
NumberFormat nf=NumberFormat.getNumberInstance();
nf.setMaximumFractionDigits(2);
nf.setMinimumFractionDigits(2);
nf.format(numb);

29. 问:Applet和form如何通信?
答:
取得的参数传到param里面



30. 问:java-plug-in是什么?
答:Java Runtime Environment的插件。用来运行java程序。不需要什么特别的设置。
等于你的机器里面有了jvm。

31. 问:WEB上面怎么样连接上一个EXCEL表格?
答:
定义页面得contentType="application/vnd.ms-excel",让页面以excel得形式打开。
同样也可以以word得形式打开:application/msword。

32. 问:怎样才能避免textarea字数限制?
答:是使用了FORM的默认方法的缘故,如果什么也不写默认是GET改用Post即可,在For
m中定义mothod="post"。

33. 问:为什么加了插入数据库的
中文,依然是乱码?
答:
这要从环境看,能显示说明你的JSP引擎没有问题,但写入数据库时你的JDBC能不能处理
中文,同
一公司不同版本的JDBC都有支持中文和不支持中文的情况,RESIN自带的MYSQL JDBC就不
支持,MM
的就支持,还有你的数据库类型是否支持中文?CHAR的一般支持,但是否用binary存储双
字节码

34. 问:对于JFrame,hide(),show()与setVisibel()有什么区别吗?
答:
setVisible()从Component继承过来,而hide(),show()从Window里面继承过来。
Makes the Window visible. If the Window and/or its owner are not yet displa
yable, both are made
displayable. The Window will be validated prior to being made visible. If t
he Window is already
visible, this will bring the Window to the front.
区别在这。

36. 问:sendRedirect为什么不可以转到mms协议的地址的?response.sendRedirect("mms
://missiah.adsldns.org:9394");
答:java平台目前实现的protocol中并没有mms,你可以取系统属性java.protocol.han
dler.pkgs看看它的值中有没有mms,所以如果要想重定向到mms://host这样和URL,只有生成
客户端的JAVASCRIPT让它来重定向

37. 问:JTable中怎样定义各个Columns和Width和怎样设置表格的内容靠做靠右或居中?
答:
TableColumn tc = table.getColumn("Name");//取得列名为“Name”的列Handle
int currentWidth = tc.getPreferredWidth(); //取得该列当前的宽度
tc.setPreferredWidth(200); //设置当前列宽
tc.setMaxWidth(200); //设置该列最大宽度
tc.setMinWidth(50); //设置该列最小宽度

38. 问:批操作是否可用于select语句?
答:批操作其实是指成批理更新的操作,绝对不可能用于select操作。

39. 问:为什么jsp路径太深文件名太长就无法读取文件?
答:path不能超过255长度,不然就找不到了.这是作业系统的事。

张彬 2005-11-21 17:59
(三)
51. 问:object的clone方法为什么不能直接调用?
答:
这个方法在object中是protected
为什么要把这个方法定义为protected,这是一个折中,它的目的是想知道你这个方法在
Object里只是一个标记,而不是一个实现,比如

public class Object
{

.............
protected Object clone()
{}
}

所以直接继承的clone()方法并不能做任何时,你要使用这个方法就要重载这个方法并放
宽访问权限为public,或实现cloneable接口.
但它没法这样告诉你它没有真的实现,只好用protected 方法加以警示

52. 问:一个页面中如何刷新另外一个页面?
答:
要求是这些面页必须有关联,一是它们都有一个共同的顶层帧,也就是说是一个帧内的分
级页面,当然可以是任意级,帧内再分帧也可以,另一个可能是当前窗口弹出的窗口,如果没有
联系,那就不可能用一个页面刷新另一个页面.
帧内只要一级一级引用就行了.
比如在左帧中一个页面中写
top.right.location.reload();那么名为right的右帧中的页面就会刷新.
弹出的一样,用open时的名称刷新子窗口,子窗口用opener刷新主窗口

53. 问:如何在jsp中怎么样向客户端写cookies?
答:
Cookie coo = new Cookie(name, value);
HttpServletResponse.addCookie(name);

54. 问:为什么jTextField1.setText("aaabbb");jTextField2.setText("AAABBB"); 得到
的字体宽度不一样?
答:就是说如果不是指定为等宽字体,每个字体的宽度都是不一样的.因此JAVA中用Fon
tMetrics 类来取字符宽度。

55. 问:String kk=application/octet-stream; name="G:/SMBCrack.exe";如何得到SMBC
rack.exe?
答:
这应该是解析上传时候的二进制流得到的
这一行里面格式是固定的,取到name="后面的字符串,然后把";去掉。
然后取最后一个/后面的所有字符组成一个新字符串就行了。

56. 问:如何传值并不刷新页面?
答:
弹出一个页面进行值的选择或者输入,ok后使用将值传给原窗口,使用javascript关闭
打开的窗口即可:
window.close();opener.focus();


57. 问:有一个字符串:“EF0C114EA4”,如何变为a[0] = 0xEF a[1] = 0x0C a[2] = 0x
11 a[3] = 0x4E a[4] = 0xA4?
答:
String str="EF0C114EA4F";
out.print(str+"");
int l=str.length()/2+str.length()%2,j=0,k=0;
String[] a=new String[l];
for(int i=0;i");
j+=2;
}

58. 问:怎样将一个int转换成一个四字节的byte数组?
答:
int x = 1234567;
byte[] b = new byte[4];
for(int i=0;i>( i*8)) & 0xFF;
}

59. 问:indexOf()的使用需要注意什么?
答:参数是指从第几位(1,2,3,...)开始搜索,而返回值是指搜索到的位置(0,
1,2,3.......)注意是从零算起的。

60. 问:在Java应用程序中如何动态的添加一个按钮?
答:
这里涉及一个组件重绘的问题,组件要先于panel被显示之处存在,如果一panel已经显示
了,那么加在上面你能看到吗?但如果在同一个panel上,先有button A,假如按下它加了butt
on B,这时你如果使整个panel重给,那么A本身要重绘,它的事件监听就没有了,当然也就加不
成B了,所以如果要先有另一个panel,当按A时把B加在这个panel上并重绘这个paenl,其实更
好的方法是先把B加在panel中,同一个也行.把它setVisiable(flase),按A时设为true。

张彬 2005-11-21 18:00
(四)
61. 问:book mybook=new book(bookid);book是servlet,出错。
答:
book是servlet,能book mybook=new book(bookid);
说明自己实现了servlet容器?不然,servlet能让你自己去调用?
servlet如果调用其实和EJB连1%的区别都没有,它们都是自己继承或实现一些接口,在这
些父类或接口中实现了如果和容器"打交道"的方法,然后容器调用这些方法来管理它,让它
生成实例,池化,钝化,销毁,再生等.所以这样写是错误的。

62. 问:给定一个字符串5*(5+9)/7怎样计算出结果?
答:
可有两种方法
1。用堆栈完成
2。最简单的方法,不用编程,如果有任何一个数据库的化,
用select (5*(5+9)/7) from oneTable

63. 问:如何实现递交表单内容的加密解密?
答:
如果你用IE目前只能用SSL协议,这一层不要你考虑,否则只你用你自己的工具加密传输
,接收后再解密友,至于如何加解,如果要和公认的系统结合,就用通用的MD5,RAS等公开算法
,如果你只是自己传自己解,你随便按你的想法把数据加上一些东西,取回来按规则减掉这些
东西,我敢保证除你自己没有任何人能知道解密方法.

64. 问:为什么Integer.parseInt("+1");会抛出NumberFormatException的异常?
答:因为"+"运行算在JAVA中被重载.系统无法确定你用的是算术加还是字符+。

这一点可以在JAVASCRIPT中更好地理解:


var a = document.t.s.value+1;
这时a = 12345,因为document.t.s.value作为字符串.
但var a = document.t.s.value-1;
a 就是1233,因为系统知道-运算肯定是算术运行.所以把document.t.s.value
转换成数字.


65. 问:hashCode() 有什么用为什么有时候需要覆盖Object里的hashcode()方法?
答:这就是这个对象的身份证啊,要不如何区分哪个对象。

66. 问:怎样在tomcat中实现一个定时执行的东东?
答:
在应用程序启动时自动运行。servlet2.3中定义了ServletListener,监听Servlet Con
text的启动或则关闭(可在配置文件中配置),启动时触发一个守护程序的运行(可以实现
java.util.Timer或则javax.swing.Timer).

67. 问:程序可以输出自己吗?
答:孔德悖论这个非常有名的法则.就是说任何程序都不可能输出自己.

68. 问:能够把字符转化成ASCII码?比如将 A 转化成 65?
答:
int a=´A´;
out.println(a);

69. 问:如何区分输入的文字中的全角与半角?
答:由于不能分辨出全角和半角字符的值有什么规律,只好把全角符号牧举出来了.

70. 问:用户注册后的自动发信程序该怎么做?
答:
这种发信程序不考虑性能,因为不可能1秒就有一个人注册,我们说的考虑性能的发信程
序是指上百万封信在队列里要不停发送的那种,象你这个随便怎么写一个程序都行,没有必要
用JAVAMAIL.只要指定一个发信的服务器然后用cocket连它的25口就行了.
自己用SOCKET连SMTP的25口发一封信就好象两个邻居之间送一样东西,直接递过去得了
,用JAVAMAIL,消息机制就是你把这个东西从邮局寄给你的邻居了.

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备2023014753号-2
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网