ASP.NET程序员常见面试题有什么?

ASP.NET程序员常见面试题有什么?,第1张

很多用这个.

1. 问:怎样用 Win95 的记事本 (Notepad) 来编辑 Java源程序?

答:记得存档时扩展名要加上".java",文件类型改成:“所有的文件(*.*)”。

2. 问:到底 Java 是如何传递参数的?是by value或by reference?

答:All parameters (values of primitive types, and values that are references to objects) are passed by value [JLS sect 8.4.1]。根据以上 Java规格文件的说法, 所有参数应该都是传值的(by value)。但实际上, 实际经验却告诉我们所有 Java 的对象都是传址的(by reference)。因此我们可以这样解释: 基本类型(如int, float, char等)是by value,而所谓“对象”(Object)则是by value of reference to object。

3. 问:String这个类型的class为何定义成final?

答: 主要是为了“效率” 和 “安全性” 的缘故。若 String允许被继承, 由于它的高度被使用率, 可能会降低程序的性能,所以String被定义成final。

4. 问:finalizers和C++ 的 destructors有何差异?

答:Java内部具有“内存使用回收” 的机制, 虽然它也提供了类似 (C++ 的) destructors的 finalize(),每个对象都可以使用这个方法 method,但必须冒著破坏原先回收机制的危险。所以建议尽量避免使用finalize(),不妨考虑多使用 null 及 dispose() 来释出资源会好一些。

5. 问:继承了一个class叫做 Frotz,编译器却给我“No constuctor Frotz() in the class”这样的错误提示,为什么呢?

答:记住每当您定义了一个 class的constructor,除非您一开始就去call 这个constructor,否则 Java 会自动引入superclass原先不含参数的 constructor, 如果superclass的 constructor都是有参数的,那么问题中的错误提示便出现了。 解决的方法很简单, 找一找 API文件,加上正确的参数就得了。

6. 问:怎样让char类型的东西转换成int类型?

答:

char c = 'A';

int i = c;

//反过来只要作强制类型转换就行了

c = (char) I;

7. 问:我的applet原先好好的, 一放到web server就会有问题,为什么?

答:一般来说,从以下方向试试:

确定class文件的格式没错——已经编译过,也没有损坏的情形;

确定所有用到的class文件放到web server上,少一个都不行;

确定所有的文件名和class名称一致,特别检查大小写有无差错;

如果程序中用到package,web server上的目录就要当心了。譬如您在class中宣告了一个叫COM.foo.util的package,那么web server的applet codebase目录底下就非得有 COM/foo/util这个子目录不可。(注意目录名称也有大小写之分);

web server上的文件档案应该事先设定好。(尤其是search,read和execute权限)

8. 问:怎样在 Applet中用某个图形涂满整个背景?

答:在背景建立 Panel 或 Canvas, 然後用图形填满它。

9. 问:怎样在 Applet 中建立自己的菜单(MenuBar/Menu)?

答:首先在Applet的init() 方法中建立Frame instance, 然后将Menus, Menubar都加上去即可。 (setMenuBar() 是 Frame下的方法)或者,找到Applet上层的Frame后依法炮制。

Container parent = getParent()

while (! (parent instanceof Frame) )

parent = parent.getParent()

Frame theFrame = (Frame) parent

注意:第二个方法在Mac或某些browsers上并不可行。

如果您使用的是JDK 1.1,也可以考虑使用popup menu,这样就不必理会Frame的问题了。

10. 怎样比较两个类型为String的字符串?

答:在两个对象之间使用 "==",会将“两个对象是否有同一reference”的结果传回。也就是说, 这等同于“两个对象是否拥有同一地址 (address)”,或者“两个对象物件是否为同一对象”。如果您的意思是判断两个字符串的内容是否相同,那么应该使用以下的方法才对:

if (s1.equals(s2) )

or if (s1.equalsIgnoreCase(s2) )

or if (s1.startsWith(s2) )

or if (s1.endsWith(s2) )

or if (s1.regionMatches(s1_offset, s2, s2_offset, length) )

or if (s1.compareTo(s2) <0)

11. 怎样将浮点数(float)相加 ? Float 好像没有办法?

答:我猜想您的程式大概写成这样:

Float One

Float Two

Float Hard = One + Two

请注意 float 和 Float 是不同的,前者是 Java 基本类型之一, 而后者却是class。您应该将源代码改为:

