1、 传入某个属性的set方法的隐含参数的名称是什么?
Value
2、 如何在C#中实现继承?
: 类名(冒号加类名)
3、 C#支持多重继承么?
不支持
4、 被protected修饰的属性/方法在何处可以访问?
类内部及继承类中
5、 私有成员会被继承么?
会,但是不能被访问。所以看上去他们似乎是不能被继承的,但实际上确实被继承了。
6、 请描述一下访问修饰符protected internal.
在同一个Assembly中,他的访问级别和public一样,而跨Assembly访问时,他的访问级别同protected一样。即protected的范围 + internal的范围。
7、 C#提供一个默认的无参数构造函数,当我实现了另一个有一个参数的构造函数时候,还想保留这个无参数的构造函数,这样我应该写几个构造函数?
2个,一旦你实现了一个构造函数,C#就不会再提供默认的构造函数了,所以需要手动实现那个无参数构造函数
8、 C#中所有对象共同的基类是什么?
System.Object
9、 重载和重写有什么区别?
重载是指同名方法,不同的参数,不同的实现
而重写则是覆盖父类中的方法实现
10、 在方法定义中,virtual有什么含意?
Virtual标记方法为虚方法,可以在子类中用new来覆盖重写,多用于实现多态
11、 可以重写私有的虚方法么?
不可以
12、 能够阻止某一个类被其他类继承么?
可以,用封装类
13、 能够实现允许某个类被继承,但不允许其中的某个方法被重写么?
可以,标记这个类为public,并标记这个方法为sealed
14、 如何区别重载方法?
不同的参数类型,不同的参数个数,不同的参数顺序
15、 Const和readonly有什么区别?
const可以用于局部常量,而readonly,实际是类的initonly字段,显然不能是局部的。
16、 如何在表中随机取记录数100条?请写出示例SQL语句。(数据库指SQL Server,下同)
SELECT TOP 100 * FROM table_name ORDER BY NEWID()
17、 请列举出几种有效防止SQL注入漏洞的措施?
1、程序中过滤掉“’”“%”“[”“]”等字符
2、使用存储过程传递参数,并在存储过程中不使用sql语句拚接查询条件。
18、 删除表中重复的记录(指某两条或多条记录的所有字段值均相同),但需保留1条。请写出示例SQL语句。
select distinct * into #Tmp from tableName
drop table tableName
select * into tableName from #Tmp
drop table #Tmp
19、 向有标识(IDENTITY)列字段的表添加记录是否可行,如果可行,应如何操作?可使用SQL语句说明。
可以,以下语句表示将显式插入的开关打开,写入记录,然后关闭显式插入
SET IDENTITY_INSERT Game_ActivityUserTotal ON
insert Game_ActivityUserTotal(id) values(1)
SET IDENTITY_INSERT Game_ActivityUserTotal OFF
20、 假设表DataTableDictTB包含一个字段MaxID(INT),且仅有一条记录。如何在并发操作情况下,修改MaxID字段加一,并取出更新后的MaxID数值,同时要求读取出来的结果不重复?请写出示例SQL语句。
参考答案1:
DECLARE @MaxID INT
UPDATE
DataTableDictTB
SET
MaxID = MaxID + 1,
@MaxID = MaxID + 1
参考答案2:
DECLARE @MaxID INT
BEGIN TRAN
BEGIN
UPDATE
DataTableDictTB
SET
MaxID = MaxID + 1
SELECT @MaxID = MaxID FROM DataTableDictTB
END
21、 页面A.aspx的内容如下:
<script>
Window.open(“B.aspx?id=1&CodeName=通讯应用类”)
</script>
页面B.aspx的内容如下:
<%=System.Web.HttpContext.Current.Request.QueryString[“CodeName”].ToString()%>
为何页面B.aspx输出的CodeName内容是乱码,如何解决?
页面A.aspx的内容修改如下:
<script>
Window.open(“B.aspx?id=1&CodeName=” + escap(‘通讯应用类’))
</script>
22、 禁用aspx页面的ViewState会导致哪些功能不可用?
1、 页面中的事件驱动失效
2、 用户提交的信息将在提交后的不再保存显示
3、 页面中的ViewState信息不再存在,这样达到页面瘦身进而提供页面显示性能
23、 使用Asp.net开发的网站有哪几种sessionState存储方式,分别各是什么?
1、 进程内(InProcess)存储方式
2、 进程外(SessionStateService)存储方式
3、 数据库(SQL Server)存储方式
24、 使用哪些方式的弹出页面会被大部分页面拦截工具所拦截,相反哪些又不会被拦截?
1、 会被拦截的方式:window.open
2、 不会被拦截的方式:<a>、window.showModalDialog
25、 请简要的谈谈你对Ajax技术的认识。
XMLHttp是ajax的最常用传输方式
26、 对于长时间装载的ASP.NET页面如何在客户端浏览器中显示进度(仅模拟,不要求精确显示)?
1、 可以在到达目的页面之前,先浏览带有显示进度条的页面,再停顿几秒后到达目的页面
2、 如在按钮事件中加入如下代码:
Response.Write(“<div id=’mydiv’ >”);
Response.Write(“_”);
Response.Write(“</div>”);
Response.Write(“<script>mydiv.innerText = ”;</script>”);
Response.Write(“<script language=javascript>;”);
Response.Write(“var dots = 0;var dotmax = 10;function ShowWait()”);
Response.Write(“{var output; output = ‘正在装载页面’;dots++;if(dots>=dotmax)dots=1;”);
Response.Write(“for(var x = 0;x < dots;x++){output += ‘·’;}mydiv.innerText = output;}”);
Response.Write(“function StartShowWait(){mydiv.style.visibility = ‘visible’; “);
Response.Write(“window.setInterval(‘ShowWait()’,1000);}”);
Response.Write(“function HideWait(){mydiv.style.visibility = ‘hidden’;”);
Response.Write(“window.clearInterval();}”);
Response.Write(“StartShowWait();</script>”);
Response.Flush();
Thread.Sleep(10000);
27、 自定义page基类时导致你在Vs.Net中无法所见即所得的编辑Aspx页面,打开页面时将抛出以下错误,你只能看到Html代码界面,请问如何解决?
1、 出现该错误后将该工程重新编译通过后,再次打开aspx页面将不会再出现该错误
2、 最好将访问HttpContext的代码放到OnInit中,如下:
protected override void OnInit(EventArgs e)
{
base.OnInit (e);
HttpCookieCollection cookies = HttpContext.Current.Request.Cookies;
}
3、 如果你确实需要在构造器中进行某些Field的初始化等工作,这时又需要使用Request等内容,那么就需要先判断HttpContext是否为Null。如下:
public class BasePage : Page
{
public BasePage()
{
if(HttpContext.Current != null)
{
HttpCookieCollection cookies = HttpContext.Current.Request.Cookies;
}
}
}
28、 如何在B/S结构的邮件系统中防止邮件的附件被盗链,请提供解决方案的思路?
1、 附件的下载使用文件流的方式输出,而不能采用虚拟目录的方式下载
2、 用HttpHandler控制对特定文件的请求和响应,对HTTP请求中Head信息的Referrer参数进行检查,以判断是否从正确的入口或链接请求该资源。
29、 如何在DataGrid的日期类型的数据列进行格式化显示,如格式化显示为“2007-01-03”?
日期类型的数据列如下:
<asp:DataGrid ID=”dtgCusts” Runat=”server” AutoGenerateColumns=”False”>
<Columns>
<asp:BoundColumn DataField=”CreateDate” />
</Columns>
</asp:DataGrid>
1、 使用DataGrid的ItemDataBound事件进行数据格式化
2、 如下
<asp:DataGrid ID=”dtgCusts” Runat=”server” AutoGenerateColumns=”False”>
<Columns>
<asp:BoundColumn DataField=”CreateDate” DataFormatString=”{0:yyyy-MM-dd}” />
</Columns>
</asp:DataGrid>
30、 如何在多个站点之间实现单点登录(SSO),请提供解决方案的思路?
1、 如果多个网站是使用同一个顶级域名,则可以使用Cookies方式
2、 如果多个网站是使用同一个顶级域名,且都是使用ASP.NET开发的网站,则可以使用表单认证的方式