float One

float Two

float Hard = One + Two

Float One = new Float(1.0)

Float Two = new Float(2.0)

Float Hard = new Float(One.floatValue() + Two.floatValue())

asp.net的程序都是部署在服务器上的,也就是说你在浏览器上看到的任何东西都是你像服务器发送了一个http请求,服务器经过一些处理之后再反馈给你。抛开AJAX技术不谈,你打开页面之后,页面上的内容是静止不变的,只有当你刷新了一下页面或者点了页面上某个button,页面刷新了一下,页面上的内容才有可能更改,而这个更改就是你去服务器又请求了一次页面内容而已。

asp.net的回发,有点类似于这种上述的这种机制,有的回发是希望服务器重新反馈一次内容;有的回发则是希望往服务器发送一些内容。

举个例子:asp.net的textbox控件上有一个属性叫autopostback——让你设置该文本框在失去焦点时是否回发。如果你没设置,当你在文本框内填入内容,并失去焦点时,服务器这时候是不知道你填的是什么内容,之后你将表单递交了之后,服务器才会知道。如果你设置了,当你输入内容并失去焦点之后,页面就自动将文本框的内容发回给服务器了,而不需要你再去点击某些递交按钮。

有时候我们可以用这个做一个简单的数据验证 *** 作,比如做一个注册页面,输入身份z号后,需要立即验证该身份z号在数据库里是否已经存在,那么就可以将该文本autopostback设置成true,这样一旦输入身份z并失去焦点之后,可以将该身份z号自动发送到服务器(后台)进行验证,而不需要将所有内容都填写完毕在递交的时候再进行验证。

当然这种模式,会带来页面的刷新现象,用户体验不好,因此很少用到,一般都是用AJAX来实现的。

对回发用的最多的,我觉得还是在page_load里边的判断语句,if(!ispostback){具体 *** 作}

这样的效果等同于=如果不是回发而引起的,就执行具体 *** 作。也就是说能保证page_load里边的代码只执行一次,而不会因为你点击了页面上的button按钮刷新了页面,而每次都会执行。

先分析原因。

你出现这个错误是因为你没有了解ASP.NET的工作原理。ASP.Net 和php,jsp ,asp等服务器语言一样 都是为了生成可供浏览器解析的页面,而可供浏览器解析的语言只有HTML。

1,如果你在aspx页面中插入一个asp:LinkButton 那么运行页面后 在浏览器中查看源代码你会发现这个标签实际被转为了一个<a>标签。

2,为什么你的写法不会转换呢?因为首先 传递给Literal1.Text 的值在asp.net中作为一段字符串被直接输出到浏览器中。那么你的写法到浏览器后源代码中仍然是一个asp:LinkButton 标签,而这个标签是无法被浏览器正确解析的。

解决办法:

知道了原因,那么如果非要按照你的写法去写,那么应该是这样的:

Literal1.Text = "<li>" + ((users)Session["users"]).Name.ToString() + "</li><li></li><li><a ID='LinkButton1' onclick='LinkButton1_Click1'>注销</a></li><li></li><li>信息修改</li><li></li>"

但是当你修改完后发现点击注销按钮依然不能执行!为什么呢?

因为你的LinkButton1_Click1 事件并没有在asp.net中被解析为可供浏览器识别的js代码。

如何解决?

在aspx页面中写一个asp:LinkButton按钮:

<asp:LinkButton ID='LinkButton2' runat='server' onclick='LinkButton1_Click1'>注销</asp:LinkButton>

运行页面,查看源代码 看看这个新加的注销按钮被解析为了什么html代码,大概如下

<a id="LinkButton2" onclick="xxxxx"></a>

将新加的linkbutton 设置不可见属性

<asp:LinkButton ID='LinkButton2' runat='server' visible="false" onclick='LinkButton1_Click1'>注销</asp:LinkButton>

重新修改后台代码

Literal1.Text = "<li>" + ((users)Session["users"]).Name.ToString() + "</li><li></li><li><a ID='LinkButton1' onclick='xxxxx'>注销</a></li><li></li><li>信息修改</li><li></li>"

//也就是将标签的js事件绑定到那个隐藏的注销按钮事件上。

希望对你有帮助


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/7828112.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-10
下一篇2023-04-10

发表评论

登录后才能评论

评论列表(0条)

    保存